Commit Graph

  • d50093e893 docs read fix main JiriUhlir 2026-08-03 12:04:13 +02:00
  • eb7ee612c3 service detail change - md docs and toggable sections. JiriUhlir 2026-08-03 11:47:38 +02:00
  • f67a3fc993 novy prehled prirazovani IP apod. JiriUhlir 2026-07-30 07:13:12 +02:00
  • 6beca6f79a ownership problem fix JiriUhlir 2026-07-16 12:17:47 +02:00
  • ec9a643291 nazev u sluzby + kontrola u formulare nove JiriUhlir 2026-07-16 12:05:02 +02:00
  • 3dc0c5b146 updated sh runner JiriUhlir 2026-07-13 09:14:50 +02:00
  • 44a36ffb20 scheduled fix JiriUhlir 2026-06-23 07:33:31 +02:00
  • a7a53f064c fix JiriUhlir 2026-06-22 14:08:37 +02:00
  • 1a88ca57f9 delete jen vytvoří job JiriUhlir 2026-06-22 13:51:48 +02:00
  • bd256d565c c JiriUhlir 2026-06-17 12:47:53 +02:00
  • 223f59d750 Merge branch 'main' of https://git.csbot.cz/appfactory/appfactory-portal JiriUhlir 2026-06-17 12:03:03 +02:00
  • b62600821f users styles JiriUhlir 2026-06-17 12:03:00 +02:00
  • 137b79f70b chore: refresh gitea hooks AppFactory Bot 2026-06-17 09:45:52 +00:00
  • 7897e3b876 gitea user and pswd, some pages removed, logs JiriUhlir 2026-06-17 11:39:52 +02:00
  • 23bbcad835 st JiriUhlir 2026-06-16 10:47:14 +02:00
  • 7df5dc77b4 stzles JiriUhlir 2026-06-16 10:43:00 +02:00
  • bad55a7d41 fixes + guest JiriUhlir 2026-06-16 10:23:43 +02:00
  • fa4307852c icons, main .env JiriUhlir 2026-06-15 14:07:16 +02:00
  • 35d857f653 git fail info JiriUhlir 2026-06-15 12:08:11 +02:00
  • 39d9ed394d depl JiriUhlir 2026-06-15 12:04:59 +02:00
  • be2e71c7d0 scheduled commits + devs info JiriUhlir 2026-06-15 11:50:33 +02:00
  • a948324b2e dev fix, ip controls JiriUhlir 2026-06-15 11:08:31 +02:00
  • bf4796d153 UI fixes and menu JiriUhlir 2026-06-15 11:00:09 +02:00
  • 3bb762d08a UI a menu a FA JiriUhlir 2026-06-15 09:57:24 +02:00
  • 40069c8969 env secrets and variables JiriUhlir 2026-06-12 10:45:53 +02:00
  • 428d9681e0 gitea sync update JiriUhlir 2026-06-12 10:11:33 +02:00
  • 5d12028a97 mazani uzivatelu JiriUhlir 2026-06-12 09:58:52 +02:00
  • ddc65322c5 gitea comm fix JiriUhlir 2026-06-12 09:07:42 +02:00
  • 061be18857 gitea push JiriUhlir 2026-06-11 09:28:56 +02:00
  • b1263edac6 Změny: users migrace má nové sloupce gitea_user_id, gitea_sync_status, gitea_sync_error, gitea_synced_at. Přidal jsem gitea_provisioning.py, který přes Gitea API vytváří, aktivuje, deaktivuje a synchronizuje účty. Role viewer Gitea účet nemá; developer a admin účet mají. Změny role a enable/disable v administraci spouští sync do Gitea. Admin UI v routes/users.py zobrazuje stav Gitea synchronizace a má ruční Sync Gitea. Google login po přihlášení dorovnává Gitea stav podle portálového uživatele. Gitea OAuth login je v portálu vypnutý; endpointy zůstaly, ale vrací hlášku, že se má použít Google. Lokální login se zobrazuje/povolí jen při explicitním AUTH_MODE=local. Gitea API token se čte z GITEA_ADMIN_TOKEN, případně fallback GITEA_API_TOKEN nebo GITEA_TOKEN. Podřízené Gitea username je deterministicky portal-{user_id}, portálová tabulka zůstává zdroj pravdy. Ověření: python -m py_compile prošel pro všechny upravené Python soubory. JiriUhlir 2026-06-10 09:34:56 +02:00
  • 38edf07ff3 Hotovo. V config.py (line 50) jsem upravil default fallbacky: Google: APPFACTORY_PORTAL_PUBLIC_URL + PORTAL_PREFIX + /auth/google/callback Gitea: APPFACTORY_PORTAL_PUBLIC_URL + PORTAL_PREFIX + /auth/gitea/callback Explicitní env hodnoty GOOGLE_REDIRECT_URI a GITEA_OAUTH_REDIRECT_URI zůstávají respektované beze změny. Caddyfile ani login endpointy jsem neupravoval. JiriUhlir 2026-06-10 08:55:59 +02:00
  • 272b1eb883 Upravil jsem Google OAuth tak, že Google uživatel se hledá/vytváří přes email, ukládá auth_provider='google', provider_subject, display_name, avatar_url a po úspěšném loginu last_login_at. První Google uživatel v prázdné users tabulce dostane admin, další noví Google uživatelé viewer. JiriUhlir 2026-06-10 08:37:42 +02:00
  • 9cec3d001f sprava uzivatelu JiriUhlir 2026-06-10 07:56:02 +02:00
  • 7dffff17c7 Odstranil jsem hardcoded IP fallbacky z portálového Python kódu: DEFAULT_APPFACTORY_HOST = "192.168.66.130" je pryč z config.py (line 10). DEFAULT_GITEA_URL = "http://192.168.66.130:3000" je pryč z auth.py (line 24). Doplněné chování: APPFACTORY_HOST se odvozuje přes helper: env APPFACTORY_HOST, potom APPFACTORY_PORTAL_PUBLIC_URL, potom request host. Gitea browser redirect používá jen explicitní veřejnou URL z GITEA_URL nebo GITEA_ROOT_URL. Server-side Gitea token/userinfo requesty používají GITEA_URL, potom GITEA_ROOT_URL, jinak interní Docker URL http://appfactory-gitea:3000. Gitea login tlačítko se zobrazí jen při kompletní konfiguraci: public URL, client id, client secret a redirect URI. Přímý Gitea login bez kompletní konfigurace vrací čitelnou chybu. JiriUhlir 2026-06-08 11:38:57 +02:00
  • 9916e4d833 Změny: Přidaná centrální runtime konfigurace public URL, HTTPS a Google OAuth readiness v config.py (line 37). Google OAuth přidaný jako volitelná další možnost přihlášení, bez nahrazení lokálního/Gitea loginu, v auth.py (line 128). Default Google redirect URI se skládá z APPFACTORY_PORTAL_PUBLIC_URL + /auth/google/callback, bez hardcoded IP/localhost/domény. Readiness JSON endpoint přidán na /portal/migration-readiness/auth-domain-config; vrací jen boolean hodnoty, žádné secrety, v migration_readiness.py (line 112). UI sekce Auth & Domain Readiness přidaná do Migration Readiness v migration_readiness.py (line 41). Audit event auth_domain_readiness.viewed se zapisuje při zobrazení readiness stránky v migration_readiness.py (line 133). APPFACTORY_ENABLE_HTTPS se promítá i do secure session cookies v main.py (line 19). JiriUhlir 2026-06-08 11:21:29 +02:00
  • caeb7daf6f mr caddy JiriUhlir 2026-06-08 08:20:22 +02:00
  • f101d91821 Upraveno. Portál už nečte ani neinterpretuje READY/NOT READY z textu výstupu a nepřidává žádnou logiku pro disk, backup, Gitea ani Registry. Změny: migration_readiness.py (line 140) teď určuje READY pouze jako returncode == 0; chybějící nebo nenulový return code je NOT READY. Preflight UI v routes/migration_readiness.py (line 85) zobrazuje Return code, summary OK/WARN/FAIL a oddělené raw stdout / stderr. Odstraněná vlastní logika, která hledala READY/NOT READY ve výstupu skriptu. JiriUhlir 2026-06-08 08:15:27 +02:00
  • 2571e6e50e Bootstrap v2 už nejde spustit bez režimu: JiriUhlir 2026-06-08 08:08:14 +02:00
  • 6622db2fb3 Hotovo. Přidal jsem podporu bootstrap-v2.sh do stránky Migration Readiness. Co se změnilo: migration_readiness.py (line 9) nově zná BOOTSTRAP_SCRIPT = "bootstrap-v2.sh". Helper umí najít poslední job pro bootstrap a připravit status, return code, started_at, finished_at, raw stdout/stderr z DB. routes/migration_readiness.py (line 111) přidává tlačítko Run Bootstrap v2, které pouze vytvoří run_script job s script_name=bootstrap-v2.sh. Přidal jsem výrazné varování k bootstrapu a blok “Poslední výsledek Bootstrap v2”. Zobrazení logů redaktuje env-like citlivé hodnoty typu TOKEN, PASSWORD, SECRET, API_KEY, PRIVATE, CREDENTIAL. JiriUhlir 2026-06-08 08:02:56 +02:00
  • ad0b35c09f Upraveno. Portál už neurčuje readiness podle job.status == success ani podle žádné Docker/group logiky. JiriUhlir 2026-06-08 07:53:21 +02:00
  • 2f5b5bcb89 readinness JiriUhlir 2026-06-08 07:49:06 +02:00
  • 382825085f Hotovo. Přidal jsem správu Alertingu do appfactory-portal bez ORM: Nové SQL migrace pro alert_rules a alert_events v migrations.py (line 165). Nová ruční DB vrstva v alerting.py (line 7). Nové stránky a akce v routes/alerting.py (line 288):Alert pravidla, detail, vytvoření, úprava, smazání povolit/zakázat pravidlo Alert eventy a detail eventu s payload_json odkazy z job_id na detail úlohy detail pravidla s posledními eventy admin-only editor .sh alert skriptů v /opt/appfactory/workspace/appfactory-tools/alerts audit eventy podle zadání JiriUhlir 2026-06-08 06:57:12 +02:00
  • 64f8fe806d Hotovo. Do detailu plánovaného skriptu jsem přidal sekci Obsah skriptu. Implementováno v app/routes/scheduled_scripts.py: bezpečné načtení pouze z /opt/appfactory/workspace/appfactory-tools/maintenance/{script_name}, validace script_name: .sh, bez /, \, .., neprázdné, zobrazení obsahu v textarea, pokud soubor neexistuje, zobrazí se hláška a výchozí obsah:bash JiriUhlir 2026-06-03 12:33:37 +02:00
  • f7a8007af8 Změny: Nový DB helper bez ORM: app/db/scheduled_scripts.py Nové route/UI: app/routes/scheduled_scripts.py Router registrovaný v app/main.py Menu doplněné v app/templates/layout.py Job filtr rozšířený o run_script v app/routes/jobs.py Implementováno: GET /portal/scheduled-scripts GET /portal/scheduled-scripts/{id} GET/POST /portal/scheduled-scripts/new GET/POST /portal/scheduled-scripts/{id}/edit POST /portal/scheduled-scripts/{id}/run-now POST /portal/scheduled-scripts/{id}/toggle POST /portal/scheduled-scripts/{id}/delete Ruční spuštění vytváří run_script job přes existující create_job(...) se source="portal_manual" a payloadem podle zadání. Mazání je blokované, pokud is_running = 1. Validace script_name, schedule_type a timeout_seconds je v route vrstvě. Audit eventy jsou přidané: scheduled_script.created scheduled_script.updated scheduled_script.deleted scheduled_script.enabled scheduled_script.disabled scheduled_script.run_now JiriUhlir 2026-06-03 12:18:39 +02:00
  • 46f8024d4e Register apps before queued deployment JiriUhlir 2026-06-03 10:38:23 +02:00
  • 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]. JiriUhlir 2026-06-03 09:23:59 +02:00
  • 54c86702d2 Co se změnilo: JiriUhlir 2026-06-03 09:02:36 +02:00
  • 786d055f6b Přidáno: JiriUhlir 2026-06-01 13:53:06 +02:00
  • 6aa5e69ee4 Přidáno: JiriUhlir 2026-06-01 13:38:06 +02:00
  • 994171be1a feat(portal): add app metadata and variables management JiriUhlir 2026-06-01 13:13:17 +02:00
  • 1ade865df4 update seznamu sluzeb JiriUhlir 2026-05-29 12:07:13 +02:00
  • ed194093e6 Přidal jsem Health Monitoring do portálu: JiriUhlir 2026-05-29 11:57:57 +02:00
  • 56f0b632de navigace JiriUhlir 2026-05-29 11:42:46 +02:00
  • 064ae93831 Upravil jsem: JiriUhlir 2026-05-29 11:40:09 +02:00
  • 6109bdfe61 cestina, UI, UX JiriUhlir 2026-05-29 11:34:07 +02:00
  • d145161e4e Add unified operations realtime dashboard JiriUhlir 2026-05-29 11:17:17 +02:00
  • 0dcf9b7b05 life jobs logs JiriUhlir 2026-05-29 11:02:43 +02:00
  • e3019bd76e download backup admin possibility JiriUhlir 2026-05-29 10:56:20 +02:00
  • 6e5d9b3120 operations JiriUhlir 2026-05-29 10:44:25 +02:00
  • 3804bb32c4 workers fix JiriUhlir 2026-05-29 10:40:15 +02:00
  • 48a9b20379 workers JiriUhlir 2026-05-29 10:35:56 +02:00
  • 765c840120 kontrola na jobs na nedoployovatelne repositare JiriUhlir 2026-05-29 09:30:54 +02:00
  • 4b4bf55696 filtry v jobs a shrnuti JiriUhlir 2026-05-29 09:23:36 +02:00
  • f651f7efd6 added jobs handling. JiriUhlir 2026-05-29 09:16:37 +02:00
  • 88601451dc Implementována portálová část SQLite job queue. JiriUhlir 2026-05-28 14:02:49 +02:00
  • 17a4d4db1b copying, evidovat btn hidden JiriUhlir 2026-05-28 13:33:22 +02:00
  • 8624352253 strankovani u deploys a styly pro pocitadla JiriUhlir 2026-05-28 13:26:58 +02:00
  • e6ffeb8fef deployment observability, filters, stats, details JiriUhlir 2026-05-28 13:22:51 +02:00
  • 80d82d36dd audit logging JiriUhlir 2026-05-28 11:49:59 +02:00
  • f18aabb5ba Add portal authentication and removed deploy old templates JiriUhlir 2026-05-28 11:45:29 +02:00
  • aa103bc129 Merge branch 'main' of http://192.168.66.130:3000/appfactory/appfactory-portal JiriUhlir 2026-05-28 11:40:52 +02:00
  • 09c742fefb auth via DB JiriUhlir 2026-05-28 11:40:49 +02:00
  • 915ee48131 Use database as apps source and add deployments UI AppFactory Bot 2026-05-28 10:14:22 +02:00
  • db039e5988 Read apps and resources from database JiriUhlir 2026-05-28 10:11:31 +02:00
  • a2edca2fec deploz statuses css JiriUhlir 2026-05-28 10:08:59 +02:00
  • 08f3fc1e83 apps change JiriUhlir 2026-05-28 10:07:22 +02:00
  • 614ccb5e71 styles combine JiriUhlir 2026-05-28 10:02:25 +02:00
  • 198f68381e Fix template response usage AppFactory Bot 2026-05-28 09:53:39 +02:00
  • 1a3e8465fc Add jinja2 dependency JiriUhlir 2026-05-28 09:51:17 +02:00
  • f32216848d Register deployments route JiriUhlir 2026-05-28 09:48:44 +02:00
  • 3a40eb02a6 Add portal database layer AppFactory Bot 2026-05-28 09:44:54 +02:00
  • 182d8d3c4c hidden style JiriUhlir 2026-05-27 13:15:33 +02:00
  • 3e1d1f5360 cz texty JiriUhlir 2026-05-27 13:09:34 +02:00
  • dcc1a2f3ad csbot styly JiriUhlir 2026-05-27 13:01:56 +02:00
  • 8585690de0 styles update JiriUhlir 2026-05-27 12:49:00 +02:00
  • 2b20444324 rozdeleni do struktury JiriUhlir 2026-05-27 12:15:11 +02:00
  • 12f6323185 Initial AppFactory portal service AppFactory Bot 2026-05-27 12:05:33 +02:00