Files
site_aegisone/other/AI-EXISTING-TWO-PROJECT-INSTRUCTION.md

12 KiB

Внимание: на сервере работает несколько проектов

Дата обновления

2026-05-21

Сервер

81.177.141.34 — единый VPS для независимых проектов. Пользователь: angel ОС: Ubuntu 24.04, Docker Engine


1. Проекты на сервере

Проект A: aegisone — Сервисный портал AegisOne Engineering

Параметр Значение
Тип Python FastAPI + PHP (публичный сайт) + PostgreSQL
Python FastAPI на Uvicorn (4 workers), порт 8000
PHP Nginx (порт 8080) + PHP-FPM (порт 9000)
PostgreSQL 16-alpine, порт 5432, БД: aegisone
Домены service.aegisone.ru (Python), aegisone.ru (PHP)
Директории /opt/projects/aegisone-py/ (Python), /opt/projects/aegisone-php/ (PHP)
Docker проект aegisone — контейнеры: aegisone-app, aegisone-postgres
Deploy py_service/deploy.sh — версионирование, архив, SCP, docker compose up

Nginx-роутинг (service.aegisone.ru → localhost:8000):

/              → localhost:8000 (FastAPI root — страница логина)
/service/*     → localhost:8000 (весь сервис FastAPI)
/service-style.php, /logo.php, /assets/* → localhost:8080 (PHP)

Структура Python-приложения:

py_service/
├── app/
│   ├── main.py                 — точка входа FastAPI, lifespan, статика
│   ├── config.py               — настройки (DB, SECRET_KEY, DOCS_DIR и т.д.)
│   ├── database.py             — подключение к PostgreSQL
│   ├── dependencies.py         — get_current_user, require_role
│   ├── models/
│   │   └── models.py           — SQLAlchemy модели (User, Object, Client, SLA и т.д.)
│   ├── routers/
│   │   └── service_pages.py    — все основные роуты + API бота Max
│   ├── documents_router.py     — роуты документов (/service/documents/)
│   ├── services/
│   │   └── docs_permissions.py — discover_docs(), load_permissions()
│   ├── templates/              — Jinja2 шаблоны
│   │   ├── base.html           — базовый HTML (noindex, favicon, theme switcher)
│   │   ├── login.html          — страница входа
│   │   ├── page.html           — основной layout с сайдбаром
│   │   ├── dashboard.html      — дашборд (дублирует сайдбар из page.html)
│   │   ├── documents/          — шаблоны документов
│   │   ├── pages/              — шаблоны страниц (customers, objects, sla и т.д.)
│   │   └── bot_*.html          — страницы управления ботом Max
│   └── static/
│       ├── css/                — service.css, service-theme.css
│       ├── js/                 — theme.js
│       └── img/                — favicons, svg, logo
├── docs/                       — .md файлы документов (26 шт)
├── scripts/                    — bump_version.py, migrate_mysql_to_pg.py
├── Dockerfile, docker-compose.yml
└── requirements.txt

Роли пользователей: owner (владелец), engineer (инженер), technician (техник)

Управление ботом Max (раздел в сайдбаре для owner):

  • /service/bot-settings — настройки (имя, телефоны, email, часы работы, YandexGPT)
  • /service/bot-settings/responses — редактирование шаблонов ответов
  • /service/bot-settings/features — toggle функций бота
  • /service/bot-settings/categories — CRUD категорий обращений
  • /service/bot-settings/kb — база знаний (FAQ)
  • /service/bot-settings/conversations — просмотр диалогов
  • /service/bot-settings/users — пользователи бота
  • /service/bot-settings/test-runner — тестовый прогон диалога
  • /service/bot-settings/analytics — статистика + рассылки

Проект C: max_bot — Чат-бот «София» для Max Messenger

Параметр Значение
Тип Python FastAPI (Max Bot API)
FastAPI порт 8002
PostgreSQL общая БД aegisone (порт 5432), таблицы с префиксом bot_
Домен max.aegisone.ru
Директория /opt/projects/aegisone-py/max_bot/
Контейнер aegisone-max-bot
Webhook https://max.aegisone.ru/webhook → localhost:8002
Токен бота id2311381465_bot (хранится в bot_settings)

Структура:

max_bot/
├── app/
│   ├── main.py                 — FastAPI app, webhook, API для портала
│   ├── config.py               — настройки (shared DB URL)
│   ├── database.py             — AsyncSession (общая БД aegisone)
│   ├── max_api.py              — клиент Max API (send_message, subscribe)
│   ├── bot_engine.py           — обработчик webhook событий
│   ├── fsm.py                  — конечный автомат состояний
│   ├── conversation.py         — управление диалогами
│   ├── settings_cache.py       — кэш настроек (5 мин TTL)
│   ├── text_renderer.py        — рендер шаблонов с переменными
│   ├── file_storage.py         — сохранение файлов (local → Yandex Disk future)
│   ├── handlers/               — обработчики состояний
│   │   ├── greeting.py         — /start, приветствие
│   │   ├── consent.py          — ФЗ-152 согласие
│   │   ├── contact.py          — сбор контактов
│   │   ├── inquiry.py          — сбор обращения + авто-категоризация
│   │   ├── handoff.py          — передача оператору
│   │   ├── main_menu.py        — главное меню
│   │   └── features/           — доп. функции (risk_score, sla_status, etc.)
│   ├── integrations/
│   │   ├── _1c_unf.py          — webhook в 1С:УНФ + ответ от 1С
│   │   ├── portal_db.py        — чтение из общей БД
│   │   └── yandex_gpt.py       — YandexGPT для категоризации/эмоций
│   ├── keyboards/
│   │   └── inline.py           — генераторы inline-клавиатур
│   └── models/
│       └── models.py           — SQLAlchemy модели (bot_*)
├── sql/
│   └── bot_schema.sql          — CREATE TABLE + начальные данные
├── nginx/
│   └── max-aegisone.conf       — nginx config
├── Dockerfile, docker-compose.yml
└── requirements.txt

Таблицы бота в общей БД: bot_users, bot_conversations, bot_messages, bot_consent_logs, bot_1c_sync_log, bot_knowledge_base, bot_categories, bot_settings, bot_features, bot_response_templates, bot_broadcasts

Nginx-роутинг (max.aegisone.ru → localhost:8001):

/webhook       → localhost:8001/webhook (Max API webhook)
/api/*         → localhost:8001/api/* (API для сервисного портала)
/health        → localhost:8001/health

Проект B: VoIdeaAI — AI-платформа

Параметр Значение
Тип Python FastAPI + React Frontend + PostgreSQL + Redis
FastAPI порт 8020
PostgreSQL порт 5444, БД: voidea
Redis порт 6380
Gitea порт 3000, PostgreSQL 5433
Домены voideaai.ru, git.voideaai.ru
Директория /opt/projects/voidea/
Docker проект voidea
Nginx конфиг /opt/projects/nginx-proxy/conf.d/voideaai.ru.conf

2. Критические правила

Порты — НЕ занимать!

 8000 — aegisone FastAPI
 8001 — max_bot FastAPI
 8080 — aegisone PHP nginx
 9000 — aegisone PHP-FPM
 5432 — aegisone PostgreSQL
 8020 — VoIdea FastAPI
 5444 — VoIdea PostgreSQL
 6380 — VoIdea Redis
 3000 — Gitea web
 5433 — Gitea PostgreSQL
 9001 — Portainer HTTP
 9443 — Portainer HTTPS

nginx-proxy общий

  • Конфиги: /opt/projects/nginx-proxy/conf.d/
  • Файлы: aegisone.conf, service-aegisone.conf, max-aegisone.conf, voideaai.ru.conf, gitea.conf
  • Перед рестартом nginx: docker compose -p nginx-proxy exec nginx nginx -t

Docker

  • Все контейнеры используют network_mode: host (bridge не работает на OpenVZ)
  • docker system prune -af удалит build cache ВСЕХ проектов
  • Префиксы Docker Compose:
    • docker compose -p aegisone (или cd /opt/projects/aegisone-py && docker compose)
    • docker compose -p voidea
    • docker compose -p gitea
    • docker compose -p nginx-proxy
    • docker compose -p portainer

Диск

  • 20GB всего, ~13GB свободно
  • Проверка: df -h /
  • Очистка: docker builder prune -af

Публичная часть (PHP) НЕ ТРОГАТЬ

  • PHP сайт (aegisone.ru) — отдельный проект, не связан с Python-сервисом
  • Все изменения только в py_service/ и max_bot/

3. Команды для проверки состояния

aegisone (Python)

docker ps --filter name=aegisone
docker logs aegisone-app --tail=50
curl -s -o /dev/null -w '%{http_code}' http://localhost:8000/service/dashboard/
cat /opt/projects/aegisone-py/version.txt
docker exec aegisone-postgres psql -U aegisone -d aegisone -c "\dt"

max_bot (София)

docker ps --filter name=max-bot
docker logs aegisone-max-bot --tail=50
curl -s http://localhost:8001/health
# Проверить webhook:
curl -s http://localhost:8001/api/bot/settings

VoIdeaAI

docker compose -p voidea ps
docker compose -p voidea logs --tail=20 app
curl -s http://localhost:8020/health

4. Деплой

aegisone (py_service)

# Локально (из py_service/)
./deploy.sh [--bump patch|minor|major]

max_bot

# SCP на сервер, затем:
cd /opt/projects/aegisone-py/max_bot
docker compose build --no-cache
docker compose up -d

5. Troubleshooting

Проблема Действие
aegisone FastAPI не отвечает docker logs aegisone-app --tail=50
max_bot не отвечает docker logs aegisone-max-bot --tail=50
Ошибка БД docker logs aegisone-postgres --tail=20
Документ не найден Проверить discover_docs() — файл .md есть в py_service/docs/?
Webhook не работает Проверить curl http://localhost:8001/health и nginx конфиг
Portainer не открывается Проверить http://81.177.141.34:9001 и https://81.177.141.34:9443
Не хватает места df -h /, docker builder prune -af
nginx ошибка docker compose -p nginx-proxy exec nginx nginx -t

Создан: 2026-05-20 Обновлён: 2026-05-21 — добавлен max_bot (София)