da12a9ec1c
- bj_exchange и «кран» Fancy убраны: данные модуля ЛК в PostgreSQL (схема lk) - трансферные таблицы FTV_M2M: создание при установке, события, справочник участников - сверка с DEPO: счёт, ФИО, дата рождения, ИИС по договору, квал-инвестор из опции DEPO - боевой ЛК ЕСИА Финанс при тестовом ИШ: журнал, отказ через DEPO, статусы в ЛК - онлайн-лицензирование в bj, план тестирования M2M для контрагента (интерактивный HTML) - модули QUIK МНП, экспорт QUIK, НПР/УДС; документы и тестовые материалы Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
internal/m2mcore — ядро бизнес-логики M2M
Конечный автомат сделки, репозиторий, идемпотентность по GUID,
сборка M2MTransferRequest из заявки ЛК + данных Fansy, метрики SLA.
Состав
fsm.go— состояния FSM и матрица разрешённых переходов (Draft → Validated → SubmittedToNSD → AwaitingDecision → Confirmed → AwaitingSUB16 → Done, веткиRejected,TimedOut,ManualApproval).deal.go— доменная модельDealс явными методами переходов (Validate,Submit,ReceiveDecision,Timeout,SendToManualApproval,ApproveManually,RejectManually,CompleteSUB16). Каждый переход проверяет текущее состояние, пишет историю вStagesи фиксирует событие в журнале.uuid.go— генератор UUID v4 без внешних зависимостей.repo.go— портRepository+ in-memory реализацияMemoryRepositoryс идемпотентнымCreate(по GUID возвращает существующую сделку). PostgreSQL-реализация — задача M2 (миграция лежит вmigrations/m2m-core/001__deals.sql).ports.go— порты к внешним системам (NSDSender,LKCallbackClient,CryptoVerifier,FansyStore) с no-op заглушками для M1.enrich.go— функцияEnrichRequest: изClaimInput(заявка ЛК)- данных Fansy собирает валидный
M2MTransferRequest, генерируетGUIDиReferenceIDпо каждой ЦБ.
- данных Fansy собирает валидный
metrics.go— портRecorder+MemoryRecorder, отдающий Prometheus text-format. В M2 заменим наprometheus/client_golang, когда прокси откроет Go-модули.
Зависимости
Только stdlib и собственные пакеты internal/m2m, internal/nsdxml.
Никаких внешних модулей.
Тесты
fsm_test.go— переходы и терминальные состояния.repo_test.go— идемпотентность по GUID, фильтры вList.uuid_test.go— формат UUID v4 иReferenceID.metrics_test.go— Prometheus-текст.
Сервис cmd/m2m-core
cmd/m2m-core/main.go — HTTP-сервер с /healthz и /metrics,
in-memory репозиторий, no-op порты. Адрес из BJ_HTTP_ADDR
(по умолчанию :8081). В M2 будет заменено на реальные клиенты НРД
и crypto-service.