feat: add Railway-ready Jyotish chat product

This commit is contained in:
Jesse_Chen
2026-07-15 22:23:17 +08:00
parent 4a268c75f2
commit 4aa0105fa4
77 changed files with 15439 additions and 80 deletions
+59
View File
@@ -0,0 +1,59 @@
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
PAGE = ROOT / "frontend" / "src" / "app" / "page.tsx"
AGENT = ROOT / "frontend" / "src" / "mastra" / "index.ts"
ONBOARDING_ROUTE = ROOT / "frontend" / "src" / "app" / "api" / "onboarding" / "route.ts"
CONSULT_ROUTE = ROOT / "frontend" / "src" / "app" / "api" / "consult" / "route.ts"
ONBOARDING_MIGRATION = (
ROOT
/ "frontend"
/ "supabase"
/ "migrations"
/ "20260715040000_agent_onboarding_cache.sql"
)
def test_onboarding_and_agent_suggestion_contract() -> None:
page = PAGE.read_text(encoding="utf-8")
agent = AGENT.read_text(encoding="utf-8")
route = ONBOARDING_ROUTE.read_text(encoding="utf-8")
consult_route = CONSULT_ROUTE.read_text(encoding="utf-8")
migration = ONBOARDING_MIGRATION.read_text(encoding="utf-8")
assert "onboarding-card" in page
assert 'type OnboardingStep = "name" | "birth" | "place"' in page
assert "text.slice(0, length)" in page
assert "window.setInterval" in page
assert "prefers-reduced-motion: reduce" in page
assert "用于计算星盘,并安全保存到你的账号" not in page
assert "saveOnboardingName" in page
assert "saveOnboardingBirth" in page
assert "saveOnboardingPlace" in page
assert "<BirthMomentFields value={profileDraft}" in page
assert "<BirthLocationFields value={profileDraft}" in page
assert "Enter 确认称呼" in page
assert 'fetch("/api/onboarding"' in page
assert "onboarding?.suggestions" in page
assert "parseAgentReply(answer, theme)" in page
assert "suggestions: reply.suggestions" in page
assert "message.suggestions.map" in page
assert "export const onboardingAgent" in agent
assert "skills: [jyotishSkillPath]" in agent
assert "This is onboarding, not a chart reading" in agent
assert "<!--AYANAM_SUGGESTIONS:" in agent
assert "grounded in the answer just given" in agent
assert "Treat the server-provided current time as authoritative" in agent
assert "supabase.auth.getUser()" in route
assert "function currentTimeContext(now = new Date())" in consult_route
assert "currentTimeContext()," in consult_route
assert "中国标准时间(UTC+8)" in consult_route
assert 'profile.onboarding_version === ONBOARDING_VERSION' in route
assert "onboardingAgent.generate" in route
assert 'source: "cache"' in route
assert "onboarding_payload" in migration
assert "to service_role" in migration
assert "to authenticated" not in migration