# Thunderbird Portal (THBD) Единый портал THBD: запросы → ставки подрядчиков → заявки → документы → слежение → финансы → отчёты. Дубликат `elmi-portal`, адаптированный под другую компанию — та же архитектура и функциональность. Стек: Next.js (App Router) + TypeScript, Drizzle ORM + better-sqlite3 (WAL), Docker/docker-compose — тот же проверенный стек, что и в соседнем `top-tickets`. ## Разработка ```bash cp .env.example .env # заполнить ADMIN_BOOTSTRAP_PASSWORD npm install npm run db:migrate npm run dev ``` ## Прод (Docker) ```bash cp .env.example .env # заполнить ADMIN_BOOTSTRAP_PASSWORD docker compose build docker compose up -d ``` Приложение слушает порт 8088 (см. `docker-compose.yml`, `PORT`/`DATA_DIR`). ## Роли - **admin** — полный доступ, справочники, пользователи, шаблоны документов. - **manager** — свои запросы/заявки/слежение. - **accountant** — заявки (просмотр), финансы (к оплате/к получению), отчёты. - **client** — только страница слежения по токену (`/t/[token]`), без входа. ## Известные ограничения MVP (см. план — Фаза 2/3) - Шаблоны документов (`templates-seed/`) — пусто на старте (в отличие от elmi-portal, откуда это скопировано). Загрузить .docx компании можно в Настройки → Шаблоны. - Нет email→запрос авто-парсинга (Claude API) и интеграции со СБИС/ЭДО. - Известный интермиттентный флейк при сборке образа: `SQLITE_BUSY` во время параллельного сбора данных страниц Turbopack'ом — при сбое просто повторить `docker compose build` (1–3 раза), как и в `top-tickets`.