Skip to content

fix(registry): «№ документа» необязателен при создании документа (#18, 2.4.4) - #22

Merged
MaximilianKaufmannCode merged 1 commit into
mainfrom
fix/issue-18-optional-document-number
Jun 30, 2026
Merged

fix(registry): «№ документа» необязателен при создании документа (#18, 2.4.4)#22
MaximilianKaufmannCode merged 1 commit into
mainfrom
fix/issue-18-optional-document-number

Conversation

@MaximilianKaufmannCode

Copy link
Copy Markdown
Owner

Закрывает #18.

Уточнение задачи

Заголовок issue говорит «Тип документа», но уточняющий комментарий со скриншотом (запрошенный владельцем) явно указывает поле «№ документа*». Бэкенд это подтверждает: number уже nullable (колонка nullable, DocumentCreateRequest.number по умолчанию None), а type_code — обязателен по дизайну (NOT NULL, FK; тип задаёт кастомные поля и расписание уведомлений). Поэтому реализовано необязательное «№ документа» (как и просили в комментарии). Если имелся в виду именно Тип — это отдельная, более крупная задача (затронет модель уведомлений).

Проблема

В окне «Добавить документ» номер был помечен * и блокировал кнопку «Создать документ» до заполнения — хотя на бэкенде поле и так необязательное. Обязательность держалась только на форме (тот же класс, что ИНН в 2.2.1).

Исправление (только фронтенд)

  • createDocSchema: number теперь необязателен (max 500), без .min(1).
  • Пустое значение отправляется как null — документ создаётся без номера.
  • Метка без *; убран aria-required; плейсхолдер помечает «необязательно».
  • Тип CreateDocumentPayload.numberstring | null (соответствует бэкенду).
  • В реестре пустой номер отображается как «—» (общая конвенция приложения).

Компания и Тип документа остаются обязательными.

Проверки

  • Бэкенд/схема/контракт не менялись (поле уже было nullable) — данные в безопасности.
  • tsc + biome чисто; тест диалога обновлён (пустой № теперь сабмитится с null); 0 регрессий (8 падающих registry-тестов — пред-существующие useSearch-mock, подтверждено git stash).
  • Собрано и задеплоено на PreProd (atomic swap): version.json = 2.4.4, login 200 / API 401.

🤖 Generated with Claude Code

… 2.4.4)

The "Add document" dialog marked «№ документа» with * and disabled the create
button until it was filled — but the field was already optional on the backend
(the `number` column is nullable and DocumentCreateRequest.number defaults to
None). The requirement lived only in the form. Mirrors the INN-optional fix
(2.2.1): align the UI with the backend's intent.

- createDocSchema: `number` is now optional (max 500), no longer `.min(1)`.
- Empty/whitespace number submits as `null` (document created without a number).
- Label drops the `*`; aria-required removed; placeholder notes it's optional.
- CreateDocumentPayload.number typed `string | null` to match the backend.
- Registry table renders an empty number as «—» (app-wide convention).

Company and Document Type stay required (the type drives custom fields and the
notification schedule). Frontend-only — backend, schema and contracts unchanged.
tsc + biome clean; dialog test updated (blank number now submits with null);
no test regressions (8 failing registry tests are the pre-existing useSearch-mock
failures, confirmed via git stash). Built + deployed to PreProd (version.json 2.4.4).

Closes #18

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@MaximilianKaufmannCode
MaximilianKaufmannCode merged commit 6a88317 into main Jun 30, 2026
3 of 4 checks passed
@MaximilianKaufmannCode
MaximilianKaufmannCode deleted the fix/issue-18-optional-document-number branch June 30, 2026 10:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant