EA
Ekosystem Aion
← Wróć do katalogu
Aion Admin Cockpitactive
Slugadmin-aionflow
Domenaadmin.aionflow.pl
Port3026
Wzorzec deployatomic
Ścieżka repo/var/www/admin.aionflow.pl

Read-only kokpit operatora. Konsumuje Chaos WebMCP przez proxy (server/api/webmcp/*), nie ma własnego serwera MCP.

Status PM2 (na żywo)
ProcesStatusUptimeRestarty
aion-adminonline1d0
Głębsze spojrzenie

inspiracja

Zaprojektowany jako warstwa WIDOK, bez wykonywania operacjiinsight

nuxt.config.ts deklaruje zakres: 'Aion Admin Cockpit — centralny pulpit operatorski... Czyta dane z Directus + chaos API. Nie wykonuje operacji — warstwa WIDOK.' Autoryzacja OIDC skopiowana i dostosowana z create.aionflow.pl.

źródło: nuxt.config.ts, server/utils/oidc.ts

cel

Agregacja stanu całego ekosystemu w jednym miejscugoal

Endpointy: overview.get.ts (liczniki projektów/klientów/ofert), business/pulse.get.ts (MRR, pipeline), system/health.get.ts (Directus+Chaos+/proc/meminfo), system/config.get.ts (skanuje .env we wszystkich projektach, maskuje sekrety), system/llm-costs.get.ts.

źródło: server/api/{overview,business/pulse,system/health,system/config,system/llm-costs}.get.ts

zależności

Directus read-only, Chaos API, Aion ID SSO, dostęp do .env innych projektówdependency

directus.ts jest jawnie oznaczony jako 'read-only, service token'. Panel czyta /var/www/shared/resource-governor.json oraz pliki .env z ok. 15+ sąsiednich projektów w celu wyświetlenia konfiguracji (z maskowaniem).

źródło: server/utils/directus.ts, server/api/system/config.get.ts

znaczenie

Jedyny wgląd operatorski w cały ekosystem, ale i punkt koncentracji ryzykainsight

Jedyne miejsce dające pełny przegląd wszystkich projektów, jednocześnie agreguje odczyt sekretów (zamaskowanych, ale odsłanialnych przez ?reveal=1) ze wszystkich aplikacji — przejęcie sesji operatora tu oznacza ekspozycję poświadczeń całego /var/www.

źródło: server/api/system/config.get.ts

co działa

Proces online, middleware autoryzacji wymuszony globalnietested-ok

PM2 potwierdza status online (port 3026, restarts=21, unstable_restarts=0). server/middleware/auth.ts woła requireOperator(event) dla każdej trasy /api/* i strony poza /api/auth/*.

źródło: pm2 jlist (aion-admin), server/middleware/auth.ts

co nie działa

Brakujące pliki fontów (ENOENT) w aktualnym buildzietested-broken

Log błędów pokazuje powtarzające się ENOENT dla plików .woff2 spod .builds/20260707-212154/server/chunks/public/_fonts/ — prawdopodobnie problem z krokiem kopiowania w deploy.sh.

źródło: aion-admin-error.log (live-verified)

Endpoint governor.patch.ts nie ma własnej kontroli autoryzacjitested-broken

Jedyny endpoint zapisu (server/api/system/governor.patch.ts) polega wyłącznie na globalnym middleware, bez własnego wywołania requireOperator() — sprzeczne z deklaracją 'Nie wykonuje operacji', choć obecnie middleware poprawnie to zabezpiecza.

źródło: server/api/system/governor.patch.ts

co do przetestowania

Przyczyna 21 restartów oraz niespójność CHAOS_API_URLuntested

Nie ustalono czy 21 restartów wynika z deployów czy z limitu pamięci. .env.example podaje port :3022 dla CHAOS_API_URL, podczas gdy trzy pliki kodu domyślnie używają :3032.

źródło: ecosystem.config.cjs, .env.example

rekomendacja

Dodać jawną autoryzację w governor.patch.ts i naprawić brakujące fontyrecommendation

Dodać requireOperator(event) bezpośrednio wewnątrz governor.patch.ts jako obronę w głębi. Naprawić błędy ENOENT dla fontów, prawdopodobnie w kroku kopiowania w deploy.sh.

źródło: analiza deploy.sh + logi błędów