| """RAG domain — v3 M3 engine surface. | |
| Public API (per v3 unfuck guide §M3): | |
| - RAGService, init_rag | |
| - SearchRequest, SearchResponse, SearchHit | |
| - IngestRequest, IngestResult | |
| - FeedbackRecord | |
| - EmbeddingProvider, COLLECTIONS | |
| """ | |
| from __future__ import annotations | |
| from app.core import health as health_mod | |
| from app.core.health import DomainHealth | |
| async def _health_check() -> DomainHealth: | |
| """RAG health: v3 engine present + Redis reachable.""" | |
| try: | |
| from app.rag.engine import get_stats | |
| stats = get_stats() | |
| return DomainHealth( | |
| name="rag", | |
| healthy=True, | |
| details={ | |
| "engine": "v3-m3", | |
| "backend": stats.get("backend", "unknown"), | |
| "total_docs": stats.get("total_docs", 0), | |
| }, | |
| ) | |
| except Exception as e: | |
| return DomainHealth(name="rag", healthy=False, error=str(e)) | |
| health_mod.register_health_check("rag", _health_check) | |
| # Public API | |
| from app.rag.models import ( # noqa: E402 | |
| COLLECTIONS, | |
| EmbeddingProvider, | |
| FeedbackRecord, | |
| IngestRequest, | |
| IngestResult, | |
| SearchHit, | |
| SearchRequest, | |
| SearchResponse, | |
| ) | |
| from app.rag.service import RAGService, init_rag # noqa: E402 | |
| __all__ = [ | |
| "RAGService", | |
| "SearchRequest", | |
| "SearchResponse", | |
| "SearchHit", | |
| "IngestRequest", | |
| "IngestResult", | |
| "FeedbackRecord", | |
| "EmbeddingProvider", | |
| "COLLECTIONS", | |
| "init_rag", | |
| ] | |