Commit Graph

41 Commits

Author SHA1 Message Date
JiriUhlir 0a37507d86 Změny:
NEW_APP_SCRIPT odstraněn z app/config.py.
create_app už volá skeleton přes app_templates.create_script:načte template podle ID,
ověří is_enabled = 1 a create_enabled = 1 přes get_app_template(..., create_enabled=True),
ověří neprázdný create_script,
volá [create_script, app_id, app_name].

runtime, language, container_port, health_url dál bere z vybraného template řádku.
DB helper a migrace znají nové sloupce create_script a deploy_script.
deploy_script se při create použije, pokud je v template vyplněný; jinak zůstává dosavadní deploy fallback.
2026-06-03 09:23:59 +02:00
JiriUhlir 54c86702d2 Co se změnilo:
app_templates je teď jediný source of truth.
Detail služby načítá šablony přes is_enabled = 1.
Vytvoření služby načítá šablony přes is_enabled = 1 AND create_enabled = 1.
Select hodnoty používají app_templates.id, takže fastapi odpovídá existující službě microsoft-365-service.
Při vytvoření služby se z vybrané šablony nastaví template, runtime, language, container_port a health_url.
Neznámá šablona se zobrazí jako Neznámá šablona a detail nespadne.
Hardcoded python-fastapi / seznam šablon byl odstraněn.
2026-06-03 09:02:36 +02:00
JiriUhlir 786d055f6b Přidáno:
tlačítko Přihlásit přes Gitea na login stránku
zachovaný lokální login jako nouzový admin fallback
GET /portal/auth/gitea/login
GET /portal/auth/gitea/callback
OAuth state přes session a ověření přes secrets.compare_digest
výměna code za token a načtení /api/v1/user
mapování Gitea uživatele do users bez ORM
nové Gitea účty dostanou role = developer, existující role se zachová
disabled user is_active = 0 se nepřihlásí
audit eventy auth.gitea.login.started, auth.gitea.login.success, auth.gitea.login.failed
bezpečné chybové hlášky bez detailů a bez zobrazení client secretu
2026-06-01 13:53:06 +02:00
JiriUhlir 6aa5e69ee4 Přidáno:
nová stránka /portal/incidents s title CSBot Services Portal - Incidenty
menu Provoz -> Incidenty
aktivní incidenty a historie posledních 100 incidentů
barevné stavy: open červeně, resolved zeleně
karta Aktivní incidenty a seznam Poslední incidenty na přehledu
realtime napojení přes existující operations-live.js a snapshot
sekce Incidenty služby v detailu služby, posledních 20 incidentů
DB helpery pro service_incidents
migrace/indexy pro lokální prostředí, kde tabulka ještě neexistuje
2026-06-01 13:38:06 +02:00
JiriUhlir 994171be1a feat(portal): add app metadata and variables management 2026-06-01 13:13:17 +02:00
JiriUhlir 1ade865df4 update seznamu sluzeb 2026-05-29 12:07:13 +02:00
JiriUhlir ed194093e6 Přidal jsem Health Monitoring do portálu:
Přehled má nové karty: Zdravé služby, Nezdravé služby, Nedostupné služby.
Přehled zobrazuje sekci Služby vyžadující pozornost pro unhealthy a unreachable.
Snapshot /portal/ws/operations teď obsahuje health data a stránka je aktualizuje přes existující realtime vrstvu.
Seznam služeb zobrazuje aktuální health status a poslední kontrolu, včetně řazení Podle zdraví.
Detail služby má sekce Zdraví služby a Historie kontrol s posledními 50 záznamy.
Přidal jsem audit event service.health.view.
Browser title teď používá formát CSBot Services Portal - ..., takže detail služby odpovídá požadavku.
Nepoužil jsem ORM, vše je přes SQLite dotazy.
2026-05-29 11:57:57 +02:00
JiriUhlir 56f0b632de navigace 2026-05-29 11:42:46 +02:00
JiriUhlir 064ae93831 Upravil jsem:
responzivitu layoutu, menu, karet, filtrů, tlačítek, tabulek a log panelů v styles.css
tabulky se na menších šířkách horizontálně posouvají místo rozbíjení layoutu
menu má teď přímé položky Přehled, Služby a rozbalovací skupiny Provoz, Správa
stránkování se vůbec nezobrazuje, pokud existuje jen jedna stránka
Předchozí / Další se nezobrazují, když daný směr není dostupný
odstranil jsem staré neaktivní disabled pagination odkazy
2026-05-29 11:40:09 +02:00
JiriUhlir 6109bdfe61 cestina, UI, UX 2026-05-29 11:34:07 +02:00
JiriUhlir d145161e4e Add unified operations realtime dashboard
- add /portal/ws/operations WebSocket snapshot endpoint
- add shared operations-live.js with reconnect and operations:snapshot events
- update Operations, Jobs, and Workers pages to use realtime snapshots
- keep job detail live logs on dedicated /ws/jobs/{job_id}/logs endpoint
- add Jobs and Workers pagination/filtering
- remove old page auto-refresh behavior from jobs/deployments
- normalize main navigation labels
- move New App CTA from menu to Apps page
- add backup download action for admins
- add Workers pages and operations dashboard data helpers
2026-05-29 11:17:17 +02:00
JiriUhlir 0dcf9b7b05 life jobs logs 2026-05-29 11:02:43 +02:00
JiriUhlir e3019bd76e download backup admin possibility 2026-05-29 10:56:20 +02:00
JiriUhlir 6e5d9b3120 operations 2026-05-29 10:44:25 +02:00
JiriUhlir 3804bb32c4 workers fix 2026-05-29 10:40:15 +02:00
JiriUhlir 48a9b20379 workers 2026-05-29 10:35:56 +02:00
JiriUhlir 765c840120 kontrola na jobs na nedoployovatelne repositare 2026-05-29 09:30:54 +02:00
JiriUhlir 4b4bf55696 filtry v jobs a shrnuti 2026-05-29 09:23:36 +02:00
JiriUhlir f651f7efd6 added jobs handling. 2026-05-29 09:16:37 +02:00
JiriUhlir 88601451dc Implementována portálová část SQLite job queue.
Přidán DB helper pro jobs a job_logs bez ORM.
Přidána idempotentní migrace pro job tabulky včetně created_by_display_name.
Přidány stránky /portal/jobs a /portal/jobs/{id}.
Jobs page zobrazuje status, type, target, source, created_by, created_at, started_at, finished_at.
Job detail zobrazuje payload, result/error a job_logs.
Queued/running joby mají auto-refresh po 5 s.
Navigace portálu obsahuje odkaz na Joby.
App redeploy už nespouští deploy script přímo; vytváří queued job deploy_app s prázdným payloadem.
Po redeploy se uživatel přesměruje na detail jobu.
Přidán audit event app.redeploy.queued s metadata={"job_id": job_id}.
Přidána ochrana proti duplicitnímu aktivnímu deploy jobu pro stejnou appku.
2026-05-28 14:02:49 +02:00
JiriUhlir 17a4d4db1b copying, evidovat btn hidden 2026-05-28 13:33:22 +02:00
JiriUhlir 8624352253 strankovani u deploys a styly pro pocitadla 2026-05-28 13:26:58 +02:00
JiriUhlir e6ffeb8fef deployment observability, filters, stats, details 2026-05-28 13:22:51 +02:00
JiriUhlir 80d82d36dd audit logging 2026-05-28 11:49:59 +02:00
JiriUhlir f18aabb5ba Add portal authentication and removed deploy old templates 2026-05-28 11:45:29 +02:00
JiriUhlir aa103bc129 Merge branch 'main' of http://192.168.66.130:3000/appfactory/appfactory-portal 2026-05-28 11:40:52 +02:00
JiriUhlir 09c742fefb auth via DB 2026-05-28 11:40:49 +02:00
AppFactory Bot 915ee48131 Use database as apps source and add deployments UI 2026-05-28 10:14:22 +02:00
JiriUhlir db039e5988 Read apps and resources from database 2026-05-28 10:11:31 +02:00
JiriUhlir a2edca2fec deploz statuses css 2026-05-28 10:08:59 +02:00
JiriUhlir 08f3fc1e83 apps change 2026-05-28 10:07:22 +02:00
JiriUhlir 614ccb5e71 styles combine 2026-05-28 10:02:25 +02:00
AppFactory Bot 198f68381e Fix template response usage 2026-05-28 09:53:39 +02:00
JiriUhlir f32216848d Register deployments route 2026-05-28 09:48:44 +02:00
AppFactory Bot 3a40eb02a6 Add portal database layer 2026-05-28 09:44:54 +02:00
JiriUhlir 182d8d3c4c hidden style 2026-05-27 13:15:33 +02:00
JiriUhlir 3e1d1f5360 cz texty 2026-05-27 13:09:34 +02:00
JiriUhlir dcc1a2f3ad csbot styly 2026-05-27 13:01:56 +02:00
JiriUhlir 8585690de0 styles update 2026-05-27 12:49:00 +02:00
JiriUhlir 2b20444324 rozdeleni do struktury 2026-05-27 12:15:11 +02:00
AppFactory Bot 12f6323185 Initial AppFactory portal service 2026-05-27 12:05:33 +02:00