ЭДО: сертификат компании нужен только для mTLS, портал больше не разбирает awaiting_certificate

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
gorbenko.pavel
2026-10-02 17:36:03 +05:00
parent 7aacc1730f
commit 16a478053c
2 changed files with 5 additions and 11 deletions
@@ -45,9 +45,9 @@
массиве `file_company_bins`, общий `company_bin` не передаётся. Подписант один — сам сотрудник, от
имени физического лица; БИН нужны ЭДО только чтобы выбрать сертификат Sigex (mTLS) нужной компании.
Запрос один на все файлы: ЭДО принимает его целиком или отклоняет целиком (например, если у какой-то
компании не распознан), поэтому повтор безопасен. Если у компании нет сертификата Sigex, ЭДО всё равно
сохраняет её документ, но подписать его нельзя, пока администратор не загрузит сертификат. Ответ 200
значит «принято»: в зелёном сообщении просто «Документы отправлены на подписание в ЭДО».
компании не распознан), поэтому повтор безопасен. Сертификат Sigex компании нужен ЭДО только для mTLS
(карточка документа): без него документ принимается и подписывается как обычно. Ответ 200 значит
«принято»: в зелёном сообщении просто «Документы отправлены на подписание в ЭДО».
- **ИИН** берётся из `GET /Employee/ByEmail` (поле `Iin`), **БИН компаний** — из `GET /Dictionary/Companies`
по `CompanyId` каждой записи сотрудника (`shared/edo/signingTarget.ts`). Компания без БИН в справочнике
пропускается и показывается в сообщении; остальные уходят.
@@ -31,17 +31,13 @@ export interface IEdoSigningResult {
documents: Array<{
id: string;
fileName: string;
/** БИН компании файла. */
companyBin: string;
/** У компании нет сертификата Sigex: файл сохранён, но подписать его нельзя до загрузки сертификата. */
awaitingCertificate: boolean;
}>;
}
/** Ответ ЭДО в snake_case — только поля, которые читаем. */
interface IEdoResponseBody {
cabinet_url?: string;
documents?: Array<{ id?: string; file_name?: string; company_bin?: string; awaiting_certificate?: boolean }>;
documents?: Array<{ id?: string; file_name?: string }>;
}
/**
@@ -93,9 +89,7 @@ export async function submitSigningRequest(
cabinetUrl: body.cabinet_url || '',
documents: (body.documents || []).map((d) => ({
id: d.id || '',
fileName: d.file_name || '',
companyBin: d.company_bin || '',
awaitingCertificate: d.awaiting_certificate === true
fileName: d.file_name || ''
}))
};
}