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 仓库初始化
This commit is contained in:
+261
@@ -0,0 +1,261 @@
|
||||
<!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 | 仅供家庭成员查阅 | 数据存储在本地 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>自估 591 分</span>
|
||||
<span>6月26日出分</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">📊</span> 天恒专属测评</div>
|
||||
<span class="filler-tag filler-tianheng"><span class="icon">👤</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>🔬 霍兰德职业兴趣测试(自评版) <span class="filler-tag filler-tianheng card-tag" style="font-size:10px;padding:2px 10px;">👤 天恒</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">📝 填写</a>
|
||||
<a href="/霍兰德职业兴趣测试-自评版.html" class="btn btn-outline btn-sm">📊 查看汇总</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- MBTI性格测试(自评版)— 硬编码 -->
|
||||
<div class="card" onclick="window.location.href='/MBTI性格测试-自评版.html'">
|
||||
<h3>🧠 MBTI性格测试(自评版) <span class="filler-tag filler-tianheng card-tag" style="font-size:10px;padding:2px 10px;">👤 天恒</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">📝 填写</a>
|
||||
<a href="/MBTI性格测试-自评版.html" class="btn btn-outline btn-sm">📊 查看汇总</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>
|
||||
|
||||
<!-- ======== 分析报告 ======== -->
|
||||
<div class="section-title"><span class="icon">📈</span> 分析报告</div>
|
||||
<div class="card-grid">
|
||||
<a class="card" href="/report.html?file=志愿填报预备报告.html">
|
||||
<h3>📃 志愿填报预备报告</h3>
|
||||
<p>核心决策报告:AI产业链战略、冲稳保三档、多Agent决策框架、中外合作办学策略</p>
|
||||
<span class="badge badge-blue">v3.7 主报告</span>
|
||||
</a>
|
||||
<a class="card" href="/profession-reports.html">
|
||||
<h3>📚 院校和专业深度调研报告</h3>
|
||||
<p>按专业方向逐校深度调研:✅数字媒体技术(已发布)、📋电子信息工程(待完成)、📋自动化(待完成)等</p>
|
||||
<span class="badge badge-purple">6.24 更新 · 持续建设中</span>
|
||||
</a>
|
||||
<a class="card" href="/report.html?file=2026年浙江招生计划深度分析报告.html">
|
||||
<h3>📈 浙江招生计划深度分析</h3>
|
||||
<p>2026年浙江招生计划拆解,物化扩招对位次的影响量化分析</p>
|
||||
<span class="badge badge-green">6.21 发布</span>
|
||||
</a>
|
||||
<a class="card" href="/report.html?file=高考预测报告.html">
|
||||
<h3>🌂 高考预测报告</h3>
|
||||
<p>成绩预测、考后分析、数学难度全国性影响的位次-分数逻辑推演</p>
|
||||
<span class="badge badge-amber">v5 考后修订</span>
|
||||
</a>
|
||||
<a class="card" href="/report.html?file=中外合作办学专题分析报告.html">
|
||||
<h3>🌐 中外合作办学专题</h3>
|
||||
<p>2026暴增分析、杭电都柏林/桂电中美等关键项目的成本收益评估</p>
|
||||
<span class="badge badge-blue">6.3 发布</span>
|
||||
</a>
|
||||
<a class="card" href="/report.html?file=高考后-志愿填报行动方案.html">
|
||||
<h3>📅 志愿填报行动方案</h3>
|
||||
<p>考后时间线、38个新增本科专业专题分析、家庭沟通策略与禁忌</p>
|
||||
<span class="badge badge-green">6.10 更新</span>
|
||||
</a>
|
||||
<a class="card" href="/report.html?file=2026年就业市场数据验证分析报告.html">
|
||||
<h3>💰 就业市场数据验证分析</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">🎯</span> 等效位次与等效分数分析</div>
|
||||
<span class="filler-tag filler-tianheng"><span class="icon">🔍</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>🎯 等效位次与等效分数分析</h3>
|
||||
<p>跨年度位次/分数换算引擎:4种换算方法,内置2023–2025一分一段表,出分后输入即可对比历年数据</p>
|
||||
<span class="badge badge-gold">🔍 出分后核心工具</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;">📋 问卷完成情况</a>
|
||||
|
|
||||
<a href="/summary.html" style="color:var(--navy-600);text-decoration:none;font-weight:600;">📄 汇总报告</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: '🧐', // 综合兴趣和偏好问卷
|
||||
2: '👨‍👩‍👧' // 家庭期望对齐问卷
|
||||
};
|
||||
|
||||
(function() {
|
||||
loadQuestionnaires();
|
||||
})();
|
||||
|
||||
function loadQuestionnaires() {
|
||||
// 带超时的 fetch(5秒)
|
||||
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] || '📋';
|
||||
var fillerClass = q.id === 2 ? 'filler-parents' : 'filler-tianheng';
|
||||
var fillerIcon = q.id === 2 ? '👨‍👩‍👧 家庭成员' : '👤 天恒';
|
||||
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">📝 填写</a>' +
|
||||
'<a href="/results.html?id=' + q.id + '" class="btn btn-outline btn-sm">📊 查看汇总</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>
|
||||
Reference in New Issue
Block a user