ogrechkoandClaude Sonnet 5 e9e05d859d Add document-signature authority + traffic-light order status (Phase 1)
Per-user configurable signing rights (canSign + optional ruble limit) with
a facsimile-signature image upload; a per-order checklist of the 4 minimum
documents (Договор/Заявка-договор+Поручение, УПД, ЭТрН, Экспедиторская
расписка) with a red/yellow/green status derived from present+signed
state. Signing checks the order's income-line sum against the signer's
limit; if they're not authorized, the request is redirected to everyone
who can sign (push notification + order comment) instead of silently
failing. Phase 2 (the 3-funnel stage/field redesign from the flowchart
screenshots, plus subcontractor mailing) is separate follow-up work.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Gh2UXUQUVBWroWEnn1FLFG
2026-08-31 17:46:19 +00:00

Thunderbird Portal (THBD)

Единый портал THBD: запросы → ставки подрядчиков → заявки → документы → слежение → финансы → отчёты. Дубликат elmi-portal, адаптированный под другую компанию — та же архитектура и функциональность.

Стек: Next.js (App Router) + TypeScript, Drizzle ORM + better-sqlite3 (WAL), Docker/docker-compose — тот же проверенный стек, что и в соседнем top-tickets.

Разработка

cp .env.example .env   # заполнить ADMIN_BOOTSTRAP_PASSWORD
npm install
npm run db:migrate
npm run dev

Прод (Docker)

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.
S
Description
No description provided
Readme
532 KiB
0 Stars 1 Watchers 0 Forks
Languages
TypeScript 98.1%
CSS 1.4%
JavaScript 0.4%
Dockerfile 0.1%