Living document. Curated под scope crcm-protocol-service. Источник-снимок — journal/_historical/PROJECT_GLOSSARY.md.
Правила ведения:
┌─ CRED (15 сервисов, кредитный процесс) ────────────────────┐
│ cred-question-api, cred-offer-api, cred-multieyes-api, │
│ cred-creditcom-api, cred-agreement-letters-api, │
│ cred-client-api, cred-employee-service, │
│ cred-dictionary-api, cred-epa-adapter-api ... │
└──────────────┬─────────────────────────────────────────────┘
│ Question с типом KKKIB*/KKSMB* → в повестку
▼
┌─ OBESRABUO (протокольная экосистема) ──────────────────────┐
│ ┌────────────┐ ┌─────────────────────┐ ┌────────────┐ │
│ │ agenda │◄─┤ crcm-protocol-service├─►│ common │ │
│ │ (повестки) │ │ (мы) │ │(hub events)│ │
│ └────────────┘ └──────────┬───────────┘ └────────────┘ │
│ │ │
│ ▼ │
│ user-service, notification-api │
└─────────────────────────────────────────────────────────────┘
Наши прямые соседи: agenda (источник повесток), common (events/feature-flags/streaming), user-service, notification-api. CRED виден только через agenda.
Protocol)Официальный документ с результатами заседания комитета.
CREATED → AGREEMENT → CHAIRMAN_AGREEMENT → SIGNED.agendaId.Код: ProtocolEntity.java, ProtocolCrudService.
Agenda)План заседания комитета: какие вопросы рассматриваются, кто участвует, когда, очно или заочно. Живёт в agenda-сервисе, у нас — доменный record для генерации.
DRAFT → ON_SIGNING → SIGNED → DISCUSSED → ON_RESULT → FINISHED.Код: Agenda.java.
Question)Пункт повестки — кредитное решение, кадровое назначение, принятие положения.
questionInExSystemId. Мы работаем с agenda-version вопроса.DRAFT → IN_AGENDA → VOTING → ON_RESULT → REPORT → REPORT_SIGNED → END/PROTECTED/CANCELED/DISCONTINUED.Код: Question.java.
Vote)Запись одного голоса по одному вопросу.
Код: Vote.java, enum VoteDecision.
Extract)Документ по одному вопросу. Главные потребители — ПКР-1 (для кредитных решений), внутренний архив. Отличия от протокола:
| Протокол | Выписка | |
|---|---|---|
| Масштаб | Вся повестка | Один вопрос |
| Создание | После всех голосований | После голосования по вопросу |
| Подпись | Всегда | Может быть, особенно для СМБ |
| Варианты | Один вид | SHORT, SIMPLE, BOARD |
Код: Extract.java.
Вопрос повестки с row-level security — доступ ограничен списком допущенных пользователей. Типичные примеры: крупные сделки с ограниченным кругом членов комитета, политически чувствительные решения.
Как это работает в agenda:
isCurrentUserHasAccess(questionId) для запрашивающего."PROTECTED_QUESTION", статус PROTECTED, флаг accessForbidden=true.Как это работает в protocol:
AgendaMapper) при маппинге Feign-DTO → domain. Если в ответе хоть один вопрос помечен accessForbidden=true → DomainException.Forbidden (HTTP 403).См. ADR-0011.
Специальный тип входных данных: готовая выписка, сгенерированная внешней системой ПКР-1 по её вопросам и прилетевшая к нам через Question.prkkExtractFileId.
Ключевое отличие: в итоговом протоколе PRKK-выписка сохраняет оригинальное форматирование (шрифты, разметка, подписи), сформированное командой PRKK. Это бизнес-требование — юридическая значимость документа, подписи ПРКК.
Что делаем в pipeline:
mergeExtractFilesSelectiveNormalize в common-lib.См. ADR-0008.
Signature, Signatory, FileSignatureStrategy)Электронная подпись (ЭЦП) документов через общий EPA-адаптер. Алгоритмы GOST 94/256/512.
Код: FileSignatureStrategy.java.
DOCX-шаблоны (docx4j + office-stamper) — 26 файлов, хранятся в modules/document/resources/templates/.
Код: DocumentTemplateType.java.
DomainException)Sealed ADT. Бизнес-ошибки + Integration ветка (6 подтипов для внешних систем).
Код: DomainException.java. Решения: ADR-0002, ADR-0003.
CommitteeCode / CommitteeType)Code (строка в agenda/CRED) → Type (наш enum для стратегий):
| Code | Расшифровка | Type |
|---|---|---|
KKKIBB |
КК КИБ Банка ВТБ | BANK |
KKKIBB_CUSTOM |
КК КИБ Банка (кастомный) | BANK |
KKKIB |
КК КИБ | BANK |
KKKIB_CUSTOM |
КК КИБ (кастомный) | BANK |
KKKIBG |
КК КИБ Группы ВТБ | GROUP |
KKKIBG_CUSTOM |
КК КИБ Группы (кастомный) | GROUP |
SMB |
Малый и средний бизнес | SMB |
KKMSK |
КК МСК | GO_SMB |
KKSMB |
КК СМБи | GO_SMB |
KKPFSMB |
КК Проектного финансирования СМБ | GO_SMB |
KKGSMB |
КК Группы СМБ | GO_SMB |
KKSPB |
КК СПБ | GO_SMB |
⚠️ В PROJECT_GLOSSARY.md упомянуты ещё
KKSMBB,KKSMBG,KKROOORENB— возможно региональные/новые коды. См. questions-to-business.md#committee-codes.
Код: CommitteeCode.java, CommitteeType.java.
ParticipantRole — роль на повестке13 значений с приоритетами (для сортировки в протоколе: "чья подпись первая"). canVote() — единственное место для проверки права голоса.
| Code | Описание | Priority | Голосует |
|---|---|---|---|
SCC |
Ответственный секретарь | 0 | ✅ |
CHIEF |
Председатель | 1 | ✅ |
SUBSCC |
Заместитель секретаря | 2 | ✅ |
SUBCHIEF |
Заместитель председателя | 3 | ✅ |
PARTICIPANT |
Член комитета | 4 | ✅ |
SUBPARTICIPANT |
Заместитель участника | 5 | ✅ |
ASSISTANT |
Ассистент | 6 | ✅ |
READER |
Читатель | 7 | ❌ |
INITIATOR |
Организатор | 8 | ❌ |
SPEAKER |
Спикер | 9 | ❌ |
AUDIT |
Аудит | 10 | ❌ |
INTERNAL_AUDIT |
Внутренний аудит | 11 | ❌ |
SUPERVISOR |
Супервизор | 12 | ❌ |
Код: ParticipantRole.java.
Question.Member.role)Хранится как String (справочник живёт в cred-question-api, не у нас). Реально используемые в protocol значения:
"SCC" — секретарь вопроса (частный случай в рамках одного вопроса)."SPEAKER" — докладчик.QuestionMemberRole CRED могут встречаться (INITIATOR, SUPERVISOR, STRUCTURING, GUEST, SUPERVISOR_RISK, RESPONSIBLE_RISK, EXPERT_RISK ...) — мы их просто пробрасываем без специальной обработки.Решение держать String, а не enum — чтобы не ломаться при эволюции справочника в CRED. См. ADR-0008 (to be written).
Код: Question.java → Member.
MeetingType — форма проведения заседанияINHOUSE ("Очная"), ONLINE ("Заочная"). Канонические подписи — из AgendaDto.MeetingType (в референсе есть три варианта — мы выбрали канон, см. ADR-0006).
Код: MeetingType.java.
VoteDecision — решение голосующего| Code | label (standalone) |
value (lowercase для шаблонов) |
|---|---|---|
APPROVE |
"За" | "за" |
DECLINE |
"Против" | "против" |
NON_VOTING |
"Не проголосовал" | "не голосовал" |
Два поля — потому что реф-шаблоны используют оба формата в разных контекстах. См. ADR-0007.
Код: VoteDecision.java.
ExtractKind / ExtractSource — тип и источник выпискиExtractKind: SHORT, SIMPLE, BOARD. Русские описания — наши догадки, ждём подтверждения бизнеса (см. questions-to-business).
ExtractSource: KIB_DISCHARGE_SERVICE, SMB_DISCHARGE_SERVICE, MANUAL.
CREATED → AGREEMENT → CHAIRMAN_AGREEMENT → SIGNED.
DRAFT → ON_SIGNING → SIGNED → DISCUSSED → ON_RESULT → FINISHED.DRAFT → IN_AGENDA → VOTING → ON_RESULT → REPORT → REPORT_SIGNED → END/PROTECTED/CANCELED/DISCONTINUED.| Термин | Значение |
|---|---|
| OBESRABUO | Система электронного принятия коллегиальных решений / протоколирование заседаний (точная расшифровка — TBC) |
| CRED | Credit Decision / кредитный процесс |
| КК | Кредитный комитет |
| КИБ | Корпоративно-инвестиционный бизнес |
| СМБ | Средний и малый бизнес |
| ГО СМБ | Групповой офис СМБ |
| ПКР-1 / PRKK | Внешняя система управления вопросами/решениями |
| КСКР / SCC | Ответственный секретарь комитета |
| ЭЦП / ЭП | Электронная цифровая подпись |
| EPA | Electronic Proof of Authorization — адаптер ЭЦП |
| ECM | Enterprise Content Management — файловое хранилище |
| ДККР | Департамент кредитного комитета рисков |
| ЮД | Юридический департамент |
| BFF | Backend For Frontend |
Полный словарь, включая термины frontend/CRED — в journal/_historical/PROJECT_GLOSSARY.md.
| Сервис | Назначение | Порт (наша сторона) |
|---|---|---|
OBESRABUO_agenda (V2 API) |
Повестка + вопросы + голосования + файлы вопросов | AgendaProvider, QuestionFileProvider |
OBESRABUO_common (events) |
Уведомления ProtocolSigned, ProtocolExtractSigned |
ProtocolEventsProvider (Phase 5) |
OBESRABUO_common (streaming) |
Outbound replication для BI/CRM/аудит | ProtocolStreamingProvider (Phase 5) |
OBESRABUO_common (feature flags) |
Runtime toggles | FeatureFlagProvider |
OBESRABUO Signature Storage |
Хранение ЭЦП | SignatureStorageAdapter |
| ECM (через common-lib) | Физические файлы протоколов/выписок | EcmStorageAdapter |
CRED_cred-question-api |
Только косвенно через agenda | — |