From b65ca31dcaa5a92a5db13e55939c1aa144a6cb6e Mon Sep 17 00:00:00 2001 From: Andrey Epifancev Date: Tue, 6 Oct 2026 17:07:20 +0400 Subject: [PATCH] =?UTF-8?q?docs(dev):=20dev-=D0=93=D0=9A=20=D0=B8=D0=B7=20?= =?UTF-8?q?make=20seed-dev=20=D0=B2=20QA-=20=D0=B8=20=D1=84=D1=80=D0=BE?= =?UTF-8?q?=D0=BD=D1=82-=D0=B3=D0=B0=D0=B9=D0=B4=D0=B0=D1=85;=20=D0=B8?= =?UTF-8?q?=D0=BC=D0=BF=D0=BE=D1=80=D1=82=20=D0=95=D0=A6=D0=9F=20=E2=80=94?= =?UTF-8?q?=20=D0=BD=D0=B0=20=D1=81=D1=82=D0=B5=D0=BD=D0=B4=D0=B5=20=D0=B1?= =?UTF-8?q?=D0=B5=D0=B7=20dev-=D0=93=D0=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #38 Co-Authored-By: Claude Fable 5.1 Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b --- dev/frontend-auth-guide.md | 4 +++- dev/qa-guide.md | 22 ++++++++++++++++------ 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/dev/frontend-auth-guide.md b/dev/frontend-auth-guide.md index 4d4c675..947dbe1 100644 --- a/dev/frontend-auth-guide.md +++ b/dev/frontend-auth-guide.md @@ -56,7 +56,9 @@ email, как именно SPA получит токен (в старом АРМ | 422 массив | пустой email | | 404 `{"detail":"Not Found"}` | ручка выключена (`DEBUG=false` или `AUTH_DEV_ISSUER=false`) — так выглядит прод | -Dev-пользователи (`make seed-dev`), по одному на роль: +Dev-пользователи (`make seed-dev`), по одному на роль (тот же `make seed-dev` создаёт и dev-ГК с ЮЛ под документы из +`fixtures` — ГК «Русский Бисквит» и три ГК пакета ДКБ, см. `qa-guide.md` раздел 4.2; экраны справочников и консолидации не +пустые сразу после сида): | Email | Роль | Филиал | Видимость | |---|---|---|---| diff --git a/dev/qa-guide.md b/dev/qa-guide.md index bc4c5da..a2c6cdb 100644 --- a/dev/qa-guide.md +++ b/dev/qa-guide.md @@ -92,7 +92,7 @@ docker compose -f ../docs/dev/docker-compose.yml ps make venv # api/.venv на Python 3.11, зависимости из PyPI cp api/.env.example api/.env # dev-настройки: DEBUG=true, AUTH_DEV_ISSUER=true make migrate # схема БД -make seed-dev # справочники + 7 dev-пользователей +make seed-dev # справочники + 7 dev-пользователей + dev-ГК под документы fixtures (см. ниже) cd api && .venv/bin/python run_server.py ``` @@ -124,6 +124,13 @@ REACT_APP_API_URL=http://localhost:8000 REACT_APP_ROOT_PATH=/ npm run start Настройки из `api/.env.example` (`DEBUG=true`, `AUTH_DEV_ISSUER=true`, `CORS_ORIGINS=`, `FORWARDED_ALLOW_IPS=127.0.0.1`) для локального стенда менять не нужно: `DEBUG=true` включает документацию API на `/docs`, dev-вход и разрешает `make seed-dev`. +`make seed-dev` (arm-core #31) создаёт, кроме пользователей, **dev-ГК под документы из `fixtures`**: ГК «Русский Бисквит» ровно как в +выгрузке ЕЦП CRM (20 ЮЛ/ИП, филиал «Санкт-Петербургский РФ», ГСК из АО «Русский бисквит» `3528052718` и ООО «Пекарня +Счастливочная» `3528104476`, алиасы под имена контрагентов из ОСВ) и ГК владельцев форм пакета ДКБ («Унагранде», «Новороссийский +прокатный завод», «Агрофирма Межениновская»). Поэтому ОСВ и формы из `../fixtures` загружаются сразу на «свои» ЮЛ (6.6, 7.1), а +импорт выгрузки ЕЦП (6.3) на таком стенде отвечает `GK_EXISTS`/`LE_EXISTS`. Стенд без dev-ГК (пустые справочники, как в тестах +ядра): `cd api && .venv/bin/python -m scripts.seed --dev --no-dev-groups`. + ### 4.4 Вход В форме введите **email** dev-пользователя (не имя и не логин) и нажмите «Войти (dev)». Пароля нет. Это единственная форма @@ -219,8 +226,9 @@ curl -s localhost:8000/api/v1/me -H "Authorization: Bearer $TOKEN" ### 6.3 Импорт из ЕЦП CRM (пользователь `admin`, curl или Swagger) -Файл: `fixtures/directories/ecp-export-russkiy-biskvit.xlsx` (21 строка). Выполняйте на свежем стенде или после -сброса (раздел 9), иначе счётчики будут другими. +Файл: `fixtures/directories/ecp-export-russkiy-biskvit.xlsx` (21 строка). Выполняйте на стенде **без dev-ГК**: после сброса +(раздел 9) засейте `python -m scripts.seed --dev --no-dev-groups` вместо `make seed-dev`, иначе ГК «Русский Бисквит» и её ЮЛ уже +есть и счётчики будут другими (I2 даст `GK_EXISTS`/`LE_EXISTS`, `offices_created` 0). | № | Шаги | Ожидание | |---|---|---| @@ -274,14 +282,16 @@ docker compose -f ../docs/dev/docker-compose.yml exec postgres \ `PROCESSED` — до 15 секунд (опрос публикатора и цикла маппинга по 5 с, парсер — доли секунды). Подготовка: пользователь `ka_go` (права `DOCUMENT_EDIT`, `DOCUMENT_VIEW`, видит все ЮЛ). ЮЛ должно называться как в шапке ОСВ — -`АО "Русский бисквит"`, ИНН `3528052718` (если вы делали импорт I2 — найдите его в `GET /directories/legal-entities?q=бисквит` -и используйте существующее, иначе создайте как в D9). Для проверки «чужого филиала» понадобится ГК с филиалом. +`АО "Русский бисквит"`, ИНН `3528052718`. После `make seed-dev` оно уже есть («РУССКИЙ БИСКВИТ, АО» с алиасом под шапку): +`GET /directories/legal-entities?q=бисквит` — берите его `id`; создавать как в D9 нужно только на стенде без dev-ГК. +Для проверки «чужого филиала» понадобится ГК с филиалом (dev-ГК «Унагранде» — Головной офис, «Агрофирма Межениновская» — +Ростовский РФ). ```bash TOKEN=$(curl -s -X POST localhost:8000/api/v1/dev/token -H 'Content-Type: application/json' \ -d '{"email":"ka_go@armka.local"}' | python3 -c 'import sys,json;print(json.load(sys.stdin)["access_token"])') H="Authorization: Bearer $TOKEN" -# ЮЛ (пропустите, если уже есть) +# ЮЛ — только на стенде без dev-ГК (после make seed-dev оно есть: возьмите id из GET …/legal-entities?q=бисквит) LE=$(curl -s -X POST localhost:8000/api/v1/directories/legal-entities -H "$H" -H 'Content-Type: application/json' \ -d '{"inn":"3528052718","entity_type":"ЮЛ","name":"АО \"Русский бисквит\""}' | python3 -c 'import sys,json;print(json.load(sys.stdin)["id"])') # загрузка (U1)