fix: harden multi-model chat selection

This commit is contained in:
Jesse_Chen
2026-07-17 14:09:57 +08:00
parent 4968c961f7
commit 6c02f27d1c
13 changed files with 338 additions and 91 deletions
+26 -2
View File
@@ -6,6 +6,11 @@ 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"
MODELS_ROUTE = ROOT / "frontend" / "src" / "app" / "api" / "models" / "route.ts"
MODEL_SELECTION = ROOT / "frontend" / "src" / "lib" / "consultation-model-selection.ts"
SESSION_MODEL_PERSISTENCE = (
ROOT / "frontend" / "src" / "lib" / "session-model-persistence.ts"
)
ONBOARDING_MIGRATION = (
ROOT
/ "frontend"
@@ -40,7 +45,7 @@ def test_onboarding_and_agent_suggestion_contract() -> None:
assert "suggestions: reply.suggestions" in page
assert "activeSuggestions.map" in page
assert "export const onboardingAgent" in agent
assert "export function getOnboardingAgent" in agent
assert "skills: [jyotishSkillPath]" in agent
assert "This is onboarding, not a chart reading" in agent
assert "<!--AYANAM_SUGGESTIONS:" in agent
@@ -52,8 +57,27 @@ def test_onboarding_and_agent_suggestion_contract() -> None:
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 "getOnboardingAgent(onboardingModel).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
def test_multi_model_route_and_persistence_contract() -> None:
consult_route = CONSULT_ROUTE.read_text(encoding="utf-8")
models_route = MODELS_ROUTE.read_text(encoding="utf-8")
selection = MODEL_SELECTION.read_text(encoding="utf-8")
persistence = SESSION_MODEL_PERSISTENCE.read_text(encoding="utf-8")
assert "supabase.auth.getUser()" in models_route
assert "publicLanguageModelCatalog()" in models_route
assert "reserveConsultationModel(" in consult_route
assert "resolveLanguageModel," in consult_route
assert 'runCreditRpc(accounting, "begin_consultation_credit"' in consult_route
assert "getJyotishAgent(selectedModel).stream" in consult_route
assert "modelSelection.usageModelId" in consult_route
assert 'if (!model) return { status: "unavailable" }' in selection
assert 'reservation: await reserveCredit()' in selection
assert 'values: { model_id: modelId }' in persistence
assert "SessionModelPersistenceQueue" in persistence