Files
transcriber/tasks/items/dev-run-task.md
T
av 97c6c7c440 tasks: заведены задачи про владельца панели из конфига и команду локального запуска
- admin-owner-from-config первой строкой: сервис заводит владельца панели
  по ключу конфига; задача отменяет требование спеки storage, и это названо
  в рамках
- dev-run-task следом: task dev поднимает сервис и заглушку разом, гасит
  оба по Ctrl+C; зависит от ключа конфига
2026-08-15 20:39:45 +03:00

52 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🧹 Поднимать сервис и заглушку одной командой
- **Тип:** chore
- **Категория:** Очередь — шаг dev заводит владельца панели тем самым ключом — до него команду не собрать
- **Зачем:** Локальная проверка требует двух терминалов, ручной остановки обоих процессов и чистки каталога данных; учётную запись заводят проходом по браузеру.
Шаг `task dev CONFIG=<путь> USER=<почта>` поднимает сервис и подставной
провайдер OIDC разом, кладёт данные во временный каталог, заводит учётные записи
и гасит оба процесса по Ctrl+C.
Задуманное устройство:
- конфиг пишет человек и передаёт путём — шаг его не сочиняет;
- шаг подменяет каталог данных: кладёт копию переданного конфига во временный
каталог со своим `data_dir`, чтобы прогон начинался с пустой базы независимо от
того, что написано в конфиге. Временное живёт в `/tmp` — в `data/` писать
запрещено (CLAUDE.md, «Запреты»);
- оба процесса идут одной группой, `trap` на `INT` и `TERM` гасит их разом,
`wait` держит терминал;
- шаг заводит обычную учётную запись входом: поднимает `cmd/oidcstub` с
`-email` из `USER`, сам проходит цепочку входа и тем создаёт запись;
- владельца панели заводит **ключ конфига**, который приносит
[admin-owner-from-config](admin-owner-from-config.md). До неё шаг владельца
панели завести не может — отсюда и место в списке.
## Затрагивает
- `Taskfile.yml` — шаг `dev` с переменными `CONFIG` и `USER`;
- скрипт запуска в `scripts/` — он попадает под шаг `shell` гейта;
- `CLAUDE.md`, раздел «Команды»;
- `README.md`, раздел про локальный запуск.
## Критерии приёмки
- Команда поднимает оба процесса и печатает адрес, по которому открывать
приложение. Оракул: прогон с тестовым конфигом — сервис и заглушка слушают свои
порты.
- Ctrl+C гасит обоих и не оставляет висящих процессов. Оракул: `pgrep` по обоим
именам после остановки — пусто.
- После запуска в базе есть учётная запись с переданной почтой. Оракул: запрос к
коллекции пользователей во временной базе.
- Каталог данных лежит во временном месте, а `data/` не тронут. Оракул: путь базы
из журнала подъёма и `git status` после прогона.
- `task gate` остаётся зелёным, скрипт проходит `shellcheck`. Оракул: прогон
гейта целиком.
## Рамки
Шаг локальный: наружу не ходит, боевых ключей не требует и в образ не попадает.
Распознавание при выдуманных ключах не работает — это остаётся как есть, шаг его
не подменяет.