Skip to content

Production Readiness Report — MyHoreca Pay ​

Readiness report для beta/UAT и будущего production handoff.

Дата отчёта: 2026-06-24 (обновлено MHPAY-39)
Версия baseline: post MHPAY-42 (live Syrve references), MHPAY-37 (operational flags API/UI), MHPAY-39 (paym acceptance checklist)
Связанные документы: UAT Checklist · Release Checklist · Current State · Roadmap · Agent implementation state


Executive summary ​

MyHoreca Pay реализует end-to-end pipeline: банковский файл → адаптер → нормализация → match → allocation → Syrve/iiko posting → reconcile/anomaly control. Backend и frontend MVP готовы к beta/UAT на test-контуре при условии выполнения UAT Checklist.

Go для beta/UAT (test contour): Conditional Go — функциональность покрыта mocked/automated tests; live operator evidence на pay.ru.tuna.am ещё не собрана в этой итерации.

Go для MVP production profile (paym.ru.tuna.am): Conditional Go (docs + contracts ready) — в репозитории задокументирован и сверен чеклист PAYM-01..08; live operator evidence на paym не собрана в этой итерации (review/docs-only pass).

Go для production payment write: No-Go — reconciliation на live test был FAIL_RECONCILE; unrestricted production write требует повторного PASS_RECONCILE и signed PAYM gate.


Scope of this readiness report ​

In scopeOut of scope
Functional readiness операторского pipelineПолный pen-test production
Auth, scoped RBAC, auditЮридическая compliance Индонезии
Bank import quality + duplicatesВсе индонезийские банки (только зарегистрированные adapters)
Syrve read + gated writeНеограниченный production write
Documentation & release process24/7 on-call staffing

Current implementation baseline ​

Источник: current-implementation-state.md, current-state.md.

AreaStatusEvidence type
Layered .NET + React SPAImplementedArchitecture tests, build
Bank import + quality + duplicatesImplementedUnit tests, Playwright mocked
Counterparty matching + rulesImplementedUnit + controller tests
Payment allocation preview/confirmImplementedMHPAY-19, 14 allocation unit tests
API named DTO boundaryImplementedMHPAY-21, 189 unit tests
Syrve orchestration (connections, sync, postings)ImplementedUnit + live reports 2026-06-19
Syrve always-on runtime + connection diagnosticsImplementedRegistered Pay-host runtime; connection health; operational-flags deprecated
Syrve references live names / cash-flow catalogImplementedMHPAY-42; SyrvePaymentReferenceReaderTests
paym production acceptance checklistDocumentedMHPAY-39 PAYM-01..08 in uat-checklist
Anomalies + notificationsImplementedAPI + partial live verification
Review queue aggregationImplementedFrontend page, no dedicated API
Scoped RBAC foundationImplementedScopedRbacTests, scoped controllers
Mocked E2E smokePassing in CI/localmhpay-e2e-smoke.spec.ts (mocked)

Environments ​

EnvironmentPurposeUIAPIReadiness notes
Local / devРазработка, docker composelocalhost:5173 (Vite)Gateway → APINot verified in this iteration для полного compose smoke
Test / stagingBeta, UAT, pilothttps://pay.ru.tuna.amhttps://apipay.ru.tuna.amPending live UAT evidence
MVP production profileLive Syrve/iiko acceptancehttps://paym.ru.tuna.amsame-origin /apiPAYM checklist prepared; live evidence pending (MHPAY-39)
ProductionLive operatorshttps://pay.myhoreca.idhttps://pay.myhoreca.id/apiNo-Go для payment write; read/import UAT не подтверждён здесь

Конфигурация: deployment/overview.md, environment-variables.md.


Functional readiness ​

CapabilityReady for beta?EvidenceGap
Login / logout / meConditionalMocked PlaywrightLive UAT pending
Bank upload (supported)ConditionalUnit + mocked E2EReal bank pilot files pending
Unsupported file handlingConditionalUnit testsLive UAT pending
Quality report UIConditionalPlaywright import flowStaging not verified here
Duplicate reviewConditionalUnit + mocked E2E—
Manual match + rulesConditionalController testsLive Syrve refs pending
Allocation preview/confirmConditionalUnit + mocked E2E—
Dashboard / review queueConditionalUI implementedLive counts pending
Syrve document sync (read)ConditionalLive report 2026-06-19Staging re-verify pending
Payment posting (test write)ConditionalPASS_WRITE once on test iikoFAIL_RECONCILE; not on tuna
paym deploy acceptance (PAYM-01..08)Pending operator runChecklist in uat-checklist.mdLive evidence not collected MHPAY-39
Production payment writeNoAlways-on capability with mandatory approval/safety checksFAIL_RECONCILE blocks Go

Data readiness ​

TopicStatusNotes
PostgreSQL schemaReadyEF migrations in repo
Migration 20260624120000_CounterpartyMatchExplainabilityPending apply on dev/prod DBSee implementation state
UUID v7 policyReadyIUuidGenerator
Sanitized test fixturesReadyNo raw bank PII in repo
Production bank sample validationMissingLocal/staging pilot only
Backup / restore procedurePendingDocument in ops runbook; not validated here

Security / auth readiness ​

ControlStatusEvidence
JWT authImplementedAuth API
Permission-based authorizationImplementedPayAuthorizationPolicies
Scoped org/location enforcementPartialMany endpoints scoped; legacy path audit open
Secrets not in repoPolicy.env.example only
CORS configurationConfigurableCORS__ALLOWEDORIGINS__*
Payment write approval/business/transport controlsImplementedWorkflow, preflight, idempotency, anomaly and scoped RBAC tests
Live security reviewNot runNo pen-test evidence in this report

Permissions / roles readiness ​

См. user-roles.md, permission-matrix.md.

CheckStatus
Scoped role assignments in GET /api/auth/meImplemented
Upload/match/allocate gated by location permissionsImplemented on key paths
Cross-tenant leakage audit for legacy endpointsOpen gap (current-state)
UAT with real operator accountsPending

Observability / logging / audit readiness ​

CapabilityStatusNotes
Structured logging (ILogger)ImplementedOpenTelemetry-ready design
Audit log API + UIImplementedMatch, Allocate, posting actions
Payment action audit trailRequired by designVerify in UAT-12
Centralized log aggregationUnknownDepends on deployment; not verified
Metrics / alertingPendingPost-release monitoring in release checklist

Syrve / iiko integration readiness ​

TopicStatusEvidence
IikoConnector bridgeImplementedLive bridge tests
Document sync read pathLive tested13 docs synced (2026-06-19)
Test payment writePASS_WRITE (once)write report
ReconciliationFAIL_RECONCILESame report
Dry-run + approval gateImplementedOrchestration docs
Critical anomaly blocks retryVerified once liveAnomaly control tests
Production writesControlledAlways-on capability; execution requires scoped RBAC, manual approval and full business/transport preflight; live paym not verified here

Playbooks: syrve-live-test-playbook.md, syrve-test-payment-write-playbook.md.


Idempotency and posting safety ​

MechanismStatus
Allocation confirm idempotency keyImplemented
Posting idempotency / external payment idImplemented in orchestration
Write requires approvalEvery new posting starts in ApprovalRequired
Anomaly gate on open criticalImplemented
Duplicate write on same documentPartial mitigation via anomaly
Transaction type guard on RPC responseNot implemented (known gap)

Backup / recovery and rollback notes ​

ItemStatus
DB backup strategyPending operator documentation — define RPO/RTO per deployment
Application rollbackRedeploy previous container image / tag
Migration rollbackReview EF migration down scripts before prod; prefer forward-fix
Payment incident containmentStop/scale posting consumers and restrict approved traffic; removed flags are not kill switches
Config rollbackRestore prior env + restart API/workers

Детали выпуска: release-checklist.md.


Known gaps / risks ​

RiskSeverityMitigation
FAIL_RECONCILE on live test writeCriticalPhase 4 readback hardening; no prod write
No live UAT pack on stagingHighExecute uat-checklist.md
No live PAYM evidence on paym.ru.tuna.amHighExecute PAYM-01..08 after redeploy
Tenant scoping audit incompleteHighPhase 2 backlog
Real production bank files not validatedHighPilot with sanitized copies
Production posting authorization procedure incompleteCriticalPhase 6
Migration not applied on prodMediumRelease checklist DB section
FuzzyCandidate matcher not implementedLowManual match workaround
Auth login error anonymous objectLowNon-blocking for UAT

Go / No-Go decision table ​

GateBeta / UAT (test)Production (read-only ops)Production (payment write)
Automated tests greenGo (local CI)Required before deployRequired
Docs portal buildGo (this iteration)RequiredRequired
UAT checklist executedNo-Go until runRequiredRequired
Staging smoke (import→allocate)PendingRequiredRequired
Syrve reconcile PASSN/A for import-only betaRecommendedNo-Go until PASS_RECONCILE
Security reviewRecommendedRequiredRequired
Backup verifiedRecommendedRequiredRequired
Payment write authorizationTest only, manually approvedNo approved postingsNo-Go

Overall recommendation (2026-06-24): proceed to operator-led PAYM acceptance on paym.ru.tuna.am using uat-checklist.md PAYM section; do not enable unrestricted production payment write until PASS_RECONCILE and signed PAYM gate.


paym.ru.tuna.am — acceptance evidence map (MHPAY-39) ​

PAYM IDCapabilityRepo contract verifiedLive paym evidence
PAYM-01API restart / healthGET /api/healthPending
PAYM-02Always-on runtimeregistration + probe/sync/dry-runPending
PAYM-03Deprecated DB capabilities ignoredplatform settings + org quota + runtime evidencePending
PAYM-04Scope + mandatory approvalqueue/approve/audit evidencePending
PAYM-05Connection probePOST .../test, GET .../healthPending
PAYM-06ReferencesGET .../references/accounts, cash-flowPending
PAYM-07UI bannersflags + getSyrveOperationalWarningsPending
PAYM-08Preflight/dry-runGET .../preflight, POST .../dry-runPending

Required evidence before production ​

  1. Completed UAT Checklist with evidence attachments.
  2. Staging smoke: import → match → allocate → (optional) dry-run posting.
  3. Repeated PASS_WRITE + PASS_RECONCILE on test iiko (dated report).
  4. Migration apply confirmation on target PostgreSQL.
  5. Scoped RBAC UAT (UAT-14) without cross-tenant leaks.
  6. Backup restore drill (documented result).
  7. Signed release-checklist.md for production deploy.
  8. Per-org/per-location production write approval (Phase 6).

Sign-off section ​

RoleNameDateDecisionNotes
Engineering lead
QA / UAT lead
Operations
Product owner
Accountant / business

Report prepared by: documentation iteration MHPAY-39 (repo contract review; no live paym verification in this pass).