2026-02-19 10:36:41 +03:00
# AiForm — платформа приёма обращений о защите прав потребителя
2025-10-24 12:02:17 +03:00
2026-02-19 10:36:41 +03:00
В е б -форма и Telegram Mini App для подачи обращений о защите прав потребителя. Интеграция с CRM (vTiger), n8n, SMS-верификация и авторизация через Telegram.
2025-10-24 12:02:17 +03:00
---
2026-02-19 10:36:41 +03:00
## Назначение
2025-10-24 12:02:17 +03:00
2026-02-19 10:36:41 +03:00
- **В е б :** форма на https://aiform.clientright.ru — описание проблемы, загрузка документов, подтверждение заявления.
- **Telegram Mini App:** тот же функционал внутри бота (@klientprav_bot ) с авторизацией по Telegram (без SMS при первом заходе).
- Черновики, восстановление сессии, статусы заявок (черновик, в работе, готово).
2025-10-24 12:02:17 +03:00
2026-02-19 10:36:41 +03:00
---
2025-10-24 12:02:17 +03:00
2026-02-19 10:36:41 +03:00
## Стек
2025-10-24 12:02:17 +03:00
2026-02-19 10:36:41 +03:00
| Компонент | Технология |
|-----------|------------|
| **Backend** | Python 3.11, FastAPI (async) |
| **Frontend** | React 18, TypeScript, Vite, Ant Design |
| **БД** | PostgreSQL, MySQL (полисы/CRM), Redis (сессии) |
| **Очереди** | RabbitMQ |
| **Хранилище** | S3 (Timeweb Cloud) |
| **Автоматизация** | n8n (воркфлоу, вебхуки) |
| **Интеграции** | Telegram Mini App SDK, SMS (сервис провайдера) |
2025-10-24 12:02:17 +03:00
---
2026-02-19 10:36:41 +03:00
## Быстрый старт
2025-10-24 12:02:17 +03:00
2026-02-19 10:36:41 +03:00
### Локальная разработка
2025-10-24 12:02:17 +03:00
2026-02-19 10:36:41 +03:00
**Backend:**
2025-10-24 12:02:17 +03:00
```bash
cd backend
python3 -m venv venv
2026-02-19 10:36:41 +03:00
source venv/bin/activate # Windows: venv\Scripts\activate
2025-10-24 12:02:17 +03:00
pip install -r requirements.txt
2025-11-19 18:46:48 +03:00
uvicorn app.main:app --reload --host 0.0.0.0 --port 8200
2025-10-24 12:02:17 +03:00
```
2026-02-19 10:36:41 +03:00
**Frontend:**
2025-10-24 12:02:17 +03:00
```bash
cd frontend
npm install
2025-11-19 18:46:48 +03:00
npm run dev -- --host 0.0.0.0 --port 5175
2025-10-24 12:02:17 +03:00
```
2026-02-19 10:36:41 +03:00
Форма: http://localhost:5175
API: http://localhost:8200
Swagger: http://localhost:8200/docs
2025-10-24 12:02:17 +03:00
2026-02-19 10:36:41 +03:00
### Продакшн (Docker)
2025-10-24 12:02:17 +03:00
2026-02-19 10:36:41 +03:00
```bash
# Сборка и запуск
docker-compose -f docker-compose.prod.yml up -d --build
2025-10-24 12:02:17 +03:00
2026-02-19 10:36:41 +03:00
# Или скрипт деплоя (git push + пересборка)
./deploy-to-prod.sh
2025-10-24 12:02:17 +03:00
```
2026-02-19 10:36:41 +03:00
- **Frontend (prod):** порт 5176 → внутри 3000
- **Backend (prod):** network_mode: host, порт 8200
2025-10-24 12:02:17 +03:00
2026-02-19 10:36:41 +03:00
Подробнее: [DEPLOYMENT.md ](DEPLOYMENT.md ).
2025-10-24 12:02:17 +03:00
---
2026-02-19 10:36:41 +03:00
## Telegram Mini App
2025-10-24 12:02:17 +03:00
2026-02-19 10:36:41 +03:00
- Открытие формы из бота → загрузка aiform.clientright.ru в WebView.
- Фронт определяет контекст (URL/referrer/user-agent) и подгружает `telegram-web-app.js` только в Mini App.
- При наличии `initData` вызывается `POST /api/v1/tg/auth` ; бэкенд проверяет подпись, дергает n8n, создаёт сессию в Redis и возвращает `session_token` , `unified_id` , `has_drafts` .
- В Mini App: компактный скин, заявки «В работе» скрыты, кнопка «Выход» закрывает приложение. В вебе для заявок «В работе» — кнопка «Просмотреть в Telegram» (ссылка на @klientprav_bot ).
Подробнее: [docs/TELEGRAM_MINIAPP_FLOW.md ](docs/TELEGRAM_MINIAPP_FLOW.md ).
---
## Основные API (v1)
| Метод | Путь | Назначение |
|-------|------|------------|
| POST | `/api/v1/tg/auth` | Авторизация по Telegram initData |
| POST | `/api/v1/session/verify` | Проверка сессии по session_token |
| POST | `/api/v1/session/logout` | Выход, удаление сессии из Redis |
| POST | `/api/v1/sms/send` | Отправка SMS-кода |
| POST | `/api/v1/sms/verify` | Проверка SMS-кода |
| GET | `/api/v1/claims/drafts/list` | Список черновиков (по unified_id / phone / session_id) |
| GET | `/api/v1/claims/drafts/{claim_id}` | Данные черновика |
| DELETE | `/api/v1/claims/drafts/{claim_id}` | Удаление черновика (не для in_work) |
| POST | `/api/v1/claims/wizard` | Получение плана (wizard) по описанию |
| POST | `/api/v1/claims/approve` | Подтверждение заявления (отправка в обработку) |
| POST | `/api/v1/documents/upload` | Загрузка документа |
| GET | `/api/v1/events/claim-plan/{session_token}` | SSE: данные заявления (claim:plan) |
Полный список — в Swagger: `/docs` .
2025-10-24 12:02:17 +03:00
---
2026-02-19 10:36:41 +03:00
## Структура проекта
2025-10-24 12:02:17 +03:00
```
2025-11-19 18:46:48 +03:00
ticket_form/
2026-02-19 10:36:41 +03:00
├── backend/ # FastAPI
│ ├── app/
│ │ ├── main.py
│ │ ├── config.py
│ │ ├── api/ # Роутеры (claims, sms, session, telegram_auth, n8n_proxy, documents, …)
│ │ └── services/
│ ├── requirements.txt
│ └── Dockerfile
├── frontend/ # React + Vite
│ ├── src/
│ │ ├── pages/ # ClaimForm.tsx — основная форма
│ │ ├── components/form/ # Step1Phone, StepDraftSelection, StepWizardPlan, …
│ │ └── ...
│ ├── package.json
│ └── Dockerfile.prod
├── docker-compose.prod.yml
├── deploy-to-prod.sh
├── .env # Н е в git: TELEGRAM_BOT_TOKEN, N8N_*, БД, Redis, S3
├── README.md # Этот файл
├── DEPLOYMENT.md # Деплой DEV → PROD
├── ENVIRONMENTS.md # Переменные окружения
└── docs/
├── TELEGRAM_MINIAPP_FLOW.md
└── ... # Доп. документация по n8n, OCR, CRM
2025-10-24 12:02:17 +03:00
```
---
2026-02-19 10:36:41 +03:00
## Окружения и конфиг
2025-10-24 12:02:17 +03:00
2026-02-19 10:36:41 +03:00
- **DEV:** форма на 5177, бэкенд на 8201 (см. docker-compose.dev.yml при наличии).
- **PROD:** https://aiform.clientright.ru (frontend за nginx, backend на 8200).
2025-10-24 12:02:17 +03:00
2026-02-19 10:36:41 +03:00
Переменные окружения: [ENVIRONMENTS.md ](ENVIRONMENTS.md ). Критично: `TELEGRAM_BOT_TOKEN` , `N8N_TG_AUTH_WEBHOOK` , БД, Redis, S3.
2025-10-24 12:02:17 +03:00
---
2026-02-19 10:36:41 +03:00
## Git
2025-10-24 12:02:17 +03:00
2026-02-19 10:36:41 +03:00
- **Репозиторий (prod):** http://147.45.146.17:3002/negodiy/aiform_prod.git
- Клонирование: `git clone http://147.45.146.17:3002/negodiy/aiform_prod.git`
- После изменений: `git add . && git commit -m "feat: описание" && git push`
- Деплой на сервер: `./deploy-to-prod.sh` (при необходимости).
2025-10-24 12:02:17 +03:00
---
2026-02-19 10:36:41 +03:00
## Документация
2025-10-24 12:02:17 +03:00
2026-02-19 10:36:41 +03:00
| Файл | Содержание |
|------|------------|
| [DEPLOYMENT.md ](DEPLOYMENT.md ) | Деплой, скрипты, .env |
| [ENVIRONMENTS.md ](ENVIRONMENTS.md ) | Переменные окружения |
| [docs/TELEGRAM_MINIAPP_FLOW.md ](docs/TELEGRAM_MINIAPP_FLOW.md ) | Поток Telegram Mini App и tg/auth |
2025-10-24 12:02:17 +03:00
---
2026-02-19 10:36:41 +03:00
**Автор:** Фёдор + AI Assistant
**Обновлено:** январь 2026