diff --git a/admin/routes/web_public.py b/admin/routes/web_public.py
index 39f477e..3284149 100644
--- a/admin/routes/web_public.py
+++ b/admin/routes/web_public.py
@@ -510,6 +510,21 @@ def _build_portal_context(order: Order, settings: Settings) -> dict[str, Any]:
title, subtitle = _STAGE_META[stage]
latest_station_notice: dict[str, Any] | None = None
+ intake_summary = None
+ attachment_count = 0
+ if intake is not None:
+ attachment_count = len(list((intake.payload or {}).get("attachments") or []))
+ intake_summary = {
+ "candidate_score": intake.payload.get("candidate_score"),
+ "candidate_rank": intake.payload.get("candidate_rank"),
+ "candidate_subjects": intake.payload.get("candidate_subjects") or [],
+ "candidate_interests": intake.payload.get("candidate_interests"),
+ "target_cities": intake.payload.get("target_cities") or [],
+ "target_majors": intake.payload.get("target_majors") or [],
+ "university_preferences": intake.payload.get("university_preferences"),
+ "existing_plan_summary": intake.payload.get("existing_plan_summary"),
+ "guardian_notes": intake.payload.get("guardian_notes"),
+ }
if sent_station_events:
try:
latest_payload = json.loads(sent_station_events[-1].payload_json)
@@ -524,6 +539,8 @@ def _build_portal_context(order: Order, settings: Settings) -> dict[str, Any]:
"stage_subtitle": subtitle,
"payment": payment,
"intake": intake,
+ "intake_summary": intake_summary,
+ "attachment_count": attachment_count,
"report_html_ready": report_html_ready,
"report_pdf_ready": report_pdf_ready,
"order": order,
@@ -848,6 +865,10 @@ def _render_info_page(
{body} 发送时间:{sent_at}
+
+
+
+
@@ -872,12 +893,18 @@ def _render_info_page(
async function submitIntake(mode) {{
const form = new FormData(document.getElementById('intake-form'));
const subjects = String(form.get('candidate_subjects') || '').split(',').map(s => s.trim()).filter(Boolean);
+ const targetCities = String(form.get('target_cities') || '').split(',').map(s => s.trim()).filter(Boolean);
+ const targetMajors = String(form.get('target_majors') || '').split(',').map(s => s.trim()).filter(Boolean);
const payload = {{
mode,
candidate_score: form.get('candidate_score') ? Number(form.get('candidate_score')) : null,
candidate_rank: form.get('candidate_rank') ? Number(form.get('candidate_rank')) : null,
candidate_subjects: subjects,
candidate_interests: form.get('candidate_interests') || null,
+ target_cities: targetCities,
+ target_majors: targetMajors,
+ university_preferences: form.get('university_preferences') || null,
+ existing_plan_summary: form.get('existing_plan_summary') || null,
guardian_notes: form.get('guardian_notes') || null,
consent_version: form.get('consent_version') || null,
consent_scope: form.get('consent_scope') || null,
@@ -936,7 +963,13 @@ def _render_status_page(token: str, context: dict[str, Any]) -> str:
if isinstance(station_notice, dict):
title = escape(str(station_notice.get("title") or "站内通知"))
body = escape(str(station_notice.get("body") or ""))
- sent_at = escape(str(station_notice.get("sent_at") or ""))
+ sent_at = escape(
+ str(
+ station_notice.get("sent_at")
+ or station_notice.get("delivered_at")
+ or ""
+ )
+ )
station_notice_html = f"""
通知已发送
@@ -944,6 +977,26 @@ def _render_status_page(token: str, context: dict[str, Any]) -> str:
服务版本:{escape(order.service_version)}
当前订单状态:{escape(order.status)}
+ {summary_html} {station_notice_html}