admin de3af9d5fa chore: rename UI Tochka→Bank, prod-ready compose, init migration, Caddy snippet
- UI nav: Точка → Банк (route /bank), label-only — internal Tochka API module unchanged
- compose: drop our own Caddy (queoserver uses host-level Caddy), web-nginx proxies /api/*+/webhooks/* to api:3030 internally; expose only 127.0.0.1:3031
- Dockerfile.api: simpler single-stage with tsx for prod (avoids dist build complexity)
- prisma/migrations/0_init committed via `prisma migrate diff` for `migrate deploy` in prod
- docker/Caddyfile.snippet: copy-paste block for queoserver's /etc/caddy/Caddyfile
- .gitignore: data/ (covers embedded-pg, postgres, caddy data dirs)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-30 21:31:48 +03:00

Doc_manager

Сервис создания договоров, счетов и актов/УПД с интеграцией банка Точка. Часть экосистемы Queo.

Стек

  • Backend — Node.js 20+ / Fastify / Prisma / PostgreSQL (TypeScript, ESM).
  • Frontend — React + Vite + TipTap (TypeScript).
  • Auth — SSO через auth.queo.ru (RS256 JWT в cookie q_at, JWKS-валидация).
  • Bank — Точка API: счета и акты/УПД создаются на стороне банка, договоры — наши.

Структура

apps/
  api/           # Fastify + Prisma
  web/           # React + Vite
packages/
  shared/        # zod-схемы и типы (DocBody, Tochka DTOs)
docker/
  docker-compose.yml
  Caddyfile

Подготовка перед разработкой

  1. Node.js ≥ 20 — установлен.
  2. PostgreSQL — локально или через Docker (docker compose up postgres).
  3. Auth_server должен принимать редиректы на doc.queo.ru — добавить в C:\project\Auth_server\.env:
    ALLOWED_RETURN_TO_HOSTS=auth.queo.ru,hall.queo.ru,cloud.queo.ru,doc.queo.ru
    

Быстрый старт «пощупать прямо сейчас»

Нет Postgres / Docker / доступа к auth.queo.ru — всё равно работает:

npm install
npm run dev:demo

Что делает dev:demo:

  • Запускает встроенный Postgres из node_modules (первый раз скачает ~80MB binaries в data/embedded-pg/).
  • Накатывает схему через prisma db push.
  • Сидит организацию DEFAULT_ORGANIZATION_ID.
  • Поднимает API на :3030 и web на :5173 параллельно.
  • В API включает DEV_BYPASS_AUTH=1 — фейковый admin без auth.queo.ru.

Открыть http://localhost:5173/ — попадаешь сразу в шелл (без логина), можно ходить:

  • /organization — реквизиты компании,
  • /clients — клиенты,
  • /services — каталог услуг,
  • остальное — заглушки до M3+.

Данные между перезапусками сохраняются в data/embedded-pg/. Чтобы начать с нуля — удалить эту папку.

⚠️ Безопасность: DEV_BYPASS_AUTH=1 обходит JWT. API hard-checks: при NODE_ENV=production с этим флагом процесс отказывается стартовать.

Полная установка (с реальным auth.queo.ru)

npm install
cp apps/api/.env.example apps/api/.env
# отредактировать DATABASE_URL, оставить DEV_BYPASS_AUTH=0
npm run prisma:migrate
npm run -w @doc-manager/api prisma:seed
npm run dev   # api+web с настоящей SSO-авторизацией

API на http://localhost:3030, web — на http://localhost:5173. Перед этим добавить doc.queo.ru в ALLOWED_RETURN_TO_HOSTS в C:\project\Auth_server\.env.

Тесты M1 (smoke)

  • GET http://localhost:3030/health{ ok: true }
  • Открыть http://localhost:5173 без cookie q_at → редирект на https://auth.queo.ru/auth/login?return_to=....
  • С валидной cookie от auth.queo.ru — /api/me отдаёт payload JWT.

Тесты M2 (организация, клиенты, услуги)

С Postgres и применённой миграцией:

  1. Поднять БД и применить миграцию:
    docker compose -f docker/docker-compose.yml up -d postgres
    npm run prisma:migrate     # создаст первую миграцию
    npm run -w @doc-manager/api prisma:seed   # сидит DEFAULT_ORGANIZATION_ID
    
  2. GET /api/organization → возвращает запись организации (после сида).
  3. GET /api/clients?q=... — поиск по name/inn/email.
  4. GET /api/services?includeArchived=1 — каталог + архив.
  5. В UI: /organization — заполнить реквизиты; /clients — добавить клиента; /services — добавить услугу с ценой и НДС.

SQL-предпросмотр миграции без БД: apps/api/prisma/init.sql.preview (генерируется через prisma migrate diff).

План реализации

См. C:\Users\VVMedia\.claude\plans\floofy-baking-jellyfish.md. Этапы M1M7.

Деплой (домашний сервер)

ssh -i ~/.ssh/id_sat vmv@192.168.0.158
cd ~/Doc-manager
git pull && docker compose build && docker compose up -d
S
Description
Doc_manager: ���������, �����, ���� + ���������� � ������. ����� Queo event OS.
Readme 599 KiB
Languages
TypeScript 95.6%
CSS 4.1%
Vim Snippet 0.2%
HTML 0.1%