feat: publish applications CRM

This commit is contained in:
2026-08-21 11:33:10 +00:00
commit 7d984716f5
95 changed files with 12255 additions and 0 deletions
+54
View File
@@ -0,0 +1,54 @@
# applications_crm
CRM-панель для обработки обращений граждан: авторизация сотрудников, список заявок, фильтрация, статусы и приоритеты, история изменений, комментарии, аналитика и CSV import/export.
Проект размещён в организации [IT-One](https://git.it-one.pro/IT-One) в разделе клиентских проектов.
## Стек
- Next.js 16 + React 19 + TypeScript
- Prisma 6 + SQLite
- Tailwind CSS 4 и Radix UI
- Bun или Node.js 22+
## Локальный запуск
```bash
cp .env.example .env
# задайте DATABASE_URL, ADMIN_PASSWORD и AUTH_SECRET
npm install
npx prisma generate
npx prisma db push
npm run dev
```
Панель будет доступна по адресу `http://localhost:3000/crm`.
## Переменные окружения
- `DATABASE_URL` — путь к SQLite-файлу;
- `ADMIN_PASSWORD` — пароль сотрудника CRM;
- `AUTH_SECRET` — случайный секрет подписи сессий;
- `PUBLIC_LEADS_SECRET` — внутренний секрет server-to-server ingest endpoint.
Не добавляйте реальные `.env`-файлы, SQLite-базы, production-артефакты или токены в Git.
## Production
Production-сборка использует standalone output:
```bash
npm run build
NODE_ENV=production PORT=3100 node .next/standalone/server.js
```
При публикации под `/crm` используется `basePath` из `next.config.ts`, а reverse proxy должен направлять `/crm` и `/crm/*` на отдельный upstream.
## API
- `/crm/api/auth/*` — авторизация сотрудников;
- `/crm/api/leads/*` — защищённые операции с заявками;
- `/crm/api/public/leads` — закрытый внутренний endpoint для server-to-server интеграции формы;
- `/crm/api/health` — health-check.
Публичный endpoint не принимает заявки без `PUBLIC_LEADS_SECRET`.