2026-05-19 — Phase 1 полностью реализована
Что сделано
Реализованы все 9 блоков Phase 1 Must Have:
A. Layout + тёмная тема (#23)
- Дизайн-токены из 05-DESIGN.md (JetBrains Mono + Inter)
- Sidebar с навигацией, TopBar, active links
B. Auth (Lucia v3)
- Email/password login, argon2 хэши
- Роли owner/editor/viewer
- /setup страница первичной настройки
- Middleware защиты роутов
C. Объекты и сметы
- CRUD объектов (/projects, /projects/[id])
- Импорт сметы из xlsx (Гранд-Смета / Smeta.RU формат)
- Heuristic column detector для разных форматов
D. Загрузка документов
- MinIO S3-совместимое хранилище
- Upload форма: PDF, JPEG, PNG, XLSX (до 20 МБ)
- Валидация MIME типов
E. AI-парсер документов (doc-worker)
- Claude Opus 4.7 для PDF/изображений, Haiku 4.5 для текста
- Каталог позиций с text-search матчингом
- Автоматическое создание новых позиций каталога
- Детектор дублей → алерты
F. Финансовая модель
- Договоры (с заказчиком / с подрядчиком)
- Поступления от заказчика (аванс/этапный/финальный)
- Платежи поставщикам и подрядчикам
- Расчёт маржи: (поступления) - (смета) - (внесметные)
G. Алерты
- UI: список открытых/закрытых, severity emoji 🔴🟡🔵
- Закрытие алерта с фиксацией фактической экономии
- Детектор дублей в doc-worker
H. Telegram-бот (grammY)
- Long-polling, приём файлов (PDF, фото) и текста
- Привязка telegram_id к user_account в /settings
- Graceful fallback при пустом токене
I. Дашборд
- Карточки объектов с маржой в реальном времени
- 🟢🟡🔴 по порогам 10%/5% (PRD §3.3)
- Последние алерты и документы
J. Деплой
- Docker images собраны: bablo-app, bablo-doc-worker, bablo-tg-bot
- Все контейнеры запущены, health checks pass
- Push в GitVerse (origin) + GitHub (mirror)
Что не сделано (отложено)
- Калькулятор хомутовых лесов (PRD Should Have)
- NPM Proxy Host в Nginx (нужен домен от Руслана)
- TELEGRAM_BOT_TOKEN — нужно получить токен и задать в .env
- AUTH_SECRET — нужно задать в .env для production
Технические решения
- Auth: Lucia v3 + DrizzlePostgreSQLAdapter (не Auth.js — проще для Phase 1)
- Parsing: polling каждые 5с, batch 3, без WebSocket/Redis
- Costs: Haiku для текста (
$0.0002/req), Opus для PDF ($0.015/req) - Standalone: next.config.ts output: ‘standalone’ для Docker
Следующие шаги
- Задать TELEGRAM_BOT_TOKEN и AUTH_SECRET в /opt/bablo/.env
- Настроить NPM Proxy Host для bablo-app (домен → 127.0.0.1:3010)
- Запустить /setup для создания учётной записи Руслана
- Загрузить тестовую смету xlsx и КП от поставщика
- Проверить первый алерт-дубль