Migrate to PostgreSQL + add FastAPI webapp for Coolify deploy

Backend migration:
- Replace pyodbc/SQL Server with psycopg2/PostgreSQL throughout
- Rewrite Database class with portable SQL: SERIAL, ON CONFLICT, NOW()
- Lowercase table names (rip_help_files, rip_help_sections) - Postgres convention
- libpq connection string format in HELP_DB_CONN

Webapp (webapp/):
- FastAPI app: GET /, GET /images/<f>, GET /home-image, GET /api/sections,
  POST /api/keywords/<code>, GET /healthz
- Jinja2 template extracted from generate_html.py with HTTP image URLs
- Direct keyword save to DB (no JSON download detour)
- Same prefix scoping as CLI tools (?prefix=RIP)

Deployment:
- Dockerfile (python:3.12-slim + uvicorn)
- docker-compose.yml for local dev
- requirements-webapp.txt (minimal, no Windows-only deps)
- .dockerignore excludes pipeline scripts and BAT files
- README updated with webapp section and Coolify deploy guide

Also: switch AI model to claude-haiku-4-5 (~3x cheaper, same quality for this task)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-20 17:00:44 +03:00
parent 711053b8bd
commit 9613420d1d
13 changed files with 1034 additions and 167 deletions

21
docker-compose.yml Normal file
View File

@@ -0,0 +1,21 @@
# Local dev / Coolify production
# За local: docker compose up --build
# За Coolify: качваш през git, Coolify сам пуска docker build + run
version: '3.8'
services:
webapp:
build: .
container_name: rip-help-webapp
environment:
# libpq формат (Postgres). Коригирай към твоя Postgres host.
HELP_DB_CONN: "host=192.168.88.18 port=5432 dbname=rip_help_system user=sa password=Parola~12345!!!"
OUTPUT_DIR: "/data/help_output"
HOME_IMAGE: "/data/help_output/Bairaci.png"
volumes:
# Картинките се очакват в OUTPUT_DIR/images/
# На сървъра ще качваш с WinSCP/rsync (напр. /home/sabo/share/help_output)
- ./data:/data/help_output:ro
ports:
- "8000:8000"
restart: unless-stopped