Files
simon b6df028839 v1.0.0 高考志愿门户完整修复
变更摘要:
- [fix] 清理根目录 index.html 遗留代码(questionnaire-error + retryLoad 移除)
- [fix] 副标题同步更新为自估591分 + 候选志愿546条数据校准
- [fix] 页脚注入版本号 v1.0.0
- [fix] 部署版 index.html: 取消家长标签,统一 filler-tianheng
- [fix] Dashboard 文案修正(4份→2份线上问卷)
- [fix] 清理冗余部署脚本(v1-v4归档至 archived_scripts/)
- [fix] 等效位次工具纳入 deploy 目录
- [chore] .gitignore 初始化
- [init] Git 仓库初始化
2026-06-24 13:11:34 +08:00

262 lines
12 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>天恒高考志愿 — 家庭决策门户</title>
<link rel="stylesheet" href="/css/style.css">
</head>
<body>
<!-- Top Bar -->
<div class="top-bar">
DOCUMENT ID: ZJ-2026-TH-001 &nbsp;|&nbsp; 仅供家庭成员查阅 &nbsp;|&nbsp; 数据存储在本地 NAS
</div>
<!-- Hero -->
<header class="hero">
<h1>2026 高考志愿 · <span class="name">宋天恒</span>专属决策门户</h1>
<p class="sub">数字媒体技术主推 · 电子信息工程保底 · 家庭自估591分 · 多Agent决策框架 · 候选志愿546条数据校准</p>
<div class="meta">
<span>物理+化学+生物</span>
<div class="score-info">
<span class="score-range" style="background: linear-gradient(135deg, #4caf84, #2e7d32); color:#fff; padding:6px 18px; border-radius:8px; font-weight:700; font-size:18px;">自估 591 分</span>
<span class="score-num" style="font-size:16px; color:#4caf84;">6月26日官方出分确认中</span>
<span class="score-note"> 物化生 · 生物首考97分已锁定</span>
</div>
<span>生物首考 97 分</span>
<span>自估 591 分</span>
<span>约6月29~30日填报</span>
<span>80个平行志愿</span>
</div>
</header>
<div class="container">
<!-- ======== 天恒专属测评(统一区块) ======== -->
<div class="section-header">
<div class="section-title"><span class="icon">&#x1F4CA;</span> 天恒专属测评</div>
<span class="filler-tag filler-tianheng"><span class="icon">&#x1F464;</span> 天恒 + 家庭成员</span>
</div>
<p class="section-hint section-tianheng">以下工具和问卷由天恒和家庭成员共同完成,全面勾勒个人画像与家庭期望</p>
<div class="card-grid-2col" id="tianheng-unified-cards">
<!-- 霍兰德职业兴趣测试(自评版)— 硬编码 -->
<div class="card" onclick="window.location.href='/霍兰德职业兴趣测试-自评版.html'">
<h3>&#x1F52C; 霍兰德职业兴趣测试(自评版) <span class="filler-tag filler-tianheng card-tag" style="font-size:10px;padding:2px 10px;">&#x1F464; 天恒</span></h3>
<p>完整60题自评量表,自动输出标准三字母代码(如RIC),含六维柱状图和专业/职业匹配解读</p>
<span class="badge badge-blue">约10分钟</span>
<div class="btn-row" style="margin-top:8px;">
<a href="/霍兰德职业兴趣测试-自评版.html" class="btn btn-primary btn-sm">&#x1F4DD; 填写</a>
<a href="/霍兰德职业兴趣测试-自评版.html" class="btn btn-outline btn-sm">&#x1F4CA; 查看汇总</a>
</div>
</div>
<!-- MBTI性格测试(自评版)— 硬编码 -->
<div class="card" onclick="window.location.href='/MBTI性格测试-自评版.html'">
<h3>&#x1F9E0; MBTI性格测试(自评版) <span class="filler-tag filler-tianheng card-tag" style="font-size:10px;padding:2px 10px;">&#x1F464; 天恒</span></h3>
<p>完整28题自评量表,自动输出标准四字母类型(如INTJ),含16型完整解读和专业推荐</p>
<span class="badge badge-purple">约8分钟</span>
<div class="btn-row" style="margin-top:8px;">
<a href="/MBTI性格测试-自评版.html" class="btn btn-primary btn-sm">&#x1F4DD; 填写</a>
<a href="/MBTI性格测试-自评版.html" class="btn btn-outline btn-sm">&#x1F4CA; 查看汇总</a>
</div>
</div>
<!-- 动态问卷占位 — 将由 API 填充 -->
<div id="tianheng-dynamic-slots">
<div class="card" style="text-align:center; color: var(--text-muted);">
<p>加载问卷中...</p>
</div>
</div>
</div>
<hr class="section-divider">
<!-- ======== 分析报告 ======== -->
<div class="section-title"><span class="icon">&#x1F4C8;</span> 分析报告</div>
<div class="card-grid">
<a class="card" href="/report.html?file=志愿填报预备报告.html">
<h3>&#x1F4C3; 志愿填报预备报告</h3>
<p>核心决策报告:AI产业链战略、冲稳保三档、多Agent决策框架、中外合作办学策略</p>
<span class="badge badge-blue">v3.7 多Agent决策框架</span>
</a>
<a class="card" href="/profession-reports.html">
<h3>&#x1F4DA; 院校和专业深度调研报告</h3>
<p>按专业方向逐校深度调研:✅数字媒体技术(已发布)、📋电子信息工程(待完成)、📋自动化(待完成)等</p>
<span class="badge badge-purple">6.24 更新 · 持续建设中</span>
</a>
<a class="card" href="/report.html?file=2026年浙江招生计划深度分析报告.html">
<h3>&#x1F4C8; 浙江招生计划深度分析</h3>
<p>2026年浙江招生计划拆解,物化扩招对位次的影响量化分析</p>
<span class="badge badge-green">6.21 发布</span>
</a>
<a class="card" href="/report.html?file=高考预测报告.html">
<h3>&#x1F302; 高考预测报告</h3>
<p>成绩预测、考后分析、数学难度全国性影响的位次-分数逻辑推演</p>
<span class="badge badge-amber">v7 候选志愿数据校准</span>
</a>
<a class="card" href="/report.html?file=中外合作办学专题分析报告.html">
<h3>&#x1F310; 中外合作办学专题</h3>
<p>2026暴增分析、杭电都柏林/桂电中美等关键项目的成本收益评估</p>
<span class="badge badge-blue">6.3 发布</span>
</a>
<a class="card" href="/report.html?file=高考后-志愿填报行动方案.html">
<h3>&#x1F4C5; 志愿填报行动方案</h3>
<p>考后时间线、38个新增本科专业专题分析、家庭沟通策略与禁忌</p>
<span class="badge badge-green">6.10 更新</span>
</a>
<a class="card" href="/report.html?file=2026年就业市场数据验证分析报告.html">
<h3>&#x1F4B0; 就业市场数据验证分析</h3>
<p>智联原版报告全文提取+多平台交叉验证,AI变革因子纳入评估</p>
<span class="badge badge-gold">6.23 多平台验证</span>
</a>
</div>
<!-- ======== 等效位次分析工具 ======== -->
<hr class="section-divider">
<div class="section-header">
<div class="section-title"><span class="icon">&#x1F3AF;</span> 等效位次与等效分数分析</div>
<span class="filler-tag filler-tianheng"><span class="icon">&#x1F50D;</span> 出分后核心工具</span>
</div>
<p class="section-hint section-tianheng">
基于多因素修正的跨年度高考位次/分数换算引擎,支持4种换算方法(直接位次法、比例法、物化修正法、招生计划修正法),
内置2023–2025一分一段表。<strong>6月26日出分后输入2026分数,即可获得等效于历年分数和位次</strong>,辅助志愿填报决策。
</p>
<div class="card-grid">
<a class="card" href="/等效位次与等效分数分析工具.html">
<h3>&#x1F3AF; 等效位次与等效分数分析</h3>
<p>跨年度位次/分数换算引擎:4种换算方法,内置2023–2025一分一段表,出分后输入即可对比历年数据</p>
<span class="badge badge-gold">&#x1F50D; 出分后核心工具</span>
</a>
</div>
<!-- ======== 页脚 ======== -->
<div class="footer">
<div class="data-badges">
<span>教育部</span><span>浙江省教育考试院</span><span>智联招聘</span><span>BOSS直聘</span><span>猎聘</span><span>前程无忧</span><span>脉脉高聘</span>
</div>
<p>仅供家庭内部使用 · 数据存储在本地 NAS · 不经过任何外部服务器</p>
<p style="margin-top:4px;">文档编号:ZJ-2026-TH-001 · 版本 v1.0.0 · 生成时间:2026-06-24 · 机密等级:家庭内部</p>
<p style="margin-top:12px;">
<a href="/dashboard.html" style="color:var(--navy-600);text-decoration:none;font-weight:600;">&#x1F4CB; 问卷完成情况</a>
&nbsp;|&nbsp;
<a href="/summary.html" style="color:var(--navy-600);text-decoration:none;font-weight:600;">&#x1F4C4; 汇总报告</a>
</p>
</div>
</div>
<script>
// ============================================================
// 页面加载时从 API 获取问卷列表,统一渲染至天恒专属测评区块
// ============================================================
// 问卷配置(与后端 seed_data.py 保持一致)
var QUESTIONNAIRE_CONFIG = [
{ id: 1, title: '综合兴趣和偏好问卷', target_user: '天恒', questions: 31, description: '3大分区31题,合并职业兴趣+性格模式+院校偏好' },
{ id: 2, title: '家庭期望对齐问卷', target_user: '天恒', questions: 8, description: '每位家庭成员独立填写,表达对天恒的真实期望' }
];
// 天恒动态问卷的图标映射
var TIANHENG_ICONS = {
1: '&#x1F9D0;', // 综合兴趣和偏好问卷
2: '&#x1F468;&#x200D;&#x1F469;&#x200D;&#x1F467;' // 家庭期望对齐问卷
};
(function() {
loadQuestionnaires();
})();
function loadQuestionnaires() {
// 带超时的 fetch5秒)
fetchWithTimeout('/api/questionnaires', 5000)
.then(function(resp) { return resp.json(); })
.then(function(questionnaires) {
// 所有问卷(综合兴趣和偏好问卷 + 家庭期望对齐问卷)统一渲染
renderTianhengDynamicCards(questionnaires);
})
.catch(function(e) {
// API 不可用 — 使用 QUESTIONNAIRE_CONFIG 作为回退
console.warn('API 不可用,使用静态配置回退:', e.message);
renderTianhengDynamicCards(QUESTIONNAIRE_CONFIG);
});
}
function renderTianhengDynamicCards(questionnaires) {
var container = document.getElementById('tianheng-dynamic-slots');
if (!questionnaires || questionnaires.length === 0) {
container.innerHTML = '';
return;
}
var html = '';
questionnaires.forEach(function(q) {
var icon = TIANHENG_ICONS[q.id] || '&#x1F4CB;';
var fillerClass = 'filler-tianheng';
var fillerIcon = q.id === 2 ? '&#x1F464; 天恒 + 家庭成员' : '&#x1F464; 天恒';
html += '<div class="card q-card">' +
'<h3>' + icon + ' ' + q.title + ' <span class="filler-tag ' + fillerClass + ' card-tag" style="font-size:10px;padding:2px 10px;">' + fillerIcon + '</span></h3>' +
'<p>' + (q.description || '') + '</p>' +
'<div class="btn-row">' +
'<a href="/questionnaire.html?id=' + q.id + '" class="btn btn-primary btn-sm">&#x1F4DD; 填写</a>' +
'<a href="/results.html?id=' + q.id + '" class="btn btn-outline btn-sm">&#x1F4CA; 查看汇总</a>' +
'</div>' +
'<div class="status">' +
'<span class="dot" id="badge-' + q.id + '"></span>' +
'<span id="badge-text-' + q.id + '">正在检查答卷...</span>' +
'</div>' +
'</div>';
});
container.innerHTML = html;
// 异步加载每个问卷的答卷数量
questionnaires.forEach(function(q) {
fetch('/api/results/' + q.id)
.then(function(r) { return r.json(); })
.then(function(results) {
var dot = document.getElementById('badge-' + q.id);
var text = document.getElementById('badge-text-' + q.id);
if (Array.isArray(results)) {
if (dot) dot.classList.add('active');
if (text) text.textContent = results.length + ' 份答卷';
} else {
if (text) text.textContent = '暂无答卷';
}
})
.catch(function() {
var text = document.getElementById('badge-text-' + q.id);
if (text) text.textContent = '加载失败(后端未启动)';
});
});
}
// ============================================================
// 带超时的 fetch 封装
// ============================================================
function fetchWithTimeout(url, timeoutMs) {
return new Promise(function(resolve, reject) {
var controller = new AbortController();
var timeoutId = setTimeout(function() {
controller.abort();
reject(new Error('请求超时(' + timeoutMs + 'ms'));
}, timeoutMs);
fetch(url, { signal: controller.signal })
.then(function(response) {
clearTimeout(timeoutId);
resolve(response);
})
.catch(function(err) {
clearTimeout(timeoutId);
reject(err);
});
});
}
</script>
</body>
</html>