feat(bj): модуль ЛК на PostgreSQL, обмен с DEPO, боевой ЛК с имитатором НРД, QUIK, НПР

- 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>
This commit is contained in:
zuevav
2026-09-15 19:41:12 +03:00
parent 59fc774f08
commit da12a9ec1c
132 changed files with 29969 additions and 1089 deletions
+18 -3
View File
@@ -76,6 +76,24 @@ func EnrichRequest(
store FansyStore,
claim ClaimInput,
codes SenderReceiver,
) (*m2m.M2MTransferRequest, error) {
req, err := EnrichRequestUnchecked(ctx, store, claim, codes)
if err != nil {
return nil, err
}
if err := req.Validate(); err != nil {
return nil, fmt.Errorf("m2mcore: собранный M2MTransferRequest невалиден: %w", err)
}
return req, nil
}
// EnrichRequestUnchecked — шаги 1–3 EnrichRequest без проверки формата: пакет нужен и
// тогда, когда данные заявки некорректны (журнал заявок, отказ через учётную систему).
func EnrichRequestUnchecked(
ctx context.Context,
store FansyStore,
claim ClaimInput,
codes SenderReceiver,
) (*m2m.M2MTransferRequest, error) {
client, err := store.GetClientByID(ctx, claim.InvestorClientID)
if err != nil {
@@ -160,8 +178,5 @@ func EnrichRequest(
series := m2m.IdentityDocSerial(client.Document.Series)
req.Data.InvestorInformation.IdentityDocument.DocumentSeries = &series
}
if err := req.Validate(); err != nil {
return nil, fmt.Errorf("m2mcore: собранный M2MTransferRequest невалиден: %w", err)
}
return req, nil
}