Technická příručka

Wiki Centrum

⚙️ Technická příručka 📄 O projektu

Technická příručka: Nasazení a údržba AI Hodnocení

Tento dokument popisuje technické řešení projektu. Zahrnuje problematiku Docker kontejnerizace, integrace OpenClaw a správu relační databáze PostgreSQL běžící nad frameworkem Supabase.


1. Architektura kontejnerů a systémové požadavky

Systém vyžaduje ke spolehlivému chodu stabilní VPS platformu pro asynchronní vytěžování metadat a hodnocení AI agenty. - Operační systém: Ubuntu 24.04.4 LTS (Noble Numbat) - Minimální hardware: 6 CPU jader, 11+ GB RAM - Uživatelé: Oprávnění root (k instalacím systémových démonů) a omezený privilegovaný uživatel agentai (k produkčnímu běhu Flasku a CRON botů).

OpenClaw Gateway

Nasazení softwarových agentů (např. bota na Discord/Telegram, který poskytuje příkazy) je obsluhováno frameworkem OpenClaw. Naše Python skripty fungují v tomto pojetí jako samostatné Skills. Umožňují mimo jiné agenty notifikovat nebo se nechat řídit pomocí chatu, aniž by tím byla svázána nebo limitována přímo hlavní iterativní smyčka v Python kódu nad žákovskými databázemi.


2. Relační Databáze – Supabase v Dockeru

Celý projekt je datově centralizován z předchozích rozdrobených file-based CSV souborů do formální kontejnerové vrstvy pomocí Self-Hosted edice Supabase.

2.1 Nasazení Supabase

Iniciováno pomocí uživatele root. Závislosti (Docker Engine, docker-ce, docker-compose-plugin) jsou aplikovány k provozu z produkčního adresáře /opt/supabase.

mkdir -p /opt/supabase && cd /opt/supabase
git clone --depth 1 https://github.com/supabase/supabase .
cd docker
cp .env.example .env

Soubor .env byl modifikován na unikátních proměnných POSTGRES_PASSWORD, JWT_SECRET, ANON_KEY a SERVICE_ROLE_KEY pro zachování hardwarové bezpečnosti.

⚠️ Úprava portů a síťování (Direct DB)

Pro eliminaci chyb ("Tenant or user not found" viz Supavisor pooler), byl uvnitř docker-compose.yml zpřístupněn přímý komunikační TCP port PostgreSQL: 5433. Uvnitř sítě tedy běží kontejner na mapování 5433:5432.

docker compose pull
docker compose up -d

3. Návrh relačního SQL schématu

Aby Python (app.py a main.py) mohl pracovat rychle, data jsou uspořádána do normalizovaných logických celků s využitím pevných vazeb (Foreign Keys).

  1. Tabulka students (Studenti): Hlavní páteř žáků. Záznamy tvoří nezávislý id uuid standard, unikátní login (nickname) a kmenovou skupinu (group_name).
  2. Tabulka evaluation_periods (Období): Uzly času. Obsahuje zřetelná data např. Týden 09/2026 s mezníky pondělí-neděle. Lze tak odděleně počítat měsíce a cykly.
  3. Tabulka weekly_evaluations (Průsečík hodnocení): Pevná křižovatka tvořící reporty. Pomocí FK si najde svého Studenta a Své Období. Je dedikována na body od AI (odměny/srážky), popisy commitů a celkové podmínkové asertace. Spočítá dynamicky skóre (pts_total).
  4. Tabulka commits: Slouží pro hluboký audit log nebo historická bádání "Kdo vytvořil jaký zdroják v 03:00".

Díky tomuto SQL schematu webová aplikace generuje celoroční top-list naprosto exaktně do sekundy bez pomalého parsování složek dotazem: SELECT s.nickname, SUM(w.pts_total) FROM weekly_evaluations w JOIN students s ...


4. Konfigurace Python (agentai) a Ochrana soukromí

Uživatel agentai využívá virtuální prostředí venv a komunikuje s databází lokálně na portu 5433 s knihovnou psycopg2-binary. Relační zabezpečení:


5. Zálohování a Exhalační Cyklus

Administrativní garance nepoškozených dat a historie obhajuje samostatný Linuxový script /home/agentai/ai_hodnoceni/db_backup.sh.

#!/bin/bash
pg_dump "$DATABASE_URL" --format=custom -f "/home/agentai/ai_hodnoceni/backups/ai_kredit_db_backup_$(date +%F).sql"
gzip "/home/agentai/ai_hodnoceni/backups/ai_kredit_db_backup_$(date +%F).sql"
  1. Cron: Zajišťuje kompletní automatizaci serveru. Soubor run_monitor.sh zajišťuje real-time monitorovací dashboard aktivací v pravidelných 2 hodinách. Databázový cyklus db_backup.sh obsluhuje Linux Task Scheduler na rutině Každé pondělí v 8:00 Ráno bezprostředně po AI hodnocení celé třídy z půlnoci.
  2. Zajištěna je komprimace gzip pro minimalizaci objemu uložených binárních dat na disku.