Spaces:
Sleeping
Sleeping
| """End-to-end smoke test against a real user. | |
| Run after `python -m app.data.ingest && python -m app.retrieval` and (optionally) | |
| `python -m app.rating_model`. | |
| """ | |
| from __future__ import annotations | |
| import json | |
| import sys | |
| from app import context as ctx_mod | |
| from app import memory as memory_mod | |
| from app.generator import generate as gen_review | |
| from app.persona.store import get_or_build as persona_for | |
| from app.persona.store import list_user_ids | |
| from app.reasoner import reason | |
| from app.recommender import recommend | |
| def pretty(label: str, payload) -> None: | |
| print(f"\n===== {label} =====") | |
| print(json.dumps(payload, indent=2, default=str)) | |
| def main() -> None: | |
| ids = list_user_ids(limit=5) | |
| if not ids: | |
| sys.exit("No users in dataset — run `python -m app.data.ingest` first.") | |
| uid = ids[0] | |
| print(f"[smoke] using user_id={uid}") | |
| persona = persona_for(uid, refine=True) | |
| pretty("PERSONA", {k: persona[k] for k in ("communication_style", "behavioral_profile", "economic_profile", "temporal_profile", "stats", "llm_traits") if k in persona}) | |
| memory = memory_mod.get_or_build(uid) | |
| pretty("MEMORY", memory.get("short_term")) | |
| context = ctx_mod.normalize({"time": "night", "weather": "rainy", "traffic_heavy": True}) | |
| pretty("CONTEXT", context) | |
| # Task A | |
| item = {"name": "Mega Chicken Wings", "category": "restaurant", "price_range": "medium"} | |
| r = reason(persona, memory, context, item) | |
| pretty("REASONER", r) | |
| review = gen_review(persona, item, r, context) | |
| pretty("REVIEW (Task A)", {"rating": r["predicted_rating"], "review": review}) | |
| # Task B | |
| recs = recommend(uid, {"time": "night", "mood": "tired"}, top_n=3) | |
| pretty("RECOMMENDATIONS (Task B)", recs) | |
| if __name__ == "__main__": | |
| main() | |