"""Production-facing AI feature readiness (generation, inspector, photo vision).""" from __future__ import annotations from typing import Any from app.config import settings from app.optimization.ai_phases import ( collect_ai_phase_warnings, collect_ai_phases, ) def ai_features_status() -> dict[str, Any]: """Safe JSON for /health: user-facing AI capabilities (no backend infra).""" phases = collect_ai_phases() p1 = phases["phase1"] p2 = phases["phase2"] p3 = phases["phase3"] return { "openai_api_key_configured": p1["openai_configured"], "phase1_core_rag_live": p1["live"], "phase2_agentic_vision_live": p2["live"], "phase3_ai_performance_live": p3["live"], "section_photo_vision_enabled": bool(settings.section_photo_vision_enabled), "section_photo_vision_live": p2["capabilities"]["section_photo_vision"], "inspector_tool_agent": p2["capabilities"]["inspector_tool_agent"], "inspector_live": p2["capabilities"]["inspector_live"], "notes_only_generation": p1["capabilities"]["notes_only_generation"], "agentic_inspector_when_notes_only": p2["flags"]["agentic_inspector_when_notes_only"], "post_generate_uses_inspector": p2["capabilities"]["post_generate_uses_inspector"], "primary_generate_pipeline": p2["flags"]["primary_generate_pipeline"], "chat_model": p1["flags"]["chat_model"], "section_photo_vision_model": p2["flags"]["section_photo_vision_model"], "inspector_body_model": p2["flags"]["inspector_body_model"], "llm_section_validator_enabled": p1["capabilities"]["llm_section_validator"], "production_ai_profile": p2["flags"]["production_ai_profile"], "personalised_style_rag_enabled": p1["capabilities"]["personalised_style_rag"], "enable_rag_upload_sanitisation": p1["capabilities"]["rag_upload_sanitisation"], "rag_sanitisation_use_llm": bool(getattr(settings, "rag_sanitisation_use_llm", False)), "rics_inspector": p2["rics_inspector"], "ai_phases": phases, } def collect_ai_feature_warnings() -> list[str]: """Warnings that block or weaken user-facing AI (excludes Redis/Temporal/job queue).""" return collect_ai_phase_warnings()