/home / /projects / eaisto-gbo-f207
PRODUCTION #004

eaisto-gbo-f207

Реестр Ф-207 + личный кабинет партнёра + админ-контур

Веб-система для учёта свидетельств Ф-207: публичный поиск по VIN/кузову/шасси, кабинет организации для выпуска документов и админ-панель для управления реестром, пользователями и рассылками.

registry b2g cabinet compliance
🔎
Public реестр Ф-207
🏢
Partner кабинет организации
🛡
Admin управление системой
🧾
F-207 выпуск и печать
📖 README.md

# Контекст

«Нужна единая система, где можно проверить свидетельство Ф-207 в публичном реестре, а уполномоченным организациям — оформлять новые документы в личном кабинете. Плюс админ-контур для контроля пользователей, лимитов и качества данных.»

# Задача

  • Сделать публичный реестр с поиском по VIN, кузову, шасси и номеру Ф-207
  • Реализовать регистрацию с кодом подтверждения на email и вход по сессии
  • Собрать кабинет партнёра: анкета, эксперты, приборы, сертификаты, профиль
  • Добавить оформление свидетельства Ф-207 с валидацией и печатной формой
  • Построить админ-панель: пользователи, организации, реестр, рассылки
  • Защитить доступ к файлам uploads по роли и принадлежности организации

# Архитектура

┌─────────────────────────────────────────────────────────────┐
│                    PUBLIC WEB LAYER                         │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────────┐  │
│  │ Registry UI  │  │ Login/SignUp │  │ Static pages     │  │
│  │ (F-207 find) │  │ + email code │  │ privacy / terms  │  │
│  └──────────────┘  └──────────────┘  └──────────────────┘  │
└──────────────────────────┬──────────────────────────────────┘
                           │ REST API + Session
┌──────────────────────────▼──────────────────────────────────┐
│                     EXPRESS.JS 5 APP                         │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────┐ │
│  │ Auth        │  │ Registry    │  │ Cabinet             │ │
│  │ verify/mail │  │ search/list │  │ issue/profile/docs  │ │
│  └─────────────┘  └─────────────┘  └─────────────────────┘ │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────┐ │
│  │ Admin       │  │ Uploads ACL │  │ Bot command bridge  │ │
│  │ users/orgs  │  │ org/admin   │  │ open_url actions    │ │
│  └─────────────┘  └─────────────┘  └─────────────────────┘ │
└──────────────────────────┬──────────────────────────────────┘
                           │ Prisma
┌──────────────────────────▼──────────────────────────────────┐
│                       POSTGRESQL                             │
│ users | organizations | registry | instruments | broadcasts │
│ org_addresses | experts | compliance | email_codes          │
│ express_session (connect-pg-simple)                         │
└─────────────────────────────────────────────────────────────┘

# Модули системы

🔎
Публичный реестр

Поиск Ф-207 по четырём идентификаторам с нормализацией токенов и лимитами запросов

📮
Регистрация и почта

Код подтверждения на email, проверка срока действия кода, учёт верификации

🏢
Кабинет партнёра

Анкета, эксперты, приборы, сертификаты, выпуск Ф-207, профиль и уведомления

🛡
Админ-контур

Управление пользователями и организациями, правка реестра, массовые рассылки

📂
Безопасность файлов

Доступ к uploads только администратору или своей организации, без раскрытия структуры

🧾
Документы Ф-207

Формирование номера, хранение деталей выдачи, подготовка печатной формы

# Технологии

Node.js 20 Express.js 5 PostgreSQL Prisma ORM express-session connect-pg-simple Zod Multer Nodemailer PM2 + Nginx

# Результат

📍

Один контур: публичный реестр + кабинет + админка в единой модели данных

Сценарий выпуска Ф-207 переведён из ручного процесса в структурированную форму

🔐

Роли и сессии через PostgreSQL, доступ к документам — по принадлежности организации

📬

Email-коды, уведомления и админ-рассылки закрыли операционные точки коммуникации

start-project.sh
# Нужен реестр, кабинет или регламентный контур?
$ describe --task "реестр, ЛК, роли, документы, админ-панель"
→ Разберём требования, соберём архитектуру и план внедрения