Справочник: выгрузка XML в подлинном формате НРД; фикс ошибочного FIFO-сопоставления ответа
1) XML-выгрузка справочника (/admin/handbook → XML) теперь в формате НРД (hk:M2MTransferHandbook: SettlementPlaces/Participants, Rus/Eng, Depository/BrokerPlace). Поллер сохраняет подлинный XML от НРД (writeHandbookRawXML → m2m-handbook.xml) и выгрузка отдаёт его как есть (windows-1251, байт в байт). Для установок без своего шлюза — реконструкция того же формата из плоского JSON (reconstructHandbookXML), проверено парсером НРД. 2) findDealForResponse: ответ сервиса МОСТ с конкретным GUID, которого нет среди ИСХОДЯЩИХ сделок (например M2M31 на наше решение по ВХОДЯЩЕМУ переводу), больше НЕ пришивается по эвристике FIFO к чужой исходящей заявке и не отклоняет её ошибочно. FIFO остаётся только для ответа с нулевым/пустым GUID (поведение НРД при M2M14). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -341,8 +341,12 @@ func (s *Service) findDealForResponse(ctx context.Context, resp *m2m.M2MTransfer
|
||||
if !errors.Is(err, m2mcore.ErrNotFound) {
|
||||
return nil, err
|
||||
}
|
||||
// GUID конкретный, но среди ИСХОДЯЩИХ сделок его нет — это сервисный ответ по
|
||||
// чужому/входящему GUID (например M2M31 на наше решение по ВХОДЯЩЕМУ переводу).
|
||||
// FIFO здесь ошибочно пометил бы не ту исходящую заявку — поэтому не угадываем.
|
||||
return nil, m2mcore.ErrNotFound
|
||||
}
|
||||
// Fallback: ответ без идентифицируемого GUID.
|
||||
// Fallback — ТОЛЬКО для ответа без идентифицируемого GUID (нулевой/пустой: поведение НРД при M2M14).
|
||||
st := m2mcore.StateAwaitingDecision
|
||||
deals, err := s.repo.List(ctx, m2mcore.Filter{State: &st, Limit: 200})
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user