Отправка в НРД с подтверждением доставки: ERROR от ИШ — заявка «Не отправлена», без BJ_SENT; «Отправить повторно» тем же GUID; сторож связи ИШ↔НРД по журналу ИШ

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
zuevav
2026-09-25 15:57:07 +03:00
parent eecb3b7923
commit c2aaa09fe3
15 changed files with 651 additions and 33 deletions
+5 -2
View File
@@ -162,7 +162,7 @@ type DraftDeleter interface {
DeleteDraft(ctx context.Context, id string) error
}
// DeleteDraft удаляет сделку, если она в состоянии draft.
// DeleteDraft удаляет сделку, если она ещё не ушла в НРД (draft или validated).
func (r *MemoryRepository) DeleteDraft(_ context.Context, id string) error {
r.mu.Lock()
defer r.mu.Unlock()
@@ -170,7 +170,7 @@ func (r *MemoryRepository) DeleteDraft(_ context.Context, id string) error {
if !ok {
return ErrNotFound
}
if d.State != StateDraft {
if !IsUnsent(d.State) {
return ErrNotDraft
}
delete(r.byID, id)
@@ -178,3 +178,6 @@ func (r *MemoryRepository) DeleteDraft(_ context.Context, id string) error {
delete(r.events, id)
return nil
}
// IsUnsent — заявка ещё не ушла в НРД: черновик или «Не отправлена» (НРД не принял пакет).
func IsUnsent(s State) bool { return s == StateDraft || s == StateValidated }