diff --git a/admin/routes/web_public.py b/admin/routes/web_public.py index 1395bd3..33dc42a 100644 --- a/admin/routes/web_public.py +++ b/admin/routes/web_public.py @@ -4245,29 +4245,68 @@ def _render_review_start_page(contract: ReviewResultContract, token: str | None) else "" ) constraints = contract.review_constraints or {} + profile_ready = bool(constraints.get("candidate_province") and constraints.get("candidate_score")) recommended_label = { "go_cwb": "先去看冲稳保建议", "go_step1": "先补齐基础信息", "go_full_plan": "进入完整规划", }[contract.recommended_action] - primary_action = { - "go_cwb": ( - "去看冲稳保建议", - "cwb", - "如果你的基础信息已经完整,下一步先看冲稳保梯度更合适。", - ), - "go_step1": ( - "先补齐基础信息", - "step1", - "当前更适合先补齐省份、分数、位次、选科等基础信息,再继续判断梯度风险。", - ), - "go_full_plan": ( - "进入完整规划", - "full_plan", - "如果你已经明确要进入完整服务,可以直接继续到完整规划页。", - ), - }[contract.recommended_action] + # 根据是否有token决定按钮行为:无token时跳首页表单,有token时走portal流程 + if token is None: + # 免费复核无订单场景:引导用户先去首页完善信息或下单 + primary_action = ( + "完善信息后重新复核", + "home", + "当前是免费复核,建议先完善分数、位次、选科等信息,或选择付费服务获得完整分析。", + ) + primary_href = "/" + else: + # 有订单场景:跳转到portal相应页面 + primary_action = { + "go_cwb": ( + "去看冲稳保建议", + "cwb", + "如果你的基础信息已经完整,下一步先看冲稳保梯度更合适。", + ), + "go_step1": ( + "先补齐基础信息", + "step1", + "当前更适合先补齐省份、分数、位次、选科等基础信息,再继续判断梯度风险。", + ), + "go_full_plan": ( + "进入完整规划", + "full_plan", + "如果你已经明确要进入完整服务,可以直接继续到完整规划页。", + ), + }[contract.recommended_action] + primary_href = { + "go_cwb": f"/portal/{token}/cwb", + "go_step1": f"/portal/{token}/info", + "go_full_plan": f"/portal/{token}/full-plan", + }[contract.recommended_action] summary = escape(contract.review_input_summary or "未提供现有方案说明") + # 按钮逻辑:无token时隐藏冲稳保按钮(需要先创建订单) + cwb_btn = ( + f'查看冲稳保建议' + if token else "" + ) + # 风险等级视觉映射 + risk_level_map = { + "low": ("偏低(风险可控)", "#1f6feb", "#eef6ff", "#d7e3f1"), + "medium": ("中等(需要关注)", "#f59e0b", "#fffbeb", "#fcd34d"), + "high": ("偏高(尽快调整)", "#dc2626", "#fef2f2", "#fecaca"), + } + risk_label, risk_color, risk_bg, risk_border = risk_level_map.get( + contract.risk_level.lower(), risk_level_map["medium"] + ) + + # 建议标签 + recommended_label = { + "go_cwb": "先去看冲稳保建议", + "go_step1": "先补齐基础信息", + "go_full_plan": "进入完整规划", + }[contract.recommended_action] + province = escape( _review_constraints_display(constraints.get("candidate_province")) ) @@ -4275,6 +4314,16 @@ def _render_review_start_page(contract: ReviewResultContract, token: str | None) _review_constraints_subjects_text(constraints.get("candidate_subjects")) ) score = escape(_review_constraints_display(constraints.get("candidate_score"))) + # 信息完整性提示 + info_complete_html = ( + '
⚠ 信息不完整:选科组合或位次为"待补充",无法给出具体录取差距分析。
' + '✓ 信息完整:已具备生成冲稳保建议的条件。
' + '目标院校/方案
+{summary}
+考试省份
+{province}
+高考分数
+{score}
+选科组合
+{subjects}
+位次
+{rank}
+风险等级:{risk_label}
+当前建议:{escape(recommended_label)}
+