File size: 2,274 Bytes
7fa723a
 
 
 
 
 
 
be9fd4a
 
 
 
7fa723a
 
 
be9fd4a
 
 
 
 
7fa723a
be9fd4a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7fa723a
be9fd4a
 
7fa723a
 
 
 
be9fd4a
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
"""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()