from pathlib import Path PAGE = Path("frontend/src/app/page.tsx") DAILY_ROUTE = Path("frontend/src/app/api/daily-starlanguage/route.ts") RECTIFICATION_ROUTE = Path("frontend/src/app/api/birth-rectification/route.ts") def test_daily_starlanguage_entrypoint_is_productized() -> None: source = PAGE.read_text(encoding="utf-8") assert "今日星语" in source assert "fetchDailyStarlanguage" in source assert "daily-starlanguage-card" in source assert "draftDailyStarlanguageQuestion" in source assert "从今日问起" in source assert "今天的星语还没写出来。" in source assert "buildDailyStarlanguageCard" not in source assert "点这里" not in source assert "不会用通用文案顶替" not in source def test_daily_starlanguage_api_declares_honest_source_boundary() -> None: source = DAILY_ROUTE.read_text(encoding="utf-8") assert "status: \"ok\"" in source assert "/api/daily_guidance" in source assert "/api/chart" not in source assert "/api/transit" not in source assert "exploratory_unvalidated" in source assert "not_deterministic_prediction" in source def test_birth_time_rectification_entrypoint_is_productized() -> None: source = PAGE.read_text(encoding="utf-8") assert "生时校正" in source assert "birth-rectification-card" in source assert "openRectificationFromHomepage" in source def test_birth_rectification_api_proxies_active_questionnaire_with_boundary() -> None: source = RECTIFICATION_ROUTE.read_text(encoding="utf-8") assert "/api/active_rectification_questions" in source assert "candidate_scan" in source assert "question_count" in source assert "not_auto_rectified" in source