app/main.py aktualisiert
All checks were successful
Deploy mindnet to llm-node / deploy (push) Successful in 3s
All checks were successful
Deploy mindnet to llm-node / deploy (push) Successful in 3s
This commit is contained in:
parent
0f2f8208e3
commit
e5ca3c4177
43
app/main.py
43
app/main.py
|
|
@ -7,9 +7,9 @@ Zweck:
|
||||||
Kompatibilität:
|
Kompatibilität:
|
||||||
Python 3.12+; FastAPI 0.110+ (getestet lokal)
|
Python 3.12+; FastAPI 0.110+ (getestet lokal)
|
||||||
Version:
|
Version:
|
||||||
0.4.0 (WP-04 Hooks: optionale Router, /admin/meta)
|
0.4.1 (WP-04 Hooks erweitert: Feature-Flags & /admin/features; bestehende Routen unverändert)
|
||||||
Stand:
|
Stand:
|
||||||
2025-10-06
|
2025-10-07
|
||||||
Bezug:
|
Bezug:
|
||||||
Handbuch & Knowledge Design (WP-03/04)
|
Handbuch & Knowledge Design (WP-03/04)
|
||||||
Umgebung:
|
Umgebung:
|
||||||
|
|
@ -17,8 +17,9 @@ Umgebung:
|
||||||
Nutzung:
|
Nutzung:
|
||||||
uvicorn app.main:app --reload --port 8000
|
uvicorn app.main:app --reload --port 8000
|
||||||
Änderungsverlauf:
|
Änderungsverlauf:
|
||||||
|
0.4.1 (2025-10-07) – Feature-Flags für dynamische WP-04-Router + /admin/features ergänzt.
|
||||||
0.4.0 (2025-10-06) – /admin/meta ergänzt; optionale Einbindung von graph/query/admin Routern.
|
0.4.0 (2025-10-06) – /admin/meta ergänzt; optionale Einbindung von graph/query/admin Routern.
|
||||||
0.3.x (vorher) – Basisversion laut bereitgestellter Datei.
|
0.3.x (vorher) – Basisversion laut bereitgestellter Datei.
|
||||||
|
|
||||||
Hinweise:
|
Hinweise:
|
||||||
Bestehende Routen/Funktionen bleiben unverändert.
|
Bestehende Routen/Funktionen bleiben unverändert.
|
||||||
|
|
@ -31,21 +32,39 @@ from .config import get_settings
|
||||||
from .routers.embed_router import router as embed_router
|
from .routers.embed_router import router as embed_router
|
||||||
from .routers.qdrant_router import router as qdrant_router
|
from .routers.qdrant_router import router as qdrant_router
|
||||||
|
|
||||||
# Optionale WP-04 Router dynamisch einbinden, ohne harte Abhängigkeit:
|
|
||||||
def _maybe_include_wp04(app: FastAPI) -> None:
|
def _maybe_include_wp04(app: FastAPI) -> None:
|
||||||
|
"""
|
||||||
|
WP-04 Router dynamisch einbinden, ohne harte Abhängigkeit.
|
||||||
|
Ergänzung: setzt app.state.features['wp04']-Flags, damit Admin/Monitoring
|
||||||
|
sichtbar machen kann, was tatsächlich geladen wurde.
|
||||||
|
"""
|
||||||
|
# Initialisiere Feature-Flags
|
||||||
|
if not hasattr(app.state, "features"):
|
||||||
|
app.state.features = {}
|
||||||
|
app.state.features.setdefault("wp04", {"graph": False, "query": False, "admin": False})
|
||||||
|
|
||||||
|
# Graph
|
||||||
try:
|
try:
|
||||||
from .routers.graph import router as graph_router # type: ignore
|
from .routers.graph import router as graph_router # type: ignore
|
||||||
app.include_router(graph_router, prefix="/graph", tags=["graph"])
|
app.include_router(graph_router, prefix="/graph", tags=["graph"])
|
||||||
|
app.state.features["wp04"]["graph"] = True
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
# Query
|
||||||
try:
|
try:
|
||||||
from .routers.query import router as query_router # type: ignore
|
from .routers.query import router as query_router # type: ignore
|
||||||
app.include_router(query_router, prefix="/query", tags=["query"])
|
app.include_router(query_router, prefix="/query", tags=["query"])
|
||||||
|
app.state.features["wp04"]["query"] = True
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
# Admin (optional)
|
||||||
try:
|
try:
|
||||||
from .routers.admin import router as admin_router # type: ignore
|
from .routers.admin import router as admin_router # type: ignore
|
||||||
app.include_router(admin_router, prefix="/admin", tags=["admin"])
|
app.include_router(admin_router, prefix="/admin", tags=["admin"])
|
||||||
|
app.state.features["wp04"]["admin"] = True
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
@ -56,9 +75,10 @@ def create_app() -> FastAPI:
|
||||||
|
|
||||||
@app.get("/healthz")
|
@app.get("/healthz")
|
||||||
def healthz():
|
def healthz():
|
||||||
|
"""Basis-Liveness-Check (unverändert)."""
|
||||||
return {"status": "ok", "qdrant": s.QDRANT_URL, "prefix": s.COLLECTION_PREFIX}
|
return {"status": "ok", "qdrant": s.QDRANT_URL, "prefix": s.COLLECTION_PREFIX}
|
||||||
|
|
||||||
# Admin-Metadaten (WP-04)
|
# Admin-Metadaten (WP-04, unverändert)
|
||||||
@app.get("/admin/meta")
|
@app.get("/admin/meta")
|
||||||
def admin_meta():
|
def admin_meta():
|
||||||
# Import lokal, damit fehlende Module nicht beim Start stören
|
# Import lokal, damit fehlende Module nicht beim Start stören
|
||||||
|
|
@ -93,8 +113,21 @@ def create_app() -> FastAPI:
|
||||||
pass
|
pass
|
||||||
return {"meta": meta}
|
return {"meta": meta}
|
||||||
|
|
||||||
|
# NEU: Features-/Readiness-Ansicht (rein ergänzend)
|
||||||
|
@app.get("/admin/features")
|
||||||
|
def admin_features():
|
||||||
|
"""
|
||||||
|
Liefert die dynamisch gesetzten Feature-Flags für WP-04 Router
|
||||||
|
(graph/query/admin), ohne bestehende Endpunkte zu beeinflussen.
|
||||||
|
"""
|
||||||
|
features = getattr(app.state, "features", {})
|
||||||
|
return {"features": features}
|
||||||
|
|
||||||
|
# Bestehende Router (unverändert)
|
||||||
app.include_router(embed_router)
|
app.include_router(embed_router)
|
||||||
app.include_router(qdrant_router)
|
app.include_router(qdrant_router)
|
||||||
|
|
||||||
|
# WP-04 Router ggf. dynamisch einbinden
|
||||||
_maybe_include_wp04(app)
|
_maybe_include_wp04(app)
|
||||||
return app
|
return app
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user