40 lines
3.1 KiB
Markdown
40 lines
3.1 KiB
Markdown
# Модуль: Организация
|
|
|
|
**Ответственность**: описывает единый нормализованный профиль юридического лица и его фирменных ресурсов.
|
|
**Расположение**: `.template/lib/domain/company.typ`
|
|
|
|
## Публичный интерфейс
|
|
|
|
| Символ | Тип | Описание |
|
|
|--------|-----|----------|
|
|
| `company-profile()` | конструктор dictionary | Создаёт профиль из секций `legal`, `contacts`, `banking`, `brand`, `director`, `resources` |
|
|
| `validate-company()` | функция | Проверяет обязательные реквизиты и типы необязательных полей |
|
|
| `company-display-name()` | чистая функция | Возвращает полное или краткое наименование по политике профиля |
|
|
| `company-resource()` | чистая функция | Возвращает нормализованное значение ресурса из уже построенного profile |
|
|
|
|
## Зависимости
|
|
|
|
| Модуль | Что использует |
|
|
|--------|----------------|
|
|
| Нет | Domain не читает JSON и не строит пути |
|
|
|
|
## Инварианты
|
|
|
|
- `id`, полное наименование и юрисдикция заданы.
|
|
- ИНН/КПП/ОГРН и БИН/КБЕ хранятся как строки, чтобы не терять ведущие нули и формат.
|
|
- Контактные и банковские поля имеют единые ключи для всех компаний; неприменимое поле равно `none`.
|
|
- Brand color нормализован до color до передачи renderer.
|
|
- Логотип, подпись и печать имеют значение `none`, `path` или готовый content; произвольная строка после infrastructure-нормализации не допускается.
|
|
- Director содержит должность и ФИО; ресурсы подписи и печати хранятся отдельно и не задают координаты на странице.
|
|
|
|
## Намеренно НЕ обрабатывает
|
|
|
|
- Поиск компании по содержимому документа.
|
|
- Чтение `.template/companies/` и `.private/`.
|
|
- Отрисовку логотипа, подписи, печати и реквизитов.
|
|
- Валидацию законодательства конкретной юрисдикции.
|
|
|
|
## Заметки для агента
|
|
|
|
> Существующие JSON-файлы отличаются по набору полей. Нормализуйте их через infrastructure, не добавляйте условные ключи в renderer. Для РФ и Казахстана используйте общую структуру с `none` для неприменимых идентификаторов. Не переносите пользовательские изображения в CompanyProfile.
|