# /// script
# requires-python = ">=3.12"
# dependencies = ["pydantic>=2.12,<3", "PyYAML>=6,<7"]
# ///
# ─── How to run ───
# PYTHONPATH=. uv run scripts/nutricoach_v150_seven_day_observer.py
"""Seven-day read-only production observer for NutriCoach v1.5 r70."""

from __future__ import annotations

import json
from datetime import UTC, datetime

from .nutricoach_v150_observer_contract import (
    Observation,
    ObserverPhase,
    RuntimeSnapshot,
    WINDOW_START,
    evaluate,
)
from .nutricoach_v150_observer_final import finalize
from .nutricoach_v150_observer_runtime import append, collect

__all__ = [
    "Observation",
    "ObserverPhase",
    "RuntimeSnapshot",
    "evaluate",
]


def main() -> int:
    """Collect and persist one production observation."""
    now = datetime.now(UTC).astimezone(WINDOW_START.tzinfo)
    snapshot = collect()
    observation = evaluate(snapshot, now)
    append(observation, snapshot, now)
    final = finalize(now)
    print(
        json.dumps(
            {
                "phase": observation.phase.value,
                "status": "PASS" if observation.passed else "FAIL",
                "failures": observation.failures,
                "final": None if final is None else "PASS" if final.passed else "FAIL",
            },
            sort_keys=True,
        )
    )
    return 0 if observation.passed else 1


if __name__ == "__main__":
    raise SystemExit(main())
