关掉未登录就会触发约 20 秒计算的入口,并记下 BUG-1342。普通导出的逐字节锁保留。自测 tsc 0 错,lint 0 error / 123 warning,改到的前端测试 fail=0,两份 Python 测试通过,test:db 失败 13 条与 Windows 已知清单一致。 Co-Authored-By: Grok (agent loop)
73 lines
3.3 KiB
Python
73 lines
3.3 KiB
Python
from pathlib import Path
|
||
|
||
|
||
PAGE = Path("frontend/src/app/(app)/page.tsx")
|
||
STARTER_HOME = Path("frontend/src/components/starter-home.tsx")
|
||
HOME_CLOUD = Path("frontend/src/lib/home-cloud-sync.ts")
|
||
RECTIFICATION_HOOK = Path("frontend/src/hooks/use-rectification-surface.ts")
|
||
DAILY_ROUTE = Path("frontend/src/app/api/daily-starlanguage/route.ts")
|
||
RECTIFICATION_ROUTE = Path("frontend/src/app/api/birth-rectification/route.ts")
|
||
|
||
|
||
def _home_entrypoint_surface() -> str:
|
||
parts = [PAGE, STARTER_HOME, HOME_CLOUD]
|
||
if RECTIFICATION_HOOK.exists():
|
||
parts.append(RECTIFICATION_HOOK)
|
||
return "".join(path.read_text(encoding="utf-8") for path in parts)
|
||
|
||
|
||
def test_daily_starlanguage_entrypoint_is_productized() -> None:
|
||
# 原值:断言 daily-starlanguage-card(空状态大卡)
|
||
# 新值:StarterEntries 的 starter-entry pill + startDailyStarlanguageConsultation
|
||
# 原因:62903b7a 已把卡片改成问候 + 输入框 + 两枚 pill,全仓已无该类名
|
||
source = _home_entrypoint_surface()
|
||
assert "今日星语" in source
|
||
assert "fetchDailyStarlanguage" in source
|
||
assert "starter-entry" in source
|
||
assert "startDailyStarlanguageConsultation" in source
|
||
assert "从今日问起" in source
|
||
assert "今天的星语还没写出来。" in source
|
||
assert "daily-starlanguage-card" not 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:
|
||
# 原值:断言 birth-rectification-card
|
||
# 新值:同一套 starter-entry pill + openRectificationFromHomepage
|
||
# 原因:同上,卡片入口已删除
|
||
# 原值(2):首页 starter-entry pill + openRectificationFromHomepage
|
||
# 新值(2):首页无校正 pill;入口是对话里的提议卡 → openRectificationFromChat
|
||
# 原因(2):BUG-1247(TASK-rectification-in-chat-step1-20261006 P3/C1)
|
||
source = _home_entrypoint_surface()
|
||
assert "生时校正" in source
|
||
assert "starter-entry" in source
|
||
assert "openRectificationFromChat" in source
|
||
assert "openRectificationFromHomepage" not in source
|
||
assert "birth-rectification-card" not in source
|
||
|
||
|
||
def test_birth_rectification_api_proxies_active_questionnaire_with_boundary() -> None:
|
||
# 原值: 读 birth-rectification/route.ts,断言它代理 /api/active_rectification_questions,并带 candidate_scan、question_count、not_auto_rectified
|
||
# 新值: 该路由文件不存在,且 frontend/src/app/api 下没有任何路由源码再代理 /api/active_rectification_questions
|
||
# 原因: 未登录就能打到约 20 秒的重计算,入口删除而不是补登录(BUG-1342)
|
||
assert not RECTIFICATION_ROUTE.exists()
|
||
api = Path("frontend/src/app/api")
|
||
offenders = [
|
||
str(path)
|
||
for path in api.rglob("route.ts")
|
||
if "/api/active_rectification_questions" in path.read_text(encoding="utf-8")
|
||
]
|
||
assert offenders == []
|