4.1 KiB
4.1 KiB
VM — contracts.kube5s.ru (5.172.178.213)
SSH
ssh -i ~/.ssh/naeel_vm_id_ed25519 naeel@5.172.178.213
Сервисы
| Сервис | Порт | systemd unit | Назначение |
|---|---|---|---|
| gunicorn (Flask UI) | 5001 | — (start.sh) | Веб-интерфейс |
| convert_server.py | 8766 | contracts |
API: upload, classify, compare, /static |
| drhider_server.py | 8767 | contracts-drhider |
Обфускация документов |
| nginx | 443 | nginx |
Прокси + SSL (Certbot) |
| PostgreSQL | 5432 | — | БД baza, пользователь super |
| act_runner | — | act_runner |
Gitea CI runner |
Деплой
# Из папки contracts-flask/:
bash deploy/sync.sh
Скрипт копирует deploy/compare/, deploy/drhider/, deploy/db/, deploy/convert_*.py → /home/naeel/contracts/ на ВМ, затем делает sudo systemctl restart contracts contracts-drhider.
Nginx-конфиг — вручную:
scp -i ~/.ssh/naeel_vm_id_ed25519 deploy/nginx-contracts.conf naeel@5.172.178.213:/tmp/
ssh -i ~/.ssh/naeel_vm_id_ed25519 naeel@5.172.178.213 sudo cp /tmp/nginx-contracts.conf /etc/nginx/sites-enabled/
ssh -i ~/.ssh/naeel_vm_id_ed25519 naeel@5.172.178.213 'sudo nginx -t && sudo systemctl reload nginx'
Команды на ВМ
# Статус сервисов
systemctl status contracts contracts-drhider
# Логи
journalctl -u contracts -f
journalctl -u contracts-drhider -f
# Перезапуск
sudo systemctl restart contracts
sudo systemctl restart contracts-drhider
# Nginx
sudo nginx -t && sudo systemctl reload nginx
# БД
psql -U super -d baza
# Порты
ss -tlnp | grep -E '5001|8766|8767|5432'
.env
Файл на ВМ: /home/naeel/contracts/.env
DB_HOST=127.0.0.1
DB_PORT=5432
DB_NAME=baza
DB_USER=super
DB_PASS=
LLM_API_URL=https://api.aillm.ru/v1/chat/completions
LLM_API_KEY=...
LLM_MODEL=gpt-oss-120b
Flask (site/app.py) читает VM_API (по умолчанию https://contracts.kube5s.ru).
Nginx-роутинг
contracts.kube5s.ru :443
/ → 127.0.0.1:5001 Flask UI
/api/drhider → 127.0.0.1:8767 DrHider обфускация
/api/* → 127.0.0.1:8766 convert_server
/static/ → 127.0.0.1:8766
/upload → 127.0.0.1:8766
/lucee/* → contractor.luceek8s.dev.nubes.ru (legacy)
Структура БД (PostgreSQL baza)
| Таблица | Назначение |
|---|---|
documents |
Загруженные документы |
contracts |
Договоры |
supplements |
Допсоглашения к договорам |
spec_current |
Текущая спецификация услуг |
spec_events |
История изменений спецификации |
prompts |
LLM-промпты (extract/diff) |
upload_chunks |
Чанки загрузки |
Файлы на ВМ
/home/naeel/contracts/
├── .env
├── convert_server.py # API-сервер :8766
├── convert_doc.py # Конвертер .doc → .docx
├── drhider/
│ ├── drhider.py # Ядро обфускации
│ └── drhider_server.py # HTTP-сервер :8767
├── compare/
│ ├── process.py, llm.py, classify.py, ...
│ └── parse.py, grouping.py, upload.py
├── db/
│ ├── connection.py # Пул коннектов
│ ├── documents.py, contracts.py, supplements.py
│ └── spec_current.py, spec_events.py, prompts.py
├── files/ # Загруженные документы
└── llm_prompt.py # Шаблоны промптов extract/diff
Пути в проекте
contracts-flask/
├── deploy/ → копируется на ВМ (sync.sh)
├── site/ → Flask UI (gunicorn на ВМ :5001)
├── Dockerfile → контейнеризация (не используется на ВМ)
└── .gitea/workflows/deploy.yaml → CI (act_runner)