feat(seed): dev-ГК под документы fixtures (Русский Бисквит из ЕЦП, владельцы форм ДКБ) #32

Merged
aep merged 1 commits from feat/31-dev-seed-company-groups into main 2026-10-06 16:08:23 +03:00
Owner

Bounded, Closes #31. Вопрос фронта: после make seed-dev нет ни одной ГК. Решение владельца 06.10.2026: документы сидом не доливать, но ГК и ЮЛ должны соответствовать документам из fixtures.

Что сделано

  • api/seed/dev/company_groups.yaml: ГК «Русский Бисквит» ровно как в выгрузке ЕЦП CRM (20 ЮЛ/ИП, crm_id, филиал «Санкт-Петербургский РФ» создаётся вместе с ГК, ГСК из РБ и Счастливочной); ГК «Унагранде», «Новороссийский прокатный завод», «Агрофирма Межениновская» по ИНН из форм ББ/ОФР. Алиасы — имена контрагентов и шапок из ОСВ («Юг-Финанс / ПЕКАРНЯ СЧАСТЛИВОЧНАЯ», ООО "Пекарня "Счастливочная", шапка НПЗ «с обособленными подразделениями» и т. д.): документы из fixtures ложатся на «своих» ЮЛ с counterparty_check = MATCH, контрагенты резолвятся.
  • Загрузчик (seed_lib/loaders.py): ИНН по виду лица, entity_type, виды групп, члены только из своей ГК, ЮЛ не более чем в одной ГСК и одной ГСЗ, уникальность имён ГК и ИНН; всё до записи в БД.
  • Применение (seed_lib/apply.py): upsert ГК по name, ЮЛ по inn, ГСК/ГСЗ по (ГК, name); алиасы и члены только добавляются; коды GK-/GSK-/GSZ-NNNNNN из тех же последовательностей, что API; истории и аудита нет (как у импорта при создании); удалений нет.
  • --no-dev-groups в CLI и run_seed(dev_groups=False): dev-данные без ГК. Фикстуры тестов API (seeded, scratch-БД импорта) используют его, поэтому тесты API по-прежнему начинают с пустых справочников.
  • Тесты: test_seed_dev.py (состав, алиасы, коды, идемпотентность, перенос ГК на другой филиал, валидация yaml, флаг CLI); спека reference-data-seed — сценарий «Dev-ГК под документы fixtures»; README §4.

Проверка: make check 1132 passed; pytest -m integration -k "seed or import" 23 passed. Руками: make seed-dev на свежей БД → GET /directories/company-groups показывает 4 ГК; загрузить fixtures/osv/rb/2024-Q3/ОСВ_60…xls на ЮЛ 3528052718 — документ RECOGNIZED, строка «Юг-Финанс / ПЕКАРНЯ СЧАСТЛИВОЧНАЯ» резолвится в Счастливочную.

Что проверить человеку: состав dev-ГК (реальные ИНН/названия группы РБ в коде репозитория — данные из fixtures); решение «неизвестный филиал ГК создаётся как РФ».

Находки. Два интеграционных теста падают уже на main после мержа fixtures #8/#9 (новые golden): test_mapping_golden ждёт 88 снимков, их 113; test_consolidation_fixtures ждёт UNMAPPED_TOTAL = 1381, стало 1379 (ИНН из текста названий). Отдельная issue в arm-core.

Rulings I made. ОСВ-организации ДКБ без ИНН (Цимлянский, НКЗ, Новоросметалл, Приманыческий, Агрокомплекс) не заводятся (OQ-136). Вид существующей ГСК/ГСЗ seed не меняет. Алиас, занятый другим ЮЛ, — ошибка seed, а не перенос.

🤖 Generated with Claude Code

Bounded, Closes #31. Вопрос фронта: после `make seed-dev` нет ни одной ГК. Решение владельца 06.10.2026: документы сидом не доливать, но ГК и ЮЛ должны соответствовать документам из fixtures. **Что сделано** - `api/seed/dev/company_groups.yaml`: ГК «Русский Бисквит» ровно как в выгрузке ЕЦП CRM (20 ЮЛ/ИП, `crm_id`, филиал «Санкт-Петербургский РФ» создаётся вместе с ГК, ГСК из РБ и Счастливочной); ГК «Унагранде», «Новороссийский прокатный завод», «Агрофирма Межениновская» по ИНН из форм ББ/ОФР. Алиасы — имена контрагентов и шапок из ОСВ («Юг-Финанс / ПЕКАРНЯ СЧАСТЛИВОЧНАЯ», `ООО "Пекарня "Счастливочная"`, шапка НПЗ «с обособленными подразделениями» и т. д.): документы из fixtures ложатся на «своих» ЮЛ с `counterparty_check = MATCH`, контрагенты резолвятся. - Загрузчик (`seed_lib/loaders.py`): ИНН по виду лица, `entity_type`, виды групп, члены только из своей ГК, ЮЛ не более чем в одной ГСК и одной ГСЗ, уникальность имён ГК и ИНН; всё до записи в БД. - Применение (`seed_lib/apply.py`): upsert ГК по `name`, ЮЛ по `inn`, ГСК/ГСЗ по (ГК, `name`); алиасы и члены только добавляются; коды `GK-`/`GSK-`/`GSZ-NNNNNN` из тех же последовательностей, что API; истории и аудита нет (как у импорта при создании); удалений нет. - `--no-dev-groups` в CLI и `run_seed(dev_groups=False)`: dev-данные без ГК. Фикстуры тестов API (`seeded`, scratch-БД импорта) используют его, поэтому тесты API по-прежнему начинают с пустых справочников. - Тесты: `test_seed_dev.py` (состав, алиасы, коды, идемпотентность, перенос ГК на другой филиал, валидация yaml, флаг CLI); спека `reference-data-seed` — сценарий «Dev-ГК под документы fixtures»; README §4. **Проверка:** `make check` 1132 passed; `pytest -m integration -k "seed or import"` 23 passed. Руками: `make seed-dev` на свежей БД → `GET /directories/company-groups` показывает 4 ГК; загрузить `fixtures/osv/rb/2024-Q3/ОСВ_60…xls` на ЮЛ `3528052718` — документ `RECOGNIZED`, строка «Юг-Финанс / ПЕКАРНЯ СЧАСТЛИВОЧНАЯ» резолвится в Счастливочную. **Что проверить человеку:** состав dev-ГК (реальные ИНН/названия группы РБ в коде репозитория — данные из fixtures); решение «неизвестный филиал ГК создаётся как РФ». **Находки.** Два интеграционных теста падают уже на main после мержа fixtures #8/#9 (новые golden): `test_mapping_golden` ждёт 88 снимков, их 113; `test_consolidation_fixtures` ждёт `UNMAPPED_TOTAL = 1381`, стало 1379 (ИНН из текста названий). Отдельная issue в arm-core. **Rulings I made.** ОСВ-организации ДКБ без ИНН (Цимлянский, НКЗ, Новоросметалл, Приманыческий, Агрокомплекс) не заводятся (OQ-136). Вид существующей ГСК/ГСЗ seed не меняет. Алиас, занятый другим ЮЛ, — ошибка seed, а не перенос. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
aep added 1 commit 2026-10-06 16:05:53 +03:00
seed/dev/company_groups.yaml: ГК «Русский Бисквит» ровно как в fixtures/directories/ecp-export-russkiy-biskvit.xlsx
(20 ЮЛ/ИП, crm_id, филиал «Санкт-Петербургский РФ», ГСК из РБ и Счастливочной), ГК Унагранде/НПЗ/Межениновская по
ИНН из форм ББ/ОФР; алиасы под имена контрагентов и шапок ОСВ («Юг-Финанс / ПЕКАРНЯ СЧАСТЛИВОЧНАЯ», ...), чтобы
документы из fixtures ложились на «своих» ЮЛ и резолвились. Загрузчик проверяет ИНН, виды, ссылки членов и
уникальность «ЮЛ в одной ГСК/ГСЗ» до записи; apply — upsert по name/inn/(ГК, name), коды из последовательностей
API, без удалений. `--no-dev-groups` / `run_seed(dev_groups=False)` — dev-данные без ГК; фикстуры тестов API
используют его, чтобы начинать с пустых справочников.

make check: 1132 passed; интеграция seed/import: 23 passed. Два теста падают и на main из-за обновлённых golden
(test_mapping_golden 88 → 113, test_consolidation_fixtures UNMAPPED_TOTAL) — отдельная issue.

Closes #31

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b
aep merged commit ffeb26fa9e into main 2026-10-06 16:08:23 +03:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RSHB/arm-core#32
No description provided.