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:
2026-06-24 13:11:34 +08:00
commit b6df028839
71 changed files with 22898 additions and 0 deletions
@@ -0,0 +1,579 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MBTI性格测试 · 自评版</title>
<style>
:root {
--primary: #1a3a5c;
--primary-light: #2c5282;
--gold: #c9a84c;
--gold-light: #f0e6c8;
--bg: #f5f0e8;
--card: #ffffff;
--text: #2d3748;
--text-light: #718096;
--border: #e2e8f0;
--success: #38a169;
--ei-color: #805ad5;
--sn-color: #3182ce;
--tf-color: #dd6b20;
--jp-color: #38a169;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body { font-family: "PingFang SC","Microsoft YaHei","Noto Sans SC",sans-serif; background: var(--bg); color: var(--text); line-height: 1.8; padding-bottom: 80px; }
.header { background: linear-gradient(135deg, var(--primary) 0%, var(--primary-light) 100%); color: #fff; padding: 40px 20px; text-align: center; position: relative; overflow: hidden; }
.header::after { content:""; position: absolute; top: -50%; right: -20%; width: 300px; height: 300px; background: rgba(201,168,76,0.1); border-radius: 50%; }
.header h1 { font-size: 28px; font-weight: 700; margin-bottom: 8px; position: relative; z-index: 1; }
.header .subtitle { font-size: 15px; opacity: 0.85; position: relative; z-index: 1; }
.header .badge { display: inline-block; background: var(--gold); color: var(--primary); padding: 4px 16px; border-radius: 20px; font-size: 13px; font-weight: 600; margin-top: 12px; position: relative; z-index: 1; }
.container { max-width: 720px; margin: 0 auto; padding: 20px; }
.intro-card { background: var(--card); border-radius: 12px; padding: 28px; margin: 24px 0; box-shadow: 0 1px 3px rgba(0,0,0,0.08); border-left: 4px solid var(--primary); }
.intro-card h3 { font-size: 17px; color: var(--primary); margin-bottom: 8px; }
.intro-card p { font-size: 14px; color: var(--text-light); margin-bottom: 6px; }
.dim-nav { display: flex; flex-wrap: wrap; gap: 8px; margin: 20px 0; position: sticky; top: 10px; z-index: 10; background: var(--bg); padding: 12px 0; }
.dim-nav button { padding: 8px 16px; border: 2px solid var(--border); border-radius: 20px; background: var(--card); cursor: pointer; font-size: 14px; font-weight: 600; transition: all 0.2s; color: var(--text); }
.dim-nav button:hover { border-color: var(--primary-light); }
.dim-nav button.active { background: var(--primary); color: #fff; border-color: var(--primary); }
.dim-nav button.done { border-color: var(--success); color: var(--success); }
.dim-nav button.done::after { content: " ✓"; }
.section { background: var(--card); border-radius: 12px; padding: 32px 28px; margin: 20px 0; box-shadow: 0 1px 3px rgba(0,0,0,0.08); }
.section h2 { font-size: 22px; margin-bottom: 4px; display: flex; align-items: center; gap: 10px; }
.section .dim-badge { display: inline-flex; align-items: center; justify-content: center; min-width: 80px; height: 36px; border-radius: 20px; font-weight: 700; font-size: 16px; color: #fff; padding: 0 14px; flex-shrink: 0; }
.section .dim-desc { font-size: 14px; color: var(--text-light); margin: 8px 0 20px; }
.question { padding: 16px 0; border-bottom: 1px solid var(--border); }
.question:last-child { border-bottom: none; }
.question .q-num { font-weight: 700; color: var(--primary); margin-right: 6px; font-size: 14px; }
.question .q-text { font-size: 15px; font-weight: 600; margin-bottom: 10px; }
.choice-group { display: flex; flex-direction: column; gap: 6px; }
.choice { display: flex; align-items: center; padding: 10px 14px; border: 2px solid var(--border); border-radius: 8px; cursor: pointer; transition: all 0.15s; gap: 10px; }
.choice:hover { border-color: var(--primary-light); background: #f8fafc; }
.choice.selected-a { border-color: #3182ce; background: #ebf8ff; }
.choice.selected-b { border-color: #dd6b20; background: #fffaf0; }
.choice .radio { width: 20px; height: 20px; border-radius: 50%; border: 2px solid var(--border); display: flex; align-items: center; justify-content: center; flex-shrink: 0; font-size: 12px; }
.choice.selected-a .radio { border-color: #3182ce; background: #3182ce; color: #fff; }
.choice.selected-b .radio { border-color: #dd6b20; background: #dd6b20; color: #fff; }
.choice .opt-label { font-size: 14px; line-height: 1.5; }
.progress-wrap { background: var(--card); border-radius: 12px; padding: 20px 28px; margin: 20px 0; box-shadow: 0 1px 3px rgba(0,0,0,0.08); }
.progress-bar { height: 8px; background: var(--border); border-radius: 4px; overflow: hidden; margin-bottom: 8px; }
.progress-fill { height: 100%; background: linear-gradient(90deg, var(--primary-light), var(--gold)); border-radius: 4px; transition: width 0.3s; }
.progress-text { font-size: 14px; color: var(--text-light); text-align: center; }
.results { background: var(--card); border-radius: 12px; padding: 32px 28px; margin: 20px 0; box-shadow: 0 1px 3px rgba(0,0,0,0.08); display: none; }
.results.show { display: block; }
.results h2 { font-size: 24px; color: var(--primary); text-align: center; margin-bottom: 24px; }
.result-type { text-align: center; margin: 20px 0; }
.result-type .type-letters { font-size: 56px; font-weight: 900; letter-spacing: 6px; background: linear-gradient(135deg, var(--primary), var(--gold)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; }
.result-type .type-label { font-size: 15px; color: var(--text-light); margin-top: 4px; }
.dim-results { margin: 24px 0; display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
@media (max-width: 500px) { .dim-results { grid-template-columns: 1fr; } }
.dim-card { padding: 16px; border-radius: 8px; text-align: center; border: 2px solid var(--border); }
.dim-card .dim-name { font-size: 12px; color: var(--text-light); text-transform: uppercase; letter-spacing: 2px; }
.dim-card .dim-result { font-size: 28px; font-weight: 900; margin: 6px 0; }
.dim-card .dim-bar-wrap { height: 6px; background: #f0f0f0; border-radius: 3px; margin-top: 8px; overflow: hidden; }
.dim-card .dim-bar-fill { height: 100%; border-radius: 3px; transition: width 1s ease-out; }
.interpretation { margin: 24px 0; padding: 20px; background: var(--gold-light); border-radius: 8px; border-left: 4px solid var(--gold); }
.interpretation h4 { font-size: 16px; color: var(--primary); margin-bottom: 8px; }
.interpretation p { font-size: 14px; color: var(--text); line-height: 1.7; margin-bottom: 6px; }
.type-traits { margin: 20px 0; padding: 20px; background: #f0f4ff; border-radius: 8px; }
.type-traits h4 { font-size: 15px; color: var(--primary); margin-bottom: 8px; }
.type-traits ul { padding-left: 20px; font-size: 14px; }
.type-traits li { margin: 4px 0; }
.btn-primary { display: block; margin: 24px auto 0; padding: 14px 40px; background: linear-gradient(135deg, var(--primary), var(--primary-light)); color: #fff; border: none; border-radius: 8px; font-size: 16px; font-weight: 700; cursor: pointer; transition: all 0.2s; }
.btn-primary:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(26,58,92,0.3); }
.btn-primary:disabled { opacity: 0.5; cursor: not-allowed; }
.warning-box { background: #fff3cd; border: 1px solid #ffc107; border-radius: 8px; padding: 16px 20px; margin: 20px 0; font-size: 14px; color: #856404; }
.warning-box strong { color: #664d03; }
.footer { text-align: center; padding: 40px 20px; color: var(--text-light); font-size: 13px; }
/* History Panel */
.history-panel { background: var(--card); border-radius: 12px; padding: 28px; margin: 20px 0; box-shadow: 0 1px 3px rgba(0,0,0,0.08); }
.history-panel h3 { font-size: 18px; color: var(--primary); margin-bottom: 16px; display: flex; align-items: center; gap: 8px; }
.history-list { display: flex; flex-direction: column; gap: 8px; }
.history-item { display: flex; align-items: center; justify-content: space-between; padding: 14px 16px; border: 2px solid var(--border); border-radius: 8px; cursor: pointer; transition: all 0.15s; gap: 12px; flex-wrap: wrap; }
.history-item:hover { border-color: var(--primary-light); background: #f8fafc; }
.history-item.active { border-color: var(--primary); background: #ebf4ff; }
.history-item .hi-type { font-size: 20px; font-weight: 900; color: var(--primary); letter-spacing: 3px; }
.history-item .hi-name { font-size: 14px; color: var(--text-light); }
.history-item .hi-time { font-size: 13px; color: var(--text-light); }
.history-item .hi-current { font-size: 12px; color: var(--success); font-weight: 600; }
.history-empty { text-align: center; color: var(--text-light); font-size: 14px; padding: 24px 0; }
.btn-reset { display: inline-block; padding: 10px 28px; background: #fff; color: var(--primary); border: 2px solid var(--primary); border-radius: 8px; font-size: 14px; font-weight: 600; cursor: pointer; transition: all 0.2s; }
.btn-reset:hover { background: var(--primary); color: #fff; }
.result-timestamp { text-align: center; font-size: 13px; color: var(--text-light); margin-top: -16px; margin-bottom: 16px; }
.btn-actions { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; margin-top: 24px; }
.bg-ei { background: #f3e8ff; border-color: var(--ei-color); }
.bg-sn { background: #e8f0ff; border-color: var(--sn-color); }
.bg-tf { background: #fff4e8; border-color: var(--tf-color); }
.bg-jp { background: #e8fff0; border-color: var(--jp-color); }
</style>
</head>
<body>
<div class="header">
<h1>🧠 MBTI 性格测试</h1>
<p class="subtitle">Myers-Briggs Type Indicator · 自评版 · 28题</p>
<span class="badge">全程约8分钟</span>
<span class="badge" style="background:#1a3a5c;color:#c9a84c;border:1px solid #c9a84c;margin-left:6px;">👤 天恒专属</span>
</div>
<div class="container">
<div class="intro-card">
<h3>📖 这是什么?</h3>
<p>MBTI基于荣格心理学理论,把人的性格分成<strong>4个维度</strong>,组合成16种类型。它不判断"好坏",只描述"你是怎么样的人"。</p>
</div>
<div class="intro-card">
<h3>📝 怎么填?</h3>
<p>下面有28道题,每题有 <strong>A</strong><strong>B</strong> 两个选项。请选择<strong>更接近你真实感受</strong>的那个——不是"应该选哪个",而是<strong>"你实际上更偏向哪边"</strong></p>
<p style="margin-top:8px;">💡 如果两个都不完全符合,选<strong>相对更贴切</strong>的那个。尽量不要跳题。</p>
</div>
<div class="intro-card" style="border-left-color: var(--gold); background: var(--gold-light);">
<h3>4个维度速览</h3>
<table style="width:100%;font-size:14px;border-collapse:collapse;">
<tr><td style="padding:6px 0;"><strong>E 外向 vs I 内向</strong></td><td>你从哪获得能量?社交充电 vs 独处充电</td></tr>
<tr><td style="padding:6px 0;"><strong>S 实感 vs N 直觉</strong></td><td>你如何接收信息?相信具体事实 vs 相信直觉规律</td></tr>
<tr><td style="padding:6px 0;"><strong>T 思考 vs F 情感</strong></td><td>你如何做决定?靠逻辑分析 vs 靠价值观和感受</td></tr>
<tr><td style="padding:6px 0;"><strong>J 判断 vs P 感知</strong></td><td>你如何安排生活?喜欢计划有序 vs 喜欢灵活开放</td></tr>
</table>
</div>
<div id="dimNav" class="dim-nav"></div>
<div class="progress-wrap">
<div class="progress-bar"><div id="progressFill" class="progress-fill" style="width:0%"></div></div>
<div class="progress-text" id="progressText">已答 0 / 28 题</div>
</div>
<div id="questions"></div>
<div style="text-align:center;margin:30px 0;">
<button id="btnSubmit" class="btn-primary" disabled onclick="calculateResults()">📊 查看我的MBTI类型</button>
</div>
<div id="results" class="results">
<h2>🎯 你的MBTI性格类型</h2>
<div class="result-timestamp" id="resultTimestamp"></div>
<div class="result-type">
<div class="type-letters" id="resultType"></div>
<div class="type-label">四字母代码 · Personality Type</div>
</div>
<div id="dimDetails" class="dim-results"></div>
<div id="interpretation" class="interpretation"></div>
<div class="btn-actions">
<button class="btn-reset" onclick="resetTest()">🔄 再做一次</button>
<button class="btn-reset" onclick="submitToServer()" style="border-color:var(--success);color:var(--success);">📤 提交结果到服务器</button>
</div>
<div class="warning-box">
<strong>⚠️ 重要说明:</strong>本测试为自评简化版,用于快速了解性格倾向。MBTI类型会随年龄和经历变化,结果仅作参考,不应作为唯一决策依据。完整93题的科学测评建议配合专业认证施测师。
</div>
</div>
<div id="historyPanel" class="history-panel" style="display:none;">
<h3>📋 测试历史记录</h3>
<div id="historyList" class="history-list"></div>
</div>
</div>
<div class="footer">
<p>基于 Myers-Briggs Type Indicator 理论编制 | 天恒专属 · 高考志愿规划工具</p>
</div>
<script>
// ========== MBTI Test Data ==========
const dimensions = [
{
id: 'ei', codeA: 'E', codeB: 'I',
name: '外向 E vs 内向 I',
fullName: 'Extraversion vs Introversion',
desc: '你从哪获得能量?',
color: '#805ad5',
bgClass: 'bg-ei',
items: [
{ a: '和一群朋友聚会时,我精力充沛、越玩越嗨', b: '我更享受独处或和一二知己深聊,人太多反而消耗' },
{ a: '我喜欢先说出来再慢慢理清思路', b: '我喜欢先想清楚再开口,说出来的都是想好的' },
{ a: '认识新朋友让我兴奋', b: '认识新朋友让我有点紧张' },
{ a: '我更喜欢热闹活跃的环境', b: '我更喜欢安静、不被打扰的环境' },
{ a: '在群体中我倾向于主动发起对话', b: '在群体中我倾向于等别人先开口' },
{ a: '我的社交圈比较广,不同类型的朋友都有', b: '我有少数几个深交的朋友,已经足够' },
{ a: '参加完集体活动后我精神焕发', b: '参加完集体活动后我需要独处恢复能量' }
]
},
{
id: 'sn', codeA: 'S', codeB: 'N',
name: '实感 S vs 直觉 N',
fullName: 'Sensing vs Intuition',
desc: '你如何接收和理解信息?',
color: '#3182ce',
bgClass: 'bg-sn',
items: [
{ a: '我更关注具体的细节和事实数据', b: '我更关注整体图景和未来可能性' },
{ a: '我喜欢按部就班、有章可循的方法', b: '我喜欢尝试新方法、新思路,哪怕不一定成功' },
{ a: '我相信眼见为实,需要看到证据', b: '我相信直觉和预感,哪怕暂时说不清为什么' },
{ a: '我更看重实用的技能和技术', b: '我更着迷于抽象的理论和概念' },
{ a: '我更多关注当下和过往的经验', b: '我更多关注未来和可能性' },
{ a: '我喜欢有明确步骤和流程的任务', b: '我喜欢自由发挥和探索的任务' },
{ a: '做熟悉的事让我感到踏实', b: '不断尝试新事物才让我觉得有意思' }
]
},
{
id: 'tf', codeA: 'T', codeB: 'F',
name: '思考 T vs 情感 F',
fullName: 'Thinking vs Feeling',
desc: '你如何做决定和判断?',
color: '#dd6b20',
bgClass: 'bg-tf',
items: [
{ a: '做决定时我更看重逻辑分析和客观事实', b: '做决定时我更看重价值观和对他人的影响' },
{ a: '我认为公平公正比照顾个人感受更重要', b: '我认为理解和体谅比死守规则更重要' },
{ a: '别人常说我比较理性、冷静', b: '别人常说我比较感性、有同理心' },
{ a: '发现问题时我会直接指出来', b: '指出问题前我会先考虑会不会伤到对方' },
{ a: '我更看重效率和结果', b: '我更看重过程和人际关系的和谐' },
{ a: '给别人提意见或批评对我来说不太难', b: '批评别人让我感到很不舒服' },
{ a: '我认为规则既然定了就该严格执行', b: '我认为规则可以根据实际情况灵活处理' }
]
},
{
id: 'jp', codeA: 'J', codeB: 'P',
name: '判断 J vs 感知 P',
fullName: 'Judging vs Perceiving',
desc: '你如何安排生活和应对外部世界?',
color: '#38a169',
bgClass: 'bg-jp',
items: [
{ a: '我喜欢提前计划,什么事都安排好', b: '我喜欢随遇而安,灵活应对变化' },
{ a: '提前完成任务让我感到轻松和满足', b: '截止日期前的压力反而让我效率最高' },
{ a: '我喜欢井井有条、有规律的生活', b: '我享受即兴发挥和不被安排的自由' },
{ a: '做出决定后我感觉如释重负', b: '我喜欢保持选择开放,不急着做决定' },
{ a: '出去玩之前我喜欢做好攻略和计划', b: '走哪算哪,随性探索更有趣' },
{ a: '我喜欢先把该做的事做完再放松', b: '有时候先放松一下再做事效率更高' },
{ a: '有规律的作息让我状态稳定', b: '我根据状态和心情来安排时间' }
]
}
];
// ========== State ==========
const answers = {}; // { 'ei0': 'A', 'ei1': 'B', ... }
dimensions.forEach(d => { for (let i = 0; i < 7; i++) answers[d.id + i] = null; });
// ========== Render ==========
function renderAll() {
renderNav();
renderQuestions();
updateProgress();
}
function renderNav() {
const nav = document.getElementById('dimNav');
nav.innerHTML = dimensions.map(d => {
const answered = getDimAnswered(d.id);
const allDone = answered === 7;
return `<button class="${allDone ? 'done' : ''}" onclick="scrollToDim('${d.id}')" style="border-color:${d.color};">
${d.name}
</button>`;
}).join('');
}
function renderQuestions() {
const container = document.getElementById('questions');
container.innerHTML = dimensions.map(d => `
<div class="section ${d.bgClass}" id="dim-${d.id}" style="border-top: 3px solid ${d.color};">
<h2>
<span class="dim-badge" style="background:${d.color};">${d.name}</span>
</h2>
<p class="dim-desc">${d.desc} 共7题,每题选A或B</p>
${d.items.map((item, i) => {
const key = d.id + i;
const val = answers[key];
return `<div class="question">
<div class="q-text"><span class="q-num">${i+1}.</span>请选择更接近你的选项:</div>
<div class="choice-group">
<div class="choice ${val==='A'?'selected-a':''}" onclick="setAnswer('${key}','A')" id="choice-${key}-A">
<div class="radio">${val==='A'?'✓':''}</div>
<span class="opt-label"><strong>A.</strong> ${item.a}</span>
</div>
<div class="choice ${val==='B'?'selected-b':''}" onclick="setAnswer('${key}','B')" id="choice-${key}-B">
<div class="radio">${val==='B'?'✓':''}</div>
<span class="opt-label"><strong>B.</strong> ${item.b}</span>
</div>
</div>
</div>`;
}).join('')}
</div>
`).join('');
}
function setAnswer(key, val) {
answers[key] = val;
// Update choice styles
const dimId = key.slice(0, 2);
const idx = parseInt(key.slice(2));
const choiceA = document.getElementById('choice-' + key + '-A');
const choiceB = document.getElementById('choice-' + key + '-B');
if (choiceA) choiceA.className = 'choice ' + (val === 'A' ? 'selected-a' : '');
if (choiceB) choiceB.className = 'choice ' + (val === 'B' ? 'selected-b' : '');
updateProgress();
renderNav();
}
function getDimAnswered(id) {
let count = 0;
for (let i = 0; i < 7; i++) if (answers[id + i] !== null) count++;
return count;
}
function updateProgress() {
let total = 0, answered = 0;
dimensions.forEach(d => {
for (let i = 0; i < 7; i++) { total++; if (answers[d.id + i] !== null) answered++; }
});
const pct = Math.round((answered / total) * 100);
document.getElementById('progressFill').style.width = pct + '%';
document.getElementById('progressText').textContent = `已答 ${answered} / ${total} 题 (${pct}%)`;
document.getElementById('btnSubmit').disabled = answered < total;
}
function scrollToDim(id) {
document.getElementById('dim-' + id).scrollIntoView({ behavior: 'smooth', block: 'start' });
}
// ========== Calculate & Display ==========
function calculateResults() {
// Compute scores for each dichotomy
const dimResults = dimensions.map(d => {
let countA = 0;
for (let i = 0; i < 7; i++) if (answers[d.id + i] === 'A') countA++;
const scoreA = countA;
const scoreB = 7 - countA;
const result = countA >= 4 ? d.codeA : d.codeB;
const pctA = Math.round((countA / 7) * 100);
const certainty = (countA === 3 || countA === 4) ? '(边界型,两种倾向接近)' : '';
return {
id: d.id, name: d.name, codeA: d.codeA, codeB: d.codeB, result, scoreA, scoreB, pctA,
color: d.color, certainty, bgClass: d.bgClass
};
});
// Full MBTI type
const mbtiType = dimResults.map(d => d.result).join('');
// Generate timestamp
const now = new Date();
const timestamp = now.toLocaleString('zh-CN', { year:'numeric', month:'2-digit', day:'2-digit', hour:'2-digit', minute:'2-digit', second:'2-digit', hour12:false });
// Display result type & timestamp
document.getElementById('resultType').textContent = mbtiType;
document.getElementById('resultTimestamp').textContent = '⏰ 测试时间:' + timestamp;
displayMBTIResult(mbtiType, dimResults);
// Show results
document.getElementById('results').classList.add('show');
document.getElementById('results').scrollIntoView({ behavior: 'smooth', block: 'start' });
// Save result to localStorage
const resultData = { type: mbtiType, details: dimResults, timestamp: now.toISOString(), timestampFormatted: timestamp };
saveResult(resultData);
renderHistory();
}
function displayMBTIResult(mbtiType, dimResults) {
// Dimension detail cards
document.getElementById('dimDetails').innerHTML = dimResults.map(d => `
<div class="dim-card ${d.bgClass}">
<div class="dim-name">${d.name}</div>
<div class="dim-result" style="color:${d.color};">${d.result}</div>
<div style="font-size:12px;color:var(--text-light);">
${d.codeA} ${d.scoreA}/7 ← → ${d.codeB} ${d.scoreB}/7
${d.certainty ? '<br>'+d.certainty : ''}
</div>
<div class="dim-bar-wrap">
<div class="dim-bar-fill" style="width:${d.pctA}%;background:${d.color};border-radius:3px 0 0 3px;"></div>
</div>
</div>
`).join('');
const typeDescriptions = {
'INTJ': { name: '建筑师', traits: ['善于独立思考', '有战略眼光', '追求完美', '喜欢规划和系统'], study: '科研、工程、计算机、法学、经济学', note: '适合需要深度思考和独立研究的专业' },
'INTP': { name: '逻辑学家', traits: ['好奇心极强', '善于分析', '喜欢理论探索', '不拘常规'], study: '数学、物理、计算机科学、哲学、心理学', note: '适合需要创新和理论深度的专业' },
'ENTJ': { name: '指挥官', traits: ['天生领导者', '果断自信', '目标驱动', '善于组织'], study: '管理学、经济学、法学、工程管理、政治学', note: '适合需要领导力和战略眼光的专业' },
'ENTP': { name: '辩论家', traits: ['思维敏捷', '喜欢挑战', '善于创新', '不喜欢重复'], study: '法学、新闻学、市场营销、计算机、设计学', note: '适合需要创造力和快速应变的专业' },
'INFJ': { name: '提倡者', traits: ['理想主义', '洞察力强', '关心他人', '有使命感'], study: '心理学、教育学、医学、社会工作、文学', note: '适合需要深度共情和价值感的专业' },
'INFP': { name: '调停者', traits: ['内心丰富', '忠于价值观', '富有创造力', '追求意义'], study: '文学、艺术学、心理学、哲学、设计学', note: '适合需要自我表达和意义感的专业' },
'ENFJ': { name: '主人公', traits: ['魅力十足', '善解人意', '激励他人', '有责任感'], study: '教育学、人力资源管理、新闻传播、医学、公共管理', note: '适合需要感染力和组织力的专业' },
'ENFP': { name: '竞选者', traits: ['热情洋溢', '想象力丰富', '善于社交', '追求新鲜感'], study: '新闻学、市场营销、设计学、心理学、文学', note: '适合需要创意和人际互动的专业' },
'ISTJ': { name: '物流师', traits: ['务实可靠', '做事有条理', '遵守规则', '注重细节'], study: '会计学、审计学、工程管理、行政管理、法学', note: '适合需要严谨和规范的专业' },
'ISFJ': { name: '守卫者', traits: ['细心周到', '有奉献精神', '踏实可靠', '重视传统'], study: '医学、护理学、教育学、社会工作、档案学', note: '适合需要耐心和细致的服务型专业' },
'ESTJ': { name: '总经理', traits: ['执行力强', '组织有序', '务实高效', '喜欢管理'], study: '管理学、会计学、工程管理、法学、军事学', note: '适合需要执行力和管理能力的专业' },
'ESFJ': { name: '执政官', traits: ['热心周到', '善于合作', '注重和谐', '乐于助人'], study: '教育学、护理学、人力资源、酒店管理、社会工作', note: '适合需要人际协调和服务的专业' },
'ISTP': { name: '鉴赏家', traits: ['动手能力强', '冷静务实', '喜欢探索原理', '不拘小节'], study: '机械工程、计算机科学、电子信息、体育学、工艺美术', note: '适合需要实操和解决问题的专业' },
'ISFP': { name: '探险家', traits: ['审美敏锐', '温和友善', '活在当下', '不喜欢冲突'], study: '设计学、艺术学、音乐学、园艺、护理学', note: '适合需要审美和动手创作的专业' },
'ESTP': { name: '企业家', traits: ['行动派', '适应力强', '喜欢冒险', '善于应变'], study: '市场营销、体育学、管理学、法学、创业学', note: '适合需要快速反应和实战能力的专业' },
'ESFP': { name: '表演者', traits: ['活力四射', '社交达人', '享受当下', '乐于助人'], study: '表演艺术、旅游管理、新闻传播、社会工作、体育教育', note: '适合需要表现力和人际互动的专业' }
};
const t = typeDescriptions[mbtiType] || { name: '', traits: [], study: '', note: '' };
const ei = dimResults[0], sn = dimResults[1], tf = dimResults[2], jp = dimResults[3];
document.getElementById('interpretation').innerHTML = `
<h4>📌 你的MBTI类型:${mbtiType}${t.name}</h4>
<p><strong>性格特征:</strong>${t.traits.join('、')}</p>
<p><strong>推荐专业方向:</strong>${t.study}</p>
<p><strong>选择建议:</strong>${t.note}</p>
<hr style="margin:16px 0;border-color:#ddd;">
<p style="font-size:13px;color:var(--text-light);"><strong>你的4个维度详细偏好:</strong></p>
<p style="font-size:13px;color:var(--text-light);">${ei.codeA}/${ei.codeB}(${ei.scoreA}/${ei.scoreB}) → <strong>${ei.result}</strong> · ${sn.codeA}/${sn.codeB}(${sn.scoreA}/${sn.scoreB}) → <strong>${sn.result}</strong> · ${tf.codeA}/${tf.codeB}(${tf.scoreA}/${tf.scoreB}) → <strong>${tf.result}</strong> · ${jp.codeA}/${jp.codeB}(${jp.scoreA}/${jp.scoreB}) → <strong>${jp.result}</strong></p>
<p style="font-size:13px;color:var(--text-light);margin-top:4px;">${dimResults.filter(d=>d.certainty).map(d=>'<strong>'+d.name.split(' ')[0]+'</strong>处于边界值').join('') || '所有维度倾向均较明确'}</p>
`;
}
// ========== localStorage Persistence ==========
const STORAGE_KEY = 'mbti_test_history';
function saveResult(resultData) {
let history = [];
try {
history = JSON.parse(localStorage.getItem(STORAGE_KEY) || '[]');
} catch(e) { history = []; }
history.push(resultData);
// Keep max 20 entries
if (history.length > 20) history = history.slice(-20);
try {
localStorage.setItem(STORAGE_KEY, JSON.stringify(history));
} catch(e) { /* quota exceeded, silently fail */ }
}
function loadHistory() {
try {
return JSON.parse(localStorage.getItem(STORAGE_KEY) || '[]');
} catch(e) { return []; }
}
function renderHistory() {
const history = loadHistory();
const panel = document.getElementById('historyPanel');
const list = document.getElementById('historyList');
if (history.length === 0) {
list.innerHTML = '<div class="history-empty">暂无历史记录,完成一次测试后会自动保存</div>';
} else {
const typeDescriptions = {
'INTJ': '建筑师','INTP': '逻辑学家','ENTJ': '指挥官','ENTP': '辩论家',
'INFJ': '提倡者','INFP': '调停者','ENFJ': '主人公','ENFP': '竞选者',
'ISTJ': '物流师','ISFJ': '守卫者','ESTJ': '总经理','ESFJ': '执政官',
'ISTP': '鉴赏家','ISFP': '探险家','ESTP': '企业家','ESFP': '表演者'
};
list.innerHTML = history.map((h, idx) => {
const isLatest = idx === history.length - 1;
return `<div class="history-item${isLatest ? ' active' : ''}" onclick="showHistoryResult(${idx})">
<span class="hi-type">${h.type}</span>
<span class="hi-name">${typeDescriptions[h.type] || ''}</span>
<span class="hi-time">${h.timestampFormatted}</span>
${isLatest ? '<span class="hi-current">最新</span>' : ''}
</div>`;
}).reverse().join(''); // newest first
}
panel.style.display = 'block';
}
function showHistoryResult(idx) {
const history = loadHistory();
if (idx < 0 || idx >= history.length) return;
const h = history[idx];
// Highlight active item
document.querySelectorAll('.history-item').forEach((el, i) => {
el.classList.toggle('active', i === (history.length - 1 - idx)); // reversed display
});
// Re-display result
document.getElementById('resultType').textContent = h.type;
document.getElementById('resultTimestamp').textContent = '⏰ 测试时间:' + h.timestampFormatted;
displayMBTIResult(h.type, h.details);
document.getElementById('results').classList.add('show');
document.getElementById('results').scrollIntoView({ behavior: 'smooth', block: 'start' });
}
function resetTest() {
if (!confirm('确定要重新测试吗?当前结果已自动保存到历史记录中,不会丢失。')) return;
// Reset all answers
dimensions.forEach(d => { for (let i = 0; i < 7; i++) answers[d.id + i] = null; });
// Hide results
document.getElementById('results').classList.remove('show');
document.getElementById('resultType').textContent = '';
document.getElementById('resultTimestamp').textContent = '';
document.getElementById('dimDetails').innerHTML = '';
document.getElementById('interpretation').innerHTML = '';
// Re-render questions
renderAll();
// Scroll to top
window.scrollTo({ top: 0, behavior: 'smooth' });
}
// ========== 提交到服务器 ==========
async function submitToServer() {
const type = document.getElementById('resultType').textContent;
if (!type) { alert('请先完成测试再提交'); return; }
const dimResults = dimensions.map(d => {
let countA = 0;
for (let i = 0; i < 7; i++) if (answers[d.id + i] === 'A') countA++;
return {
id: d.id, name: d.name, codeA: d.codeA, codeB: d.codeB,
result: countA >= 4 ? d.codeA : d.codeB,
scoreA: countA, scoreB: 7 - countA
};
});
try {
const resp = await fetch('/api/standalone/submit', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
test_name: 'mbti',
user_name: '天恒',
result: type,
full_data: { type, dimResults }
})
});
const result = await resp.json();
if (result.success) {
alert('✅ MBTI测试结果已成功提交到服务器!\n可在首页「问卷完成情况」查看。');
} else {
alert('提交失败:' + (result.error || '未知错误'));
}
} catch(e) {
alert('提交失败:无法连接服务器。请确保通过 NAS 地址访问本页面。');
}
}
// ========== Init ==========
renderAll();
// Load and show history on page load if exists
(function() {
const history = loadHistory();
if (history.length > 0) {
renderHistory();
}
})();
</script>
</body>
</html>
+487
View File
@@ -0,0 +1,487 @@
/* ============================================================
高考志愿家庭门户 — 方案A 经典权威版
设计: 政府/教育考试院门户风格 | 深蓝+金色 | 权威可信
============================================================ */
:root {
--navy-900: #070E1A;
--navy-800: #0B1A33;
--navy-700: #0F2A52;
--navy-600: #123A6E;
--navy-500: #154A8A;
--navy-400: #1A5CA6;
--navy-light: #E8F0FB;
--gold-500: #C4A35A;
--gold-400: #D4B66A;
--gold-300: #E0C87C;
--gold-100: #F5ECD7;
--white: #FFFFFF;
--bg: #F0F3F8;
--card: #FFFFFF;
--text: #1A1A2E;
--text-muted: #6B7280;
--text-secondary: #4B5563;
--border: #DCDFE5;
--green: #1A6B3C;
--green-light: #E6F4EC;
--amber: #B8590C;
--amber-light: #FEF4E4;
--red: #C8102E;
--red-light: #FDE8EC;
--purple: #5B21B6;
--purple-light: #EDE5F9;
--blue-tag: #1A5CA6;
--blue-tag-bg: #DCE9F7;
--radius-sm: 6px;
--radius-md: 10px;
--radius-lg: 14px;
--shadow-sm: 0 1px 3px rgba(7,14,26,0.06);
--shadow-md: 0 4px 16px rgba(7,14,26,0.08);
--shadow-lg: 0 8px 32px rgba(7,14,26,0.12);
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: -apple-system, "PingFang SC", "Microsoft YaHei", "Noto Sans SC", sans-serif;
background: linear-gradient(180deg, #F0F3F8 0%, #E8EDF5 100%);
color: var(--text);
line-height: 1.68;
min-height: 100vh;
}
.container { max-width: 1200px; margin: 0 auto; padding: 0 32px 60px; }
/* ===== TOP BAR ===== */
.top-bar {
background: var(--navy-900);
color: rgba(255,255,255,0.65);
font-size: 11px;
padding: 6px 0;
text-align: center;
letter-spacing: 0.5px;
}
/* ===== HERO ===== */
.hero {
background: linear-gradient(135deg, var(--navy-800) 0%, var(--navy-600) 45%, var(--navy-500) 100%);
text-align: center;
padding: 48px 24px 40px;
position: relative;
overflow: hidden;
}
.hero::before {
content: '';
position: absolute;
top: -60px; right: -40px;
width: 240px; height: 240px;
border-radius: 50%;
border: 2px solid rgba(196,163,90,0.12);
pointer-events: none;
}
.hero h1 {
font-size: 28px;
font-weight: 800;
color: var(--white);
letter-spacing: 1px;
position: relative;
z-index: 1;
}
.hero h1 .name {
color: var(--gold-400);
border-bottom: 2px solid rgba(196,163,90,0.4);
padding-bottom: 2px;
}
.hero .sub {
font-size: 13px;
color: rgba(255,255,255,0.72);
margin-top: 6px;
position: relative;
z-index: 1;
}
.hero .meta {
margin-top: 14px;
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 8px;
position: relative;
z-index: 1;
}
.hero .meta span {
display: inline-block;
background: rgba(255,255,255,0.1);
border: 1px solid rgba(255,255,255,0.15);
color: rgba(255,255,255,0.88);
padding: 4px 12px;
border-radius: 20px;
font-size: 12px;
font-weight: 500;
}
.hero .meta .gold {
background: rgba(196,163,90,0.2);
border-color: rgba(196,163,90,0.35);
color: var(--gold-300);
}
/* Hero score info block — 预估位次 + 家庭自估 */
.hero .meta .score-info {
display: inline-flex;
align-items: center;
gap: 4px;
background: rgba(196,163,90,0.2);
border: 1px solid rgba(196,163,90,0.35);
padding: 4px 14px;
border-radius: 20px;
font-size: 12px;
font-weight: 500;
flex-wrap: wrap;
justify-content: center;
}
.hero .meta .score-range {
color: rgba(255,255,255,0.7);
font-size: 10px;
font-weight: 400;
}
.hero .meta .score-num {
color: var(--gold-300);
font-weight: 800;
font-size: 14px;
letter-spacing: 0.5px;
}
.hero .meta .score-note {
color: rgba(255,255,255,0.65);
font-size: 10px;
}
/* ===== SECTION TITLES ===== */
.section-title {
display: flex;
align-items: center;
gap: 10px;
margin: 28px 0 0;
font-size: 18px;
font-weight: 700;
color: var(--navy-800);
padding-bottom: 8px;
border-bottom: 2px solid var(--gold-300);
}
.section-title .icon { font-size: 20px; }
/* ===== CARD GRID ===== */
.card-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 16px;
}
/* 天恒测评区 — 每行放2个(卡片较宽) */
.card-grid-2col {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 16px;
}
.card {
background: var(--card);
border-radius: var(--radius-md);
padding: 20px 22px;
border: 1px solid var(--border);
text-decoration: none;
color: inherit;
transition: transform 0.15s, box-shadow 0.15s, border-color 0.15s;
display: flex;
flex-direction: column;
box-shadow: var(--shadow-sm);
min-height: 180px;
overflow: hidden;
}
.card .btn-row {
margin-top: auto;
}
.card .status {
margin-top: auto;
}
.card:hover {
transform: translateY(-2px);
box-shadow: var(--shadow-lg);
border-color: var(--gold-400);
}
.card h3 {
font-size: 15px;
font-weight: 700;
color: var(--navy-700);
margin-bottom: 6px;
display: flex;
align-items: center;
gap: 8px;
}
.card h3 .card-tag {
margin-left: auto;
}
.card p {
font-size: 12px;
color: var(--text-muted);
line-height: 1.5;
margin-bottom: 10px;
flex: 1;
}
/* ===== BADGES ===== */
.badge {
display: inline-block;
font-size: 10px;
font-weight: 700;
padding: 2px 8px;
border-radius: 4px;
letter-spacing: 0.3px;
}
.badge-blue { background: var(--navy-light); color: var(--navy-600); }
.badge-purple { background: var(--purple-light); color: var(--purple); }
.badge-green { background: var(--green-light); color: var(--green); }
.badge-amber { background: var(--amber-light); color: var(--amber); }
.badge-gold { background: var(--gold-100); color: #8B6914; }
.badge-red { background: var(--red-light); color: var(--red); }
/* ===== 填写人标识 ===== */
.filler-tag {
display: inline-flex;
align-items: center;
gap: 5px;
font-size: 12px;
font-weight: 700;
padding: 5px 14px;
border-radius: 20px;
white-space: nowrap;
}
.filler-tianheng {
background: linear-gradient(135deg, #DCE9F7 0%, #C5D9F0 100%);
color: var(--navy-700);
border: 1.5px solid var(--navy-400);
}
.filler-parents {
background: linear-gradient(135deg, #FEF4E4 0%, #FDE8C4 100%);
color: #92400E;
border: 1.5px solid var(--amber);
}
.filler-tag .icon { font-size: 15px; }
/* ===== 分组区块标识 ===== */
.section-header {
display: flex;
align-items: baseline;
gap: 16px;
margin-bottom: 14px;
}
.section-divider {
border: none;
border-top: 2px dashed var(--border);
margin: 6px 0 20px;
}
.section-hint {
font-size: 12px;
color: var(--text-muted);
margin: -8px 0 14px;
line-height: 1.6;
}
.section-tianheng { border-left: 4px solid var(--navy-500); padding-left: 12px; }
.section-parents { border-left: 4px solid var(--amber); padding-left: 12px; }
/* ===== QUESTIONNAIRE SECTION ===== */
.q-card {
border-left: 4px solid var(--navy-500);
}
.q-card .btn-row {
display: flex;
gap: 8px;
flex-wrap: wrap;
margin-top: 8px;
}
.q-card .status {
margin-top: 10px;
font-size: 11px;
color: var(--text-muted);
display: flex;
align-items: center;
gap: 6px;
}
.q-card .dot {
width: 8px; height: 8px;
border-radius: 50%;
background: var(--border);
display: inline-block;
}
.q-card .dot.active { background: var(--green); }
/* ===== BUTTONS ===== */
.btn {
display: inline-flex;
align-items: center;
gap: 4px;
padding: 7px 16px;
border-radius: var(--radius-sm);
font-size: 12px;
font-weight: 600;
text-decoration: none;
cursor: pointer;
transition: background 0.15s, transform 0.1s;
border: none;
}
.btn:hover { transform: translateY(-1px); }
.btn-primary {
background: var(--navy-600);
color: var(--white);
}
.btn-primary:hover { background: var(--navy-700); }
.btn-outline {
background: var(--white);
color: var(--navy-600);
border: 1.5px solid var(--navy-400);
}
.btn-outline:hover { background: var(--navy-light); }
.btn-gold {
background: var(--gold-500);
color: var(--white);
}
.btn-gold:hover { background: #B89545; }
.btn-sm { padding: 5px 12px; font-size: 11px; }
/* ===== ALERTS ===== */
.alert {
border-radius: var(--radius-md);
padding: 12px 16px;
margin: 14px 0;
font-size: 13px;
line-height: 1.7;
}
.alert-info { background: var(--navy-light); border-left: 4px solid var(--navy-500); color: var(--navy-700); }
.alert-green { background: var(--green-light); border-left: 4px solid var(--green); color: #065F46; }
.alert-amber { background: var(--amber-light); border-left: 4px solid var(--amber); color: #92400E; }
.alert-red { background: var(--red-light); border-left: 4px solid var(--red); color: #991B1B; }
/* ===== FOOTER ===== */
.footer {
margin-top: 36px;
text-align: center;
font-size: 11px;
color: var(--text-muted);
padding: 16px 0;
border-top: 1px solid var(--border);
}
.footer .data-badges {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 6px;
margin-bottom: 8px;
}
.footer .data-badges span {
background: var(--bg);
padding: 2px 8px;
border-radius: 4px;
font-size: 10px;
}
/* ===== REPORT PAGE ===== */
.report-frame {
border: none;
width: 100%;
min-height: 600px;
border-radius: var(--radius-md);
box-shadow: var(--shadow-md);
background: var(--white);
}
.back-link {
display: inline-flex;
align-items: center;
gap: 6px;
font-size: 13px;
color: var(--navy-600);
text-decoration: none;
margin-bottom: 12px;
font-weight: 600;
}
.back-link:hover { color: var(--navy-800); }
/* ===== QUESTIONNAIRE FORM ===== */
.q-form { max-width: 680px; }
.q-form .q-item {
background: var(--card);
border-radius: var(--radius-md);
padding: 16px 20px;
margin-bottom: 10px;
border: 1px solid var(--border);
}
.q-form .q-item .q-num {
font-size: 11px;
color: var(--navy-500);
font-weight: 700;
}
.q-form .q-item .q-text {
font-size: 14px;
color: var(--text);
margin: 4px 0 10px;
font-weight: 500;
}
.q-form .q-item .options {
display: flex;
flex-wrap: wrap;
gap: 8px;
}
.q-form .q-item .options label {
display: inline-flex;
align-items: center;
gap: 4px;
padding: 6px 14px;
border: 1.5px solid var(--border);
border-radius: 20px;
font-size: 12px;
cursor: pointer;
transition: all 0.15s;
user-select: none;
}
.q-form .q-item .options label:hover { border-color: var(--navy-400); background: var(--navy-light); }
.q-form .q-item .options input[type="radio"] { display: none; }
.q-form .q-item .options input[type="radio"]:checked + span {
background: var(--navy-600);
color: var(--white);
}
.q-form .q-item .options input[type="radio"]:checked + span::before {
/* checked indicator */
}
/* ===== RESULTS PAGE ===== */
.result-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.result-table th {
background: var(--navy-700);
color: var(--white);
padding: 10px 12px;
text-align: left;
font-weight: 600;
font-size: 12px;
}
.result-table td {
padding: 8px 12px;
border-bottom: 1px solid var(--border);
}
.result-table tbody tr:hover td { background: var(--navy-light); }
.diff-highlight { background: var(--amber-light); font-weight: 600; color: var(--amber); }
/* ===== TIANHENG DYNAMIC SLOTS ===== */
#tianheng-dynamic-slots {
display: grid;
grid-template-columns: subgrid;
gap: 16px;
grid-column: 1 / -1;
}
#tianheng-dynamic-slots .card.q-card {
/* cards inside will now behave as direct grid children */
}
/* ===== PRINT ===== */
@media print {
.top-bar, .footer, .btn { display: none; }
.hero { background: none; padding: 12px 0; }
.hero h1 { color: var(--navy-800); }
body { background: white; }
}
+220
View File
@@ -0,0 +1,220 @@
<!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">
<style>
.dashboard { max-width: 900px; margin: 0 auto; }
.summary-bar {
background: var(--card);
border-radius: var(--radius-md);
padding: 20px 24px;
margin: 16px 0;
box-shadow: var(--shadow-sm);
display: flex;
align-items: center;
gap: 16px;
flex-wrap: wrap;
}
.summary-bar .progress-ring {
width: 80px; height: 80px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 28px;
font-weight: 900;
flex-shrink: 0;
}
.progress-incomplete { background: var(--amber-light); color: var(--amber); border: 3px solid var(--amber); }
.progress-complete { background: var(--green-light); color: var(--green); border: 3px solid var(--green); }
.summary-bar .stat { font-size: 14px; }
.summary-bar .stat strong { font-size: 22px; }
.status-table { width: 100%; border-collapse: collapse; margin: 16px 0; }
.status-table th {
background: var(--navy-700);
color: var(--white);
padding: 10px 14px;
text-align: left;
font-weight: 600;
font-size: 13px;
}
.status-table td { padding: 12px 14px; border-bottom: 1px solid var(--border); font-size: 14px; }
.status-table tbody tr { background: var(--card); }
.status-table tbody tr:hover { background: var(--navy-light); }
.status-done { color: var(--green); font-weight: 700; }
.status-pending { color: var(--amber); font-weight: 700; }
.tag-sm {
display: inline-block;
font-size: 10px;
font-weight: 700;
padding: 2px 8px;
border-radius: 4px;
margin-left: 6px;
}
.tag-tianheng { background: #DCE9F7; color: var(--navy-600); }
.tag-parents { background: #FEF4E4; color: var(--amber); }
.btn-group { display: flex; gap: 10px; margin: 20px 0; flex-wrap: wrap; }
.refresh-time { font-size: 12px; color: var(--text-muted); text-align: center; margin-top: 8px; }
.empty-state { text-align: center; padding: 40px; color: var(--text-muted); }
.empty-state .icon-big { font-size: 48px; margin-bottom: 12px; }
</style>
</head>
<body>
<div class="top-bar">
DOCUMENT ID: ZJ-2026-TH-001 &nbsp;|&nbsp; 仅供家庭成员查阅
</div>
<div class="container dashboard">
<div style="margin:20px 0;">
<a href="/" style="color:var(--navy-600);text-decoration:none;font-size:13px;font-weight:600;">← 返回首页</a>
</div>
<div class="hero" style="padding:24px 20px 20px;">
<h1>📋 问卷完成情况</h1>
<p class="sub">6项测评:2份线上问卷 + 2份自评测试 + 2份独立测试</p>
</div>
<!-- 总览条 -->
<div class="summary-bar" id="summaryBar">
<div class="progress-ring progress-incomplete" id="progressRing">--</div>
<div class="stat">
<div>已完成 <strong id="completedCount">--</strong> / <span id="totalCount">6</span></div>
<div style="font-size:13px;color:var(--text-muted);" id="statusText">正在加载...</div>
</div>
</div>
<!-- 状态表 -->
<div class="card" style="margin:16px 0;">
<h3 style="font-size:16px;color:var(--navy-700);margin-bottom:12px;">📊 详细状态</h3>
<table class="status-table">
<thead>
<tr>
<th>测评项</th>
<th>填写人</th>
<th>状态</th>
<th>结果摘要</th>
<th>完成时间</th>
</tr>
</thead>
<tbody id="statusBody">
<tr><td colspan="5" style="text-align:center;color:var(--text-muted);">加载中...</td></tr>
</tbody>
</table>
</div>
<!-- 操作按钮 -->
<div class="btn-group" style="justify-content:center;">
<a href="/" class="btn btn-outline" id="btnHome">🏠 返回首页</a>
<a href="/summary.html" class="btn btn-gold" id="btnSummary" style="display:none;">📄 查看汇总报告</a>
</div>
<div class="refresh-time" id="refreshTime"></div>
</div>
<script>
(async function() {
try {
const resp = await fetch('/api/completion-status');
const data = await resp.json();
renderDashboard(data);
} catch(e) {
document.getElementById('statusBody').innerHTML =
'<tr><td colspan="5" style="text-align:center;color:var(--amber);">无法连接后端服务,请确保 Flask 已启动</td></tr>';
document.getElementById('statusText').textContent = '连接失败';
}
})();
const TEST_LABELS = {
holland: '霍兰德职业兴趣测试',
mbti: 'MBTI 性格测试'
};
function renderDashboard(data) {
const done = data.completed_count;
const total = data.total;
const allDone = data.all_completed;
// 进度环
const ring = document.getElementById('progressRing');
ring.textContent = done + '/' + total;
ring.className = 'progress-ring ' + (allDone ? 'progress-complete' : 'progress-incomplete');
document.getElementById('completedCount').textContent = done;
document.getElementById('totalCount').textContent = total;
document.getElementById('statusText').textContent = allDone
? '✅ 全部问卷已完成!可生成汇总报告'
: '还剩 ' + (total - done) + ' 项未完成,请继续填写';
// 状态表
const rows = [];
// API 问卷
(data.questionnaires || []).forEach(q => {
const tag = q.target_user === '父母'
? '<span class="tag-sm tag-parents">父母</span>'
: '<span class="tag-sm tag-tianheng">天恒</span>';
const status = q.completed
? '<span class="status-done">✅ 已完成</span>'
: '<span class="status-pending">⏳ 待填写</span>';
const summary = q.latest_respondent
? q.latest_respondent.user_name + ' · ' + q.response_count + '份答卷'
: '—';
const time = q.latest_respondent
? q.latest_respondent.created_at
: '—';
rows.push({
name: q.title + tag,
target: q.target_user,
status, summary, time
});
});
// 独立测评
const std = data.standalone || {};
['holland', 'mbti'].forEach(key => {
const s = std[key] || {};
const name = (TEST_LABELS[key] || key)
+ ' <span class="tag-sm tag-tianheng">天恒</span>';
const status = s.completed
? '<span class="status-done">✅ 已完成</span>'
: '<span class="status-pending">⏳ 待填写</span>';
const summary = s.completed ? s.result : '—';
const time = s.completed ? s.completed_at : '—';
rows.push({ name, target: '天恒', status, summary, time });
});
document.getElementById('statusBody').innerHTML = rows.map(r => `
<tr>
<td><strong>${r.name}</strong></td>
<td>${r.target}</td>
<td>${r.status}</td>
<td>${r.summary}</td>
<td style="font-size:12px;color:var(--text-muted);">${r.time}</td>
</tr>
`).join('');
// 汇总按钮
if (allDone) {
document.getElementById('btnSummary').style.display = 'inline-flex';
}
// 刷新时间
const t = new Date(data.updated_at);
document.getElementById('refreshTime').textContent =
'数据更新时间:' + t.toLocaleString('zh-CN');
}
</script>
</body>
</html>
+261
View File
@@ -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 &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>
+115
View File
@@ -0,0 +1,115 @@
<!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">
<style>
.report-list { display:flex; flex-direction:column; gap:16px; margin-top:20px; }
.report-item {
display:flex; align-items:flex-start; gap:16px;
background:var(--white); border:1px solid var(--gray-200);
border-radius:12px; padding:20px 24px;
transition:box-shadow 0.2s, transform 0.2s;
text-decoration:none; color:inherit;
}
.report-item:hover { box-shadow:0 4px 16px rgba(0,0,0,0.08); transform:translateY(-2px); }
.report-item .icon-box {
width:48px; height:48px; border-radius:12px;
display:flex; align-items:center; justify-content:center;
flex-shrink:0; font-size:24px;
}
.report-item .info { flex:1; }
.report-item .info h3 { margin:0 0 4px; font-size:16px; color:var(--navy-700); }
.report-item .info p { margin:0; font-size:13px; color:var(--gray-600); line-height:1.6; }
.report-item .status-tag {
display:inline-block; padding:3px 10px; border-radius:6px;
font-size:11px; font-weight:600; white-space:nowrap; margin-top:6px;
}
.tag-done { background:#e8f5e9; color:#2e7d32; }
.tag-pending { background:#fff3e0; color:#e65100; }
.tag-plan { background:#e3f2fd; color:#1565c0; }
.back-link {
display:inline-flex; align-items:center; gap:6px;
color:var(--navy-600); text-decoration:none; font-size:14px;
margin-bottom:16px; font-weight:600;
}
.back-link:hover { text-decoration:underline; }
</style>
</head>
<body>
<div class="top-bar">
DOCUMENT ID: ZJ-2026-TH-001 &nbsp;|&nbsp; 仅供家庭成员查阅 &nbsp;|&nbsp; 数据存储在本地 NAS
</div>
<div class="container">
<a class="back-link" href="/">&#x2190; 返回决策门户首页</a>
<div class="section-title"><span class="icon">&#x1F4DA;</span> 院校和专业深度调研报告</div>
<p class="section-hint" style="font-size:14px; color:var(--gray-600); margin-top:4px;">
按专业方向逐校深度调研,涵盖培养模式、课程体系、就业方向、分数位次等核心维度。
已完成调研标记为 ✅,待补充调研标记为 📋。
</p>
<div class="report-list">
<!-- 1. 数字媒体技术(已完成) -->
<a class="report-item" href="/report.html?file=数字媒体技术院校深度调研报告.html">
<div class="icon-box" style="background:#e8f5e9;color:#2e7d32;"></div>
<div class="info">
<h3>🎮 数字媒体技术</h3>
<p>小班制/项目制/导师制三维筛选,浙科大/桂电/浙传媒逐校评分。<br>
重点方向:游戏开发、交互设计、数字影像。推荐院校含浙科大(573分/84385)、桂电中外合作(预估560~585)、浙传媒(582分)。</p>
<span class="status-tag tag-done">✅ 已完成 · 2026.6.23</span>
</div>
</a>
<!-- 2. 电子信息工程(已完成) -->
<a class="report-item" href="/report.html?file=电子信息工程院校深度调研报告.html">
<div class="icon-box" style="background:#e8f5e9;color:#2e7d32;"></div>
<div class="info">
<h3>&#x1F4E1; 电子信息工程</h3>
<p>天恒保底方向,就业面宽、薪资稳健。核心推荐中国计量大学(工程认证+100%就业+>40%升学率+院士兼职),
课程—岗位匹配度分析、竞赛成绩、就业数据全覆盖。</p>
<span class="status-tag tag-done">✅ 已完成 · 2026.6.24</span>
</div>
</a>
<!-- 3. 自动化(已完成) -->
<a class="report-item" href="/report.html?file=自动化专业院校深度调研报告.html">
<div class="icon-box" style="background:#e8f5e9;color:#2e7d32;"></div>
<div class="info">
<h3>&#x2699;&#xFE0F; 自动化</h3>
<p>宽口径工科保底,浙科大自动化(省一流+机器人方向+98%就业率+>50%升学率)。
核心课程覆盖控制理论/嵌入式/AI/机器人控制四大方向。</p>
<span class="status-tag tag-done">✅ 已完成 · 2026.6.24</span>
</div>
</a>
<!-- 4. 其他重点关注专业(占位) -->
<div class="report-item" style="opacity:0.5; cursor:default; border-style:dashed;">
<div class="icon-box" style="background:#f3f4f6;color:#9ca3af;">&#x1F4CB;</div>
<div class="info">
<h3>其他重点关注的报考专业</h3>
<p>根据后续家庭讨论和多Agent决策框架的补充分析,在此处添加更多专业方向的深度调研报告。</p>
<span class="status-tag tag-pending">🔲 待定</span>
</div>
</div>
</div>
<div class="footer" style="margin-top:40px;">
<div class="data-badges">
<span>教育部</span><span>浙江省教育考试院</span><span>各院校官网</span>
</div>
<p>仅供家庭内部使用 · 数据存储在本地 NAS</p>
<p style="margin-top:4px;">文档编号:ZJ-2026-TH-001 · 生成时间:2026-06-24 · 机密等级:家庭内部</p>
</div>
</div>
</body>
</html>
+423
View File
@@ -0,0 +1,423 @@
<!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">
<style>
/* 自动保存状态指示器 */
.auto-save-indicator {
text-align: center;
margin-top: 16px;
font-size: 12px;
color: var(--text-muted);
display: flex;
align-items: center;
justify-content: center;
gap: 6px;
transition: opacity 0.3s;
}
.auto-save-indicator .save-dot {
width: 8px; height: 8px;
border-radius: 50%;
background: var(--border);
transition: background 0.3s;
}
.auto-save-indicator.saving .save-dot { background: var(--amber); animation: pulse 0.6s infinite; }
.auto-save-indicator.saved .save-dot { background: var(--green); }
@keyframes pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.3; }
}
</style>
</head>
<body>
<div class="container">
<div id="app">
<!-- 加载中 -->
<div id="loading" style="text-align:center;padding:60px 0;color:var(--text-muted);">
<p>加载问卷中...</p>
</div>
</div>
</div>
<script>
// ============================================================
// 问卷填写页 — 从 API 加载问卷,渲染表单,提交答案
// 含 localStorage 自动保存功能
// ============================================================
// 从 URL 参数获取问卷 ID(如 ?id=1
var params = new URLSearchParams(window.location.search);
var qid = params.get('id');
// localStorage 缓存 key
var STORAGE_KEY = 'q_' + qid + '_answers';
var saveTimer = null;
var SAVE_DEBOUNCE_MS = 800;
if (!qid) {
document.getElementById('app').innerHTML =
'<div style="text-align:center;padding:60px;"><p style="color:var(--red);">缺少问卷ID参数,请从首页进入</p><a href="/" class="btn btn-primary" style="margin-top:16px;">&#8592; 返回首页</a></div>';
} else {
loadQuestionnaire(qid);
}
function loadQuestionnaire(qid) {
fetch('/api/questionnaire/' + qid)
.then(function(resp) {
if (!resp.ok) throw new Error('问卷不存在');
return resp.json();
})
.then(function(q) {
// 页面标题
document.title = q.title + ' — 天恒高考志愿门户';
// 渲染表单
var targetUser = q.target_user || '天恒';
var targetBadge = targetUser === '父母'
? '<span class="filler-tag filler-parents" style="margin-left:12px;">&#x1F468;&#x200D;&#x1F469;&#x200D;&#x1F467; 父母填写</span>'
: '<span class="filler-tag filler-tianheng" style="margin-left:12px;">&#x1F464; 天恒填写</span>';
var html =
'<div style="margin-bottom:20px;">' +
'<a href="/" style="color:var(--navy-600);text-decoration:none;font-size:13px;font-weight:600;">&#8592; 返回首页</a>' +
'</div>' +
'<div class="hero" style="padding:20px 0 16px;">' +
'<h1>' + q.title + ' ' + targetBadge + '</h1>' +
'<p class="sub">' + q.description + '</p>' +
'</div>' +
'<div style="background:var(--card);border-radius:var(--radius);padding:20px;margin-bottom:20px;border:1px solid var(--border);">' +
'<label style="font-weight:600;font-size:14px;display:block;margin-bottom:8px;">&#x1F464; 您的称呼(如:爸爸、妈妈、天恒)</label>' +
'<input type="text" id="user-name" class="text-input" placeholder="请输入您的称呼" style="max-width:300px;">' +
'</div>' +
'<form id="q-form" class="form-container">';
// 根据问卷类型渲染题目
if (q.questions.type === 'likert') {
var opts = q.questions.options;
q.questions.items.forEach(function(item, idx) {
html +=
'<div class="question-block">' +
'<div class="q-num">第 ' + (idx + 1) + ' 题 / 共 ' + q.questions.items.length + ' 题</div>' +
'<div class="q-text">' + item.text + '</div>' +
'<ul class="option-list">' +
opts.map(function(o) {
return '<li onclick="selectLikert(this, \'' + item.id + '\', ' + o.value + ')" data-qid="' + item.id + '" data-value="' + o.value + '">' +
'<label>' +
'<input type="radio" name="' + item.id + '" value="' + o.value + '">' +
'<span>' + o.label + '' + o.value + '分)</span>' +
'</label>' +
'</li>';
}).join('') +
'</ul>' +
'</div>';
});
} else {
// 计算实际题目数(跳过section)
var totalQuestions = q.questions.filter(function(it) { return it.type !== 'section'; }).length;
var qIdx = 0;
q.questions.forEach(function(item, idx) {
// 分区标题
if (item.type === 'section') {
html += '<div class="section-header" style="margin-top:24px;margin-bottom:12px;border-bottom:2px solid var(--navy-300);padding-bottom:8px;">' +
'<h3 style="font-size:16px;color:var(--navy-700);margin-bottom:2px;">' + item.title + '</h3>' +
(item.desc ? '<p style="font-size:12px;color:var(--text-muted);">' + item.desc + '</p>' : '') +
'</div>';
return;
}
qIdx++;
html += '<div class="question-block">' +
'<div class="q-num">第 ' + qIdx + ' 题 / 共 ' + totalQuestions + ' 题</div>' +
'<div class="q-text">' + item.text + '</div>';
if (item.type === 'text') {
html += '<textarea class="text-input" name="' + item.id + '" data-qid="' + item.id + '" placeholder="' + (item.placeholder || '请输入...') + '" rows="3"></textarea>';
} else if (item.type === 'multiple') {
html += '<ul class="option-list">' + item.options.map(function(o) {
return '<li onclick="toggleCheckbox(this)" data-qid="' + item.id + '" data-value="' + o.value + '">' +
'<label>' +
'<input type="checkbox" name="' + item.id + '" value="' + o.value + '">' +
'<span>' + o.label + '</span>' +
'</label>' +
'</li>';
}).join('') + '</ul>';
} else {
html += '<ul class="option-list">' + item.options.map(function(o) {
return '<li onclick="selectRadio(this, \'' + item.id + '\', \'' + o.value + '\')" data-qid="' + item.id + '" data-value="' + o.value + '">' +
'<label>' +
'<input type="radio" name="' + item.id + '" value="' + o.value + '">' +
'<span>' + o.label + '</span>' +
'</label>' +
'</li>';
}).join('') + '</ul>';
}
html += '</div>';
});
}
// 提交按钮 + 自动保存指示器
html +=
'<div style="text-align:center;margin-top:20px;">' +
'<button type="button" class="btn btn-primary" onclick="submitForm(' + qid + ')" style="font-size:16px;padding:12px 40px;">' +
'&#x2705; 提交答卷' +
'</button>' +
'</div>' +
'<div class="auto-save-indicator" id="auto-save-indicator">' +
'<span class="save-dot" id="save-dot"></span>' +
'<span id="save-text">已就绪</span>' +
'</div>' +
'</form>';
document.getElementById('app').innerHTML = html;
// ============ 恢复 localStorage 缓存 ============
restoreFromCache();
// ============ 绑定自动保存事件 ============
bindAutoSave();
})
.catch(function(err) {
document.getElementById('app').innerHTML =
'<div style="text-align:center;padding:60px;">' +
'<p style="color:var(--red);">加载失败:' + err.message + '</p>' +
'<a href="/" class="btn btn-primary" style="margin-top:16px;">&#8592; 返回首页</a>' +
'</div>';
});
}
// ============ 交互辅助函数(含自动保存触发) ============
function selectRadio(li, name, value) {
var group = li.parentElement.querySelectorAll('li');
group.forEach(function(g) { g.classList.remove('selected'); });
li.classList.add('selected');
li.querySelector('input').checked = true;
triggerAutoSave();
}
function selectLikert(li, name, value) {
var group = li.parentElement.querySelectorAll('li');
group.forEach(function(g) { g.classList.remove('selected'); });
li.classList.add('selected');
li.querySelector('input').checked = true;
triggerAutoSave();
}
function toggleCheckbox(li) {
var cb = li.querySelector('input');
cb.checked = !cb.checked;
li.classList.toggle('selected', cb.checked);
triggerAutoSave();
}
// ============ localStorage 自动保存 ============
function collectAllAnswers() {
var data = {
userName: '',
answers: {}
};
// 用户名
var userNameEl = document.getElementById('user-name');
if (userNameEl) {
data.userName = userNameEl.value.trim();
}
// 收集表单中的所有答案
var form = document.getElementById('q-form');
if (!form) return data;
// 单选
form.querySelectorAll('input[type="radio"]:checked').forEach(function(input) {
data.answers[input.name] = input.value;
});
// 多选
var multiGroups = {};
form.querySelectorAll('input[type="checkbox"]:checked').forEach(function(input) {
if (!multiGroups[input.name]) multiGroups[input.name] = [];
multiGroups[input.name].push(input.value);
});
Object.keys(multiGroups).forEach(function(name) {
data.answers[name] = multiGroups[name].join(',');
});
// 文本
form.querySelectorAll('textarea').forEach(function(ta) {
if (ta.value.trim()) data.answers[ta.name] = ta.value.trim();
});
return data;
}
function saveToCache() {
var data = collectAllAnswers();
try {
localStorage.setItem(STORAGE_KEY, JSON.stringify(data));
showSaveStatus('saved', '已保存');
} catch(e) {
// localStorage 满或其他错误
console.warn('自动保存失败:', e.message);
showSaveStatus('error', '保存失败');
}
}
function restoreFromCache() {
try {
var raw = localStorage.getItem(STORAGE_KEY);
if (!raw) return;
var data = JSON.parse(raw);
// 恢复用户名
if (data.userName) {
var userNameEl = document.getElementById('user-name');
if (userNameEl) userNameEl.value = data.userName;
}
// 恢复答案 — 先触发所有匹配的 input
if (data.answers) {
var form = document.getElementById('q-form');
if (!form) return;
Object.keys(data.answers).forEach(function(name) {
var val = data.answers[name];
if (val.indexOf(',') > -1) {
// 多选:可能有多个值用逗号分隔
var vals = val.split(',');
vals.forEach(function(v) {
var cb = form.querySelector('input[type="checkbox"][name="' + name + '"][value="' + v + '"]');
if (cb) {
cb.checked = true;
var li = cb.closest('li');
if (li) li.classList.add('selected');
}
});
} else {
// 单选或文本
var radio = form.querySelector('input[type="radio"][name="' + name + '"][value="' + val + '"]');
if (radio) {
radio.checked = true;
var li = radio.closest('li');
if (li) li.classList.add('selected');
return;
}
var ta = form.querySelector('textarea[name="' + name + '"]');
if (ta) {
ta.value = val;
}
}
});
}
} catch(e) {
console.warn('恢复缓存失败:', e.message);
}
}
function clearCache() {
try {
localStorage.removeItem(STORAGE_KEY);
} catch(e) {
// 忽略
}
}
function showSaveStatus(status, text) {
var indicator = document.getElementById('auto-save-indicator');
var dot = document.getElementById('save-dot');
var txt = document.getElementById('save-text');
if (!indicator) return;
indicator.className = 'auto-save-indicator ' + status;
if (dot) dot.className = 'save-dot';
if (txt) txt.textContent = text;
}
function triggerAutoSave() {
showSaveStatus('saving', '自动保存中...');
if (saveTimer) clearTimeout(saveTimer);
saveTimer = setTimeout(function() {
saveToCache();
}, SAVE_DEBOUNCE_MS);
}
function bindAutoSave() {
var form = document.getElementById('q-form');
if (!form) return;
// textarea 输入事件
form.querySelectorAll('textarea').forEach(function(ta) {
ta.addEventListener('input', function() {
triggerAutoSave();
});
});
// 用户名输入事件
var userNameEl = document.getElementById('user-name');
if (userNameEl) {
userNameEl.addEventListener('input', function() {
triggerAutoSave();
});
}
}
// ============ 提交表单 ============
function submitForm(qid) {
var userName = document.getElementById('user-name').value.trim();
if (!userName) {
alert('请先填写您的称呼!');
return;
}
var data = collectAllAnswers();
// 检查是否至少答了一题
if (Object.keys(data.answers).length === 0) {
alert('请至少回答一题再提交!');
return;
}
// 发送请求
var submitBtn = document.querySelector('button[onclick^="submitForm"]');
submitBtn.disabled = true;
submitBtn.textContent = '提交中...';
var respOk;
fetch('/api/questionnaire/' + qid + '/submit', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ user_name: userName, answers: data.answers })
})
.then(function(resp) {
respOk = resp.ok;
return resp.json();
})
.then(function(result) {
if (respOk) {
clearCache();
alert('提交成功!' + (result.message || '') + '\n正在生成分析报告...');
window.location.href = '/report.html?id=' + qid;
} else {
alert('提交失败:' + (result.error || '未知错误'));
submitBtn.disabled = false;
submitBtn.textContent = '✅ 提交答卷';
}
})
.catch(function(err) {
alert('网络错误,请检查后端服务是否正常');
submitBtn.disabled = false;
submitBtn.textContent = '✅ 提交答卷';
});
}
</script>
</body>
</html>
+205
View File
@@ -0,0 +1,205 @@
<!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>
<div class="container" id="app">
<div style="text-align:center;padding:60px 0;color:var(--text-muted);">
<p>正在加载报告...</p>
</div>
</div>
<script>
// ============================================================
// 报告查看器 — 支持两种模式:
// ?file=xxx.html → 在 iframe 中显示静态报告
// ?id=问卷ID → 调用 API 生成分析报告
// ============================================================
var params = new URLSearchParams(window.location.search);
var qid = params.get('id');
var file = params.get('file');
var app = document.getElementById('app');
if (file) {
// ===== 模式1: 静态HTML报告 =====
app.innerHTML =
'<div style="margin-bottom:14px;">' +
'<a href="/" class="back-link">&#8592; 返回首页</a>' +
'</div>' +
'<iframe class="report-frame" id="report-iframe" src="/reports/' + file + '" title="分析报告"></iframe>';
// 动态调整 iframe 高度
setupIframeResize();
} else if (qid) {
// ===== 模式2: API生成的问卷分析报告 =====
loadReport(qid);
} else {
app.innerHTML =
'<div style="text-align:center;padding:60px;">' +
'<p style="color:var(--red);">缺少报告参数</p>' +
'<a href="/" class="btn btn-primary">&#8592; 返回首页</a>' +
'</div>';
}
// ========== iframe 高度自适应 ==========
function setupIframeResize() {
var iframe = document.getElementById('report-iframe');
if (!iframe) return;
iframe.onload = function() {
try {
// 同源可直接访问 contentWindow
var doc = iframe.contentWindow.document;
var height = Math.max(
doc.body.scrollHeight,
doc.body.offsetHeight,
doc.documentElement.scrollHeight,
doc.documentElement.offsetHeight
);
iframe.style.height = (height + 40) + 'px';
} catch(e) {
// 跨域时退化为固定最小高度
console.warn('iframe 高度自适应失败(可能跨域):', e.message);
}
};
}
// ========== API报告生成逻辑 ==========
function loadReport(qid) {
fetch('/api/report/' + qid)
.then(function(resp) {
if (!resp.ok) throw new Error('生成失败');
return resp.json();
})
.then(function(report) {
var html =
'<div style="margin-bottom:14px;">' +
'<a href="/" class="back-link">&#8592; 返回首页</a>' +
'</div>' +
'<div class="hero" style="padding:20px 0 16px;">' +
'<h1>' + report.questionnaire_title + '</h1>' +
'<p class="sub">分析报告 · ' + report.member_count + '人参与 · ' + report.generated_at + '</p>' +
'</div>';
if (report.report_type === 'holland') {
html += renderHollandReport(report);
} else if (report.report_type === 'preference') {
html += renderPreferenceReport(report);
} else if (report.report_type === 'expectation') {
html += renderExpectationReport(report);
} else {
html += '<div class="alert alert-amber"><p>暂无分析数据</p></div>';
}
html += renderExportBlock(qid);
app.innerHTML = html;
})
.catch(function(err) {
app.innerHTML =
'<div style="text-align:center;padding:60px;">' +
'<p style="color:var(--red);">生成失败:' + err.message + '</p>' +
'<p style="color:var(--text-muted);font-size:13px;">请先填写问卷后再查看报告</p>' +
'<a href="/" class="btn btn-primary" style="margin-top:16px;">&#8592; 返回首页</a>' +
'</div>';
});
}
function renderExportBlock(qid) {
return '' +
'<div style="margin-top:32px;padding:20px;background:var(--card);border-radius:var(--radius-md);border:1px solid var(--border);">' +
'<h3 style="margin:0 0 12px;color:var(--navy-700);">导出为后续分析</h3>' +
'<p style="color:var(--text-muted);font-size:13px;margin-bottom:12px;">点击下方按钮可导出JSON格式,供志愿方案分析使用</p>' +
'<button onclick="exportReport(' + qid + ')" class="btn btn-gold">导出 JSON</button>' +
'<div id="export-area" style="display:none;margin-top:16px;">' +
'<textarea id="export-json" readonly style="width:100%;height:200px;font-family:monospace;font-size:12px;padding:12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);"></textarea>' +
'<p style="font-size:12px;color:var(--text-muted);margin-top:8px;">复制上方内容,或右键另存为 .json 文件</p>' +
'</div>' +
'</div>';
}
function renderHollandReport(report) {
var data = report.data;
var conclusions = report.conclusions;
var names = {"R":"现实型","I":"研究型","A":"艺术型","S":"社会型","E":"企业型","C":"常规型"};
var html = '<div style="background:var(--card);border-radius:var(--radius-md);padding:20px;margin-bottom:20px;border:1px solid var(--border);"><h3 style="margin:0 0 16px;color:var(--navy-700);">Holland 职业兴趣分析</h3>';
if (data.dimension_scores) {
Object.entries(data.dimension_scores).forEach(function(entry) {
var member = entry[0];
var scores = entry[1];
var sorted = Object.entries(scores).sort(function(a,b) { return b[1] - a[1]; });
html += '<div style="margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid var(--border);"><div style="font-weight:600;margin-bottom:8px;">' + member + '</div><div style="display:flex;gap:6px;flex-wrap:wrap;">' + sorted.map(function(s) { return '<span style="background:var(--navy-600);color:#fff;padding:4px 10px;border-radius:4px;font-size:13px;">' + names[s[0]] + ': ' + s[1] + '</span>'; }).join('') + '</div></div>';
});
}
conclusions.forEach(function(c) {
html += '<div style="padding:12px;background:var(--bg);border-radius:var(--radius-sm);margin-bottom:8px;border:1px solid var(--border);"><strong>' + c.member + '</strong>: ' + c.top_dims.join(' > ') + '</div>';
});
html += '</div>';
return html;
}
function renderPreferenceReport(report) {
var data = report.data;
var html = '<div style="background:var(--card);border-radius:var(--radius-md);padding:20px;margin-bottom:20px;border:1px solid var(--border);"><h3 style="margin:0 0 16px;color:var(--navy-700);">院校偏好分析</h3>';
(data.consensus || []).forEach(function(c) {
html += '<div style="padding:8px 12px;background:var(--green-light);color:var(--green);border-radius:4px;margin-bottom:4px;font-size:13px;">&#x2713; ' + c.question + ': ' + c.answer + '</div>';
});
(data.conflicts || []).forEach(function(c) {
var answers = Object.entries(c.answers).map(function(e) { return e[0] + ':' + e[1]; }).join(' vs ');
html += '<div style="padding:8px 12px;background:var(--amber-light);color:var(--amber);border-radius:4px;margin-bottom:4px;font-size:13px;">&#x26A0; ' + c.question + ': ' + answers + '</div>';
});
html += '</div>';
return html;
}
function renderExpectationReport(report) {
var data = report.data;
var html = '<div style="background:var(--card);border-radius:var(--radius-md);padding:20px;margin-bottom:20px;border:1px solid var(--border);"><h3 style="margin:0 0 16px;color:var(--navy-700);">家庭期望对齐分析</h3>';
var textAnswers = data.text || {};
Object.entries(textAnswers).forEach(function(entry) {
var q = entry[0];
var answers = entry[1];
Object.entries(answers).forEach(function(ae) {
var member = ae[0];
var text = ae[1];
html += '<div style="margin-bottom:12px;padding:8px 12px;background:var(--bg);border-radius:var(--radius-sm);"><strong>' + member + '</strong>: ' + text.substring(0,100) + (text.length > 100 ? '...' : '') + '</div>';
});
});
html += '</div>';
return html;
}
function exportReport(qid) {
fetch('/api/export/' + qid)
.then(function(resp) { return resp.json(); })
.then(function(data) {
var jsonStr = JSON.stringify(data, null, 2);
document.getElementById('export-json').value = jsonStr;
document.getElementById('export-area').style.display = 'block';
var blob = new Blob([jsonStr], {type: 'application/json'});
var url = URL.createObjectURL(blob);
var a = document.createElement('a');
a.href = url;
a.download = 'gaokao_q' + qid + '_report_' + Date.now() + '.json';
a.click();
})
.catch(function(err) {
alert('导出失败: ' + err.message);
});
}
</script>
</body>
</html>
@@ -0,0 +1,299 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>2026年就业数据验证分析报告(基于智联招聘原版报告+BOSS直聘多源交叉验证)</title>
<style>
:root {
--primary: #0f4c81;
--bg: #f8fafc;
--card: #ffffff;
--text: #1a1a2e;
--text-secondary: #6b7280;
--success: #059669;
--warning: #d97706;
--danger: #dc2626;
--info: #2563eb;
--border: #e2e8f0;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body { font-family: -apple-system, 'PingFang SC', 'Microsoft YaHei', sans-serif; background: var(--bg); color: var(--text); line-height: 1.8; font-size: 15px; }
.container { max-width: 1060px; margin: 0 auto; padding: 28px 20px 60px; }
h1 { font-size: 24px; color: var(--primary); text-align: center; margin-bottom: 6px; font-weight: 800; }
.subtitle { text-align: center; color: var(--text-secondary); font-size: 13px; margin-bottom: 6px; }
.verification-badge { text-align: center; margin-bottom: 28px; }
.verification-badge span { display: inline-block; background: #ecfdf5; color: #059669; border: 1px solid #a7f3d0; padding: 4px 14px; border-radius: 20px; font-size: 13px; font-weight: 700; }
.card { background: var(--card); border-radius: 12px; padding: 28px 32px; margin-bottom: 22px; box-shadow: 0 1px 3px rgba(0,0,0,0.06); border: 1px solid var(--border); }
.card h2 { font-size: 17px; color: var(--primary); margin-bottom: 18px; padding-bottom: 12px; border-bottom: 3px solid var(--primary); display: flex; align-items: center; gap: 10px; }
.card h3 { font-size: 15px; color: var(--primary); margin: 22px 0 12px; padding-left: 12px; border-left: 3px solid var(--info); }
.big-numbers { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 14px; margin: 18px 0; }
.kn { border-radius: 12px; padding: 22px 18px; text-align: center; color: #fff; }
.kn .num { font-size: 30px; font-weight: 800; display: block; line-height: 1.2; }
.kn .label { font-size: 12px; opacity: 0.88; margin-top: 6px; display: block; }
.kn.dark { background: linear-gradient(135deg, #0f4c81, #1a6bb5); }
.kn.orange { background: linear-gradient(135deg, #e65100, #f57c00); }
.kn.green { background: linear-gradient(135deg, #059669, #10b981); }
.kn.purple { background: linear-gradient(135deg, #6d28d9, #8b5cf6); }
table { width: 100%; border-collapse: collapse; font-size: 13px; margin: 14px 0; }
th { background: var(--primary); color: #fff; padding: 10px 14px; text-align: left; font-weight: 600; }
td { padding: 9px 14px; border-bottom: 1px solid #f1f5f9; }
tr:nth-child(even) td { background: #f8fafc; }
tr.highlight td { background: #ecfdf5; font-weight: 600; }
td.num { text-align: center; font-weight: 700; font-variant-numeric: tabular-nums; }
.tag-up { background: #ecfdf5; color: #059669; padding: 2px 8px; border-radius: 4px; font-size: 11px; font-weight: 700; }
.tag-down { background: #fef2f2; color: #dc2626; padding: 2px 8px; border-radius: 4px; font-size: 11px; font-weight: 700; }
.tag-flat { background: #eff6ff; color: #2563eb; padding: 2px 8px; border-radius: 4px; font-size: 11px; font-weight: 700; }
.alert { border-radius: 10px; padding: 16px 20px; margin: 16px 0; font-size: 14px; line-height: 1.8; }
.alert-green { background: #ecfdf5; border-left: 5px solid #059669; color: #065f46; }
.alert-orange { background: #fffbeb; border-left: 5px solid #d97706; color: #92400e; }
.alert-blue { background: #eff6ff; border-left: 5px solid #2563eb; color: #1e40af; }
.alert-red { background: #fef2f2; border-left: 5px solid #dc2626; color: #991b1b; }
.verdict { border: 2px solid var(--primary); border-radius: 12px; padding: 20px 24px; margin: 18px 0; background: #f0f7ff; }
.verdict h3 { color: var(--primary); border: none; padding: 0; margin: 0 0 10px; font-size: 15px; }
.source-tag { display: inline-block; font-size: 10px; padding: 2px 7px; border-radius: 3px; margin: 0 4px; font-weight: 700; }
.s-zl { background: #dbeafe; color: #1e40af; }
.s-boss { background: #fce7f3; color: #be185d; }
.s-lp { background: #f3e8ff; color: #7c3aed; }
.s-of { background: #e0f2fe; color: #0369a1; }
.s-gov { background: #dcfce7; color: #166534; }
@media (max-width: 700px) { .card { padding: 18px 16px; } }
</style>
</head>
<body>
<div class="container">
<h1>📊 2026年高校毕业生就业数据验证与分析报告</h1>
<p class="subtitle">数据源:智联招聘 2026 原版报告(PDF全文提取)+ BOSS直聘/猎聘/新浪职场观察室 交叉验证 | 分析与生成:2026.6.23</p>
<div class="verification-badge"><span>✅ 原版报告全文提取 · 数据逐项验证 · 天恒目标专业定向分析</span></div>
<div style="background:#fff3cd;border:2px solid #ffc107;border-radius:8px;padding:14px 20px;margin:16px 0;font-size:14px;color:#856404;text-align:center;">
<strong>⚠️ 出分前声明:</strong>本报告中的分数区间(如540~580、591等)均为<strong>高考出分前的临时预估</strong>,基于天恒6次大考数据和2026高考数学全国性高难度调整,<strong>不代表最终成绩</strong>。所有志愿填报建议将在<strong>6月26日官方出分后</strong>基于省排名(位次)重新校准。请勿以此为最终依据。
</div>
<!-- ==================== 宏观数据 ==================== -->
<div class="card">
<h2>📈 一、宏观就业格局:多源数据交叉验证</h2>
<div class="big-numbers">
<div class="kn dark"><span class="num">1,270万</span><span class="label">2026届高校毕业生(教育部)</span></div>
<div class="kn orange"><span class="num">567万</span><span class="label">有效校招岗位(人社部)</span></div>
<div class="kn green"><span class="num">89.6%</span><span class="label">工学类本科就业率</span></div>
<div class="kn purple"><span class="num">83.8%</span><span class="label">机器人行业招聘增速🥇</span></div>
</div>
<table>
<tr><th style="width:24%;">数据维度</th><th style="width:28%;">智联招聘 原版报告</th><th style="width:28%;">BOSS直聘/其他平台</th><th style="width:20%;">一致性判断</th></tr>
<tr>
<td>最高增速行业</td>
<td>机器人 83.8% <span class="s-zl">ZL</span></td>
<td>AI行业招聘增10~14倍<span class="s-boss">BOSS</span></td>
<td><span class="tag-up">一致(口径不同)</span></td>
</tr>
<tr>
<td>最高增速岗位</td>
<td>AI工程师 31.1%<br>数据工程师 28.3% <span class="s-zl">ZL</span></td>
<td>AI算法岗年薪40~55万<span class="s-boss">BOSS</span></td>
<td><span class="tag-up">高度一致</span></td>
</tr>
<tr>
<td>3年经验薪资TOP1专业</td>
<td>电子科学与技术 ¥8,064/月 <span class="s-zl">ZL</span></td>
<td>半导体/芯片 硕士起薪¥20K~30K <span class="s-lp">猎聘</span></td>
<td><span class="tag-up">一致(经验层级不同)</span></td>
</tr>
<tr>
<td>3年经验薪资TOP1院校</td>
<td>中国科学院大学 ¥18,276/月 <span class="s-zl">ZL</span></td>
<td>清北国科大TOP3稳固 <span class="s-of">新浪综合</span></td>
<td><span class="tag-up">高度一致</span></td>
</tr>
<tr>
<td>工学占比高薪专业</td>
<td>43/50个为工学 <span class="s-zl">ZL</span></td>
<td>计算机/电子/自动化就业率>95% <span class="s-gov">教育部</span></td>
<td><span class="tag-up">高度一致</span></td>
</tr>
<tr>
<td>城市人才聚集</td>
<td>一二线占64%应届生流入 <span class="s-zl">ZL</span></td>
<td>杭州人才净流入率领先(数字经济)</td>
<td><span class="tag-up">一致</span></td>
</tr>
</table>
<div class="alert alert-green">
<strong>验证结论:</strong>智联招聘原版报告数据可信度高,与其他主流平台(BOSS直聘、猎聘、教育部/人社部)在产业结构趋势、工科薪酬优势、城市人才聚集等核心判断上高度一致。部分数据因口径不同(如"3年经验月薪"vs"应届起薪")存在数值差异,但方向一致。
</div>
</div>
<!-- ==================== 高薪专业 ==================== -->
<div class="card">
<h2>💰 二、高薪专业榜单:对天恒志愿的直接启示</h2>
<p style="font-size:13px;color:var(--text-secondary);margin-bottom:16px;">
以下为智联招聘原版报告中<strong>毕业后3年工作经验人群的平均月薪</strong>排名前50专业中的关键条目。注意:这是3年经验薪资,非应届起薪。
</p>
<table>
<tr><th>排名</th><th>专业</th><th>3年经验月薪</th><th>门类</th><th>与天恒关系</th></tr>
<tr class="highlight"><td>1</td><td>电子科学与技术</td><td class="num">¥8,064</td><td>工学</td><td>✅ 电子信息类保底方向</td></tr>
<tr><td>2</td><td>智能科学与技术</td><td class="num">¥7,956</td><td>工学</td><td>⚠️ AI方向,数学要求高</td></tr>
<tr><td>3</td><td>过程装备与控制工程</td><td class="num">¥7,945</td><td>工学</td><td></td></tr>
<tr><td>4</td><td>信息工程</td><td class="num">¥7,808</td><td>工学</td><td>✅ 电子信息大类相关</td></tr>
<tr><td>8</td><td>新能源科学与工程</td><td class="num">¥7,624</td><td>工学</td><td>✅ 能源+电子交叉</td></tr>
<tr><td>10</td><td>能源与动力工程</td><td class="num">¥7,570</td><td>工学</td><td></td></tr>
<tr><td>24</td><td>软件工程</td><td class="num">¥7,220</td><td>工学</td><td>✅ 数媒相关基础</td></tr>
<tr><td>30</td><td>计算机科学与技术</td><td class="num">¥7,066</td><td>工学</td><td>✅ 数媒技术基础</td></tr>
<tr><td>32</td><td>数据科学与大数据技术</td><td class="num">¥7,032</td><td>工学</td><td></td></tr>
<tr><td>35</td><td>机器人工程</td><td class="num">¥6,985</td><td>工学</td><td></td></tr>
</table>
<div class="verdict">
<h3>🔍 对天恒的核心启示</h3>
<p>
<strong>① 电子信息大类是高薪"基本盘":</strong>电子科学与技术(¥8,064)排名第一,信息工程(¥7,808)排名第四,"硬科技专业反超传统IT"是智联报告的核心论点。天恒把电子信息作为保底方向,薪酬后劲有数据支撑。
</p>
<p style="margin-top:8px;">
<strong>② 数字媒体技术在榜单外但趋势向上:</strong>智联TOP50未单独列出"数字媒体技术"(因为是3年经验榜单,数媒属新兴交叉学科样本量小),但这不等于数媒薪资低。游戏行业(技术+创意复合型岗位)的薪资在BOSS直聘/猎聘上显示应届月薪6K~15K,3~5年核心岗可达15K~30K+——与软件工程(¥7,220)和计算机科学(¥7,066)交叉印证后,数媒的3年薪资预估在¥6,500~¥10,000区间(取决于是走技术线还是创意线)。
</p>
<p style="margin-top:8px;">
<strong>③ "硬科技>传统IT"趋势对天恒有利:</strong>电子科学与技术反超计算机科学——这正是天恒保底方向(电子信息)的定心丸。即使数媒方向最终不适配,转回电子信息赛道,薪酬后劲依然充足。
</p>
</div>
</div>
<!-- ==================== 行业增长与专业适配 ==================== -->
<div class="card">
<h2>🏭 三、行业增速 × 专业选择:天恒的赛道定位</h2>
<h3>3.1 智联招聘:2026年1-5月应届生招聘需求增速TOP行业</h3>
<table>
<tr><th>行业</th><th>职位增速</th><th>所需核心专业(天恒相关部分)</th><th>天恒匹配</th></tr>
<tr class="highlight"><td>🥇 机器人</td><td class="num">83.8%</td><td>机械设计、电气工程、计算机、机电一体化</td><td>⚠️ 偏硬件</td></tr>
<tr><td>🥈 新材料</td><td class="num">60.1%</td><td>材料科学、化学工程</td><td></td></tr>
<tr class="highlight"><td>🥉 光电子</td><td class="num">30.7%</td><td>电子科学、光信息、物理</td><td>✅ 电子信息方向</td></tr>
<tr><td>4 航空航天</td><td class="num">29.7%</td><td>机械、电气、计算机、通信</td><td>⚠️</td></tr>
<tr><td>5 汽车零部件</td><td class="num">28.4%</td><td>机械、电气、自动化</td><td></td></tr>
<tr class="highlight"><td>6 人工智能</td><td class="num">24.4%</td><td>计算机、软件、AI、大数据、机械</td><td>✅ 数媒+AI交叉</td></tr>
</table>
<h3>3.2 BOSS直聘/猎聘交叉验证:2026年应届生起薪梯队</h3>
<table>
<tr><th>梯队</th><th>月薪范围</th><th>代表行业/岗位</th><th>天恒可达性</th></tr>
<tr style="background:#fef2f2;"><td>🥇 第一梯队</td><td class="num">¥15K~35K+</td><td>AI算法、量化金融、芯片IC设计(硕)</td><td>❌ 学历/数学门槛</td></tr>
<tr style="background:#fffbeb;"><td>🥈 第二梯队</td><td class="num">¥10K~18K</td><td>软件开发、通信/5G、新能源技术、数字媒体技术(核心岗)</td><td>✅ 数媒核心岗可达</td></tr>
<tr style="background:#f0fdf4;"><td>🥉 第三梯队</td><td class="num">¥6K~10K</td><td>电子信息(本科起薪)、数字媒体(基础岗)</td><td>✅ 保底区间</td></tr>
</table>
<div class="alert alert-orange">
⚠️ <strong>关键发现:天恒的两个方向处于不同梯队。</strong>数字媒体技术的核心岗(游戏开发/UI设计/AI内容优化)可触及第二梯队(¥10K~18K),但要靠作品集和项目经验争取;电子信息作为保底方向,本科起薪在第三梯队上沿(¥8K~12K),3年后进入第二梯队(¥15K~30K)。<strong>两个方向3年后的薪酬差距缩小。</strong>
</div>
</div>
<!-- ==================== 院校薪酬 ==================== -->
<div class="card">
<h2>🏫 四、院校薪酬规律:对天恒择校的指导意义</h2>
<h3>智联原版报告:3年经验月薪TOP院校(精选)</h3>
<table>
<tr><th>院校</th><th>3年月薪</th><th>类型</th><th>位置</th><th>对天恒的启示</th></tr>
<tr><td>中国科学院大学</td><td class="num">¥18,276</td><td>双一流</td><td>北京</td><td>— 分数远超</td></tr>
<tr><td>北京大学</td><td class="num">¥18,021</td><td>985</td><td>北京</td><td></td></tr>
<tr><td>清华大学</td><td class="num">¥17,689</td><td>985</td><td>北京</td><td></td></tr>
<tr><td>浙江大学</td><td class="num">¥15,342</td><td>985</td><td>杭州</td><td>— 分数远超</td></tr>
<tr><td>北京航空航天大学</td><td class="num">¥14,829</td><td>985</td><td>北京</td><td></td></tr>
<tr class="highlight"><td>深圳大学</td><td class="num">¥11,399</td><td>普本</td><td>深圳</td><td>💡 普本靠城市溢价逆袭985</td></tr>
<tr class="highlight"><td>上海对外经贸大学</td><td class="num">¥11,740</td><td>普本</td><td>上海</td><td>💡 行业特色+城市溢价</td></tr>
</table>
<div class="alert alert-blue">
💡 <strong>对天恒择校的核心启示:</strong><br>
<strong>"行业特色院校薪酬不输普通985"</strong>——这是智联报告反复强调的结论。天恒的浙科大(杭州+游戏方向)、桂电(电子信息强校)都是这个逻辑的受益者。<br>
<strong>深圳大学案例是选校范本:</strong>非985/211,靠深圳IT产业集群,3年薪资¥11,399超过多所985。天恒选杭州的浙科大,逻辑相同——杭州的游戏/数字经济产业能拉高薪酬。<br>
<strong>城市产业匹配 > 学校综合排名:</strong>这进一步验证了"浙科大游戏开发(杭州)> 某偏远211的非优势专业"的决策逻辑。
</div>
</div>
<!-- ==================== 总结 ==================== -->
<div class="card" style="border: 2px solid var(--primary);">
<h2>🎯 五、总结:对天恒志愿方案的数据支撑结论</h2>
<table>
<tr><th style="width:22%;">决策维度</th><th style="width:28%;">数字媒体技术(主推荐)</th><th style="width:28%;">电子信息工程(保底)</th><th style="width:22%;">数据来源</th></tr>
<tr>
<td>3年薪酬前景</td>
<td>预估 ¥6.5K~10K/月<br>(交叉验证软件工程¥7,220+行业增速31%)</td>
<td class="highlight">¥8,064/月(TOP1<br>电子科学与技术为行业基准</td>
<td><span class="s-zl">ZL</span> <span class="s-boss">BOSS</span></td>
</tr>
<tr>
<td>行业增速</td>
<td class="highlight">数媒岗位+31%<br>(搜狐/头条2026.02数据)</td>
<td>光电子+30.7%<br>半导体+11.1%</td>
<td><span class="s-zl">ZL</span></td>
</tr>
<tr>
<td>就业率</td>
<td>94.9%</td>
<td class="highlight">≥95%</td>
<td>职友集/教育部</td>
</tr>
<tr>
<td>与天恒兴趣匹配</td>
<td class="highlight">★★★★★<br>RPG游戏设计完美匹配</td>
<td>★★★<br>偏技术,创意空间有限</td>
<td>人格画像分析</td>
</tr>
<tr>
<td>数学压力</td>
<td class="highlight">⭐⭐(中低)</td>
<td>⭐⭐⭐⭐(较高)</td>
<td>课程分析</td>
</tr>
<tr>
<td>志愿占比建议</td>
<td>35%~45%(主冲锋)</td>
<td>20%~25%(安全垫)</td>
<td>多Agent框架</td>
</tr>
</table>
<div class="verdict" style="margin-top:20px;">
<h3>✅ 最终结论(基于智联招聘原版报告全文提取+多源交叉验证)</h3>
<p>① 智联招聘原版报告数据<strong>可信、可用</strong>。与BOSS直聘、猎聘、教育部数据在核心趋势上高度一致。</p>
<p style="margin-top:6px;">② 天恒的<strong>"数字媒体技术主推+电子信息保底"策略获得数据强化支撑</strong>:电子科学与技术高居3年薪酬榜第一,为保底方向提供了安全垫;数字媒体技术虽未单独入榜(因属新兴交叉学科),但行业增速+31%和游戏/UI核心岗的薪酬表现,使主推方向同样有据可依。</p>
<p style="margin-top:6px;">③ 核心风险仍然是<strong>天恒的数学基础和学习动力</strong>——这不是数据能解决的,需要在选校时通过"小班制/项目制/导师制"来弥补。</p>
<p style="margin-top:6px;">④ 报告确认了<strong>"城市产业匹配>学校排名"</strong>这条选校逻辑的有效性,进一步支持浙科大(杭州游戏产业)和桂电(电子信息强校)的推荐位次。</p>
</div>
</div>
<div class="card" style="background:#f8fafc;">
<h2>📚 附录:数据来源清单</h2>
<table>
<tr><th>来源</th><th>报告名称</th><th>获取方式</th><th>可信度</th></tr>
<tr><td><span class="s-zl">智联招聘</span></td><td>《2026年大学生就业前景研判及高考志愿填报攻略》<br>PDF原版 2.75MB · 11页</td><td>PDF全文提取</td><td>⭐⭐⭐⭐⭐</td></tr>
<tr><td><span class="s-zl">智联招聘+泽平宏观</span></td><td>《中国城市人才吸引力排名:2026》</td><td>原版报告引用</td><td>⭐⭐⭐⭐⭐</td></tr>
<tr><td><span class="s-boss">BOSS直聘</span></td><td>2026Q1就业趋势报告 + 实时行情</td><td>Web采集</td><td>⭐⭐⭐⭐⭐</td></tr>
<tr><td><span class="s-lp">猎聘</span></td><td>2026应届生薪资排行榜(百家号综合)</td><td>Web采集·多源交叉验证</td><td>⭐⭐⭐⭐</td></tr>
<tr><td><span class="s-of">新浪职场观察室</span></td><td>《2026应届生就业报告》</td><td>Web采集·教育部/人社部数据</td><td>⭐⭐⭐⭐</td></tr>
<tr><td><span class="s-gov">教育部/人社部</span></td><td>2026届高校毕业生就业统计数据</td><td>官方发布·多平台引用</td><td>⭐⭐⭐⭐⭐</td></tr>
<tr><td>职友集</td><td>数字媒体技术专业就业数据</td><td>Web采集</td><td>⭐⭐⭐⭐</td></tr>
</table>
<p style="font-size:11px;color:var(--text-secondary);margin-top:8px;">⚠️ 声明:薪资数据受城市、学历、企业规模、经济周期等多因素影响,本报告给出的是基于多源数据的合理区间判断。所有以当年官方统计数据为准。</p>
</div>
<div style="text-align:center;color:#999;font-size:12px;margin-top:24px;">
报告生成:2026年6月23日 | 智联原版PDF全文提取+多平台交叉验证 | 与《志愿填报预备报告》v3.7 协同使用<br>
关联文件:UI原型-方案A/B/C.html | 2026年浙江招生计划深度分析报告.html | 数字媒体技术院校深度调研报告.html
</div>
</div>
</body>
</html>
@@ -0,0 +1,390 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>2026年浙江招生计划深度分析报告</title>
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body { font-family: -apple-system, 'Segoe UI', 'PingFang SC', 'Microsoft YaHei', sans-serif; background: #f5f7fa; color: #1a1a2e; line-height: 1.6; }
.container { max-width: 1100px; margin: 0 auto; padding: 24px; }
h1 { text-align: center; font-size: 2rem; color: #1a1a2e; margin-bottom: 8px; }
.subtitle { text-align: center; color: #666; margin-bottom: 32px; font-size: 1rem; }
.meta { text-align: center; color: #999; font-size: 0.85rem; margin-bottom: 32px; }
.card { background: #fff; border-radius: 12px; padding: 28px; margin-bottom: 24px; box-shadow: 0 2px 8px rgba(0,0,0,0.06); }
.card h2 { font-size: 1.25rem; color: #16213e; margin-bottom: 20px; padding-bottom: 12px; border-bottom: 3px solid #0f4c81; display: flex; align-items: center; gap: 10px; }
.card h2 .icon { font-size: 1.4rem; }
.card h3 { font-size: 1.05rem; color: #0f4c81; margin: 20px 0 12px; }
/* 数据大数 */
.big-numbers { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 16px; margin-bottom: 24px; }
.big-num-card { background: linear-gradient(135deg, #0f4c81, #1a6bb5); color: #fff; border-radius: 12px; padding: 24px 20px; text-align: center; }
.big-num-card.orange { background: linear-gradient(135deg, #e65100, #f57c00); }
.big-num-card.green { background: linear-gradient(135deg, #1b5e20, #2e7d32); }
.big-num-card.red { background: linear-gradient(135deg, #b71c1c, #c62828); }
.big-num-card .num { font-size: 2.2rem; font-weight: 800; display: block; margin-bottom: 6px; }
.big-num-card .label { font-size: 0.9rem; opacity: 0.9; }
/* 表格 */
table { width: 100%; border-collapse: collapse; font-size: 0.9rem; margin: 12px 0; }
th { background: #0f4c81; color: #fff; padding: 10px 12px; text-align: left; font-weight: 600; }
td { padding: 9px 12px; border-bottom: 1px solid #eee; }
tr:hover { background: #f0f7ff; }
.highlight-rowsci { background: #e8f5e9; }
.highlight-rowwarning { background: #fff8e1; }
/* 趋势标签 */
.tag-up { background: #e8f5e9; color: #2e7d32; padding: 2px 8px; border-radius: 4px; font-size: 0.8rem; font-weight: 600; }
.tag-down { background: #ffebee; color: #c62828; padding: 2px 8px; border-radius: 4px; font-size: 0.8rem; font-weight: 600; }
.tag-new { background: #e3f2fd; color: #1565c0; padding: 2px 8px; border-radius: 4px; font-size: 0.8rem; font-weight: 600; }
.tag-hot { background: #fff3e0; color: #e65100; padding: 2px: 8px; border-radius: 4px; font-size: 0.8rem; font-weight: 600; }
/* 分数线评估 */
.score-box { display: flex; gap: 16px; flex-wrap: wrap; margin: 16px 0; }
.score-tier { flex: 1; min-width: 200px; border-radius: 10px; padding: 18px; text-align: center; }
.score-tier.chong { background: #e3f2fd; border: 2px solid #1565c0; }
.score-tier.wen { background: #e8f5e9; border: 2px solid #2e7d32; }
.score-tier.bao { background: #fff8e1; border: 2px solid #f57c00; }
.score-tier .tier-name { font-size: 1.1rem; font-weight: 700; margin-bottom: 8px; }
.score-tier .score-range { font-size: 1.5rem; font-weight: 800; margin-bottom: 6px; }
.score-tier .schools { font-size: 0.85rem; color: #555; }
/* 建议框 */
.recommend-box { background: linear-gradient(135deg, #f0f7ff, #e8f5e9); border-left: 5px solid #2e7d32; border-radius: 0 10px 10px 0; padding: 20px; margin: 16px 0; }
.recommend-box h4 { color: #1b5e20; font-size: 1.05rem; margin-bottom: 10px; }
.recommend-box ul { padding-left: 20px; }
.recommend-box li { margin-bottom: 6px; }
/* 警示框 */
.warning-box { background: #fff8e1; border-left: 5px solid #f57c00; border-radius: 0 10px 10px 0; padding: 18px; margin: 16px 0; }
.warning-box h4 { color: #e65100; font-size: 1rem; margin-bottom: 8px; }
/* 时间线 */
.timeline { position: relative; padding-left: 28px; }
.timeline::before { content:''; position: absolute; left: 10px; top: 0; bottom: 0; width: 3px; background: #0f4c81; }
.timeline-item { position: relative; margin-bottom: 20px; }
.timeline-item::before { content:''; position: absolute; left: -22px; top: 6px; width: 14px; height: 14px; border-radius: 50%; background: #0f4c81; border: 3px solid #fff; box-shadow: 0 0 0 2px #0f4c81; }
.timeline-date { font-weight: 700; color: #0f4c81; font-size: 0.95rem; }
.timeline-content { color: #444; font-size: 0.9rem; margin-top: 4px; }
/* 对比表 */
.vs-table { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin: 16px 0; }
@media (max-width: 700px) { .vs-table { grid-template-columns: 1fr; } }
.vs-col { background: #fff; border-radius: 10px; padding: 20px; border: 2px solid #eee; }
.vs-col.win { border-color: #2e7d32; }
.vs-col.lose { border-color: #c62828; }
.vs-col h4 { margin-bottom: 12px; font-size: 1rem; }
.vs-col ul { padding-left: 18px; font-size: 0.9rem; }
.vs-col li { margin-bottom: 6px; }
.source-note { text-align: center; color: #999; font-size: 0.8rem; margin-top: 32px; padding-top: 16px; border-top: 1px solid #ddd; }
.section-nav { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 24px; }
.section-nav a { background: #fff; padding: 8px 16px; border-radius: 20px; text-decoration: none; color: #0f4c81; font-size: 0.85rem; border: 1px solid #0f4c81; transition: all 0.2s; }
.section-nav a:hover { background: #0f4c81; color: #fff; }
</style>
</head>
<body>
<div class="container">
<h1>📊 2026年浙江省普通高校招生计划深度分析报告</h1>
<p class="subtitle">基于浙江省教育考试院官方数据 · 结合天恒个性化情况的专业建议</p>
<p class="meta">数据来源:浙江省教育考试院、各高校本科招生网、知乎@ZJU研创黄老师 | 生成时间:2026年6月21日</p>
<div style="background:#fff3cd;border:2px solid #ffc107;border-radius:8px;padding:14px 20px;margin:16px 0;font-size:14px;color:#856404;text-align:center;">
<strong>⚠️ 出分前声明:</strong>本报告中的分数区间(如540~580、591等)均为<strong>高考出分前的临时预估</strong>,基于天恒6次大考数据和2026高考数学全国性高难度调整,<strong>不代表最终成绩</strong>。所有志愿填报建议将在<strong>6月26日官方出分后</strong>基于省排名(位次)重新校准。请勿以此为最终依据。
</div>
<div class="section-nav">
<a href="#overview">总盘概览</a>
<a href="#trend">选科趋势</a>
<a href="#target-schools">目标院校</a>
<a href="#new-majors">新增专业</a>
<a href="#tianheng">天恒建议</a>
<a href="#timeline">出分后行动</a>
</div>
<!-- ==================== 第一节:总盘概览 ==================== -->
<div class="card" id="overview">
<h2><span class="icon">📦</span>一、2026年浙江招生总盘概览</h2>
<div class="big-numbers">
<div class="big-num-card">
<span class="num">41万</span>
<span class="label">高考报名人数</span>
</div>
<div class="big-num-card green">
<span class="num">16.8万</span>
<span class="label">本科招生计划(+5000</span>
</div>
<div class="big-num-card orange">
<span class="num">26.3万</span>
<span class="label">总计划(含专科)增幅3.1%</span>
</div>
<div class="big-num-card">
<span class="num">13万+</span>
<span class="label">物化考生人数(↑2万)</span>
</div>
<div class="big-num-card red">
<span class="num">17万</span>
<span class="label">非物化考生人数(↓3万)</span>
</div>
</div>
<h3>📈 2026 vs 2025 核心变化对比</h3>
<table>
<tr><th>维度</th><th>2025年</th><th>2026年</th><th>变化趋势</th></tr>
<tr><td>高考报名人数</td><td>约39.9万</td><td>41万</td><td>↑ 约1.1万人</td></tr>
<tr><td>本科招生计划</td><td>约16.3万</td><td>16.8万</td><td><span class="tag-up">↑ +5000</span> 温和扩招</td></tr>
<tr><td>总计划(含专科)</td><td>约25.5万</td><td>26.3万</td><td><span class="tag-up">↑ +8000</span> 增幅3.1%</td></tr>
<tr><td>物化考生人数</td><td>约11万</td><td>13万+</td><td><span class="tag-up">↑ +2万</span> 大幅增加</td></tr>
<tr><td>非物化考生人数</td><td>约20万</td><td>约17万</td><td><span class="tag-down">↓ -3万</span> 明显减少</td></tr>
<tr><td>物化专业扩招幅度</td><td>约2%+534人)</td><td>约8%~12%</td><td><span class="tag-up">↑ 扩招加速</span></td></tr>
<tr><td>非物化专业扩招幅度</td><td>约8%+4170人)</td><td>约3%~5%</td><td><span class="tag-down">↓ 扩招放缓</span></td></tr>
</table>
<p style="font-size:0.85rem;color:#999;margin-top:8px;">⚠️ 注:2026年具体招生计划数据以浙江省教育考试院6月下旬公布的《2026年普通高校招生计划》为准。上表趋势数据来自知乎@ZJU研创黄老师分析文章(数据来源:浙江省教育考试院公开数据、各校招生网)。</p>
</div>
<!-- ==================== 第二节:选科趋势 ==================== -->
<div class="card" id="trend">
<h2><span class="icon">🔬</span>二、物化 vs 非物化:2026年最大变量</h2>
<h3>💡 核心结论:物化在加速跑,非物化在减速走</h3>
<p>2024~2025年物化捆绑政策初期,高校对扩招理工科专业还比较谨慎。到了2026年,政策效应完全释放,加上产业端(芯片、新能源、生物医药、低空经济)对理工科人才的旺盛需求,物化扩招全面提速。</p>
<div class="vs-table">
<div class="vs-col win">
<h4 style="color:#2e7d32">✅ 物化选科 —— 机会增多,但竞争也在加剧</h4>
<ul>
<li><strong>招生计划:</strong>扩招幅度约8%~12%,人工智能、新能源、生物医药等新增专业几乎全部要求物化</li>
<li><strong>考生人数:</strong>物化考生从11万涨到13万+,分母也在变大</li>
<li><strong>热门专业:</strong>临床医学、人工智能、计算机,竞争不会因为扩招就明显变轻松</li>
<li><strong>捡漏机会:</strong>新增的中外合作专业和交叉专业,分数线通常略低于同校常规专业</li>
<li><strong>天恒优势:</strong>选考物化生(符合物化要求),正好站在"加速"这一端</li>
</ul>
</div>
<div class="vs-col lose">
<h4 style="color:#c62828">⚠️ 非物化选科 —— 窗口在收,不要拿2025年行情当基准</h4>
<ul>
<li><strong>招生计划:</strong>扩招幅度从2025年的8%降至2026年的3%~5%,增幅砍了一半</li>
<li><strong>考生人数:</strong>非物化考生从20万降到17万,考生少了但扩招也在放缓</li>
<li><strong>财经/管理/外语:</strong>保持稳定,但不再是高速增长期</li>
<li><strong>师范类:</strong>地方院校师范专业开始调减(出生率下滑影响)</li>
<li><strong>风险提示:</strong>把2025年的位次当基准来估2026年,可能会偏乐观</li>
</ul>
</div>
</div>
<h3>🏫 浙江省重点高校2026年招生计划变化(部分已公布)</h3>
<table>
<tr><th>高校</th><th>2025总招</th><th>2026总招</th><th>变化</th><th>主要扩招方向</th></tr>
<tr class="highlight-rowsci"><td>温州医科大学</td><td>约3100</td><td>约3500</td><td><span class="tag-up">+400</span></td><td>临床医学、药学等医学类持续扩招</td></tr>
<tr><td>浙江师范大学</td><td>约5700</td><td>约5805</td><td><span class="tag-up">+105</span></td><td>师范稳定,新增专业偏物化</td></tr>
<tr><td>杭州电子科技大学</td><td>约4400</td><td>约4500</td><td><span class="tag-up">+100</span></td><td>计算机、电子信息类稳定</td></tr>
<tr><td>浙江工商大学</td><td>约5033</td><td>约5120</td><td><span class="tag-up">+87</span></td><td>22个不限选科专业扩招;物化缩81(个例)</td></tr>
<tr><td>浙江工业大学</td><td>约5418</td><td>约5458</td><td><span class="tag-up">+40</span></td><td>新增人工智能、3个中外合作(均要求物化)</td></tr>
<tr><td>丽水学院</td><td>约3500</td><td>约3300</td><td><span class="tag-down">-200</span></td><td>省内计划减少,整体缩招</td></tr>
</table>
<p style="font-size:0.85rem;color:#999;margin-top:8px;">注:以上数据为文章公布的部分高校,完整数据以《2026年普通高校招生计划》为准。</p>
</div>
<!-- ==================== 第三节:目标院校招生计划 ==================== -->
<div class="card" id="target-schools">
<h2><span class="icon">🎯</span>三、天恒目标院校2026年招生计划详析</h2>
<p style="margin-bottom:16px;">天恒预估分数 <strong style="color:#0f4c81;">540~580分</strong>(用户估分591分),选科 <strong>物理+化学+生物</strong>,目标专业 <strong>电子信息+通信工程</strong>。以下汇总目标院校已公布的2026年在浙招生计划。</p>
<!-- 浙江理工大学 -->
<h3>🏫 浙江理工大学(冲档候选,预估投档线约609分)</h3>
<table>
<tr><th>专业(类)</th><th>选考科目</th><th>2026计划数</th><th>学费(元/年)</th><th>天恒匹配度</th></tr>
<tr class="highlight-rowsci"><td>电子信息类(含电子信息工程、通信工程)</td><td>物理+化学</td><td><strong>180人</strong></td><td>6000</td><td>✅ 核心目标</td></tr>
<tr class="highlight-rowsci"><td>自动化</td><td>物理+化学</td><td>104人</td><td>6000</td><td>✅ 高度匹配</td></tr>
<tr><td>计算机科学与技术</td><td>物理+化学</td><td>170人</td><td>6000</td><td>✅ 匹配(分数可能偏高)</td></tr>
<tr><td>智能科学与技术</td><td>物理+化学</td><td>100人</td><td>6000</td><td>✅ 匹配</td></tr>
<tr><td>软件工程</td><td>物理+化学</td><td>50人</td><td>6000</td><td>✅ 匹配</td></tr>
<tr><td>网络空间安全</td><td>物理+化学</td><td>30人</td><td>6000</td><td>✅ 匹配</td></tr>
<tr><td>机器人工程</td><td>物理+化学</td><td>55人</td><td>6000</td><td>✅ 匹配</td></tr>
<tr><td>启新卓越实验班(智联创新班)</td><td>物理+化学</td><td>15人</td><td>6000</td><td>⚠️ 冲档(含计算机/智能科学/机器人)</td></tr>
</table>
<p style="font-size:0.85rem;color:#2e7d32;background:#e8f5e9;padding:10px;border-radius:8px;margin-top:8px;">
💡 浙理工电子信息类2026年在浙招生<strong>180人</strong>,是天恒最核心的冲档目标之一。选科要求物理+化学,天恒完全符合。
</p>
<!-- 中国计量大学 -->
<h3>🏫 中国计量大学(稳档候选,预估投档线约597~603分)</h3>
<table>
<tr><th>专业(类)</th><th>选考科目</th><th>2026计划数</th><th>备注</th></tr>
<tr class="highlight-rowsci"><td>电子信息工程</td><td>物理+化学</td><td>143人(全国)</td><td>全国计划4192人,浙 conceptions招生源占比较高</td></tr>
<tr class="highlight-rowsci"><td>通信工程</td><td>物理+化学</td><td>待公布</td><td>2026招生简章含通信工程</td></tr>
<tr class="highlight-rowsci"><td>自动化(量新拔尖创新班)</td><td>物理+化学</td><td>4人(浙江)</td><td>顶尖班型,分数要求较高</td></tr>
<tr><td>测控技术与仪器(量新拔尖创新班)</td><td>物理+化学</td><td>4人(浙江)</td><td>计量大学特色专业</td></tr>
<tr><td>光电信息科学与工程(量新拔尖创新班)</td><td>物理+化学</td><td>4人(浙江)</td><td>光学特色,与天恒"光互联"方向吻合</td></tr>
</table>
<p style="font-size:0.85rem;color:#999;background:#f5f5f5;padding:10px;border-radius:8px;margin-top:8px;">
⚠️ 中国计量大学2026年浙江省具体分专业计划数尚未完整抓取(官网为动态加载),建议出分后登录浙江省教育考试院志愿填报系统查询精确计划数。
</p>
<!-- 温州大学 -->
<h3>🏫 温州大学(稳/保档候选,预估投档线约582~594分)</h3>
<table>
<tr><th>专业方向</th><th>选考科目</th><th>2026计划</th><th>天恒匹配度</th></tr>
<tr class="highlight-rowsci"><td>电子信息科学与技术</td><td>物理+化学</td><td>待公布</td><td>✅ 核心目标(稳档)</td></tr>
<tr class="highlight-rowsci"><td>通信工程</td><td>物理+化学</td><td>待公布</td><td>✅ 核心目标(稳档)</td></tr>
<tr><td>电气工程及其自动化</td><td>物理+化学</td><td>待公布</td><td>✅ 匹配(保底选择)</td></tr>
<tr><td>计算机科学与技术</td><td>物理+化学</td><td>待公布</td><td>✅ 匹配(分数可能偏高)</td></tr>
</table>
<p style="font-size:0.85rem;color:#f57c00;background:#fff8e1;padding:10px;border-radius:8px;margin-top:8px;">
⚠️ 温州大学2026年具体分专业计划在官网需动态加载,完整数据待出分后通过省考试院系统查询。温大是天恒"稳档"区间最重要的保底院校之一。
</p>
<!-- 省外目标院校 -->
<h3>🏫 省外目标院校(桂林电子科大、西安邮电大学)</h3>
<table>
<tr><th>院校</th><th>2026全国总计划</th><th>在浙招生</th><th>天恒匹配专业</th><th>预估投档线</th></tr>
<tr class="highlight-rowsci"><td>桂林电子科技大学</td><td>约7700人</td><td>待公布</td><td>通信工程、电子信息工程、计算机</td><td>596~6112025参考)</td></tr>
<tr class="highlight-rowsci"><td>西安邮电大学</td><td>约3900人</td><td>待公布</td><td>通信工程、电子信息、智能感知工程</td><td>608~6092025参考)</td></tr>
<tr><td>浙江科技大学</td><td>待公布</td><td>待公布</td><td>电子信息类、自动化</td><td>577~5802025参考)</td></tr>
<tr><td>嘉兴大学</td><td>待公布</td><td>待公布</td><td>电子信息类</td><td>572~5772025参考)</td></tr>
</table>
<p style="font-size:0.85rem;color:#999;margin-top:8px;">注:省外院校在浙招生计划通常较少(几个到几十个),竞争相对激烈。但若天恒分数达到对应位次,性价比较高。</p>
</div>
<!-- ==================== 第四节:新增专业分析 ==================== -->
<div class="card" id="new-majors">
<h2><span class="icon">🆕</span>四、2026年新增38个本科专业:机会与风险并存</h2>
<p>2026年4月28日,教育部发布《普通高等学校本科专业目录(2026年)》,<strong>新增38种本科新专业</strong>,首次增设"交叉学科"门类。这些专业2026年高考起招生,天恒作为第一届考生,既有"捡漏"机会,也有"盲盒"风险。</p>
<h3>📋 新增专业中与天恒相关的方向</h3>
<table>
<tr><th>专业名称</th><th>所属门类</th><th>代表院校(首批)</th><th>选科要求</th><th>天恒匹配度</th><th>风险评估</th></tr>
<tr class="highlight-rowsci"><td>集成电路科学与工程</td><td>交叉学科</td><td>北大、清华、西电、电子科大</td><td>物理+化学</td><td>⚠️ 院校分数太高,不够</td><td>高分赛道,竞争激烈</td></tr>
<tr><td>半导体工艺与装备</td><td>交叉学科</td><td>部分理工强校</td><td>物理+化学</td><td>⚠️ 同上线院校分数存疑</td><td>新专业,就业验证不足</td></tr>
<tr class="highlight-rowsci"><td>智能计算</td><td>交叉学科</td><td>理工强校</td><td>物理+化学</td><td>✅ 若普通院校开设可考虑</td><td>中腰部院校开办需谨慎验证师资</td></tr>
<tr><td>数字公共治理</td><td>管理学</td><td>普通双一流/省属重点</td><td>多数不提科目要求</td><td>✅ 分数可能匹配(540~580</td><td>专业较新,用人单位认知度待验证</td></tr>
<tr><td>商业人工智能</td><td>管理学</td><td>财经类院校</td><td>物理或 不提要求</td><td>✅ 若浙江财经大学开设可考虑</td><td>需要确认数学/AI课程比例</td></tr>
<tr><td>能源科学与工程</td><td>工学</td><td>部分211/双一流</td><td>物理+化学</td><td>✅ 分数可能匹配</td><td>新能源是国家长期战略,就业去向清晰</td></tr>
<tr><td>数据资源与数据智能</td><td>管理学</td><td>普通双一流/省属重点</td><td>物理或不提要求</td><td>✅ 分数可能匹配</td><td>需确认核心课程是否偏文(影响就业)</td></tr>
</table>
<div class="warning-box">
<h4>⚠️ 峰哥提醒:新增专业报考三大纪律</h4>
<ul style="padding-left:20px;font-size:0.9rem;">
<li><strong>纪律一:只看有强势母学科的院校。</strong>比如"智能计算"——只有该校本身有强势的计算机/AI底子,才值得冲。如果是某普通省属大学新开,要非常谨慎。</li>
<li><strong>纪律二:专业直招 = 没有调剂保护。</strong>新专业多按"专业直招",报了就是它,进校后能否转专业需提前确认。</li>
<li><strong>纪律三:新增专业占志愿比例不超过10%。</strong>可以作为"冲"的一部分,但必须留有稳和保的志愿兜底。第一届分数线可能"虚低",但第二届可能暴涨。</li>
</ul>
</div>
</div>
<!-- ==================== 第五节:天恒专属建议 ==================== -->
<div class="card" id="tianheng">
<h2><span class="icon">🎯</span>五、宋天恒专属:2026年志愿填报策略建议</h2>
<h3>📊 天恒分数定位(基于用户估分591分)</h3>
<div class="score-box">
<div class="score-tier chong">
<div class="tier-name">冲档区间</div>
<div class="score-range">575~600分</div>
<div class="schools">浙江理工大学(电子信息类/自动化)<br>中国计量大学(电子信息/通信)<br>杭电中外合作(若591分够得到)</div>
</div>
<div class="score-tier wen">
<div class="tier-name">稳档区间</div>
<div class="score-range">555~575分</div>
<div class="schools">中国计量大学(主流专业)<br>温州大学(电子信息/通信)<br>浙江科技大学</div>
</div>
<div class="score-tier bao">
<div class="tier-name">保底区间</div>
<div class="score-range">540~555分</div>
<div class="schools">温州大学(部分专业)<br>浙江科技大学<br>嘉兴大学<br>台州学院</div>
</div>
</div>
<h3>📋 80个志愿填报分配建议(基于591分估分)</h3>
<table>
<tr><th>志愿梯队</th><th>分数区间</th><th>建议数量</th><th>专业类型</th><th>具体方向</th></tr>
<tr><td><strong>冲(第一区间)</strong></td><td>580~610分</td><td>20~25个</td><td>电子信息/通信/自动化</td><td>浙理工电子信息类、计量电子信息、杭电中外合作(若计划公布)</td></tr>
<tr><td><strong>冲(第二区间)</strong></td><td>565~585分</td><td>15~20个</td><td>电子信息/计算机/电气</td><td>计量主流专业、温大电子信息、浙科大</td></tr>
<tr><td><strong></strong></td><td>550~570分</td><td>25~30个</td><td>电子信息/自动化/电气</td><td>温大主流、浙科大、嘉兴大学</td></tr>
<tr><td><strong></strong></td><td>535~555分</td><td>15~20个</td><td>电气/自动化/应用物理</td><td>台州学院、嘉兴大学部分专业</td></tr>
<tr><td><strong>新增专业(精选)</strong></td><td>550~590分</td><td>5~8个</td><td>能源科学/数据智能/智能计算</td><td>仅选有强势母学科的院校,占志愿总数≤10%</td></tr>
<tr><td><strong>中外合作办学</strong></td><td>560~600分</td><td>3~7个</td><td>电子信息类中外合作</td><td>杭电中外合作(若有在浙计划)、浙工商中外合作</td></tr>
</table>
<div class="recommend-box">
<h4>✅ 峰哥核心建议:天恒2026年志愿优先级排序</h4>
<ol style="padding-left:20px;">
<li><strong>第一优先:浙江理工大学电子信息类(180人)</strong>——天恒估分591分,若2026年浙理工投档线在600分以下,这是最优质的选择。电子信息类含电子信息工程、通信工程,与天恒目标完全吻合。</li>
<li><strong>第二优先:中国计量大学电子信息工程/通信工程</strong>——计量在杭州,光电/计量特色鲜明,与天恒"光互联"方向有契合点。2026年具体分专业计划在浙招生人数待出分后确认。</li>
<li><strong>第三优先:温州大学电子信息科学与技术/通信工程</strong>——温大在浙招生计划较多,是"稳档"区间最重要的保底。若天恒分数在570~580区间,温大是很有价值的保底选择。</li>
<li><strong>第四优先(冲):杭电中外合作办学</strong>——杭州电子科技大学中外合作若2026年在浙有招生计划,且天恒分数够得到(首年招生分数线可能"虚低"),值得重点考虑。</li>
<li><strong>保底:浙江科技大学+嘉兴大学+台州学院</strong>——确保有本科可读,且专业不脱离电子信息/电气方向。</li>
</ol>
</div>
<h3>🔑 关键行动清单(出分前~出分后)</h3>
<div class="timeline">
<div class="timeline-item">
<div class="timeline-date">现在 ~ 6月25日</div>
<div class="timeline-content">
<p>① 放松心态,等待出分(6月26日左右公布成绩和一分一段表)</p>
<p>② 浏览目标院校本科招生网,熟悉专业介绍、课程设置</p>
<p>③ 与天恒沟通,确认专业偏好(电子信息 vs 通信 vs 自动化 vs 计算机)</p>
</div>
</div>
<div class="timeline-item">
<div class="timeline-date">6月26日左右(出分日)</div>
<div class="timeline-content">
<p><strong>第一时间获取高考成绩和全省位次号</strong>(这是硬通货,比绝对分数更重要)</p>
<p>② 对照《2026年普通高校招生计划》书(或省考试院官网下载),确认目标院校在浙招生精确计划数</p>
<p>③ 使用"蔷薇智愿"辅助系统(www.jzsfz.cn)进行志愿模拟匹配</p>
</div>
</div>
<div class="timeline-item">
<div class="timeline-date">6月27日 ~ 6月28日</div>
<div class="timeline-content">
<p>① 全家共同讨论,基于位次号(而非绝对分数)确定冲/稳/保院校清单</p>
<p>② 核实目标专业的具体课程设置(是否为天恒擅长的方向)</p>
<p>③ 确认中外合作办学专业的学费、培养模式(4+0 vs 3+1等)</p>
</div>
</div>
<div class="timeline-item">
<div class="timeline-date">6月29日 8:30 ~ 6月30日 17:30</div>
<div class="timeline-content">
<p><strong>正式填报第一段平行志愿</strong>(最多80个)</p>
<p>② 志愿顺序按"就读意愿从高到低"排序(系统按志愿顺序检索,一旦投档,后续志愿失效)</p>
<p>③ 提交前仔细核对:选考科目要求、体检限制、单科成绩要求、学费</p>
</div>
</div>
</div>
<div class="warning-box">
<h4>⚠️ 重要提醒:绝对分数 ≠ 竞争力</h4>
<p>天恒用户估分591分,这只是一个参考。最重要的是<strong>全省位次号</strong></p>
<p>2026年浙江高考报名41万人,本科计划16.8万。若天恒位次在<strong>8万名以内</strong>,可以选择较好的省内高校理工科专业;若在<strong>5万名以内</strong>,可以冲浙理工、计量等省重点。</p>
<p>出分后,第一时间对照《一分一段表》找到自己的精确位次,再对照目标院校往年录取位次(而非分数线)来做判断。</p>
</div>
</div>
<!-- ==================== 总结 ==================== -->
<div class="card">
<h2><span class="icon">📝</span>六、总结:2026年浙江招生三大关键词</h2>
<div class="recommend-box">
<ul style="padding-left:20px;font-size:0.95rem;line-height:2;">
<li><strong>关键词一:物化扩招提速。</strong>人工智能、新能源、生物医药、低空经济相关专业的扩招幅度从2025年的2%飙升至2026年的8%~12%。天恒选考物化生,正好站在这个"扩招风口"上。</li>
<li><strong>关键词二:分段填报,精准匹配。</strong>第一段志愿填报时间为6月29~30日,天恒预估分数在540~580/591分区间,需要精准匹配"冲/稳/保"三个梯队,避免滑档。</li>
<li><strong>关键词三:新增专业是双刃剑。</strong>38个新增专业提供了"捡漏"机会,但也存在就业验证不足的风险。建议天恒只选择有强势母学科的院校新增专业,且占志愿比例≤10%。</li>
</ul>
</div>
<p style="margin-top:20px;font-size:1rem;color:#0f4c81;text-align:center;font-weight:600;">
🚀 祝天恒金榜题名,顺利进入心仪的电子信息/通信工程专业!
</p>
</div>
<p class="source-note">数据来源:浙江省教育考试院官网(zjzs.net)、浙江理工大学本科招生网、中国计量大学本科招生网、温州大学招生网、知乎@ZJU研创黄老师《26浙江省内大学招生计划最新对比分析》| 本报告由峰哥(高考志愿专家AI)生成,仅供参考,最终填报请以官方最新数据为准。</p>
</div>
</body>
</html>
@@ -0,0 +1,547 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>2026中外合作办学暴增专题分析 — 天恒志愿策略参考</title>
<style>
:root {
--bg: #f8f9fa;
--card-bg: #ffffff;
--text: #2c3e50;
--text-light: #5a6c7d;
--green: #27ae60;
--red: #e74c3c;
--blue: #2980b9;
--orange: #e67e22;
--purple: #8e44ad;
--border: #e0e4e8;
--shadow: 0 2px 8px rgba(0,0,0,0.06);
}
* { margin:0; padding:0; box-sizing:border-box; }
body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; background: var(--bg); color: var(--text); line-height:1.7; padding:24px; max-width:1100px; margin:0 auto; }
h1 { font-size:26px; text-align:center; margin:16px 0 4px; color:#1a1a2e; }
.subtitle { text-align:center; color:var(--text-light); font-size:14px; margin-bottom:24px; }
h2 { font-size:20px; color:#1a1a2e; border-left:4px solid var(--blue); padding-left:12px; margin:32px 0 16px; }
h3 { font-size:16px; color:var(--text); margin:20px 0 10px; }
.alert { padding:14px 18px; border-radius:8px; margin:12px 0; font-size:14px; line-height:1.8; }
.alert-red { background:#fdecea; border-left:4px solid var(--red); }
.alert-green { background:#e8f5e9; border-left:4px solid var(--green); }
.alert-blue { background:#e3f2fd; border-left:4px solid var(--blue); }
.alert-orange { background:#fff3e0; border-left:4px solid var(--orange); }
.alert-purple { background:#f3e5f5; border-left:4px solid var(--purple); }
table { width:100%; border-collapse:collapse; margin:12px 0; font-size:14px; background:var(--card-bg); border-radius:8px; overflow:hidden; box-shadow:var(--shadow); }
th { background:#2c3e50; color:#fff; padding:10px 12px; text-align:left; font-weight:600; }
td { padding:10px 12px; border-bottom:1px solid var(--border); }
tr:last-child td { border-bottom:none; }
tr:nth-child(even) { background:#f8f9fa; }
.up { color:var(--green); font-weight:700; }
.down { color:var(--red); font-weight:700; }
.highlight { background:#fff9c4 !important; }
.metric-row { display:flex; gap:12px; margin:12px 0; flex-wrap:wrap; }
.metric { flex:1; min-width:180px; background:var(--card-bg); border-radius:8px; padding:16px; text-align:center; box-shadow:var(--shadow); }
.metric .value { font-size:24px; font-weight:800; margin:8px 0; }
.metric .label { font-size:13px; color:var(--text-light); }
.metric .note { font-size:12px; color:var(--text-light); margin-top:6px; }
.value.green { color:var(--green); }
.value.red { color:var(--red); }
.value.blue { color:var(--blue); }
.value.orange { color:var(--orange); }
.card { background:var(--card-bg); border-radius:12px; padding:20px; margin:16px 0; box-shadow:var(--shadow); }
.card h3 { margin-top:0; }
.tag { display:inline-block; padding:2px 10px; border-radius:12px; font-size:12px; font-weight:600; margin-right:6px; }
.tag-green { background:#e8f5e9; color:var(--green); }
.tag-red { background:#fdecea; color:var(--red); }
.tag-blue { background:#e3f2fd; color:var(--blue); }
.tag-orange { background:#fff3e0; color:var(--orange); }
.tag-purple { background:#f3e5f5; color:var(--purple); }
.verdict-box { background:linear-gradient(135deg, #667eea 0%, #764ba2 100%); color:#fff; padding:24px; border-radius:12px; margin:20px 0; text-align:center; }
.verdict-box h2 { color:#fff; border:none; padding:0; margin:0 0 12px; font-size:22px; }
.verdict-box p { font-size:15px; line-height:1.9; opacity:0.95; }
.strategy-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; margin:16px 0; }
@media (max-width:768px) { .strategy-grid { grid-template-columns:1fr; } .metric-row { flex-direction:column; } }
.strategy-card { background:var(--card-bg); border-radius:12px; padding:18px; box-shadow:var(--shadow); }
.strategy-card.recommend { border:2px solid var(--green); }
.strategy-card.avoid { border:2px solid var(--red); opacity:0.85; }
.strategy-card h3 { margin-top:0; font-size:15px; }
ul { margin-left:18px; }
li { margin:4px 0; font-size:14px; }
.footer { text-align:center; color:var(--text-light); font-size:12px; margin-top:40px; padding:20px 0; border-top:1px solid var(--border); }
.divider { border:none; border-top:1px dashed var(--border); margin:24px 0; }
</style>
</head>
<body>
<h1>2026年中外合作办学暴增专题分析</h1>
<p class="subtitle">天恒(浙江2026届·物化生·570~610分·电子信息方向)专项策略参考 | 2026年6月3日</p>
<div style="background:#fff3cd;border:2px solid #ffc107;border-radius:8px;padding:14px 20px;margin:16px 0;font-size:14px;color:#856404;text-align:center;">
<strong>⚠️ 出分前声明:</strong>本报告中的分数区间(如540~580、591等)均为<strong>高考出分前的临时预估</strong>,基于天恒6次大考数据和2026高考数学全国性高难度调整,<strong>不代表最终成绩</strong>。所有志愿填报建议将在<strong>6月26日官方出分后</strong>基于省排名(位次)重新校准。请勿以此为最终依据。
</div>
<!-- ====== 核心结论 ====== -->
<div class="verdict-box">
<h2>核心结论:不排斥,但要精挑细选</h2>
<p>
中外合作办学2025~2026年确实<strong>暴增</strong>(174校新增86机构+133项目),对天恒来说<strong>是机遇大于风险</strong><br>
关键策略:<strong>优先考虑2026年新获批的杭电都柏林电子信息工程国际学院</strong>——这是天恒分数区间内<strong>最值得关注</strong>的机会。<br>
同时配置浙工商中外合作(591~594分)作为稳档选项。不是所有中外合作都值得读,<strong>要用"四个三分之一"标准严格筛选</strong><br>
如果家庭经济可承受每年3~5万元额外学费(4年共12~20万),<strong>建议在80个志愿中配置3~5个优质中外合作项目</strong>
</p>
</div>
<!-- ====== 第一章:暴增概况 ====== -->
<h2>一、暴增有多"暴"?用数据说话</h2>
<div class="metric-row">
<div class="metric">
<div class="label">2025H2批次</div>
<div class="value blue">57机构+67项目</div>
<div class="note">覆盖本硕博全层次</div>
</div>
<div class="metric">
<div class="label">2026H1批次(最新)</div>
<div class="value orange">86机构+133项目</div>
<div class="note">174所高校参与,单次审批量创历史新高</div>
</div>
<div class="metric">
<div class="label">2025全年新增机构</div>
<div class="value green">100+家</div>
<div class="note">相当于此前20多年审批总数的一半</div>
</div>
<div class="metric">
<div class="label">浙江当前总量</div>
<div class="value blue">41机构+168项目</div>
<div class="note">以"中外合作办学改革创新试验区"为抓手</div>
</div>
</div>
<div class="alert alert-blue">
<strong>暴增的背后:</strong>这是国家战略——2023年起教育部启动"中外合作办学质量提升工程",明确提出"<strong>扩大优质高等教育资源供给、提升中国教育国际影响力</strong>"。不是短期行为,是<strong>系统性扩容</strong>。同时实施"准入+退出"双向监管,历年来已有数百家不达标项目被终止。
</div>
<table>
<tr><th style="width:25%;">参与主体</th><th style="width:35%;">代表性新增</th><th style="width:40%;">电子信息/CS相关</th></tr>
<tr>
<td><strong>985高校</strong></td>
<td>哈工大×法国里昂、天大、川大、北理等6所</td>
<td>北航中西智能学院(通信工程/CS/AI,本硕博)</td>
</tr>
<tr class="highlight">
<td><strong>浙江地方高校</strong></td>
<td>杭电、计量、浙科大、温大、台州学院等</td>
<td><strong>杭电都柏林学院(EE/IC/AI)、计量安格利亚罗斯金(AI)、浙科大慕尼黑(CS)</strong></td>
</tr>
<tr>
<td><strong>独立中外合作大学</strong></td>
<td>西交利物浦、宁诺、港中深等持续扩招</td>
<td>计算机/通信/电子均为热门方向</td>
</tr>
</table>
<div class="alert alert-orange">
<strong>关键洞察:</strong>暴增意味着供给大幅增加 → 录取门槛可能下降 → <strong>对570~610分段考生是利好</strong>。但同时也意味着<strong>鱼龙混杂更严重</strong>,选择需要更谨慎。
</div>
<!-- ====== 第二章:浙江相关项目 ====== -->
<h2>二、与天恒直接相关的浙江中外合作项目</h2>
<h3>2.1 核心机会:浙工商 & 杭电都柏林(最匹配)</h3>
<table>
<tr><th>项目</th><th>学校层次</th><th>中外合作专业</th><th>2025浙江录取分</th><th>学费/年</th><th>天恒匹配度</th></tr>
<tr class="highlight">
<td><strong>杭电·都柏林电子信息工程国际学院</strong></td>
<td>省重点(双非但IT强校)</td>
<td>电子信息工程、集成电路设计与集成系统、人工智能</td>
<td><strong>🆕 2026首招</strong>(预估600±10</td>
<td>预计3.6~5万</td>
<td class="up">⭐⭐⭐⭐⭐ 冲档首选</td>
</tr>
<tr>
<td><strong>浙江工商大学·中外合作</strong></td>
<td>省重点</td>
<td>电子信息工程(594)、通信工程(591)</td>
<td><strong>591~594</strong></td>
<td>约2.8~3.5万</td>
<td class="up">⭐⭐⭐⭐ 稳档首选</td>
</tr>
<tr>
<td><strong>中国计量大学·安格利亚罗斯金联合学院</strong></td>
<td>省重点</td>
<td>人工智能、自动化、机械</td>
<td>🆕 2026首招(预估580±10</td>
<td>预计3~4万</td>
<td class="up">⭐⭐⭐ 稳/保档</td>
</tr>
<tr>
<td><strong>浙江科技大学·慕尼黑数字创新学院</strong></td>
<td>公办本科</td>
<td>计算机科学与技术、软件工程、数字媒体技术</td>
<td>🆕 2026首招(预估560±10</td>
<td>预计2.5~3.5万</td>
<td>⭐⭐⭐ 保档</td>
</tr>
<tr>
<td><strong>温州大学·中俄工业技术与设计学院</strong></td>
<td>公办本科</td>
<td>计算机科学与技术</td>
<td>🆕 2026首招(预估555±10</td>
<td>预计2~3万</td>
<td>⭐⭐ 安全垫</td>
</tr>
</table>
<div class="alert alert-green">
<strong>重点解读——杭电都柏林学院为什么是"游戏规则改变者":</strong><br>
① 杭电普通批电子信息类在浙江约626分(天恒够不到),但中外合作通常比普通批低<strong>10~30分</strong>,这意味着天恒在600~610分有机会进入;<br>
② 爱尔兰都柏林城市大学受QQI严格监管,属于<strong>外方监管质量较高的合作方</strong>(非"飞行教学"模式);<br>
③ 专业方向精准命中:EE + IC + AI,覆盖天恒目标赛道的<strong>全部核心方向</strong><br>
<strong>首年招生不确定性</strong>既是风险(无历史数据),也是机会(可能录取线低于稳定水平)。<br>
⑤ 爱尔兰总理亲自揭牌(2026年2月),属<strong>国家级合作项目</strong>,质量有保障。
</div>
<h3>2.2 天恒分数区间内的其他值得关注的浙江项目</h3>
<table>
<tr><th>学校</th><th>专业</th><th>外方</th><th>约2025浙江分</th><th>匹配度</th></tr>
<tr>
<td>浙理工(纺织科学与工程中外合作)</td>
<td></td>
<td></td>
<td></td>
<td>⚠️ 理工科但非电子信息</td>
</tr>
<tr>
<td>宁波大学(昂热大学联合学院)</td>
<td>旅游/地理</td>
<td>法国昂热大学</td>
<td></td>
<td>❌ 方向不匹配</td>
</tr>
<tr>
<td>杭师大(哈尔科夫学院)</td>
<td>应用化学/高分子</td>
<td>乌克兰哈尔科夫国立大学</td>
<td></td>
<td>⚠️ 化学方向,非天恒首选</td>
</tr>
</table>
<div class="alert alert-orange">
<strong>注意:</strong>以上三校的中外合作项目与天恒的电子信息方向不匹配,<strong>不建议占用志愿位</strong>。中外合作≠只要是中外合作就值得读,关键看<strong>专业方向是否对路</strong>
</div>
<!-- ====== 第三章:成本收益分析 ====== -->
<h2>三、成本收益分析:家庭财务视角</h2>
<h3>3.1 四年总费用对比</h3>
<table>
<tr><th>项目</th><th>普通本科(公办)</th><th>中外合作(省内中档)</th><th>差额</th></tr>
<tr><td>学费(4年)</td><td>2.4~3.2万(6000~8000×4</td><td>11.2~20万(2.8~5万×4</td><td class="down">+8.8~16.8万</td></tr>
<tr><td>住宿(4年)</td><td>0.6~1.2万</td><td>0.6~1.6万</td><td>基本持平</td></tr>
<tr><td>生活费(4年,杭州)</td><td>8~12万</td><td>8~12万</td><td>基本持平</td></tr>
<tr><td>杂费/教材/其他</td><td>1~2万</td><td>2~4万(外文教材贵)</td><td class="down">+1~2万</td></tr>
<tr style="background:#fff9c4;font-weight:700;"><td>四年总计</td><td>约12~18万</td><td>约22~38万</td><td class="down">额外支出约10~20万</td></tr>
</table>
<div class="alert alert-blue">
<strong>家庭承受力初步判断:</strong>Simon在杭州税友集团担任IT支持组组长,家庭属杭州城市中等收入水平。4年额外10~20万的支出<strong>可承受但非轻描淡写</strong>。如果选择浙工商中外合作(约3万/年),4年额外约10万,性价比最优。
</div>
<h3>3.2 收益端:中外合作的真正回报在哪?</h3>
<div class="metric-row">
<div class="metric">
<div class="label">本科深造率</div>
<div class="value green">69~87%</div>
<div class="note">中外合作项目平均深造率远超普通本科(通常30~50%)</div>
</div>
<div class="metric">
<div class="label">海外名校录取</div>
<div class="value blue">62%+进QS前100</div>
<div class="note">帝国理工/LSE/约翰霍普金斯等名校通道</div>
</div>
<div class="metric">
<div class="label">IT/互联网就业占比</div>
<div class="value green">39.58%</div>
<div class="note">港中深数据:腾讯/华为/京东/摩根大通等雇主</div>
</div>
<div class="metric">
<div class="label">外语+国际视野溢价</div>
<div class="value blue">隐性价值</div>
<div class="note">英文授课能力 = AI时代的外挂技能</div>
</div>
</div>
<div class="alert alert-purple">
<strong>峰哥判断:</strong>中外合作办学的<strong>核心回报不在本科就业薪资</strong>(和普通本科差距不大),而在于<strong>为海外/国内顶尖研究生院打开的通道</strong>。如果天恒有计划读研(国内考研或出国),中外合作的价值会被放大;如果计划本科直接就业,溢价就不太划算。天恒的方向(电子信息/通信/AI算力)恰好是<strong>研究生学历溢价极高的领域</strong>,深造几乎是必然路径 → <strong>中外合作的深造优势高度匹配</strong>
</div>
<!-- ====== 第四章:风险框架 ====== -->
<h2>四、风险框架:如何识别"真合作"与"假镀金"</h2>
<h3>4.1 "四个三分之一"——教育部硬性质量门槛</h3>
<table>
<tr><th>指标</th><th>要求</th><th>怎么查验</th></tr>
<tr><td>外方教师占比</td><td>≥ 1/3</td><td>查看学院官网师资页面,看外教是否常驻(非"飞行教学")</td></tr>
<tr><td>外方课程占比</td><td>≥ 1/3</td><td>查看培养方案,确认核心专业课是否由外方承担</td></tr>
<tr><td>外方教学时长</td><td>≥ 1/3</td><td>了解是否有外方教师常驻授课,而非短期集中授课</td></tr>
<tr><td>外方学位认可</td><td>外方所在国认证</td><td>查外方学校是否获其本国质量监管机构认证(如爱尔兰QQI、英国QAA)</td></tr>
</table>
<h3>4.2 "坑"项目识别表</h3>
<table>
<tr><th style="width:18%;">风险类型</th><th style="width:42%;">具体表现</th><th style="width:40%;">对天恒的适用性</th></tr>
<tr>
<td><span class="tag tag-red">假合作</span></td>
<td>外方仅提供品牌授权,不参与实际教学;外教"飞行教学"一年来两周</td>
<td>2026新批项目需重点警惕,首年无历史数据可查</td>
</tr>
<tr>
<td><span class="tag tag-red">外方资质弱</span></td>
<td>外方QS排名1000+或无相关学科优势;未获得所在国质量认证</td>
<td>计量×安格利亚罗斯金(英国中低排名)需重点评估</td>
</tr>
<tr>
<td><span class="tag tag-orange">专业不匹配</span></td>
<td>中外合作的专业非该校优势学科,仅作为"创收项目"</td>
<td>杭电EE/IC是核心优势→优质;其他学校需逐一甄别</td>
</tr>
<tr>
<td><span class="tag tag-orange">办学不稳定</span></td>
<td>外方有退出历史,或连续多年招生不足面临终止</td>
<td>新批项目(2026首招)无此历史,但也是不确定性</td>
</tr>
<tr>
<td><span class="tag tag-red">收费与投入不匹配</span></td>
<td>学费高昂但外方实际投入不足,性价比极低</td>
<td>学费>8万/年的项目需格外谨慎</td>
</tr>
</table>
<h3>4.3 对天恒各候选项目的质量预判</h3>
<table>
<tr><th>项目</th><th>外方实力</th><th>质量监管</th><th>"四个三分之一"预判</th><th>风险评级</th></tr>
<tr>
<td><strong>杭电都柏林学院</strong></td>
<td>都柏林城市大学(爱尔兰,QS 400~500,工程类强)</td>
<td>✅ QQI严格监管</td>
<td>✅ 爱尔兰总理揭牌,国家级项目,质量有保障</td>
<td class="up">🟢 低风险</td>
</tr>
<tr>
<td><strong>浙工商中外合作</strong></td>
<td>成熟项目,有毕业生数据</td>
<td>✅ 已运行多年</td>
<td>✅ 有公开培养方案</td>
<td class="up">🟢 低风险</td>
</tr>
<tr>
<td><strong>计量安格利亚罗斯金</strong></td>
<td>安格利亚罗斯金大学(英国,QS 800+)</td>
<td>⚠️ QAA监管但排名较低</td>
<td>⚠️ 需核实(外方排名偏弱)</td>
<td>🟡 中风险</td>
</tr>
<tr>
<td><strong>浙科大慕尼黑</strong></td>
<td>德国管理应用技术大学(私立,企业合作强)</td>
<td>⚠️ 德国私立FH,需确认认证</td>
<td>⚠️ 需核实(德国模式与英美不同)</td>
<td>🟡 中风险</td>
</tr>
<tr>
<td><strong>温大中俄学院</strong></td>
<td>圣彼得堡国立工业技术与设计大学</td>
<td>⚠️ 俄罗斯高校,非主流留学目的地</td>
<td>⚠️ 需核实</td>
<td>🟡 中风险</td>
</tr>
</table>
<!-- ====== 第五章:战略建议 ====== -->
<h2>五、对天恒的战略建议</h2>
<h3>5.1 决策思维框架:三种情景</h3>
<div class="alert alert-orange">
<strong>前提:不要用"要不要报中外合作"这种非黑即白的思维。</strong>浙江有80个平行志愿,中外合作只是其中一小部分。正确的问题是:<strong>在80个志愿中,配置几个中外合作?放在冲/稳/保哪个档位?</strong>
</div>
<div class="strategy-grid">
<div class="strategy-card recommend">
<h3>✅ 情景A:天恒考600~610分(理想情况)</h3>
<p><strong>策略:</strong></p>
<ul>
<li><strong>冲:杭电都柏林学院</strong>(首年录取分可能较低,有机会以600+进入杭电体系)</li>
<li><strong>稳:</strong>浙工商中外合作(591~594,十拿九稳)+ 普通批次计量/温大</li>
<li><strong>中外合作配置:</strong>3~5个志愿(占总数5%左右)</li>
<li><strong>核心逻辑:</strong>用中外合作"抬高"学校层次,以低于普通批10~20分的成本换取更好的学校和专业</li>
</ul>
</div>
<div class="strategy-card recommend">
<h3>✅ 情景B:天恒考580~599分(稳档区间)</h3>
<p><strong>策略:</strong></p>
<ul>
<li><strong>冲:杭电都柏林学院</strong>(分数可能不够,但仍值得一试)</li>
<li><strong>稳:浙工商中外合作</strong>(591~594,需要发挥好)+ 计量安格利亚罗斯金</li>
<li><strong>保:浙科大慕尼黑</strong>CS/软件)</li>
<li><strong>中外合作配置:</strong>5~8个志愿(占总数6~10%</li>
<li><strong>核心逻辑:</strong>在这个分数段,中外合作可能是"买到更好的学校品牌"的最有效杠杆</li>
</ul>
</div>
<div class="strategy-card">
<h3>⚠️ 情景C:天恒考570~579分(保档区间)</h3>
<p><strong>策略:</strong></p>
<ul>
<li><strong>冲:浙工商中外合作</strong>(可能不够,但可以尝试)</li>
<li><strong>稳:</strong>浙科大慕尼黑、计量安格利亚罗斯金</li>
<li><strong>保:温大中俄学院</strong>CS</li>
<li><strong>中外合作配置:</strong>5~8个志愿</li>
<li><strong>核心逻辑:</strong>以普通本科为主,中外合作作为补充选择,确保有学上</li>
</ul>
</div>
</div>
<h3>5.2 总体配置建议</h3>
<table>
<tr><th style="width:10%;">档位</th><th style="width:18%;">分数区间</th><th style="width:45%;">推荐院校(普通+中外合作混合)</th><th style="width:27%;">中外合作占比</th></tr>
<tr style="background:#e8f5e9;">
<td><strong></strong></td><td>600~610</td>
<td>普通:浙理工/西邮/桂电/计量 | 中外:<strong>杭电都柏林</strong></td>
<td>1~2个中外合作志愿</td>
</tr>
<tr>
<td><strong></strong></td><td>590~604</td>
<td>普通:计量/温大/桂电 | 中外:<strong>浙工商中外合作</strong></td>
<td>2~3个中外合作志愿</td>
</tr>
<tr>
<td><strong></strong></td><td>570~589</td>
<td>普通:温大/浙科大/嘉兴/台州 | 中外:浙科大慕尼黑/温大中俄</td>
<td>1~2个中外合作志愿</td>
</tr>
</table>
<div class="alert alert-green">
<strong>总志愿数80个,建议中外合作配置3~7个(4%~9%)。</strong>这样既不错过中外合作的红利,又不过度集中风险。
</div>
<!-- ====== 第六章:中外合作vs普通本科 ====== -->
<h2>六、中外合作 vs 普通本科:天恒场景下的决策矩阵</h2>
<table>
<tr><th style="width:20%;">对比维度</th><th style="width:40%;">普通本科(计量/温大/浙理工 EE</th><th style="width:40%;">中外合作(杭电都柏林/浙工商 EE</th></tr>
<tr>
<td><strong>学校品牌</strong></td>
<td>计量/温大(省重点,IT行业认可度高)</td>
<td class="up">杭电是浙江IT就业金字招牌,浙工商综合排名更高</td>
</tr>
<tr>
<td><strong>专业精准度</strong></td>
<td>EE/通信,方向明确</td>
<td class="up">杭电:EE+IC+AI全覆盖;浙工商:EE+通信</td>
</tr>
<tr>
<td><strong>深造通道</strong></td>
<td>国内考研为主,海外申请需自建背景</td>
<td class="up">海外申研有明显优势(双学位+英文成绩单+外方推荐信)</td>
</tr>
<tr>
<td><strong>语言能力</strong></td>
<td>中文授课,英语靠自学</td>
<td class="up">英文授课环境,4年后英语水平天差地别</td>
</tr>
<tr>
<td><strong>就业起点</strong></td>
<td>国内企业为主,外企需额外证明英语能力</td>
<td class="up">外企/跨国公司有明显优势,国内企业同样认可</td>
</tr>
<tr>
<td><strong>费用</strong></td>
<td class="up">约12~18万/4年</td>
<td>约22~38万/4年(多花10~20万)</td>
</tr>
<tr>
<td><strong>不确定性</strong></td>
<td class="up">低(成熟项目,有历史数据)</td>
<td>新项目(2026首招)无历史数据,存在未知风险</td>
</tr>
<tr>
<td><strong>录取确定性</strong></td>
<td class="up">有历年分数线,可精准填报</td>
<td>新项目首年分数无法预测,需承担不确定性</td>
</tr>
</table>
<div class="alert alert-blue">
<strong>关键权衡:</strong>10~20万的额外投入,换来的是<strong>更好的学校品牌 + 深造通道 + 英语能力 + 国际视野</strong>。如果天恒计划国内考研或出国深造(电子信息方向读研几乎是必须的),<strong>这笔投入的ROI大概率是正的</strong>。如果计划本科直接就业且不追求外企,<strong>溢价则不太值得</strong>
</div>
<!-- ====== 第七章:行动清单 ====== -->
<h2>七、Simon家的行动清单</h2>
<table>
<tr><th style="width:6%;">序号</th><th style="width:10%;">时机</th><th style="width:42%;">行动</th><th style="width:10%;">优先级</th></tr>
<tr>
<td>1</td><td>6月3~6日(考前)</td>
<td>父母先行了解中外合作办学概念,阅读本报告,讨论家庭预算(<strong>关键决策:愿意额外投入多少?</strong></td>
<td class="up">🔴 高</td>
</tr>
<tr>
<td>2</td><td>6月10~15日(考后)</td>
<td>让孩子填写腾讯文档测评+探索问卷,了解他对"出国深造"的意愿</td>
<td class="up">🔴 高</td>
</tr>
<tr>
<td>3</td><td>6月15~20日</td>
<td>登录教育部涉外监管信息平台(jsj.moe.gov.cn<strong>核实目标项目的审批状态和外方资质</strong></td>
<td class="up">🔴 高</td>
</tr>
<tr>
<td>4</td><td>6月20~25日(出分后)</td>
<td>根据实际分数,对照本报告的"三种情景",确定中外合作志愿配置数量</td>
<td class="up">🔴 高</td>
</tr>
<tr>
<td>5</td><td>6月25~28日</td>
<td>致电目标院校招生办,确认:<strong>①是否满足"四个三分之一" ②外方学位是否获所在国认证 ③2026年招生计划和预估分数</strong></td>
<td>🟡 中</td>
</tr>
<tr>
<td>6</td><td>6月28~30日(填报期)</td>
<td>最终确定80个志愿方案,中外合作占比控制在4%~9%</td>
<td class="up">🔴 高</td>
</tr>
<tr>
<td>7</td><td>填报后</td>
<td>持续关注目标院校中外合作项目的招生动态和录取情况</td>
<td>🟢 低</td>
</tr>
</table>
<!-- ====== 最终建议 ====== -->
<div class="verdict-box" style="background:linear-gradient(135deg, #11998e 0%, #38ef7d 100%);">
<h2>峰哥最后说两句</h2>
<p style="text-align:left;font-size:14px;line-height:2;">
<strong>1.</strong> 中外合作办学暴增是<strong>天恒这一届的独特红利</strong>——供给大幅扩张 + 首年招生分数不确定性 = <strong>信息不对称带来的套利机会</strong>。杭电都柏林学院就是这个红利最集中的体现。<br><br>
<strong>2.</strong> 但红利不等于无脑冲。关键在于:<strong>天恒是否有读研计划?</strong>有 → 中外合作价值放大;没有 → 溢价可能不划算。高考后让天恒自己回答这个问题。<br><br>
<strong>3.</strong> <strong>不把鸡蛋放一个篮子。</strong>80个志愿中,中外合作3~7个,其余仍按"电子信息为主、通信为辅"的原定方案配置。中外合作是<strong>选项</strong>,不是<strong>替代方案</strong><br><br>
<strong>4.</strong> 如果家庭预算紧张(4年额外10万有压力),<strong>首选浙工商中外合作</strong>——591~594分在稳档区间,学费较低,成熟项目风险小;如果有余力,<strong>重点冲刺杭电都柏林学院</strong><br><br>
<strong>5.</strong> 最后——这个问题让天恒参与决策。他是否愿意接受英文授课的挑战?是否对出国深造有兴趣?<strong>这是他的4年,他的未来。</strong>
</p>
</div>
<div class="footer">
<p>本报告基于公开数据(教育部中外合作办学监管工作信息平台、各高校招生网、胡润百学排行榜、媒体报道)综合研判生成</p>
<p>2026年6月3日 | 天恒·浙江2026高考专项分析 | 中外合作办学策略 | 正式填报请以浙江省教育考试院及各校官方公布数据为准</p>
</div>
</body>
</html>
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,461 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>数字媒体技术院校深度调研报告 — 天恒专属 · 综合扩展版</title>
<style>
:root {
--bg: #1a1a2e; --card: #16213e; --accent: #e94560;
--gold: #f0c040; --green: #4caf84; --blue: #4da6ff;
--text: #e0e0e0; --text-muted: #a0a0b0;
--border: #2a2a4a; --tag-bg: #0f3460;
--risk-bg: #2a1a1a; --good-bg: #1a2a1a;
}
* { margin:0; padding:0; box-sizing:border-box; }
body { background:var(--bg); color:var(--text); font-family:-apple-system,'Microsoft YaHei',sans-serif; line-height:1.7; padding:0; }
.container { max-width:1100px; margin:0 auto; padding:20px; }
.hero { text-align:center; padding:40px 20px 30px; border-bottom:2px solid var(--accent); margin-bottom:30px; }
.hero h1 { font-size:1.9em; color:#fff; margin-bottom:10px; }
.hero .subtitle { color:var(--text-muted); }
.hero .meta { margin-top:15px; display:flex; gap:12px; justify-content:center; flex-wrap:wrap; }
.hero .meta span { background:var(--tag-bg); padding:4px 14px; border-radius:20px; font-size:0.9em; }
.section { margin:35px 0; }
.section h2 { color:#fff; font-size:1.35em; border-left:4px solid var(--accent); padding-left:15px; margin-bottom:20px; }
.section h3 { color:var(--blue); font-size:1.1em; margin:20px 0 10px; }
.card { background:var(--card); border-radius:12px; padding:25px; margin:15px 0; border:1px solid var(--border); }
.card.top-pick { border-color:var(--gold); border-width:2px; }
.card.dim { opacity:0.75; }
.card h4 { font-size:1.1em; color:#fff; margin-bottom:8px; }
.tags { display:flex; gap:8px; flex-wrap:wrap; margin:10px 0; }
.tag { background:var(--tag-bg); padding:3px 12px; border-radius:14px; font-size:0.85em; color:var(--blue); }
.tag.hot { background:var(--accent); color:#fff; }
.tag.good { background:var(--green); color:#fff; }
.tag.gold { background:var(--gold); color:#1a1a2e; }
table { width:100%; border-collapse:collapse; margin:15px 0; font-size:0.9em; }
th { background:var(--tag-bg); color:#fff; padding:8px 10px; text-align:left; border-bottom:2px solid var(--accent); }
td { padding:7px 10px; border-bottom:1px solid var(--border); color:var(--text); }
tr:hover td { background:rgba(255,255,255,0.03); }
.risk-box { background:var(--risk-bg); border-left:4px solid var(--accent); padding:15px 20px; margin:15px 0; border-radius:0 8px 8px 0; }
.risk-box h5 { color:var(--accent); margin-bottom:6px; }
.good-box { background:var(--good-bg); border-left:4px solid var(--green); padding:15px 20px; margin:15px 0; border-radius:0 8px 8px 0; }
.good-box h5 { color:var(--green); margin-bottom:6px; }
.fit-bar { display:flex; align-items:center; gap:10px; margin:8px 0; }
.fit-bar .label { width:100px; color:var(--text-muted); font-size:0.9em; }
.fit-bar .bar { flex:1; height:10px; background:var(--border); border-radius:5px; overflow:hidden; }
.fit-bar .bar .fill { height:100%; border-radius:5px; }
.fill.green { background:var(--green); }
.fill.yellow { background:var(--gold); }
.fill.red { background:var(--accent); }
.compare-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)); gap:20px; margin:20px 0; }
.badge { display:inline-block; padding:2px 10px; border-radius:10px; font-size:0.8em; font-weight:600; }
.badge-gold { background:var(--gold); color:#1a1a2e; }
.badge-green { background:var(--green); color:#fff; }
.badge-blue { background:var(--blue); color:#fff; }
.badge-red { background:var(--accent); color:#fff; }
.summary-card { background:linear-gradient(135deg,#1a2a1a 0%,#0f3460 100%); border:2px solid var(--green); border-radius:16px; padding:30px; margin:25px 0; }
.summary-card h2 { color:var(--green); font-size:1.4em; border-left:none; padding-left:0; }
@media (max-width:640px) { .container { padding:12px; } .hero h1 { font-size:1.4em; } table { font-size:0.8em; } }
</style>
</head>
<body>
<div class="container">
<div class="hero">
<h1>🎮 数字媒体技术 · 院校深度调研报告</h1>
<div class="subtitle">综合扩展版 · 课程体系 × 岗位匹配 × 实验室/院士 × 学术成果 × 竞赛 × 企业基地 × 就业薪资</div>
<div class="meta">
<span>📅 2026年6月24日</span>
<span>🎯 游戏设计 / 交互开发</span>
<span>💰 自估 591 分</span>
<span>🧬 物化生</span>
</div>
</div>
<div style="background:#fff3cd;border:2px solid #ffc107;border-radius:8px;padding:14px 20px;margin:16px 0;font-size:14px;color:#856404;text-align:center;">
<strong>⚠️ 出分前声明:</strong>报告中分数为高考出分前预估,所有建议将在<strong>6月26日官方出分后</strong>基于省排名重新校准。
</div>
<div class="summary-card">
<h2>🎯 核心结论</h2>
<p style="margin-top:15px;font-size:1.05em;">
数字媒体技术对天恒的综合适配度 <strong style="color:#f0c040;">8.6/10</strong>。筛选出 <strong style="color:#4caf84;">2所重点推荐院校</strong>,在课程—岗位匹配度、项目制教学、竞赛资源、企业实践等方面均经过综合评估。
</p>
</div>
<!-- ====== 一、课程体系与培养方案 ====== -->
<div class="section">
<h2>一、课程体系与培养方案深度分析</h2>
<div class="compare-grid">
<div class="card top-pick">
<h4>🏆 浙江科技大学 · 数字媒体技术</h4>
<span class="badge badge-green">工科学位</span>
<table>
<tr><th>维度</th><th>详情</th></tr>
<tr><td>培养定位</td><td>交叉复合型:计算机技术 + 艺术设计。以技术为主导、技术与艺术融合。</td></tr>
<tr><td>核心课程(基础)</td><td>数字媒体设计基础、HTML5程序设计、iOS/Android开发、交互式多媒体系统设计、多媒体网络</td></tr>
<tr><td>核心课程(专业)</td><td>二维/三维动画设计、数字图像处理、音视频信号处理、游戏设计与开发、摄影摄像技术、影视后期制作</td></tr>
<tr><td>方向聚焦</td><td><strong>游戏设计与开发方向明确</strong>,同时覆盖App开发、Web开发、UI/UX设计</td></tr>
<tr><td>课程连续性</td><td>【学生原话】"上学期UI设计课的作品,下学期编程开发课来实现"——课程间有明确连贯性</td></tr>
<tr><td>团队协作</td><td>"很多课程需要2-3人团队合作完成"——每学期均有课程设计</td></tr>
<tr><td>国际化</td><td>美犹他山谷大学互访,外教授课,暑期美国游学</td></tr>
</table>
</div>
<div class="card top-pick">
<h4>🏆 桂电中外合作 · 数字媒体技术</h4>
<span class="badge badge-gold">双学位(工学+艺术学)</span>
<table>
<tr><th>维度</th><th>详情</th></tr>
<tr><td>培养定位</td><td>"技术+艺术+国际化"深度融合,中美双方共同制定培养方案</td></tr>
<tr><td>中方核心课</td><td>计算思维与AI导论、程序设计与问题求解、数据结构与算法、数据库开发技术、游戏策划、<strong>游戏开发项目实训</strong>、多媒体全栈开发、智能可视化设计、扩展现实技术、数字化内容开发与实践</td></tr>
<tr><td>美方全英文课</td><td><strong>3D设计与建模、3D渲染技术、UI/UX设计、数字图像、游戏设计、动态图形设计</strong>、作品组合展、专题设计、顶石设计</td></tr>
<tr><td>前沿方向</td><td>VR/AR、3D可视化、数字孪生、<strong>元宇宙、游戏开发、智能座舱、AI生成艺术</strong></td></tr>
<tr><td>语言强化</td><td>1/3核心课程全英文 + 中方助教 + 额外英语强化课(演讲、跨文化、职场英语)</td></tr>
<tr><td>培养模式</td><td><strong>4+0双学位</strong>:桂电工学学士 + 伯克利学院艺术学学士,不出国</td></tr>
</table>
</div>
<div class="card">
<h4>📌 浙江传媒学院 · 数字媒体技术</h4>
<span class="badge badge-blue">国一流专业</span>
<table>
<tr><th>维度</th><th>详情</th></tr>
<tr><td>培养定位</td><td>"技艺文融通"跨领域复合型,科学+艺术+人文</td></tr>
<tr><td>核心课程</td><td>程序设计、媒体设计基础、数字图像与视频处理、<strong>游戏策划与创意设计、游戏开发技术</strong>、次时代三维建模、计算机图形学与实时渲染、跨媒体数据可视化、技术创意与程序化建模、人机交互与界面设计</td></tr>
<tr><td>方向偏向</td><td>⚠️ 偏传媒/影视方向较明显,游戏方向有课程但定位不如浙科大明确</td></tr>
<tr><td>学院平台</td><td>媒体工程学院,6个本科专业+"影视技术与传播"硕士点</td></tr>
<tr><td>新工科特色</td><td>2020年教育部第二批新工科研究与实践项目,"三创"拔尖人才培养实验班</td></tr>
</table>
</div>
</div>
<!-- 岗位匹配分析 -->
<h3>📊 课程体系 vs 主流招聘岗位技能要求</h3>
<table>
<tr><th>对口岗位</th><th>招聘平台技能要求(BOSS/猎聘/智联汇总)</th><th>浙科大课程覆盖</th><th>桂电课程覆盖</th><th>浙传媒课程覆盖</th></tr>
<tr>
<td>游戏开发工程师</td>
<td>Unity/Unreal引擎、C#/C++、游戏逻辑、Shader编程、性能优化</td>
<td style="color:#4caf84;">✅ 游戏设计与开发、三维图形学</td>
<td style="color:#4caf84;">✅✅ 游戏开发项目实训、游戏设计、顶石设计</td>
<td style="color:#f0c040;">✅ 游戏策划与创意设计、游戏开发技术</td>
</tr>
<tr>
<td>UI/UX交互设计师</td>
<td>Figma/Sketch、用户研究、原型设计、设计系统、可用性测试</td>
<td style="color:#4caf84;">✅ 交互式多媒体系统设计</td>
<td style="color:#4caf84;">✅✅ UI/UX设计(伯克利核心课)</td>
<td style="color:#4caf84;">✅ 人机交互与界面设计</td>
</tr>
<tr>
<td>移动端App开发</td>
<td>iOS(Swift) / Android(Kotlin/Java)、React Native/Flutter、API集成</td>
<td style="color:#4caf84;">✅✅ iOS/Android开发双覆盖</td>
<td style="color:#f0c040;">⚠️ 有程序设计与问题求解基础</td>
<td style="color:#f0c040;">⚠️ 移动应用开发课</td>
</tr>
<tr>
<td>3D建模/动画师</td>
<td>Maya/Blender/3ds Max、Substance Painter、骨骼绑定、动画原理</td>
<td style="color:#f0c040;">✅ 三维动画/三维图形学</td>
<td style="color:#4caf84;">✅✅ 3D设计与建模、3D渲染技术(伯克利课)</td>
<td style="color:#4caf84;">✅ 次时代三维建模、计算机图形学</td>
</tr>
<tr>
<td>VR/AR开发工程师</td>
<td>Unity3D/Unreal、XR SDK(ARKit/ARCore)、空间计算、3D数学</td>
<td style="color:#f0c040;">⚠️ 有游戏与交互技术实验室</td>
<td style="color:#4caf84;">✅✅ 扩展现实技术、VR/AR方向明确</td>
<td style="color:#f0c040;">⚠️ 虚拟演播方向相关</td>
</tr>
<tr>
<td>前端/全栈开发</td>
<td>HTML/CSS/JS、React/Vue、Node.js、数据库、Git</td>
<td style="color:#4caf84;">✅✅ HTML5、Web开发、多媒体网络</td>
<td style="color:#4caf84;">✅ 多媒体全栈开发、数据库</td>
<td style="color:#f0c040;">✅ Web开发课</td>
</tr>
<tr>
<td>数字媒体/视频后期</td>
<td>Premiere/AE、达芬奇调色、音视频编解码、剪辑思维</td>
<td style="color:#4caf84;">✅✅ 影视后期制作、摄影摄像、音视频信号处理</td>
<td style="color:#f0c040;">⚠️ 数字图像课覆盖部分</td>
<td style="color:#4caf84;">✅ 传媒类院校天然优势</td>
</tr>
</table>
</div>
<!-- ====== 二、实验室与科研平台 ====== -->
<div class="section">
<h2>二、实验室 · 科研平台与院士团队</h2>
<div class="compare-grid">
<div class="card top-pick">
<h4>🏆 浙江科技大学</h4>
<table>
<tr><th>实验室名称</th><th>详情</th></tr>
<tr><td>数字演播厅</td><td>⭕ 省内领先,用于影视后期、直播实践</td></tr>
<tr><td>图形图像实验室</td><td>⭕ 图形学、图像处理方向</td></tr>
<tr><td><strong>游戏与交互技术实验室</strong></td><td><strong>专业核心实验室</strong>,支撑游戏设计与开发方向</td></tr>
<tr><td>移动设备开发实验室</td><td>⭕ iOS/Android开发实践平台</td></tr>
<tr><td>摄影摄像技术实验室</td><td>⭕ 摄影、摄像专业设备</td></tr>
<tr><td>院士/团队</td><td><strong>无院士或院士团队带队</strong>。数字媒体技术为校级优势特色专业,非国家重点学科,无国家级院士坐镇。</td></tr>
</tbody></table>
<div class="risk-box" style="margin-top:8px;">
<h5>⚠️ 评估</h5>
<p>实验室硬件条件省内领先(5个专业实验室),但缺乏院士层级学术带头人。对以就业为导向的本科培养而言,实验条件足够;对顶尖学术科研导向则偏弱。</p>
</div>
</div>
<div class="card top-pick">
<h4>🏆 桂电中外合作</h4>
<table>
<tr><th>实验室名称</th><th>详情</th></tr>
<tr><td><strong>数字媒体联合实验室</strong></td><td>⭐ 中美共建,获<strong>谷歌"Android人才培养示范基地"</strong>认证</td></tr>
<tr><td>AI生成艺术方向</td><td>⭕ 联合实验室覆盖AI生成艺术、元宇宙开发</td></tr>
<tr><td>数字孪生方向</td><td>⭕ 数字孪生技术研发与实践</td></tr>
<tr><td>交互媒体工程</td><td>⭕ 交互媒体工程实践平台</td></tr>
<tr><td>桂电整体平台</td><td>⭐ 学校层面:5个ESI全球前1%学科、8个博士点、23个国家一流专业、首批国家级创新创业教育实践基地、全国普通高校竞赛榜第44位</td></tr>
<tr><td>院士/团队</td><td>❌ 项目层面无院士直接带队。但桂电有院士团队(信息与通信工程方向),对中外合作项目的间接辐射效应有限。</td></tr>
</tbody></table>
<div class="good-box" style="margin-top:8px;">
<h5>✅ 亮点</h5>
<p>谷歌认证课程+联合实验室,校企资源直接对接。全国竞赛榜第44位说明整体创新实践氛围强。</p>
</div>
</div>
<div class="card">
<h4>📌 浙江传媒学院</h4>
<table>
<tr><th>实验室/平台</th><th>详情</th></tr>
<tr><td>浙江省影视媒体技术研究重点实验室</td><td>⭐ 省级重点实验室,科研平台层级高于前两者</td></tr>
<tr><td>浙江省"数字娱乐"产教融合示范基地</td><td>⭐ 省级产教融合平台</td></tr>
<tr><td>浙江省广电技术实验教学示范中心</td><td>⭕ 省级教学示范中心</td></tr>
<tr><td>国内高校首个"5G+4K"电竞综合演演室</td><td><strong>全国首个5G+4K电竞演播室</strong></td></tr>
<tr><td>跨媒体大数据与智能计算实验室</td><td>⭕ AI方向实验室</td></tr>
<tr><td>院士/团队</td><td>❌ 无院士团队。但有硕导团队,科研经费累计超千万。</td></tr>
</tbody></table>
<div class="good-box" style="margin-top:8px;">
<h5>✅ 评估</h5>
<p>省级重点实验室和全国首个5G+4K电竞演播室是明显优势,科研平台层级三校中最高。</p>
</div>
</div>
</div>
</div>
<!-- ====== 三、学术成果与科研实力 ====== -->
<div class="section">
<h2>三、学术成果与重要刊物发表</h2>
<table>
<tr><th>维度</th><th>浙江科技大学</th><th>桂电(学校层面)</th><th>浙江传媒学院</th></tr>
<tr><td>ESI全球前1%学科</td><td></td><td style="color:#4caf84;">5个(工程、材料、计算机、化学、环境)</td><td></td></tr>
<tr><td>博士学位授权点</td><td>无(硕士点)</td><td style="color:#4caf84;">8个一级学科博士点</td><td>无(有硕士点)</td></tr>
<tr><td>科研经费</td><td>校级科研经费中等</td><td style="color:#4caf84;">省部级以上项目多项</td><td style="color:#f0c040;">累计超千万,国家自然科学基金4项</td></tr>
<tr><td>重要刊物成果</td><td>校级优势特色专业层级的科研产出</td><td style="color:#f0c040;">全校SCI/EI论文多,但数媒方向成果有限</td><td style="color:#f0c040;">省级重点实验室支撑的影视媒体方向成果</td></tr>
<tr><td>学术评估</td><td>⭕ 以教学和就业为导向,学术科研非强项</td><td>⭕ 学校整体科研强,但数媒中外合作项目偏应用</td><td>⭕ 省级重点实验室支撑,影视媒体方向有积累</td></tr>
</table>
<div class="risk-box">
<h5>⚠️ 重要提醒</h5>
<p>数字媒体技术是一个<strong>应用型专业</strong>,学术论文发表和科研成果对本科就业的直接帮助有限。对天恒而言,<strong>课程项目作品集 + 竞赛获奖 + 实习经验</strong> 这三项远比学术论文重要。因此学术成果维度在本科选校中的权重应低于项目制教学和企业实践。</p>
</div>
</div>
<!-- ====== 四、国家级竞赛成绩 ====== -->
<div class="section">
<h2>四、国家级竞赛成绩与学生创新能力</h2>
<div class="compare-grid">
<div class="card">
<h4>🏆 浙江科技大学 · 竞赛成绩</h4>
<div class="tags"><span class="tag hot">国创项目5项</span><span class="tag good">挑战杯省一等奖</span><span class="tag good">国家级省级竞赛50+项</span></div>
<ul style="color:var(--text-muted);font-size:0.9em;margin:10px 0;padding-left:20px;">
<li>国家级大学生创新创业训练计划项目5项</li>
<li>浙江省"挑战杯"创业大赛一等奖</li>
<li>国家级、省级科技竞赛奖项和创新项目数十项</li>
<li>近5年全校国家级以上学科竞赛奖项3200+项(全校)</li>
</ul>
</div>
<div class="card">
<h4>🏆 桂电(学校整体)· 竞赛成绩</h4>
<div class="tags"><span class="tag hot">全国竞赛榜第44位</span><span class="tag gold">互联网+大赛金奖</span></div>
<ul style="color:var(--text-muted);font-size:0.9em;margin:10px 0;padding-left:20px;">
<li>全国普通高校大学生竞赛总榜单<strong>第44位</strong></li>
<li>中国"互联网+"大学生创新创业大赛<strong>金奖+银奖</strong></li>
<li>全国大学生电子设计竞赛最高奖<strong>"索尼杯"+"TI杯"</strong></li>
<li>中外合作项目组织学生征战上述国家级赛事</li>
</ul>
<div class="good-box" style="margin-top:8px;">
<h5>✅ 竞赛资源突出</h5>
<p>桂电竞赛排名全国44是重要指标。中外合作项目承诺组织学生参赛,对作品积累和简历非常有帮助。</p>
</div>
</div>
<div class="card">
<h4>🏆 浙江传媒学院 · 竞赛成绩</h4>
<div class="tags"><span class="tag good">电子设计竞赛全国一等奖</span></div>
<ul style="color:var(--text-muted);font-size:0.9em;margin:10px 0;padding-left:20px;">
<li>全国大学生电子设计竞赛全国一等奖</li>
<li>省级一等奖、二等奖若干</li>
<li>浙江省教学成果奖1项</li>
<li>浙江省科技进步奖2项(教师团队)</li>
</ul>
</div>
</div>
</div>
<!-- ====== 五、企业实践基地与校企合作 ====== -->
<div class="section">
<h2>五、企业实践基地与校企合作资源</h2>
<table>
<tr><th>维度</th><th>浙江科技大学</th><th>桂电中外合作</th><th>浙江传媒学院</th></tr>
<tr><td>合作企业</td><td>网易、支付宝、蘑菇街、道富、恒生电子、浙大网新、浙江大华、中央电视台等</td><td style="color:#4caf84;"><strong>金山西山居</strong>(游戏开发!)、上海怿星、广西中微科技</td><td>科大讯飞(人工智能合作)、各大电视台</td></tr>
<tr><td>实习安排</td><td>与多家企业合作建有校外实习基地</td><td style="color:#4caf84;">明确安排实习项目</td><td>产教融合示范基地</td></tr>
<tr><td>企业真实项目</td><td>⚠️ 描述较笼统"校外实习基地"</td><td style="color:#4caf84;">✅ 引入Adobe等企业真实项目</td><td>依托省级产教融合基地</td></tr>
<tr><td>伯克利企业资源</td><td></td><td style="color:#4caf84;">✅ 伯克利学院与数千家美国企业合作,定期参观+企业讲座</td><td></td></tr>
<tr><td>就业区域</td><td style="color:#4caf84;">⬆ 杭州本地上市公司密集,实习就业便利</td><td>⚠️ 桂林地理位置受限,但就业集中在珠三角/长三角</td><td style="color:#4caf84;">⬆ 杭州传媒产业聚集</td></tr>
</table>
<div class="good-box">
<h5>🎯 对天恒的就业竞争力分析</h5>
<p><strong>浙科大:</strong>杭州本地实习(网易/阿里系),机会最多。<br>
<strong>桂电中外合作:</strong>金山西山居实习是独特优势(国内顶级游戏公司),但桂林地理不便。<br>
<strong>浙传媒:</strong>传媒行业资源丰富,但游戏方向对接不如前两者。</p>
</div>
</div>
<!-- ====== 六、就业与薪资全面分析 ====== -->
<div class="section">
<h2>六、历史就业数据与薪资分析</h2>
<h3>📊 浙江科技大学2025届就业质量报告(全校数据)</h3>
<table>
<tr><th>指标</th><th>数据</th><th>对比参考</th></tr>
<tr><td>毕业去向落实率</td><td style="color:#4caf84;">95.72%</td><td>全国本科均值约91%</td></tr>
<tr><td>本科升学率(校本部)</td><td style="color:#4caf84;">23.83%</td><td>全国均值约20%</td></tr>
<tr><td>出国留学占比</td><td>6.86%293人)</td><td>其中74%进入世界前200大学</td></tr>
<tr><td>境内升学人数</td><td>663人(15.52%</td><td>163人进入双一流高校</td></tr>
<tr><td>高质量就业率</td><td style="color:#4caf84;">44.97%</td><td>比2024届上升4个百分点</td></tr>
<tr><td>浙江省内就业</td><td>77.12%</td><td>长三角就业集中</td></tr>
<tr><td>热门行业</td><td>制造业23.79% / 信息传输16.80%</td><td>工科主导</td></tr>
</table>
<p style="color:var(--text-muted);font-size:0.9em;margin-top:10px;">
📌 注:以上为全校数据。数媒专业数据见"初次就业平均年薪位于省属高校同类专业前茅",具体数值未公开。高质量就业率从41%→44.97%持续上升,趋势良好。
</p>
<h3 style="margin-top:25px;">💼 数字媒体技术对口岗位薪资全景</h3>
<table>
<tr><th>就业方向</th><th>岗位技能要求</th><th>应届起薪</th><th>3-5年薪资</th><th>知识技能与课程匹配度</th></tr>
<tr>
<td>游戏开发工程师</td>
<td>Unity/Unreal、C#/C++、游戏架构、Shader</td>
<td>15-25万</td>
<td>30-60万</td>
<td style="color:#4caf84;">⭐⭐⭐⭐ 课程覆盖引擎基础</td>
</tr>
<tr>
<td>游戏策划/关卡设计</td>
<td>设计文档、数值策划、关卡原型、用户心理</td>
<td>12-20万</td>
<td>25-45万</td>
<td style="color:#4caf84;">⭐⭐⭐⭐ 游戏策划课直接对应</td>
</tr>
<tr>
<td>UI/UX交互设计师</td>
<td>Figma/原型、用户研究、设计系统、A/B测试</td>
<td>12-18万</td>
<td>25-40万</td>
<td style="color:#4caf84;">⭐⭐⭐⭐⭐ 课程+作品集直接匹配</td>
</tr>
<tr>
<td>VR/AR开发工程师</td>
<td>Unity XR、ARKit/ARCore、空间交互、性能优化</td>
<td>15-22万</td>
<td>30-50万</td>
<td style="color:#f0c040;">⭐⭐⭐ 前沿方向需自学补充</td>
</tr>
<tr>
<td>移动App开发</td>
<td>Swift/Kotlin、跨平台框架、API、架构模式</td>
<td>10-18万</td>
<td>20-35万</td>
<td style="color:#4caf84;">⭐⭐⭐⭐ 双平台覆盖</td>
</tr>
<tr>
<td>前端/全栈开发</td>
<td>React/Vue/Node/数据库</td>
<td>10-16万</td>
<td>20-35万</td>
<td style="color:#4caf84;">⭐⭐⭐⭐ 课程覆盖全面</td>
</tr>
<tr>
<td>数字媒体/视频后期</td>
<td>Premiere/AE/达芬奇、编解码</td>
<td>8-14万</td>
<td>15-28万</td>
<td style="color:#4caf84;">⭐⭐⭐⭐ 实验室设备支撑</td>
</tr>
</table>
<div class="risk-box" style="margin-top:15px;">
<h5>⚠️ 薪资数据说明</h5>
<p>薪资数据为行业综合参考(来源:智联/猎聘/脉脉/BOSS直聘2025-2026报告)。头部企业实际薪资可能更高,但前提是<strong>有高质量作品集+实习经历</strong>。没有项目经验的毕业生起薪可能低于表中值30-50%。</p>
</div>
<h3 style="margin-top:25px;">🎯 课程—岗位竞争力综合评分</h3>
<table>
<tr><th>评估维度</th><th>浙科大</th><th>桂电中外合作</th><th>浙传媒</th></tr>
<tr><td>课程体系完善度</td><td>⭐⭐⭐⭐ (4.0)</td><td>⭐⭐⭐⭐⭐ (4.5)</td><td>⭐⭐⭐⭐ (3.8)</td></tr>
<tr><td>游戏方向聚焦度</td><td>⭐⭐⭐⭐ (4.2)</td><td>⭐⭐⭐⭐⭐ (4.5)</td><td>⭐⭐⭐ (3.0)</td></tr>
<tr><td>岗位技能匹配度</td><td>⭐⭐⭐⭐ (4.0)</td><td>⭐⭐⭐⭐ (4.2)</td><td>⭐⭐⭐ (3.5)</td></tr>
<tr><td>实验室/实践平台</td><td>⭐⭐⭐⭐ (3.8)</td><td>⭐⭐⭐⭐ (4.0)</td><td>⭐⭐⭐⭐ (4.2)</td></tr>
<tr><td>竞赛资源</td><td>⭐⭐⭐⭐ (3.5)</td><td>⭐⭐⭐⭐⭐ (4.5)</td><td>⭐⭐⭐ (3.5)</td></tr>
<tr><td>企业实践基地</td><td>⭐⭐⭐⭐ (4.0)</td><td>⭐⭐⭐⭐ (4.2)</td><td>⭐⭐⭐⭐ (3.8)</td></tr>
<tr><td>历史就业数据</td><td>⭐⭐⭐⭐ (4.0)</td><td>⭐ (1.5) 首年无数据</td><td>⭐⭐⭐ (3.5)</td></tr>
<tr><td><strong>综合职场竞争力</strong></td><td style="color:#4caf84;"><strong>⭐⭐⭐⭐ (4.0)</strong></td><td style="color:#4caf84;"><strong>⭐⭐⭐⭐ (3.9)</strong></td><td style="color:#f0c040;"><strong>⭐⭐⭐ (3.5)</strong></td></tr>
</table>
</div>
<!-- ====== 七、各校完整对比 ====== -->
<div class="section">
<h2>七、三校综合对比 · 天恒决策框架</h2>
<table>
<tr><th style="width:140px">维度</th><th>🥇 浙科大</th><th>🥇 桂电中外合作</th><th>🥉 浙传媒</th></tr>
<tr><td>分数/位次</td><td style="color:#4caf84;">573分/84385 ✅ 稳</td><td style="color:#f0c040;">预估560~585 ⚠️ 首年</td><td style="color:#f0c040;">582分 ⚠️ 冲</td></tr>
<tr><td>课程—岗位匹配</td><td>⭐⭐⭐⭐ 全面均衡</td><td>⭐⭐⭐⭐⭐ 元游戏/VR前沿</td><td>⭐⭐⭐ 偏传媒</td></tr>
<tr><td>实验室资源</td><td>⭐⭐⭐⭐ 5个实验室</td><td>⭐⭐⭐⭐ 谷歌认证联合实验室</td><td>⭐⭐⭐⭐⭐ 省级重点实验室</td></tr>
<tr><td>院士/学术</td><td>❌ 无</td><td>❌ 项目无</td><td>❌ 无</td></tr>
<tr><td>竞赛成绩</td><td>⭐⭐⭐ 挑战杯省一等奖</td><td>⭐⭐⭐⭐⭐ 全国第44位</td><td>⭐⭐⭐ 电子设计全国一等奖</td></tr>
<tr><td>企业实践基地</td><td>⭐⭐⭐⭐ 杭州网易/阿里生态</td><td>⭐⭐⭐⭐ 西山居+伯克利企业网</td><td>⭐⭐⭐ 传媒行业为主</td></tr>
<tr><td>历史就业数据</td><td>⭐⭐⭐⭐⭐ 18年验证</td><td>⭐ 首年无数据</td><td>⭐⭐⭐⭐ 国一流专业背书</td></tr>
<tr><td>小班/导师制</td><td>⭐⭐⭐ 年均33人适中</td><td>⭐⭐⭐⭐⭐ 84%班级<20人</td><td>⭐⭐ 无明确数据</td></tr>
<tr><td>团队协作项目制</td><td>⭐⭐⭐⭐⭐ 明确+连续</td><td>⭐⭐⭐⭐ 顶石设计+实训</td><td>⭐⭐⭐ 未明确强调</td></tr>
<tr><td>国际化</td><td>⭐⭐⭐ 美国游学+外教</td><td>⭐⭐⭐⭐⭐ 4+0双学位全英文</td><td>⭐⭐ 国际交流奖学金</td></tr>
<tr><td>地理位置</td><td style="color:#4caf84;">⭐ 杭州·天恒家乡</td><td>⚠️ 桂林·实习资源有限</td><td style="color:#4caf84;">⭐ 杭州</td></tr>
<tr><td>学费(4年)</td><td style="color:#4caf84;">≈2.4万</td><td style="color:#e94560;">≈18万(含住宿)</td><td style="color:#4caf84;">≈2.4万</td></tr>
<tr><td>风险等级</td><td style="color:#4caf84;">低 ✅</td><td style="color:#e94560;">中高 ⚠️ 首年+地理</td><td style="color:#f0c040;">中 ⚠️ 方向偏差风险</td></tr>
</table>
</div>
<!-- ====== 八、行动指南 ====== -->
<div class="section">
<div class="summary-card">
<h2>📋 给天恒爸爸的综合决策建议</h2>
<p style="margin-top:15px;">
<strong>优先级:</strong><br>
🥇 <strong>浙江科技大学 数字媒体技术</strong>(573分/84385)— 安全、成熟、杭州、游戏方向明确、就业数据可验证。<br>
🥇 <strong>桂电中外合作 数字媒体技术</strong>(预估560~585)— 小班制+双学位+西山居实习,但首年招生+桂林偏远需权衡。<br>
🥉 <strong>浙江传媒学院 数字媒体技术</strong>(582分)— 国一流专业,但方向偏传媒,需确认天恒兴趣。<br><br>
<strong>出分后第一动作:</strong>拿位次卡浙科大84385。如果位次≤84000,浙科大是稳档首选。<br>
<strong>关于院士/学术成果:</strong>三校均无数字媒体技术方向的院士团队。对以就业为导向的本科而言,<strong>项目制+竞赛+实习</strong> 的权重远高于学术科研,不必因此纠结。<br>
<strong>关于岗位竞争力:</strong>三校课程体系均能覆盖主流招聘岗位的80%以上技能要求,关键差距在于<strong>是否做出高质量作品集</strong>——这是浙科大项目制教学的明显优势。
</p>
</div>
</div>
</div>
</body>
</html>
@@ -0,0 +1,233 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>电子信息工程院校深度调研报告 — 天恒专属</title>
<style>
:root { --bg:#1a1a2e; --card:#16213e; --accent:#e94560; --gold:#f0c040; --green:#4caf84; --blue:#4da6ff; --text:#e0e0e0; --text-muted:#a0a0b0; --border:#2a2a4a; --tag-bg:#0f3460; --risk-bg:#2a1a1a; --good-bg:#1a2a1a; }
* { margin:0; padding:0; box-sizing:border-box; }
body { background:var(--bg); color:var(--text); font-family:-apple-system,'Microsoft YaHei',sans-serif; line-height:1.7; padding:0; }
.container { max-width:1100px; margin:0 auto; padding:20px; }
.hero { text-align:center; padding:40px 20px 30px; border-bottom:2px solid var(--accent); margin-bottom:30px; }
.hero h1 { font-size:1.9em; color:#fff; margin-bottom:10px; }
.hero .subtitle { color:var(--text-muted); }
.hero .meta { margin-top:15px; display:flex; gap:12px; justify-content:center; flex-wrap:wrap; }
.hero .meta span { background:var(--tag-bg); padding:4px 14px; border-radius:20px; font-size:0.9em; }
.section { margin:35px 0; }
.section h2 { color:#fff; font-size:1.35em; border-left:4px solid var(--accent); padding-left:15px; margin-bottom:20px; }
.section h3 { color:var(--blue); font-size:1.1em; margin:20px 0 10px; }
.card { background:var(--card); border-radius:12px; padding:25px; margin:15px 0; border:1px solid var(--border); }
.card.top-pick { border-color:var(--gold); border-width:2px; }
.card.dim { opacity:0.75; }
.card h4 { font-size:1.1em; color:#fff; margin-bottom:8px; }
.tags { display:flex; gap:8px; flex-wrap:wrap; margin:10px 0; }
.tag { background:var(--tag-bg); padding:3px 12px; border-radius:14px; font-size:0.85em; color:var(--blue); }
.tag.hot { background:var(--accent); color:#fff; }
.tag.good { background:var(--green); color:#fff; }
.tag.gold { background:var(--gold); color:#1a1a2e; }
table { width:100%; border-collapse:collapse; margin:15px 0; font-size:0.9em; }
th { background:var(--tag-bg); color:#fff; padding:8px 10px; text-align:left; border-bottom:2px solid var(--accent); }
td { padding:7px 10px; border-bottom:1px solid var(--border); color:var(--text); }
tr:hover td { background:rgba(255,255,255,0.03); }
.risk-box { background:var(--risk-bg); border-left:4px solid var(--accent); padding:15px 20px; margin:15px 0; border-radius:0 8px 8px 0; }
.risk-box h5 { color:var(--accent); margin-bottom:6px; }
.good-box { background:var(--good-bg); border-left:4px solid var(--green); padding:15px 20px; margin:15px 0; border-radius:0 8px 8px 0; }
.good-box h5 { color:var(--green); margin-bottom:6px; }
.fit-bar { display:flex; align-items:center; gap:10px; margin:8px 0; }
.fit-bar .label { width:100px; color:var(--text-muted); font-size:0.9em; }
.fit-bar .bar { flex:1; height:10px; background:var(--border); border-radius:5px; overflow:hidden; }
.fit-bar .bar .fill { height:100%; border-radius:5px; }
.fill.green { background:var(--green); }
.fill.yellow { background:var(--gold); }
.fill.red { background:var(--accent); }
.compare-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)); gap:20px; margin:20px 0; }
.badge { display:inline-block; padding:2px 10px; border-radius:10px; font-size:0.8em; font-weight:600; }
.badge-gold { background:var(--gold); color:#1a1a2e; }
.badge-green { background:var(--green); color:#fff; }
.badge-blue { background:var(--blue); color:#fff; }
.badge-red { background:var(--accent); color:#fff; }
.summary-card { background:linear-gradient(135deg,#1a2a1a 0%,#0f3460 100%); border:2px solid var(--green); border-radius:16px; padding:30px; margin:25px 0; }
.summary-card h2 { color:var(--green); font-size:1.4em; border-left:none; padding-left:0; }
@media (max-width:640px) { .container { padding:12px; } .hero h1 { font-size:1.4em; } table { font-size:0.8em; } }
</style>
</head>
<body>
<div class="container">
<div class="hero">
<h1>📡 电子信息工程 · 院校深度调研报告</h1>
<div class="subtitle">天恒保底方向 · 课程体系 × 岗位匹配 × 实验室/竞赛 × 就业薪资</div>
<div class="meta">
<span>📅 2026年6月24日</span>
<span>🎯 保底方向(20%-25%志愿)</span>
<span>💰 自估 591 分</span>
<span>🧬 物化生</span>
</div>
</div>
<div style="background:#fff3cd;border:2px solid #ffc107;border-radius:8px;padding:14px 20px;margin:16px 0;font-size:14px;color:#856404;text-align:center;">
<strong>⚠️ 出分前声明:</strong>报告中分数为高考出分前预估,所有建议将在<strong>6月26日官方出分后</strong>基于省排名重新校准。
</div>
<div class="summary-card">
<h2>🎯 核心结论</h2>
<p style="margin-top:15px;font-size:1.05em;">
电子信息工程对天恒是 <strong style="color:#f0c040;">稳健保底方向(适配度7.1/10</strong>
就业面宽、薪资稳健,但课程以硬件/电路/信号处理为核心,与天恒的兴趣(游戏设计/交互创作)关联度较低。
<strong>推荐策略:</strong>数字媒体技术主冲锋(35%-45%志愿)+ 电子信息保底(20%-25%志愿)。
</p>
</div>
<!-- ====== 一、课程体系与培养方案 ====== -->
<div class="section">
<h2>一、课程体系与培养方案深度分析</h2>
<div class="compare-grid">
<div class="card top-pick">
<h4>🏆 中国计量大学 · 电子信息工程</h4>
<span class="badge badge-green">省级一流专业 · 工程认证</span>
<table>
<tr><th>维度</th><th>详情</th></tr>
<tr><td>专业地位</td><td>浙江省首个通过工程认证的电子信息工程专业(2015),省重点/优势/一流专业</td></tr>
<tr><td>培养方向</td><td>电子计量测试、智能物联网络、信息处理与应用三大方向</td></tr>
<tr><td>核心课程</td><td>模拟/数字电子线路、通信电路、信号与系统、电磁场与微波、数字信号处理、电子测量技术、物联网技术、射频微波器件课程设计</td></tr>
<tr><td>特色方向</td><td>"计量+"工科特色,融合计量测试能力</td></tr>
<tr><td>课程建设</td><td>国家级一流课程、国家质量工程双语示范课程、教育部来华留学英语品牌课程</td></tr>
<tr><td>实践平台</td><td>浙江省重点实验教学示范中心、4类实践平台、5个课程群</td></tr>
</table>
</div>
<div class="card">
<h4>📌 浙江科技大学 · 电子信息工程</h4>
<span class="badge badge-blue">保档选择</span>
<table>
<tr><th>维度</th><th>详情</th></tr>
<tr><td>培养定位</td><td>电子设备和信息系统设计、应用开发,应用型人才</td></tr>
<tr><td>典型课程</td><td>电路分析、数字/模拟电路、信号与系统、通信原理、嵌入式系统、DSP技术</td></tr>
<tr><td>实践环节</td><td>电子工艺实习、电子电路设计实习、嵌入式系统设计实习</td></tr>
<tr><td>评估</td><td>⭐ 课程体系偏传统,缺乏特色方向,与中量大相比竞争力偏弱</td></tr>
</table>
</div>
</div>
<h3>📊 课程 vs 招聘平台岗位技能匹配</h3>
<table>
<tr><th>对口岗位</th><th>招聘平台技能要求</th><th>中量大课程覆盖</th><th>浙科大课程覆盖</th></tr>
<tr><td>嵌入式工程师</td><td>C/STM32/RTOS/Linux驱动/I2C SPI UART</td><td style="color:#4caf84;">✅ 嵌入式方向课程</td><td style="color:#4caf84;">✅ 嵌入式系统设计</td></tr>
<tr><td>硬件工程师</td><td>Altium Designer/原理图/PCB/信号完整性</td><td style="color:#4caf84;">✅ 射频/电子线路课程</td><td style="color:#f0c040;">⚠️ 基础覆盖</td></tr>
<tr><td>通信工程师</td><td>通信协议/网络优化/5G/无线</td><td style="color:#4caf84;">✅ 通信电路+物联网</td><td style="color:#f0c040;">⚠️ 通信原理课程</td></tr>
<tr><td>测试/验证工程师</td><td>测试用例/自动化/示波器/万用表</td><td style="color:#4caf84;">✅✅ 电子测量技术是核心特色</td><td style="color:#f0c040;">⚠️ 基础覆盖</td></tr>
<tr><td>FPGA开发工程师</td><td>Verilog/VHDL/Xilinx/时序分析</td><td style="color:#f0c040;">⚠️ 现代逻辑设计覆盖基础</td><td style="color:#e94560;">❌ 未明确</td></tr>
<tr><td>射频工程师</td><td>ADS/HFSS/微波/天线</td><td style="color:#4caf84;">✅ 电磁场与微波+射频课程</td><td style="color:#e94560;">❌ 未明确</td></tr>
</table>
</div>
<!-- ====== 二、实验室与院士团队 ====== -->
<div class="section">
<h2>二、实验室 · 科研平台与师资力量</h2>
<table>
<tr><th>维度</th><th>中国计量大学</th><th>浙江科技大学</th></tr>
<tr><td>省部级实验室</td><td style="color:#4caf84;">✅ 浙江省"电磁波信息技术与计量检测"重点实验室</td><td>⭕ 无省级重点实验室</td></tr>
<tr><td>实验教学中心</td><td style="color:#4caf84;">✅ 浙江省重点建设实验教学示范中心(计算机网络通信)</td><td>⭕ 校级实验室</td></tr>
<tr><td>竞赛基地</td><td style="color:#4caf84;">✅ 智能车/电子设计/智能互联/5G 4个竞赛基地</td><td>⭕ 有校级竞赛资源</td></tr>
<tr><td>专任教师</td><td>28人,教授5人,博士20人(71.4%)</td><td>信息学院师资(未专项统计)</td></tr>
<tr><td>院士/国家级人才</td><td style="color:#4caf84;">✅ 聘请姚建铨(中科院院士)、李尔平(工程院外籍院士)、姚育东(加拿大院士)任兼职教授</td><td>❌ 无院士</td></tr>
<tr><td>高层次人才</td><td>浙江省领军人才/青年拔尖人才/151人才/学科带头人等</td><td>校级人才</td></tr>
<tr><td>科研经费</td><td style="color:#4caf84;">近5年到位科研经费7762万元</td><td></td></tr>
<tr><td>学术论文</td><td style="color:#4caf84;">SCI/EI检索341篇,专利117项</td><td></td></tr>
</table>
</div>
<!-- ====== 三、竞赛成绩 ====== -->
<div class="section">
<h2>三、国家级竞赛成绩</h2>
<div class="compare-grid">
<div class="card top-pick">
<h4>🏆 中国计量大学 · 竞赛成果</h4>
<div class="tags"><span class="tag hot">智能车全国一等奖30+项</span><span class="tag good">电子设计全国奖20+人次</span><span class="tag good">嵌入式全国一等奖4项</span></div>
<ul style="color:var(--text-muted);font-size:0.9em;margin:10px 0;padding-left:20px;">
<li><strong>智能车竞赛(赛博智能车实验室)</strong>:全国总决赛一等奖、二等奖30余项,省级奖数百项</li>
<li><strong>嵌入式芯片与系统设计</strong>:国家一等奖4项、二等奖3项、三等奖8项</li>
<li><strong>电子设计竞赛</strong>:国家一等奖、二等奖20余人次,省级逾百项</li>
<li><strong>挑战杯</strong>2024年度"揭榜挂帅"专项赛国家二等奖</li>
</ul>
</div>
<div class="card">
<h4>📌 浙江科技大学</h4>
<ul style="color:var(--text-muted);font-size:0.9em;margin:10px 0;padding-left:20px;">
<li>全校近5年获国家级以上学科竞赛奖项3200+项</li>
<li>自动化/电气学院竞赛资源较多</li>
</ul>
</div>
</div>
</div>
<!-- ====== 四、就业与薪资 ====== -->
<div class="section">
<h2>四、就业数据与薪资分析</h2>
<div class="compare-grid">
<div class="card top-pick">
<h4>🏆 中国计量大学 · 就业数据</h4>
<table>
<tr><td>毕业去向落实率</td><td style="color:#4caf84;">基本100%</td></tr>
<tr><td>升学率(含深造)</td><td style="color:#4caf84;">>40%</td></tr>
<tr><td>主要就业单位</td><td>海康威视、大华、宇视科技、华为、中兴、阿里</td></tr>
<tr><td>主要升学院校</td><td>东南大学、电子科技大学、南邮、西邮、杭电</td></tr>
<tr><td>就业领域</td><td>视频监控、通信、金融、电力、高新科技</td></tr>
</table>
</div>
<div class="card">
<h4>📌 电子信息工程薪资参考(行业数据)</h4>
<table>
<tr><th>岗位</th><th>应届起薪</th><th>3-5年</th></tr>
<tr><td>嵌入式工程师</td><td>10-18万</td><td>20-35万</td></tr>
<tr><td>硬件工程师</td><td>10-16万</td><td>20-30万</td></tr>
<tr><td>通信工程师</td><td>9-15万</td><td>18-30万</td></tr>
<tr><td>FPGA工程师</td><td>12-20万</td><td>25-45万</td></tr>
<tr><td>射频工程师</td><td>12-22万</td><td>25-50万(IC方向更高)</td></tr>
</table>
</div>
</div>
</div>
<!-- ====== 五、核心推荐院校 ====== -->
<div class="section">
<h2>五、分层推荐院校</h2>
<table>
<tr><th>梯队</th><th>院校</th><th>分数/位次</th><th>推荐理由</th><th>推荐强度</th></tr>
<tr><td style="color:#e94560;"></td><td>浙江理工大学</td><td>609/42533</td><td>电子信息方向强,但分数可能超天恒上限</td><td>⭐⭐</td></tr>
<tr><td style="color:#e94560;"></td><td>浙江工商大学</td><td>604/47k</td><td>综合实力强,但电子信息非特色方向</td><td>⭐⭐</td></tr>
<tr><td style="color:#f0c040;"></td><td style="color:#4caf84;"><strong>中国计量大学</strong></td><td><strong>597-603/50k-55k</strong></td><td><strong>工程认证+院士兼职+竞赛强+就业100%+>40%升学</strong></td><td style="color:#4caf84;"><strong>⭐⭐⭐⭐⭐</strong></td></tr>
<tr><td style="color:#f0c040;"></td><td>温州大学</td><td>592-594/59k-61k</td><td>电子信息工程有特色,分数匹配</td><td>⭐⭐⭐</td></tr>
<tr><td style="color:#4caf84;"></td><td>浙江科技大学</td><td>578-583/72k-85k</td><td>绝对安全保底,电子信息方向中规中矩</td><td>⭐⭐⭐</td></tr>
<tr><td style="color:#4caf84;"></td><td>嘉兴大学</td><td>572-577/—</td><td>安全保底</td><td>⭐⭐</td></tr>
</table>
<div class="good-box">
<h5>🎯 天恒策略建议</h5>
<p><strong>中国计量大学 电子信息工程</strong>(597-603分)是稳档首选——工程认证+近乎100%就业率+>40%升学率+院士兼职+竞赛强,综合实力远超同分段院校。<br>
天恒591分上中量大电子信息有难度(略低于最低分),但出分后如有591+且位次≤55000,可作为冲一冲的优质选择。</p>
</div>
<div class="risk-box">
<h5>⚠️ 适配提醒</h5>
<p>电子信息工程的课程以<strong>硬件电路、信号处理、通信原理</strong>为核心,需要较强的数理基础和抽象思维能力。天恒的数学85分可以应对,但学习体验与"做游戏/做设计"完全不同。<br>
<strong>这个专业是"保底",而非"热爱"。</strong></p>
</div>
</div>
<div class="summary-card">
<h2>📋 核心决策建议</h2>
<p style="margin-top:15px;">
<strong>中量大电子信息工程</strong>(597-603)是冲档优质选择,但分数门槛略高。<br>
<strong>温州大学/浙江科技大学</strong>作为稳保选择。<br>
<strong>建议占比:</strong>数字媒体技术35%-45% + 电子信息工程20%-25%(保底)。<br>
<strong>出分后:</strong>用位次卡学校,位次≤50000可冲中量大,位次≤72000可保浙科大。
</p>
</div>
</div>
</body>
</html>
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,190 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>自动化专业院校深度调研报告 — 天恒专属</title>
<style>
:root { --bg:#1a1a2e; --card:#16213e; --accent:#e94560; --gold:#f0c040; --green:#4caf84; --blue:#4da6ff; --text:#e0e0e0; --text-muted:#a0a0b0; --border:#2a2a4a; --tag-bg:#0f3460; --risk-bg:#2a1a1a; --good-bg:#1a2a1a; }
* { margin:0; padding:0; box-sizing:border-box; }
body { background:var(--bg); color:var(--text); font-family:-apple-system,'Microsoft YaHei',sans-serif; line-height:1.7; padding:0; }
.container { max-width:1100px; margin:0 auto; padding:20px; }
.hero { text-align:center; padding:40px 20px 30px; border-bottom:2px solid var(--accent); margin-bottom:30px; }
.hero h1 { font-size:1.9em; color:#fff; margin-bottom:10px; }
.hero .subtitle { color:var(--text-muted); }
.hero .meta { margin-top:15px; display:flex; gap:12px; justify-content:center; flex-wrap:wrap; }
.hero .meta span { background:var(--tag-bg); padding:4px 14px; border-radius:20px; font-size:0.9em; }
.section { margin:35px 0; }
.section h2 { color:#fff; font-size:1.35em; border-left:4px solid var(--accent); padding-left:15px; margin-bottom:20px; }
.section h3 { color:var(--blue); font-size:1.1em; margin:20px 0 10px; }
.card { background:var(--card); border-radius:12px; padding:25px; margin:15px 0; border:1px solid var(--border); }
.card.top-pick { border-color:var(--gold); border-width:2px; }
.card h4 { font-size:1.1em; color:#fff; margin-bottom:8px; }
.tags { display:flex; gap:8px; flex-wrap:wrap; margin:10px 0; }
.tag { background:var(--tag-bg); padding:3px 12px; border-radius:14px; font-size:0.85em; color:var(--blue); }
.tag.hot { background:var(--accent); color:#fff; }
.tag.good { background:var(--green); color:#fff; }
.tag.gold { background:var(--gold); color:#1a1a2e; }
table { width:100%; border-collapse:collapse; margin:15px 0; font-size:0.9em; }
th { background:var(--tag-bg); color:#fff; padding:8px 10px; text-align:left; border-bottom:2px solid var(--accent); }
td { padding:7px 10px; border-bottom:1px solid var(--border); color:var(--text); }
tr:hover td { background:rgba(255,255,255,0.03); }
.risk-box { background:var(--risk-bg); border-left:4px solid var(--accent); padding:15px 20px; margin:15px 0; border-radius:0 8px 8px 0; }
.risk-box h5 { color:var(--accent); margin-bottom:6px; }
.good-box { background:var(--good-bg); border-left:4px solid var(--green); padding:15px 20px; margin:15px 0; border-radius:0 8px 8px 0; }
.good-box h5 { color:var(--green); margin-bottom:6px; }
.fit-bar { display:flex; align-items:center; gap:10px; margin:8px 0; }
.fit-bar .label { width:100px; color:var(--text-muted); font-size:0.9em; }
.fit-bar .bar { flex:1; height:10px; background:var(--border); border-radius:5px; overflow:hidden; }
.fit-bar .bar .fill { height:100%; border-radius:5px; }
.fill.green { background:var(--green); }
.fill.yellow { background:var(--gold); }
.fill.red { background:var(--accent); }
.compare-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)); gap:20px; margin:20px 0; }
.badge { display:inline-block; padding:2px 10px; border-radius:10px; font-size:0.8em; font-weight:600; }
.badge-gold { background:var(--gold); color:#1a1a2e; }
.badge-green { background:var(--green); color:#fff; }
.badge-blue { background:var(--blue); color:#fff; }
.summary-card { background:linear-gradient(135deg,#1a2a1a 0%,#0f3460 100%); border:2px solid var(--green); border-radius:16px; padding:30px; margin:25px 0; }
.summary-card h2 { color:var(--green); font-size:1.4em; border-left:none; padding-left:0; }
@media (max-width:640px) { .container { padding:12px; } .hero h1 { font-size:1.4em; } table { font-size:0.8em; } }
</style>
</head>
<body>
<div class="container">
<div class="hero">
<h1>⚙️ 自动化 · 院校深度调研报告</h1>
<div class="subtitle">天恒补充保底方向 · 宽口径工科 · 机器人+AI控制方向</div>
<div class="meta">
<span>📅 2026年6月24日</span>
<span>🎯 宽口径保底</span>
<span>💰 自估 591 分</span>
<span>🧬 物化生</span>
</div>
</div>
<div style="background:#fff3cd;border:2px solid #ffc107;border-radius:8px;padding:14px 20px;margin:16px 0;font-size:14px;color:#856404;text-align:center;">
<strong>⚠️ 出分前声明:</strong>报告中分数为高考出分前预估,所有建议将在<strong>6月26日官方出分后</strong>基于省排名重新校准。
</div>
<div class="summary-card">
<h2>🎯 核心结论</h2>
<p style="margin-top:15px;font-size:1.05em;">
自动化对天恒的适配度 <strong style="color:#f0c040;">6.0/10</strong>(多Agent评分)。
宽口径、就业面广、深造率高,但课程以控制理论/电路/数学为核心,与天恒兴趣关联度偏低。
<strong>推荐定位:</strong>数字媒体/电子信息之后的小比例补充志愿(≤10%)。
</p>
</div>
<!-- ====== 一、课程体系 ====== -->
<div class="section">
<h2>一、课程体系与培养方案分析</h2>
<div class="card top-pick">
<h4>🏆 浙江科技大学 · 自动化</h4>
<span class="badge badge-green">省一流专业 · 省重点产业学院</span>
<div class="tags"><span class="tag good">机器人控制方向</span><span class="tag good">AI应用方向</span></div>
<table>
<tr><th>维度</th><th>详情</th></tr>
<tr><td>专业地位</td><td>浙江省一流专业,省重点产业学院"机器人产业学院"支撑专业。</td></tr>
<tr><td>学科支撑</td><td>控制科学与工程为"十四五"浙江省一流学科。</td></tr>
<tr><td>培养方向</td><td><strong>机器人控制技术 + 人工智能应用技术</strong>两大核心方向。</td></tr>
<tr><td>核心课程</td><td>自动控制原理、信号与系统、智能控制基础、现代控制理论、嵌入式系统原理、计算机控制系统、智能传感与检测、人工智能与模式识别、<strong>机器人控制基础</strong>、移动机器人导航与定位、机器人软件设计、过程控制系统、运动控制系统</td></tr>
<tr><td>师资</td><td>教师28名,教授5名,博士23名。国家级人才1名,省部级人才6名。</td></tr>
<tr><td>三大特色</td><td>① 产业链-教育链-人才链三链融合;② 竞赛驱动(四轮驱动培养);③ 德国工程教育经验。</td></tr>
</table>
<div class="good-box" style="margin-top:12px;">
<h5>✅ 对天恒的潜在吸引力</h5>
<p><strong>机器人控制方向</strong>——与天恒的动手能力和对硬件的兴趣有交集<br>
• 人工智能与模式识别课程——可以与数字媒体技术的游戏AI方向衔接<br>
• 就业率98%+、升学率>50%——数据极其亮眼</p>
</div>
</div>
<div class="card">
<h4>📊 课程 vs 招聘岗位技能匹配</h4>
<table>
<tr><th>对口岗位</th><th>技能要求</th><th>浙科大课程覆盖</th><th>应届起薪</th></tr>
<tr><td>机器人控制工程师</td><td>ROS/运动学/动力学/控制算法</td><td style="color:#4caf84;">✅ 机器人控制/导航定位</td><td>12-20万</td></tr>
<tr><td>嵌入式系统工程师</td><td>STM32/RTOS/Linux驱动/C</td><td style="color:#4caf84;">✅ 嵌入式系统原理</td><td>10-18万</td></tr>
<tr><td>自动化控制工程师</td><td>PLC/DCS/SCADA/工业总线</td><td style="color:#4caf84;">✅ 过程/运动控制系统</td><td>9-16万</td></tr>
<tr><td>AI/机器学习工程师</td><td>Python/TensorFlow/PyTorch/ML</td><td style="color:#f0c040;">✅ AI与模式识别(入门)</td><td>15-25万</td></tr>
</table>
</div>
</div>
<!-- ====== 二、实验室与竞赛 ====== -->
<div class="section">
<h2>二、实验室 · 竞赛与实践资源</h2>
<table>
<tr><th>维度</th><th>浙科大自动化</th></tr>
<tr><td>学科层级</td><td>控制科学与工程——省一流学科(十四五)</td></tr>
<tr><td>产业学院</td><td>省重点"机器人产业学院"</td></tr>
<tr><td>竞赛驱动模式</td><td>智能车/电子设计/创新创业/智能机器人——四轮驱动</td></tr>
<tr><td>国际化</td><td>德国工程教育经验,定期选派学生参与国际科研项目</td></tr>
<tr><td>师资亮点</td><td>国家级人才1名,省部级人才6名</td></tr>
<tr><td>院士/团队</td><td>❌ 无院士</td></tr>
</table>
<div class="good-box">
<h5>✅ 亮点</h5>
<p>浙科大自动化专业以机器人控制为核心方向,与天恒可能感兴趣的机器人/智能硬件领域有一定交集。省一流学科+产业学院支撑,实践资源丰富。</p>
</div>
</div>
<!-- ====== 三、就业与薪资 ====== -->
<div class="section">
<h2>三、就业数据与升学</h2>
<table>
<tr><th>指标</th><th>浙科大自动化</th></tr>
<tr><td>近5年就业率</td><td style="color:#4caf84;">>98%</td></tr>
<tr><td>升学率</td><td style="color:#4caf84;">>50%(全校最高区间之一)</td></tr>
<tr><td>就业方向</td><td>移动机器人软硬件研发、嵌入式系统开发、工艺控制方案设计、移动互联网和大数据开发</td></tr>
<tr><td>典型企业</td><td>机器人/自动化/互联网/制造业头部企业</td></tr>
<tr><td>薪资水平</td><td>应届平均约9-18万(视具体岗位方向)</td></tr>
</table>
<div class="risk-box">
<h5>⚠️ 适配评估</h5>
<p>自动化宽口径、就业亮眼,但核心课程(自动控制原理、现代控制理论、运动控制等)对数学要求较高,以<strong>理论+算法</strong>为主,与天恒偏好的"做作品/做设计"学习模式差异较大。<br>
如果天恒对机器人/智能硬件本身有兴趣,可以作为补充方向;如果纯粹作为保底,学习体验可能不愉快。</p>
</div>
</div>
<!-- ====== 四、推荐院校 ====== -->
<div class="section">
<h2>四、分层推荐院校</h2>
<table>
<tr><th>梯队</th><th>院校</th><th>分数区间</th><th>推荐度</th><th>备注</th></tr>
<tr><td style="color:#f0c040;"></td><td>浙江科技大学</td><td>578-583</td><td style="color:#4caf84;">⭐⭐⭐⭐</td><td>机器人方向明确,省一流专业,就业98%+</td></tr>
<tr><td style="color:#f0c040;"></td><td>嘉兴大学</td><td>572-577</td><td>⭐⭐⭐</td><td>自动化有特色,分数匹配</td></tr>
<tr><td style="color:#f0c040;"></td><td>中国计量大学</td><td>597-603</td><td>⭐⭐⭐</td><td>自动化方向,分数略高</td></tr>
<tr><td style="color:#4caf84;"></td><td>台州学院</td><td>~544</td><td>⭐⭐</td><td>绝对保底</td></tr>
</table>
<div class="good-box">
<h5>🎯 推荐策略</h5>
<p><strong>浙科大自动化</strong>(578-583分)是保档优质选择——省一流专业+机器人方向+98%就业率+>50%升学率。天恒591分进入毫无压力。<br>
<strong>建议占比:</strong>自动化在80志愿中配≤10%(约8个志愿)作为补充保底即可。</p>
</div>
</div>
<div class="summary-card">
<h2>📋 决策建议</h2>
<p style="margin-top:15px;">
自动化作为补充保底方向,核心推荐<strong>浙科大自动化</strong><br><br>
<strong>专业优先级:</strong><br>
① 数字媒体技术(35%-45%志愿)— 主冲锋<br>
② 电子信息工程(20%-25%志愿)— 保底<br>
③ 自动化(≤10%志愿)— 补充保底<br>
④ 中外合作办学(3-7个志愿)— 优质补充<br>
⑤ 新增本科专业(≤10%志愿)— 探索<br><br>
出分后拿位次对各专业进行最终匹配校准。
</p>
</div>
</div>
</body>
</html>
@@ -0,0 +1,367 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>2026高考后 · 志愿填报行动方案</title>
<style>
* { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif; background: #f0f4f8; color: #1a1a2e; line-height: 1.8; }
.container { max-width: 900px; margin: 32px auto; padding: 0 20px 60px; }
h1 { text-align: center; font-size: 22px; color: #2e7d32; margin-bottom: 6px; }
.subtitle { text-align: center; font-size: 13px; color: #666; margin-bottom: 28px; }
.phase { display: flex; align-items: center; gap: 12px; margin: 36px 0 16px; }
.phase-num { width: 40px; height: 40px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; font-weight: 700; font-size: 18px; flex-shrink: 0; }
.phase-num.green { background: #2e7d32; }
.phase-num.blue { background: #1565c0; }
.phase h2 { font-size: 17px; color: #1a1a2e; }
.card { background: #fff; border-radius: 10px; padding: 18px 22px; margin-bottom: 14px; box-shadow: 0 1px 4px rgba(0,0,0,.08); }
.card-title { font-size: 14px; font-weight: 700; color: #2e7d32; margin-bottom: 10px; display: flex; align-items: center; gap: 8px; }
.card-title .icon { font-size: 16px; }
.timeline { border-left: 3px solid #2e7d32; margin: 10px 0 10px 8px; padding-left: 18px; }
.tl-item { margin-bottom: 14px; position: relative; }
.tl-item::before { content: ''; position: absolute; left: -24px; top: 5px; width: 10px; height: 10px; border-radius: 50%; background: #2e7d32; border: 2px solid #fff; box-shadow: 0 0 0 1px #2e7d32; }
.tl-date { font-size: 12px; color: #2e7d32; font-weight: 600; }
.tl-text { font-size: 13px; color: #333; margin-top: 2px; }
table { width: 100%; border-collapse: collapse; font-size: 13px; margin-top: 8px; }
th { background: #2e7d32; color: #fff; padding: 7px 10px; text-align: left; font-weight: 600; }
td { padding: 7px 10px; border-bottom: 1px solid #e8edf2; vertical-align: top; }
tr:nth-child(even) td { background: #f8fafc; }
.do { color: #2e7d32; font-weight: 600; }
.dont { color: #c62828; font-weight: 600; }
.alert { border-radius: 8px; padding: 12px 16px; margin: 12px 0; font-size: 13px; line-height: 1.8; }
.alert-red { background: #fde8e8; border-left: 4px solid #c62828; color: #b71c1c; }
.alert-orange { background: #fff4e8; border-left: 4px solid #e65100; color: #bf360c; }
.alert-green { background: #e8f5e9; border-left: 4px solid #2e7d32; color: #1b5e20; }
.alert-blue { background: #e8f0fe; border-left: 4px solid #1565c0; color: #0d47a1; }
.alert-purple { background: #f3e5f5; border-left: 4px solid #7b1fa2; color: #4a148c; }
.checklist { list-style: none; font-size: 13px; }
.checklist li { padding: 4px 0 4px 24px; position: relative; }
.checklist li::before { content: '✅'; position: absolute; left: 0; }
.checklist li.undo::before { content: '⬜'; }
.owner { display: inline-block; font-size: 11px; padding: 1px 8px; border-radius: 10px; margin-left: 6px; vertical-align: middle; }
.owner.mom { background: #fce4ec; color: #c2185b; }
.owner.dad { background: #e3f2fd; color: #1565c0; }
.owner.both { background: #e8f5e9; color: #2e7d32; }
hr { border: none; border-top: 1px dashed #ccc; margin: 28px 0; }
.print-btn { display: block; margin: 20px auto 0; padding: 10px 32px; background: #2e7d32; color: #fff; border: none; border-radius: 8px; font-size: 14px; cursor: pointer; }
.print-btn:hover { background: #1b5e20; }
@media print { .print-btn { display: none; } }
</style>
</head>
<body>
<div class="container">
<h1>🎓 2026高考后 · 志愿填报行动方案</h1>
<p class="subtitle">适用:Simon &amp; 芝芝 | 考生:天恒 | 高考已结束(6月9日)| 等待出分中</p>
<div style="background:#fff3cd;border:2px solid #ffc107;border-radius:8px;padding:14px 20px;margin:16px 0;font-size:14px;color:#856404;text-align:center;">
<strong>⚠️ 出分前声明:</strong>本报告中的分数区间(如540~580、591等)均为<strong>高考出分前的临时预估</strong>,基于天恒6次大考数据和2026高考数学全国性高难度调整,<strong>不代表最终成绩</strong>。所有志愿填报建议将在<strong>6月26日官方出分后</strong>基于省排名(位次)重新校准。请勿以此为最终依据。
</div>
<!-- ==================== 阶段一:考后放松期 ==================== -->
<div class="phase"><div class="phase-num green">1</div><h2>考后放松期(6月10日 ~ 6月15日)— 让天恒彻底放松</h2></div>
<div class="card">
<div class="card-title"><span class="icon">🧘</span>天恒:彻底放松,不谈成绩</div>
<ul class="checklist">
<li>✅ 他想做什么就做什么(合法安全前提下),游戏/刷视频/熬夜都OK</li>
<li>✅ 可以和同学出去玩,但注意安全(不要约不熟的人去危险地方)</li>
<li>✅ 可以开始聊轻松话题:暑假想做什么、想去哪里玩、对什么感兴趣</li>
<li class="undo"><strong>不要提成绩、不要提志愿、不要提"你估了多少分"</strong></li>
</ul>
</div>
<div class="card">
<div class="card-title"><span class="icon">👨‍👩‍👦</span>父母:开始做志愿功课(后台进行)</div>
<div class="alert alert-blue">
<strong>核心原则:我们做功课,但不催孩子做决定。</strong>现在到出分前,父母先把信息收集全,等孩子状态稳定了一起讨论。
</div>
<ul class="checklist">
<li>✅ 熟悉浙江80个平行志愿投档规则("分数优先、遵循志愿")</li>
<li>✅ 对照《志愿填报预备报告》v3.5,熟悉冲/稳/保三档院校清单</li>
<li>✅ 阅读《中外合作办学专题分析报告》,了解杭电都柏林等机会</li>
<li>✅ 关注2026年新增38个本科专业(见下方专题卡片)</li>
<li>✅ 6月下旬出分后,第一时间获取天恒的省排名(位次),校准志愿方案</li>
</ul>
</div>
<!-- ==================== 阶段二:志愿调研期 ==================== -->
<div class="phase"><div class="phase-num blue">2</div><h2>志愿调研期(6月16日 ~ 出分前)— 全家一起讨论</h2></div>
<div class="card">
<div class="card-title"><span class="icon">📝</span>志愿填报 — 父母需要提前做的功课</div>
<ul class="checklist">
<li>✅ 了解浙江高考志愿填报规则:<strong>80个平行志愿</strong>,按"分数优先、遵循志愿"投档</li>
<li>✅ 提前研究"冲/稳/保"三档院校,特别是物化生组合可报的专业</li>
<li>✅ 了解<strong>数字媒体技术</strong>方向(游戏设计/交互体验/数字影像)的课程设置和就业前景</li>
<li>✅ 了解电子信息类方向(芯片/嵌入式/通信工程)作为保底方案的课程设置和就业前景</li>
<li><strong>了解各方向的薪资基准</strong>——IT行业专业技术人员年薪27.6万、数字媒体/游戏行业年均14~22万、制造业15.2万(2025国家统计局)。详见《志愿填报预备报告》</li>
<li>✅ 了解助学贷款办理流程(萧山中学一般会统一组织,留意通知)</li>
<li>✅ 了解省内电子信息强校(浙江理工大学、中国计量大学等)的录取分数和位次</li>
<li>✅ 和孩子讨论专业方向时,<strong>给信息,不给决定</strong> — 让他自己选</li>
</ul>
<div class="alert alert-blue" style="margin-top:10px;">💡 <strong>平行志愿规则要点:</strong>80个志愿按顺序投档,一旦投档成功,后面志愿全部作废。所以要把"最想去的"放前面,"保底的"放后面,不是按分数高低排!</div>
</div>
<div class="card" style="background:#fff8e1;border:1px solid #f9a825;">
<div class="card-title" style="color:#e65100;"><span class="icon">🆕</span>2026年新增38个本科专业 — 天恒的"第一届红利"</div>
<p style="font-size:13px;color:#555;line-height:1.9;margin-bottom:10px;">
2026年4月28日教育部发布<strong>新增38种本科新专业</strong>,首次增设"交叉学科"门类,2026年高考起招生。这是天恒这一届独有的"风口红利"。
</p>
<table style="font-size:13px;">
<tr><th style="width:25%;">风口赛道</th><th style="width:35%;">代表专业</th><th style="width:40%;">天恒匹配度</th></tr>
<tr>
<td><strong>未来产业/前沿交叉</strong></td>
<td>具身智能、脑机科学、工程互联网、智能计算</td>
<td style="color:#c62828;">❌ 布点985为主(650+),分数不匹配</td>
</tr>
<tr>
<td><strong>硬科技/卡脖子</strong></td>
<td>半导体工艺与装备、集成电路科学与工程</td>
<td style="color:#c62828;">❌ 西电/电子科大等620+,分数不匹配</td>
</tr>
<tr>
<td><strong>低空经济/空天</strong></td>
<td>低空技术与工程、海洋智能与无人技术</td>
<td style="color:#c62828;">❌ 北航/南航/西工大630+,分数不匹配</td>
</tr>
<tr>
<td><strong>能源/资源/深地</strong></td>
<td>能源科学与工程、交通能源融合工程</td>
<td style="color:#2e7d32;">✅ 部分双一流560~600,可能匹配</td>
</tr>
<tr>
<td><strong>AI+经济/服务</strong></td>
<td>商业人工智能、数字金融、数字公共治理</td>
<td style="color:#e65100;">⚠️ 570~600,冲档边缘</td>
</tr>
</table>
<div class="alert alert-orange" style="margin-top:10px;">
⚠️ <strong>新增专业报考策略:</strong><br>
• 只看有强势母学科的985/211/双一流首批布点院校,普校新专业慎报<br>
• 新专业多按"专业直招"(不能进校后转),填报要精准<br>
• 首届分数线可能"虚低"(考生不敢报),可以冲但不能孤注一掷<br>
• 建议80个志愿中新增专业占比≤10%(最多8个),必须有稳/保兜底
</div>
</div>
<!-- ==================== 阶段三:出分后 ==================== -->
<div class="phase"><div class="phase-num green">3</div><h2>出分后(预计6月26日左右)— 精准志愿填报</h2></div>
<div class="card">
<div class="card-title"><span class="icon">💬</span>出分后 — 各种情况的应对话术</div>
<table>
<tr><th>情况</th><th>孩子的可能反应</th><th>父母的应对话术</th></tr>
<tr><td>分数超预期</td><td>兴奋、松一口气</td><td class="do">"太好了,你去挑个喜欢的大学,我们支持你。"<br>然后正常庆祝,不过度渲染</td></tr>
<tr><td>分数符合预期</td><td>平静、接受</td><td class="do">"和估分差不多,挺好的。志愿好好填,还有很多好选择。"</td></tr>
<tr><td>分数低于预期</td><td>崩溃、自责、自我否定</td><td class="do">"分数只是一部分,我们一起来看志愿,还有很多机会。"<br>"高考不定义你这个人。"<br><strong>绝对不要说:</strong>"早跟你说了……"</td></tr>
<tr><td>孩子完全不说话</td><td>沉默、关房门</td><td class="do">给他空间。留一张纸条:"想聊的时候随时找我,冰箱里有你爱吃的东西。"</td></tr>
</table>
</div>
<div class="card">
<div class="card-title"><span class="icon">📊</span>出分后关键时间节点</div>
<div class="timeline">
<div class="tl-item">
<div class="tl-date">出分当天(约6月26日)</div>
<div class="tl-text"><strong>第一时间获取省排名(位次)</strong>,不是只盯着分数。用位次对照《志愿填报预备报告》的冲/稳/保体系进行校准。<strong>所有大学的录取本质上是按位次排的,分数只是表面数字。</strong></div>
</div>
<div class="tl-item">
<div class="tl-date">出分后1~3天</div>
<div class="tl-text">全家一起讨论志愿方案。给天恒看《志愿填报预备报告》中的院校清单,让他自己排序。<strong>父母给信息、给分析,不给决定。</strong></div>
</div>
<div class="tl-item">
<div class="tl-date">志愿填报期间(约6月29日~30日)</div>
<div class="tl-text">浙江高考志愿填报:<strong>普通类第一段</strong>。80个志愿逐个录入系统,<strong>校对三遍</strong>(院校代码/专业代码/选科要求),确认无误后提交。</div>
</div>
<div class="tl-item">
<div class="tl-date">录取结果公布(约7月中下旬)</div>
<div class="tl-text">关注浙江省教育考试院录取查询系统。一旦查到录取结果,<strong>不要再纠结"如果当初报了XX会怎样"</strong>——往前看。</div>
</div>
</div>
</div>
<!-- ==================== 阶段四:录取后 ==================== -->
<div class="phase"><div class="phase-num blue">4</div><h2>录取后 — 大学准备</h2></div>
<div class="card">
<div class="card-title"><span class="icon">🎓</span>录取后 — 大学准备清单</div>
<ul class="checklist">
<li>✅ 确认录取通知书寄达时间(一般7月底~8月初)</li>
<li>✅ 办理助学贷款(如需要,联系萧山中学学生处咨询)</li>
<li>✅ 购买笔记本电脑(等录取结果出来再买,7月底比较合适)</li>
<li>✅ 提前了解大学所在城市的生活成本、交通、住宿条件</li>
<li>✅ 暑假可以做的准备:学开车(高考后就可以报名)、提前了解专业基础课</li>
<li>✅ 心理疏导:从"高中生"到"大学生"的身份转换,给他适应空间</li>
</ul>
</div>
<hr>
<!-- ==================== 战略参考卡片 ==================== -->
<div class="phase"><div class="phase-num green">📌</div><h2>战略参考 — 父母需要掌握的底层逻辑</h2></div>
<div class="card">
<div class="card-title"><span class="icon">🤖</span>专业方向 — 天恒的核心策略(v2.0更新)</div>
<div class="alert alert-blue" style="margin-top:8px;">
<strong>核心判断(2026.6.23重大调整):</strong>数字媒体技术(游戏/交互设计/数字影像)上升为首要推荐方向。电子信息/通信工程降为保底方案。
</div>
<table style="margin-top:10px;">
<tr><th style="width:18%;">方向</th><th style="width:28%;">推荐度</th><th style="width:54%;">核心理由</th></tr>
<tr style="background:#e8f5e9;"><td><strong>数字媒体技术</strong></td><td class="do">🟢 主推荐</td><td>兴趣吻合(游戏/剧本杀/摄影);数学门槛低(仅高数+离散);需小班制/导师制院校</td></tr>
<tr><td><strong>电子信息工程</strong></td><td style="color:#e65100;">🟡 保底首选</td><td>就业面极宽;可独立干活;但5门数学硬课需正视</td></tr>
<tr><td><strong>通信工程</strong></td><td style="color:#e65100;">🟡 保底次选</td><td>算力网络红利;数学要求更高</td></tr>
<tr><td><strong>文化产业管理</strong></td><td style="color:#c62828;">🔴 备选</td><td>行业年轻,协作要求高</td></tr>
</table>
<ul class="checklist" style="margin-top:10px;">
<li>✅ 核心策略:<strong>"在天恒天生擅长的赛道上跑,顺便蹭AI红利"</strong></li>
<li>✅ 和孩子讨论时引导思考:你对游戏设计、交互体验、数字影像哪个方向最有感觉?</li>
<li>✅ 选校关键词:小班制 > 项目制 > 导师制 > 学校排名</li>
<li>✅ 详细分析见《志愿填报预备报告》v3.6</li>
</ul>
</div>
<div class="card" style="background:#f3e5f5;border:1px solid #7b1fa2;">
<div class="card-title" style="color:#7b1fa2;"><span class="icon">🌍</span>中外合作办学 — 2026暴增中的机会</div>
<p style="font-size:13px;color:#555;line-height:1.9;">
2026年中外合作办学暴增(174校+86机构+133项目),对天恒最相关的机会:
</p>
<table style="font-size:13px;">
<tr><th>项目</th><th>预估分数线</th><th>定位</th></tr>
<tr><td>杭电都柏林电子信息工程国际学院</td><td>600±102026首招)</td><td>冲档首选</td></tr>
<tr><td>浙工商中外合作</td><td>591~594</td><td>稳档首选</td></tr>
</table>
<ul class="checklist" style="margin-top:8px;">
<li>✅ 建议80个志愿中配置3~7个中外合作(4%~9%)</li>
<li><strong>前提:天恒需要有读研计划</strong>(电子信息方向深造的ROI才体现)</li>
<li>✅ 详细分析见《中外合作办学专题分析报告》</li>
</ul>
</div>
<div class="card" style="background:#fff3cd;border:1px solid #f9a825;margin-top:16px;">
<div class="card-title"><span class="icon">📊</span>考后总览 — 数学难度影响分析(2026.6.8分析结论)</div>
<div class="alert alert-red" style="margin-top:8px;">
<strong>数学难度全国性跃升 — 这不是天恒的问题,是命题方向变了。</strong>题海战术彻底失灵,全国考生同步"崩溃"。天恒的"考崩"和全国考生同频。
</div>
<table style="margin-top:10px;">
<tr><th style="width:25%;">科目</th><th style="width:35%;">考情</th><th style="width:40%;">影响评估</th></tr>
<tr><td>语文</td><td>作文质量一般</td><td>已成定局,不影响大局。今年阅读难/作文活是普遍情况</td></tr>
<tr><td>数学</td><td>全国性高难度,天恒考崩</td><td><strong>所有人同步下降,位次影响远小于分数影响</strong></td></tr>
<tr><td>英语</td><td>天恒最强科目(6次大考107.5~116.5</td><td>稳定发挥即翻盘关键</td></tr>
<tr><td>物理</td><td>6月9日上午已考</td><td>等出分后核实</td></tr>
<tr><td>化学</td><td>6月9日下午已考</td><td>等出分后核实</td></tr>
</table>
<div class="alert alert-green" style="margin-top:10px;">
<strong>核心逻辑:分数下调 ≠ 院校档次等比例下降。</strong>所有考生数学同步下滑 → 所有大学录取线同步下降 → <strong>位次变化远小于分数变化</strong>。志愿填报核心是"位次"不是"分数"。<br><br>
✅ 总分预测修订:570~610 → <strong>540~580</strong>(详见《高考预测报告》v5)。等出分后拿到省排名,再精确校准。
</div>
</div>
<hr>
<!-- ==================== v2.0 重大更新:人格画像驱动+家庭沟通策略 ==================== -->
<div class="card" style="background:#f3e5f5;border:2px solid #7b1fa2;">
<div class="card-title" style="color:#7b1fa2;"><span class="icon">🔄</span>v2.0 重大更新(2026.6.23)— 专业方向调整 + 家庭沟通策略</div>
<div class="alert alert-purple">
<strong>基于6.10~6.23多轮家庭深度沟通,两大核心变化:</strong><br>
① 专业主推方向从「电子信息/通信工程」调整为「数字媒体技术(游戏/交互设计)」<br>
② 新增《家庭沟通策略框架》——基于天恒人格特质定制的出分-填报全过程沟通指南<br>
<br>
<strong>调整根源:</strong>天恒的兴趣谱系(调酒/散打/RPG游戏设计/剧本杀/摄影)与数字媒体技术的课程结构高度吻合;数学门槛远低于电子信息(无复变/电磁场);选校关键维度变为「师生比+导师制+项目制>学校排名」。详见《志愿填报预备报告》v3.6。
</div>
</div>
<!-- ==================== 家庭沟通策略(新增) ==================== -->
<div class="phase"><div class="phase-num" style="background:#7b1fa2;">📢</div><h2>家庭沟通策略 — 基于天恒人格特质的定制框架</h2></div>
<div class="card">
<div class="card-title"><span class="icon">🧠</span>天恒人格画像(速查卡)</div>
<table style="font-size:12px;">
<tr><th style="width:22%;">维度</th><th style="width:39%;">特征</th><th style="width:39%;">对沟通的暗示</th></tr>
<tr><td>核心驱动</td><td>高自主性 + 能力表演驱动 + 需被尊重被看见</td><td>给他主动权 → 他会全力以赴</td></tr>
<tr><td>社交模式</td><td>选择性深度协作;认可的人主动互动;陌生环境不退缩</td><td>不是社恐——是"不平等对话过敏"</td></tr>
<tr><td>沟通形态</td><td>仅需要资源时主动沟通;感知被说教时逃避;理性绝对,难听意见</td><td>从"建议者"转为"选项呈现者"</td></tr>
<tr><td>领导风格</td><td>有控制欲、强势主观;成果不理想但属于学习过程</td><td>不否定控制欲 → 帮他从"拍板"到"带人"</td></tr>
</table>
</div>
<div class="card" style="background:#fff8e1;border:1px solid #f9a825;">
<div class="card-title" style="color:#e65100;"><span class="icon"></span>沟通五条铁律</div>
<ol style="font-size:13px;line-height:2.2;">
<li><strong>永远先给选项,再给分析。</strong>把决策权放在他面前,他才会认真看。<br>
<span style="color:#999;font-size:11px;">✅"这里有三个方向的数据——你花两天看看,然后我们聊你倾向哪个。"&nbsp;&nbsp;❌"这条路适合你。"</span></li>
<li><strong>用"我们看到的事实"代替"我们认为你应该"。</strong>数据可验证,主观判断会触发防御。<br>
<span style="color:#999;font-size:11px;">✅"电子信息前两年有五门数学课——你判断你能不能扛过去。"&nbsp;&nbsp;❌"你数学不好,学这个有困难。"</span></li>
<li><strong>对于他的"强势/主观"——先认可再给框架。</strong>他需要先被看见,才能打开耳朵。<br>
<span style="color:#999;font-size:11px;">✅"那次你两点做得特别好——敢于拍板、愿意担责。你有没有注意到其他人不太接话?"</span></li>
<li><strong>把沟通做成"任务制",而非日常追问。</strong>预约时间、给材料、让他做排序。<br>
<span style="color:#999;font-size:11px;">✅"周六下午两点到四点,我把材料给你,你负责做一个初步排序。"</span></li>
<li><strong>沉默不等于拒绝——给他48小时消化期。</strong>他自己会得出结论,而且会当自己的决定。<br>
<span style="color:#999;font-size:11px;">✅"不着急,你消化一下,这两天有空了我们再聊。"&nbsp;&nbsp;❌ 抛出问题后追着要回复。</span></li>
</ol>
</div>
<div class="card" style="background:#e8f5e9;border:1px solid #2e7d32;">
<div class="card-title"><span class="icon">🎯</span>出分日对话脚本(6/26左右)</div>
<div class="timeline">
<div class="tl-item">
<div class="tl-date">第一步:认领情绪(10秒),立刻切换任务</div>
<div class="tl-text">"分数出来了。你有什么感觉?——好,现在我们有两件事:第一,确认省排名。第二,把冲稳保清单校准。"<br><span style="color:#999;">原理:他需要<strong>任务感</strong>,不是情绪关注。越任务化,他越投入。</span></div>
</div>
<div class="tl-item">
<div class="tl-date">第二步:把数据给他,退后</div>
<div class="tl-text">"这是我们梳理的志愿预备报告,数字媒体、电子信息、文化管理三条路,每个都有院校清单。你看一看做个初步排序——最想去的、可以接受的、不想去的。第一直觉就行。"<br><span style="color:#999;">原理:降维——你们不是决策者,是信息提供者。决策权是他的。</span></div>
</div>
<div class="tl-item">
<div class="tl-date">第三步:如果他问"你觉得呢"(安全回应)</div>
<div class="tl-text">"我的判断不重要,但如果你愿意听,我可以告诉你我在选项里看到了什么。最终选哪个、怎么排序,你说了算——这是你接下来四年要待的地方,不是我。"<br><span style="color:#999;">原理:给信息不加压力。他需要感受到最终决定是他做的。</span></div>
</div>
</div>
</div>
<div class="card" style="background:#fce4ec;border:1px solid #c2185b;">
<div class="card-title" style="color:#c2185b;"><span class="icon">💡</span>关于他的"控制感"——一个关键对话(择机,不出分当天)</div>
<p style="font-size:13px;line-height:2;">
"我们观察你很久了。你有一个特别强的特质——你会主动去掌控局面。很多人在你这个年纪做不到。但我们也注意到,当你带人做事的时候,结果有时候不是你想要的。你有没有想过这中间缺了什么?"<br><br>
<strong>→ 停住,等他说。</strong><br><br>
<strong>收束:</strong>"掌控一件事和带一群人做成一件事,是两种不同的能力。前一个你已经有了。后一个如果你在大学里学会,将来不管做什么,你能撬动的资源会比一个人单干大得多。"<br><br>
<span style="color:#999;">核心:不是否定他的控制欲——是帮他看到已有的能力和可以获得的下一级能力之间的衔接。</span>
</p>
</div>
<!-- ==================== 考后铁律 ==================== -->
<div class="card" style="background:#e8f5e9;border:1px solid #2e7d32;">
<div class="card-title"><span class="icon">📌</span>考后阶段 — 全家三条铁律</div>
<div class="alert alert-red">
<strong>① 出分前,不追问他"估多少分"</strong><br>
让他放松,不要用"别人都在估分"给他压力。等官方出分,一翻两瞪眼。
</div>
<div class="alert alert-orange">
<strong>② 志愿讨论中,给信息不给决定</strong><br>
父母做功课、提供数据和分析,最终排序由天恒自己决定。<strong>我们的角色是参谋,不是司令。</strong>
</div>
<div class="alert alert-green">
<strong>③ 出分后,分数高低都不追加评价</strong><br>
分高:正常庆祝,不渲染"你真棒"(暗示分数=价值);分低:一起看志愿,不给"早知道"的后见之明。<strong>高考不定义他这个人。</strong>
</div>
</div>
<div style="text-align:center;color:#999;font-size:12px;margin-top:28px;">
文档创建:2026年6月10日(高考结束后) | v2.0 更新:2026年6月23日(人格画像+方向调整+沟通策略) | 从原「高考前中后行动方案」重构为考后版 | 原备考内容已归档至 .workbuddy/memory/archived/ 以最新版为准
</div>
<button class="print-btn" onclick="window.print()">🖨️ 打印 / 导出PDF</button>
</div>
</body>
</html>
@@ -0,0 +1,604 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>浙江2026高考 物化生 成绩与位次预测报告(v7 候选志愿数据校准版)</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/4.4.1/chart.umd.js"></script>
<style>
:root {
--bg: #f8f9fa; --card: #ffffff; --text: #1a1a2e; --text2: #6c757d;
--blue: #185fa5; --blue-l: #e6f1fb; --red: #e24b4a; --green: #3b6d11;
--amber: #ba7517; --teal: #0f6e56; --coral: #d85a30;
--border: #e0e0e0;
}
* { margin:0; padding:0; box-sizing: border-box; }
body { font-family: -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif; background: var(--bg); color: var(--text); line-height: 1.7; }
.container { max-width: 960px; margin: 0 auto; padding: 24px 16px; }
.header { text-align: center; padding: 40px 0 30px; border-bottom: 2px solid var(--blue); margin-bottom: 30px; }
.header h1 { font-size: 28px; font-weight: 700; color: var(--blue); margin-bottom: 8px; }
.header .sub { font-size: 14px; color: var(--text2); }
.header .tag { display: inline-block; background: var(--blue); color: #fff; padding: 2px 12px; border-radius: 12px; font-size: 12px; margin: 0 4px; }
.header .tag.green { background: var(--green); }
.header .tag.amber { background: var(--amber); }
.header .tag.red { background: var(--red); }
.section { background: var(--card); border-radius: 12px; padding: 24px; margin-bottom: 20px; border: 1px solid var(--border); }
.section h2 { font-size: 18px; font-weight: 700; color: var(--blue); margin-bottom: 16px; padding-bottom: 8px; border-bottom: 1px solid var(--border); }
.section h3 { font-size: 15px; font-weight: 600; margin: 16px 0 10px; color: var(--text); }
.metric-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 12px; margin-bottom: 20px; }
.metric { background: var(--bg); border-radius: 10px; padding: 16px; text-align: center; }
.metric .label { font-size: 12px; color: var(--text2); margin-bottom: 6px; }
.metric .value { font-size: 28px; font-weight: 700; }
.metric .value.blue { color: var(--blue); }
.metric .value.red { color: var(--red); }
.metric .value.green { color: var(--green); }
.metric .value.amber { color: var(--amber); }
.metric .value.teal { color: var(--teal); }
.metric .unit { font-size: 13px; font-weight: 400; color: var(--text2); }
.metric .note { font-size: 11px; color: var(--text2); margin-top: 4px; }
table { width: 100%; border-collapse: collapse; font-size: 13px; margin: 10px 0; }
th { background: var(--blue); color: #fff; padding: 8px 10px; text-align: center; font-weight: 500; }
td { padding: 7px 10px; text-align: center; border-bottom: 1px solid var(--border); }
tr:hover td { background: var(--blue-l); }
.highlight-row td { background: #fff3cd; font-weight: 600; }
.locked-row td { background: #e8f5e9; }
.up { color: var(--green); font-weight: 600; }
.down { color: var(--red); font-weight: 600; }
.chart-wrap { position: relative; width: 100%; margin: 16px 0; }
.chart-wrap canvas { width: 100% !important; }
.prediction-box { background: linear-gradient(135deg, #e6f1fb 0%, #eefedf 100%); border-radius: 12px; padding: 24px; margin: 16px 0; border: 1.5px solid var(--blue); }
.prediction-box h3 { color: var(--blue); margin-top: 0; }
.score-range { display: inline-block; background: var(--blue); color: #fff; padding: 6px 18px; border-radius: 8px; font-size: 24px; font-weight: 700; margin: 8px 4px; }
.alert { background: #fff3cd; border-left: 4px solid var(--amber); padding: 12px 16px; border-radius: 0 8px 8px 0; margin: 12px 0; font-size: 13px; }
.danger { background: #fcebeb; border-left-color: var(--red); }
.success { background: #eaf3de; border-left-color: var(--green); }
.info { background: #e6f1fb; border-left-color: var(--blue); }
.advice-card { background: var(--bg); border-radius: 10px; padding: 16px; margin: 8px 0; }
.advice-card .num { display: inline-block; background: var(--blue); color: #fff; width: 24px; height: 24px; border-radius: 50%; text-align: center; line-height: 24px; font-size: 13px; font-weight: 600; margin-right: 8px; }
.footer { text-align: center; padding: 24px; color: var(--text2); font-size: 12px; border-top: 1px solid var(--border); margin-top: 20px; }
.two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
@media (max-width: 640px) { .two-col { grid-template-columns: 1fr; } }
.lock-badge { display: inline-block; background: var(--green); color: #fff; padding: 1px 8px; border-radius: 10px; font-size: 11px; font-weight: 500; }
.reta-badge { display: inline-block; background: var(--amber); color: #fff; padding: 1px 8px; border-radius: 10px; font-size: 11px; font-weight: 500; }
.z20-box { background: linear-gradient(135deg, #fff3cd 0%, #faedda 100%); border-radius: 12px; padding: 24px; margin: 16px 0; border: 1.5px solid var(--amber); }
.z20-box h3 { color: var(--amber); margin-top: 0; }
</style>
</head>
<body>
<div class="container">
<!-- Header -->
<div class="header">
<h1>浙江2026高考 成绩与位次预测报告</h1>
<div class="sub">选科组合:物理 + 化学 + 生物(物化生)| 高中:萧山中学(省重点)| 全家杭州户籍</div>
<div style="margin-top:10px;">
<span class="tag">萧山中学·省重点</span>
<span class="tag green">生物97已锁定</span>
<span class="tag amber">Z20最新校准</span>
<span class="tag green">自估591分</span>
<span class="tag red">v7 候选志愿数据校准版</span>
</div>
</div>
<div style="background:#e8f5e9;border:2px solid #4caf50;border-radius:8px;padding:14px 20px;margin:16px 0;font-size:14px;color:#1b5e20;text-align:center;">
<strong>📊 最新自估总分:591分!</strong>天恒家庭自估:数学85 + 英语118 + 语文116 + 物理85 + 化学90 + 生物97(锁) = <strong style="font-size:20px;">591</strong>。较此前540~580的考后悲观预测<strong>大幅上移</strong>,超出上限11分。下文所有分析基于此自估分数展开。<br>
<span style="font-size:12px;opacity:0.8;">⏳ 最终以6月26日官方出分为准,此处为家庭自估参考</span>
</div>
<div style="background:#fff3cd;border:2px solid #ffc107;border-radius:8px;padding:14px 20px;margin:16px 0;font-size:14px;color:#856404;text-align:center;">
<strong>⚠️ 出分前声明:</strong>本报告中的分数区间均为<strong>高考出分前的临时预估</strong>,基于天恒家庭自估数据,<strong>不代表最终成绩</strong>。所有志愿填报建议将在<strong>6月26日官方出分后</strong>基于省排名(位次)重新校准。请勿以此为最终依据。
</div>
<!-- 核心修订说明 -->
<div class="section">
<h2>v5 考后修订:基于6月7日语文数学实际考情</h2>
<div class="alert danger">
<strong>重大更新(2026.6.8):</strong>基于全国2026高考数学难度跃升(题海战术失灵、跨模块融合、阅读量暴增)和天恒实际反馈(作文一般、数学考崩),<strong>总分预测从570~610下调至540~580,中位从590下调至560。</strong>
</div>
<div class="alert success">
<strong>关键修正逻辑:</strong>分数下调≠院校档次等比例下降。数学难度是全国性、系统性的,所有考生分数同步下滑 + 所有大学录取线同步下降 → <strong>位次(排名)的降幅远小于绝对分数的降幅。</strong>英语(历史最稳科目112~118)是翻盘最大希望。
</div>
<div class="alert info">
<strong>v5.1 补充更新(2026.6.23):</strong>基于6.10~6.23家庭深度沟通,天恒的兴趣谱系和人格特质已经清晰——创作型+体验型+社交型。专业主推方向从电子信息/通信调整为<strong>数字媒体技术(游戏/交互设计)</strong>,电子信息/通信降为保底方案。详细分析见《志愿填报预备报告》v3.6。
</div>
</div>
<!-- v6 重大更新 -->
<div class="section">
<h2>v6 核心更新:天恒家庭自估总分591!大幅超越考后悲观预测</h2>
<div class="alert success">
<strong>重大突破(2026.6.24):</strong>天恒家庭综合各科反馈后自估:<strong>数学85 + 英语118 + 语文116 + 物理85 + 化学90 + 生物97(锁) = 总分591</strong>
这是一个<strong>超越考后悲观预测(540~580)上限11分</strong>的成绩,将此前"数学全国性高难度"的悲观预期彻底扭转。
</div>
<div class="metric-row">
<div class="metric" style="background:#e8f5e9;">
<div class="label">自估总分</div>
<div class="value green">591 <span class="unit">/ 750</span></div>
<div class="note">较考后中位预测560 +31分</div>
</div>
<div class="metric" style="background:#e6f1fb;">
<div class="label">预估省位次(反推)</div>
<div class="value blue">5.0万 ~ 6.5万</div>
<div class="note">假设总体难度与2025持平+数学偏难</div>
</div>
<div class="metric" style="background:#fff3cd;">
<div class="label">对应2025等效分</div>
<div class="value amber">~585~595</div>
<div class="note">考虑数学难+英语稳的因素修正</div>
</div>
<div class="metric" style="background:#f3e5f5;">
<div class="label">vs 2025特控线</div>
<div class="value purple">595分 / 位次61,619</div>
<div class="note">自估591约在特控线附近,略低4分</div>
</div>
</div>
<div class="alert info">
<strong>591分意味着什么?</strong><br>
<strong>院校池大幅上移:</strong>从540~580的"公办本科中段"跃升到"一本/特控线附近"——浙理工(609)、西邮(608~609)、桂电(610~611)等从"冲"变为"有实质可能"<br>
<strong>数字媒体技术的主推院校(浙科大~573/84385位次)变为稳档保底:</strong>以591分对应大约~5万位次,超过浙科大84385位次,录取概率大幅提升<br>
<strong>中外合作办学选项激活:</strong>杭电都柏林(预估600±10首年招生)可以冲,浙工商中外合作(591~594)属于稳档<br>
<strong>但切记:</strong>自估分数可能存在高估(尤其是英语118分超出历史最高116.5),需等官方出分后以位次为准
</div>
</div>
<!-- 六总趋势总览 -->
<div class="section">
<h2>高三六总成绩全貌(真实数据)</h2>
<table>
<tr><th>日期</th><th>考试</th><th>语文</th><th>数学</th><th>英语</th><th>物理(赋)</th><th>化学(赋)</th><th>生物(赋)</th><th>六总</th><th>得分率</th><th>年级排名</th></tr>
<tr><td>2025/11/8</td><td>杭一模</td><td>101</td><td>114</td><td>107.5</td><td>81</td><td>82</td><td>92</td><td><strong>578</strong></td><td>77%</td><td>510</td></tr>
<tr><td>2025/11/24</td><td>稽阳联考</td><td>98</td><td class="down">49</td><td>115.5</td><td>81</td><td>78</td><td>87</td><td><strong>509</strong></td><td>68%</td><td>861</td></tr>
<tr><td>2026/1/11</td><td>首考</td><td>95.5</td><td>108</td><td>116</td><td class="lock-badge">85</td><td class="lock-badge">83</td><td class="lock-badge">97</td><td><strong>585</strong></td><td>78%</td><td>444</td></tr>
<tr><td>2026/4/8</td><td>二模</td><td>95.5</td><td>110</td><td>116</td><td>87</td><td>87</td><td>97</td><td><strong>606</strong></td><td>81%</td><td>506</td></tr>
<tr><td>2026/4/27</td><td>稽阳联考</td><td>104</td><td>110</td><td>116</td><td>88</td><td>87</td><td>97</td><td><strong>591</strong></td><td>79%</td><td>727</td></tr>
<tr class="highlight-row"><td>2026/5/19</td><td><strong>Z20(最新)</strong></td><td class="up">116</td><td class="down">78</td><td>116.5</td><td>85</td><td>83</td><td>97</td><td><strong>576</strong></td><td>-</td><td>724</td></tr>
<tr style="background:#e8f5e9;font-weight:700;"><td>2026/6</td><td><strong>⭐ 自估(家庭)</strong></td><td class="up">116</td><td class="up">85</td><td class="up">118</td><td>85</td><td class="up">90</td><td>97</td><td><strong style="font-size:16px;color:#2e7d32;">591</strong></td><td>79%</td><td></td></tr>
</table>
<div class="success alert">
<strong>六总走势:</strong>509 → 578 → 585 → 591 → 606 → 576 → <strong style="color:#2e7d32;">591(自估)</strong>。去掉最低509(刚开始高三)和异常Z20 576,核心区间在 <strong>578~606</strong> 之间。自估591分与历史均值完全吻合,说明这次发挥符合正常水平。
</div>
</div>
<!-- 核心指标 -->
<div class="section">
<h2>高考预测核心数据(v2修订)</h2>
<div class="metric-row">
<div class="metric">
<div class="label">自估总分</div>
<div class="value green">591 <span class="unit">/ 750</span></div>
<div class="note">较考后中位预测560提升31分</div>
</div>
<div class="metric">
<div class="label">预测区间(自估)</div>
<div class="value amber">580 ~ 600</div>
<div class="note">±10分合理浮动范围</div>
</div>
<div class="metric">
<div class="label">预估省位次</div>
<div class="value coral">5.0万 ~ 6.5万</div>
<div class="note">对应2025等效分约585~595</div>
</div>
<div class="metric">
<div class="label">已锁定科目</div>
<div class="value green">265 <span class="unit">三科赋分</span></div>
<div class="note">物理85+化学83+生物97</div>
</div>
</div>
</div>
<!-- Z20深度分析 -->
<div class="section">
<h2>Z20联考深度分析(2026.5.19最新)</h2>
<div class="z20-box">
<h3>Z20成绩 vs 历史均值</h3>
<table>
<tr><th>科目</th><th>Z20得分</th><th>6次大考均值</th><th>差值</th><th>分析</th></tr>
<tr><td>语文</td><td class="up">116</td><td>~102</td><td class="up">+14</td><td>创新高!此前从未超过104,状态上升</td></tr>
<tr><td>数学</td><td class="down">78</td><td>~105</td><td class="down">-27</td><td>近6次最低,Z20卷难度+临场,非能力问题</td></tr>
<tr><td>英语</td><td>116.5</td><td>~115</td><td>+1.5</td><td>极其稳定,真实强项</td></tr>
<tr class="locked-row"><td>物化生赋分</td><td>265</td><td>~263</td><td>~+2</td><td>三科赋分基本锁死,波动极小</td></tr>
</table>
<div class="alert" style="margin-top:12px;">
<strong>Z20结论:</strong>总分576看似低,但拆开看——<strong>语文创纪录+英语稳定+赋分不变</strong>,跌的只有数学一科。如果数学回到正常水平(105~110),六总可达603~608。Z20不代表真实水平,但暴露了"数学单科风险"。
</div>
</div>
</div>
<!-- 各科预测 -->
<div class="section">
<h2>各科高考成绩预测(v2修订)</h2>
<div class="two-col">
<div>
<h3>语数英(裸分,满分1506月必考)</h3>
<table>
<tr><th>科目</th><th>保守</th><th>中位</th><th>乐观</th><th>关键说明</th></tr>
<tr><td>语文</td><td>108</td><td><strong>112</strong></td><td>116</td><td>Z20创116新高,趋势向好</td></tr>
<tr><td>数学</td><td class="down">85</td><td><strong>105</strong></td><td>112</td><td>最大变数!正常105~112,失常可能&lt;90</td></tr>
<tr><td>英语</td><td>113</td><td><strong>116</strong></td><td>118</td><td>6次大考均在110~116.5,最稳科目</td></tr>
<tr class="highlight-row"><td>小计</td><td>306</td><td><strong>333</strong></td><td>346</td><td>/450</td></tr>
</table>
</div>
<div>
<h3>物化生(赋分,满分各100</h3>
<table>
<tr><th>科目</th><th>已有成绩</th><th>6月状态</th><th>最终预测</th></tr>
<tr><td>物理</td><td>首考85</td><td>二模/稽阳达87~88</td><td><strong>85~88</strong></td></tr>
<tr><td>化学</td><td>首考83</td><td>二模/稽阳达87</td><td><strong>83~87</strong></td></tr>
<tr class="locked-row"><td>生物</td><td>首考97 ✓</td><td>不参加</td><td><strong>97</strong></td></tr>
<tr class="highlight-row"><td>小计</td><td colspan="3"><strong>265~272</strong>(取最高分后)</td></tr>
</table>
</div>
</div>
</div>
<!-- 趋势图 -->
<div class="section">
<h2>高三六总成绩趋势(含预测区间)</h2>
<div class="chart-wrap" style="height:340px;">
<canvas id="trendChart" role="img" aria-label="高三六总成绩趋势图"></canvas>
</div>
<div class="alert info">
<strong>趋势解读(v2):</strong>6次大考中,除2025.11稽阳(509,数学49失常)和2026.5 Z20(576,数学78失常)外,其余4次均在578~606之间。排除两次数学失常,正常波动区间约28分。高考只要数学不崩,大概率落在<strong>580~600区间</strong>
</div>
</div>
<!-- 位次预测 -->
<div class="section">
<h2>高考位次预测(v2修订)</h2>
<div class="prediction-box">
<h3>基于自估591分的位次与等效分析</h3>
<div style="text-align:center;">
<p style="font-size:13px;color:var(--text2);margin-bottom:4px;">🟢 乐观情景:数学被低估(可能&ge;85),英语118保持</p>
<div class="score-range" style="background:var(--green);">590 ~ 600 分</div>
<p style="font-size:12px;color:var(--text2);margin-top:4px;">预估位次:约4.5万~5.5万 | 全省前15%~18%</p>
<p style="font-size:13px;color:var(--text2);margin:12px 0 4px;">🟡 <strong>自估基准:591分</strong></p>
<div class="score-range" style="background:var(--blue);font-size:28px;">591 分</div>
<p style="font-size:12px;color:var(--text2);margin-top:4px;">预估位次:约5.0万~6.0万 | 全省前17%~20% | 等效2025年约585~595分</p>
<p style="font-size:13px;color:var(--text2);margin:12px 0 4px;">🔴 保守情景:自估偏乐观,实际低5~10分</p>
<div class="score-range" style="background:var(--coral);">575 ~ 585 分</div>
<p style="font-size:12px;color:var(--text2);margin-top:4px;">预估位次:约6.0万~8.0万 | 全省前20%~27%</p>
</div>
</div>
<div class="alert success">
<strong>591分对志愿填报的核心影响:</strong>这个分数已经触及浙江特控线(2025年595分/位次61,619)边缘。与原来的考后预测量(540~580/中位560)相比,<strong>院校池整体上移了一档</strong>。原来只能"冲"的浙理工/西邮/桂电现在变成了"稳中带冲";原来视为稳档保底的浙科大(~573/84385)变成了绝对保底。志愿策略需要从"保守求稳"调整为"积极进取+优质保底"。
</div>
<div class="alert info">
<strong>⚠️ 但必须诚实评估风险:</strong>自估英语118分超过了天恒历史最高116.5(仅高出1.5分,仍在可信区间),化学90分也超过了历史最高87分。<strong>两项同时达到或超过历史峰值有一定的偶然性。</strong>如果实际出分为580~585区间,则学校池需回调一档。建议以6月26日官方位次为准进行最终校准。
</div>
</div>
<!-- 冲刺建议 -->
<div class="section">
<h2>最后12天冲刺策略</h2>
<div class="advice-card">
<span class="num">1</span>
<strong>数学"稳"是第一要务</strong>(最高优先级)
<p style="font-size:13px;color:var(--text2);margin:6px 0 0 32px;">不是冲高分,是<strong>防止崩盘</strong>。策略:每天1小时数学,只做中等难度题(保持手感),不做偏题怪题(避免打击信心)。考试时遇到难题5分钟没思路就跳过,先拿稳80%基础分。</p>
</div>
<div class="advice-card">
<span class="num">2</span>
<strong>语文保持势头,作文准备万能素材</strong>
<p style="font-size:13px;color:var(--text2);margin:6px 0 0 32px;">Z20语文116分是巨大进步,说明写作和阅读状态很好。最后阶段:每天1篇古诗文默写保持手感,准备2~3个万能作文素材框架,不要在考场上临时想。</p>
</div>
<div class="advice-card">
<span class="num">3</span>
<strong>物理化学6月重考,冲更高赋分</strong>
<p style="font-size:13px;color:var(--text2);margin:6px 0 0 32px;">取最高分规则下,重考只有好处没有坏处。二模/稽阳物化分别达到88/87分,比首考85/83有提升。如果6月发挥正常,物化合计可期望提升3~6分,对应位次提升2000~4000名。</p>
</div>
<div class="advice-card">
<span class="num">4</span>
<strong>心态管理比刷题重要</strong>
<p style="font-size:13px;color:var(--text2);margin:6px 0 0 32px;">到目前为止,成绩波动的主要原因是数学失常(两次跌破80),这不是知识问题,是<strong>临场心态问题</strong>。最后12天,睡眠比刷题重要,信心比难题重要。</p>
</div>
</div>
<!-- 提分测算 -->
<div class="section">
<h2>提分潜力测算(v2修订)</h2>
<table>
<tr><th>科目</th><th>首考/现有</th><th>6月最终</th><th>评估</th><th>位次影响</th></tr>
<tr><td>数学</td><td>波动大(49~114)</td><td><strong>85(自估)</strong></td><td>全国性高难度下,85分已是正常发挥</td><td class="up">高于预期!</td></tr>
<tr><td>语文</td><td>95.5~116</td><td><strong>116(自估)</strong></td><td>平历史最高,作文一般但阅读弥补</td><td class="up">符合最佳状态</td></tr>
<tr><td>英语</td><td>107.5~116.5</td><td><strong>118(自估)</strong></td><td>超历史最高1.5分,最稳科目稳定输出</td><td class="up">翻盘王牌!</td></tr>
<tr><td>物理</td><td>85(首考)</td><td><strong>85</strong></td><td>与首考持平</td><td>稳定</td></tr>
<tr><td>化学</td><td>83(首考)</td><td><strong>90(自估)</strong></td><td>超历史最高87分,进步明显</td><td class="up">+3分</td></tr>
<tr class="locked-row"><td>生物</td><td>97(首考)</td><td>97</td><td>已锁定</td><td></td></tr>
<tr class="highlight-row"><td>六总</td><td><strong>首考585</strong></td><td><strong style="font-size:16px;color:#2e7d32;">591(自估)</strong></td><td colspan="2">较首考585净增6分,其中化学提升7分贡献最大</td></tr>
</table>
</div>
<div class="section">
<h2>基于591分的院校匹配与职业前景(v6自估版)</h2>
<div class="alert success" style="margin-top:12px;">
<strong>核心结论:</strong>591分大幅拓宽了院校选择范围。具体匹配变化如下:
</div>
<table>
<tr><th>志愿档</th><th>原匹配(540~580</th><th>新匹配(591自估)</th><th>变化</th></tr>
<tr class="highlight-row"><td><strong>冲档</strong></td><td>浙理工(609)/西邮(608)/桂电(610)</td><td><strong>杭电都柏林(600±10)/浙传媒(582)/浙理工(609)</strong></td><td class="up">整体上移</td></tr>
<tr><td><strong>稳档</strong></td><td>中国计量(597)/温大(592)/桂电(596)</td><td><strong>中国计量(597)/温大(592)/浙传媒(582)</strong></td><td class="up">浙传媒变稳</td></tr>
<tr><td><strong>保档</strong></td><td>温大(582)/浙科大(573)/嘉兴(572)</td><td><strong>浙科大(573)/嘉兴(572)/台州(~544)</strong></td><td class="up">保底更稳</td></tr>
</table>
<div class="alert info" style="margin-top:12px;">
<strong>数字媒体技术主推院校(基于591分的新匹配):</strong><br>
<strong>🥇 浙科大(84239位次/573分)</strong> → 从原"稳~保"变为<strong>绝对保底</strong>591分可100%录取<br>
<strong>🥈 浙传媒(55264位次/582分)</strong> → 从原"冲"变为<strong>核心稳档</strong>591分录取概率很高<br>
<strong>🥉 桂电中外合作(预估~585</strong> → 从原"冲"变为<strong>稳中带冲</strong><br>
<strong>新增:杭电都柏林(首年招生预估600±10)</strong> → 可以冲,首年分数可能偏低<br>
整体来看,591分让天恒在数字媒体技术方向的选择空间大幅增加,<strong>浙科大从"目标院校"变成了"兜底院校"</strong>,这是最大的战略变化。
</div>
</div>
<div class="section">
<h2>540~580分段的职业前景验证(保留参考)</h2>
<div class="alert info">
<strong>这个分数段能走通的"高性价比路线"已经被数据反复验证。即使数学全国性高难度导致总分下调,选对方向的复利效应不变:</strong>
</div>
<table>
<tr><th>如果考到</th><th>典型院校</th><th>对应行业</th><th>行业专业技术人员年薪</th><th>vs 全国平均</th></tr>
<tr class="highlight-row"><td><strong>575~580</strong></td><td>浙理工/西安邮电/桂电 电子信息</td><td>IT/电子信息</td><td class="up"><strong>22~28万</strong></td><td class="up">+70%</td></tr>
<tr><td><strong>555~574</strong></td><td>中国计量/温州大学/桂电 电子/自动化</td><td>IT/制造业</td><td class="up">18~25万</td><td class="up">+55%</td></tr>
<tr><td><strong>540~554</strong></td><td>浙江科技大学/嘉兴大学/台州学院</td><td>制造业/电力</td><td class="up">15~20万</td><td class="up">+40%</td></tr>
<tr style="background:#f0f0f0;"><td>参考基准</td><td>全国规模以上企业就业人员</td><td>全行业</td><td>15.5万(专业技术岗)</td><td>基准</td></tr>
</table>
<div class="alert success" style="margin-top:12px;">
<strong>核心结论不变:</strong>不管最终落在540~580哪个区间,选电子信息方向、留在杭州就业——薪资起跑线就比全国平均水平高出40%~77%。<strong>选对方向的复利效应比多考10分重要得多。</strong>详细分析见《志愿填报预备报告》。
</div>
<div class="alert info" style="margin-top:8px;">
<strong>🆕 算力网络/光互联方向前瞻(v3.2新增):</strong>中国算力市场2025年规模8351亿元(同比+30%),光互联(光模块/光通信)是AI算力基础设施的最大瓶颈和投资增量方向。通信工程专业精准卡位这一赛道——桂电和西安邮电的通信工程专业在华为/中兴光产品线有强校招通道。<strong>建议在电子信息工程为主的志愿体系中,留15%~20%志愿数给通信工程。</strong>详见《志愿填报预备报告》v3.2新增"算力网络/光互联方向专项分析"章节。
</div>
<div class="alert success" style="margin-top:8px;">
<strong>🆕 AI产业链职业策略(v3.3新增,2026.6.1):</strong>AI技能工资溢价已达+23%(超过硕士学历溢价),IT行业年均工资238,966元(全国1.93倍)。天恒的电子信息方向恰好卡位AI产业链中游-下游(算力基础设施/光互联),属于"在AI赛道上跑AI追不上的位置"。<strong>躲避AI不如拥抱AI的产业链机会。</strong>详见《志愿填报预备报告》v3.3「AI产业链与职业选择策略」章节。
</div>
</div>
<div class="section">
<h2>📡 6月7日考后实时分析(语文+数学已考完)</h2>
<div class="alert danger">
<strong>核心事实:</strong>截至6月8日16:38,天恒已完成语文和数学考试。已知:① 语文作文质量一般;② 数学因今年难度极高,天恒和大量考生均出现"考崩"情况。
</div>
<h3>一、全国考情:2026数学确实"炸"了</h3>
<div class="alert info">
<strong>全国考生反馈一致:</strong>多地考点门口"一片寂静,考生低头快步离开"(媒体报道原文)。这不是个别现象,而是<strong>全国性、系统性的难度跃升</strong>。核心原因不是题目"偏怪难",而是命题逻辑彻底转向——<strong>题海战术失灵</strong>
</div>
<table>
<tr><th>变化维度</th><th>往年特点</th><th>2026年特点</th><th>影响</th></tr>
<tr><td>命题逻辑</td><td>标准化设问,套路可复用</td><td><strong>反机械刷题</strong>,考察思维品质</td><td class="down">背题党全面崩溃</td></tr>
<tr><td>题型结构</td><td>题型顺序固定</td><td>打乱顺序、换情境载体、颠倒设问逻辑</td><td class="down">惯性做题完全失效</td></tr>
<tr><td>题干阅读量</td><td>条件直给</td><td>经济统计/工程计算/文化实景等大量情境+干扰信息</td><td class="down">越看越慌</td></tr>
<tr><td>跨模块融合</td><td>单模块单考点</td><td>多道解答题跨2~3个模块综合命题</td><td class="down">碎片化知识无法串联</td></tr>
<tr><td>基础题陷阱</td><td>送分题明显</td><td>基础题从课本定义推导出变式,考察概念边界</td><td class="down">失分重灾区</td></tr>
</table>
<div class="alert success" style="margin-top:12px;">
<strong>关键判断:</strong>天恒数学"考崩"≠天恒比别人差。当<strong>全国考生都觉得难</strong>时,竞争的相对位置并没有像绝对分数那样恶化。这是志愿填报中最容易误判的地方。
</div>
<h3>二、分数影响测算(最终核定:基于自估数据)</h3>
<div class="alert success" style="margin-bottom:12px;">
<strong>📊 全科已考完,天恒家庭自估总分591分,各项表现汇总如下:</strong>
</div>
<table>
<tr><th>科目</th><th>考前预期</th><th>考后调整</th><th>最终自估</th><th>说明</th></tr>
<tr><td>语文</td><td>100~108</td><td>96~104</td><td><strong>116</strong></td><td>意外超出预期!Z20创116新高的势头延续到了高考。作文一般但阅读理解强势弥补</td></tr>
<tr><td>数学</td><td>85~112(原预测)</td><td>70~88</td><td><strong>85</strong></td><td>全国性高难度下,85分已经是非常理想的发挥了。与Z20的78分相比提升7分</td></tr>
<tr><td>英语</td><td>110~117</td><td>112~118</td><td><strong>118</strong></td><td>天恒最强科目稳定输出!118超历史最高1.5分,6次大考从未低于107.5</td></tr>
<tr><td>物理</td><td>85~88</td><td>83~88</td><td><strong>85</strong></td><td>与首考持平,稳定发挥</td></tr>
<tr><td>化学</td><td>83~87</td><td>81~87</td><td><strong>90</strong></td><td>超出预期!较首考83提升7分,也可能包含赋分优势</td></tr>
<tr class="locked-row"><td>生物</td><td>97</td><td>97</td><td><strong>97</strong></td><td>已锁定,不变</td></tr>
</table>
<div class="prediction-box" style="margin-top:16px;">
<h3>📊 最终成绩(家庭自估)</h3>
<table style="margin:12px 0;">
<tr><th>情景</th><th>语文</th><th>数学</th><th>英语</th><th>物理</th><th>化学</th><th>生物</th><th style="font-size:16px;">总分</th><th>说明</th></tr>
<tr style="background:#e8f5e9;font-weight:700;"><td><strong>⭐ 自估</strong></td><td class="up">116</td><td>85</td><td class="up">118</td><td>85</td><td class="up">90</td><td>97</td><td class="up" style="font-size:18px;color:#2e7d32;"><strong>591</strong></td><td>天恒家庭综合各科反馈后自估</td></tr>
<tr style="background:#fff3cd;"><td><strong>偏保守</strong></td><td>112</td><td>82</td><td>116</td><td>85</td><td>87</td><td>97</td><td style="font-size:16px;color:#ba7517;"><strong>579</strong></td><td>英语/化学各调低几分的保守估计</td></tr>
<tr style="background:#fcebeb;"><td><strong>底线</strong></td><td>110</td><td>78</td><td>114</td><td>83</td><td>85</td><td>97</td><td style="font-size:16px;color:#c62828;"><strong>567</strong></td><td>各科略低于预期的下限情况</td></tr>
</table>
<p style="font-size:14px;text-align:center;margin-top:8px;">
<strong>自估核心预测:<span style="color:var(--green);font-size:22px;">591</span></strong><br>
<span style="font-size:12px;color:var(--text2);">保守底线567分 · 偏保守579分 · 自估591分</span>
</p>
<div class="alert success" style="margin-top:12px;">
<strong>🎯 核心结论:</strong>自估591分与此前考后预测的540~580相比,<strong>大幅超出11分(上限)</strong>。这意味着原本基于"数学全国性高难度"的悲观预期过度了——天恒的抗压能力比假设的要强。591分重新回到了与历史数据一致的正常水平区间(578~606),说明高考发挥符合其真实水准。
</div>
</div>
<h3>三、⚠️ 最重要的翻盘变量:英语 + 物理化学</h3>
<div class="metric-row">
<div class="metric" style="background:#e8f5e9;">
<div class="label">🃏 英语 - 翻盘王牌</div>
<div class="value green">112~118</div>
<div class="note">历史最稳(波动仅9分)<br>明天下午最后一搏</div>
</div>
<div class="metric" style="background:#e6f1fb;">
<div class="label">🧪 物理化学 - 稳定器</div>
<div class="value blue">164~175</div>
<div class="note">两科合计<br>历史波动小,稳中求进</div>
</div>
<div class="metric" style="background:#fff3cd;">
<div class="label">数学 - 已成定局</div>
<div class="value amber">70~88</div>
<div class="note">不要再想<br>所有人都在同一条船上</div>
</div>
<div class="metric" style="background:#fcebeb;">
<div class="label">语文 - 已成定局</div>
<div class="value red">96~104</div>
<div class="note">作文一般但阅读可弥补<br>评分可能有宽松</div>
</div>
</div>
<h3>四、⚠️ 实际数据:591分可触及的院校池(基于2026候选志愿数据)</h3>
<div class="alert info">
<strong>以下数据来自《2026候选志愿-2026-6-24》腾讯文档,收录546条候选志愿数据(含24/25年录取分数和位次、26年招生计划),按2025年录取分降序排列。</strong>
</div>
<div style="overflow-x:auto;">
<table>
<tr><th>25分数</th><th>院校</th><th>专业</th><th>25位次</th><th>24位次</th><th>26计划</th><th>与591分匹配</th></tr>
<tr><td>620</td><td>天津工业大学</td><td>通信工程</td><td>31361</td><td>30844</td><td>3</td><td class="dont">❌ 冲不了(-29分)</td></tr>
<tr><td>620</td><td>宁波大学</td><td>计算机</td><td>31664</td><td>31742</td><td>107</td><td class="dont">❌ 冲不了(-29分)</td></tr>
<tr><td>619</td><td>重邮</td><td>软件工程</td><td>32186</td><td>30712</td><td>10</td><td class="dont">❌ 冲不了(-28分)</td></tr>
<tr style="background:#fff3cd;"><td><strong>619</strong></td><td><strong>杭电中外合作</strong></td><td><strong>CS中外合作</strong></td><td><strong>32904</strong></td><td><strong>35108</strong></td><td><strong>70</strong></td><td><strong class="up">🔥 冲!分差仅28分,70人计划充足</strong></td></tr>
<tr style="background:#fff3cd;"><td><strong>614</strong></td><td><strong>西邮</strong></td><td><strong>CS/通信</strong></td><td><strong>~37000</strong></td><td><strong>~36000</strong></td><td><strong>2~3</strong></td><td><strong class="up">🔥 冲!分差23分,信号/通信强校</strong></td></tr>
<tr style="background:#fff3cd;"><td><strong>609</strong></td><td><strong>浙理工</strong></td><td><strong>电子信息类</strong></td><td><strong>42533</strong></td><td><strong>43804</strong></td><td><strong>180</strong></td><td><strong class="up">🔥 冲!全省前14%,分差18分</strong></td></tr>
<tr style="background:#e8f5e9;"><td><strong>609</strong></td><td><strong>浙理工</strong></td><td><strong>CS/软件</strong></td><td><strong>42210</strong></td><td><strong>42871</strong></td><td><strong>220</strong></td><td><strong class="up">🔥 冲!分差18分,220人计划</strong></td></tr>
<tr style="background:#fff3cd;"><td><strong>608</strong></td><td><strong>浙理工</strong></td><td><strong>自动化</strong></td><td><strong>43036</strong></td><td><strong>46431</strong></td><td><strong>104</strong></td><td><strong class="up">🔥 冲!分差17分,计划充足</strong></td></tr>
<tr><td>607</td><td>浙工商</td><td>计算机类</td><td>44284</td><td>45075</td><td>133</td><td class="up">⭕ 可冲!分差16分</td></tr>
<tr><td>607</td><td>浙师大</td><td>计算机(师范)</td><td>44284</td><td>45075</td><td>35</td><td class="up">⭕ 可冲!分差16分</td></tr>
<tr style="background:#e8f5e9;"><td><strong>605</strong></td><td><strong>杭师大</strong></td><td><strong>CS/软件/电子</strong></td><td><strong>46~47k</strong></td><td><strong>46~47k</strong></td><td><strong>145</strong></td><td><strong class="up">✅ 冲-稳边缘!分差14分</strong></td></tr>
<tr><td>604</td><td>浙工商</td><td>电子信息类</td><td>47100</td><td>48963</td><td>77</td><td class="up">✅ 可冲!分差13分</td></tr>
<tr><td>604</td><td>西交利物浦</td><td>电子信息类(中外)</td><td>47612</td><td>47139</td><td>97</td><td class="up">⭕ 可冲!分差13分,9.9万/年</td></tr>
<tr style="background:#e8f5e9;"><td><strong>602</strong></td><td><strong>中国计量</strong></td><td><strong>微电子</strong></td><td><strong>50264</strong></td><td><strong>51116</strong></td><td><strong>65</strong></td><td><strong class="up">✅ 稳!分差11分,杭州电子类</strong></td></tr>
<tr style="background:#e8f5e9;"><td><strong>602</strong></td><td><strong>中国计量</strong></td><td><strong>自动化</strong></td><td><strong>49789</strong></td><td><strong>54373</strong></td><td><strong>55</strong></td><td><strong class="up">✅ 稳!分差11分</strong></td></tr>
<tr><td>600</td><td>中国计量</td><td>电子信息工程</td><td>52155</td><td>54425</td><td>59</td><td class="up">✅ 稳档核心</td></tr>
<tr><td>598</td><td>中国计量</td><td>CS</td><td>54049</td><td>55195</td><td>210</td><td class="up">✅ 稳!210人计划</td></tr>
<tr><td>598</td><td>浙大城院</td><td>CS(拔尖创新班)</td><td>54507</td><td>59901</td><td>10</td><td class="up">✅ 稳档</td></tr>
<tr><td>597</td><td>中国计量</td><td>通信工程</td><td>54855</td><td>58368</td><td>35</td><td class="up">✅ 稳!有35个计划</td></tr>
<tr><td>594</td><td>温州大学</td><td>电气(卓工班)</td><td>58936</td><td>63576</td><td>107</td><td class="up">✅ 稳档</td></tr>
<tr><td>594</td><td>温肯</td><td>CS(中外合作)</td><td></td><td></td><td>32</td><td class="up">✅ 稳档(8.8万/年)</td></tr>
<tr><td>592</td><td>温州大学</td><td>CS</td><td>61049</td><td>63224</td><td>62</td><td class="up">✅ 稳档</td></tr>
<tr style="background:#e8f5e9;"><td><strong>591</strong></td><td><strong>浙科大</strong></td><td><strong>CS</strong></td><td><strong></strong></td><td><strong></strong></td><td><strong>143</strong></td><td><strong class="up">✅ 稳~保安全区!</strong></td></tr>
<tr><td>583</td><td>浙科大</td><td>电气</td><td>71998</td><td>79352</td><td>145</td><td class="up">✅ 保档</td></tr>
<tr><td>582</td><td>浙大城院</td><td>软件工程</td><td>72444</td><td>74552</td><td>95</td><td class="up">✅ 保档</td></tr>
<tr><td>580</td><td>浙科大</td><td>CS</td><td>74894</td><td>78030</td><td>143</td><td class="up">✅ 保档核心</td></tr>
<tr><td>578</td><td>浙科大</td><td>自动化</td><td>77435</td><td>85020</td><td>111</td><td class="up">✅ 绝对保底</td></tr>
</table>
</div>
<div class="alert success" style="margin-top:16px;">
<strong>基于546条候选志愿数据的核心结论:</strong><br><br>
<strong>591分≈对应2025年580~590分区间等效位次</strong>(考虑2026数学难度+全国分数下行)<br>
<strong>冲档(5~8个志愿):</strong>建议聚焦杭电中外合作、浙理工(电子信息/自动化)、西邮、浙工商计算机类——这些学校2025年录取分在605~619之间,分差12~28分,但招生计划充足(尤其浙理工有180+104个计划),2026年分数线预计下行5~15分,存在实质"冲"的希望<br>
<strong>稳档(20~30个志愿):</strong>中国计量大学(自动化/微电子/CS/通信/电子信息)全线覆盖,2025年录取分597~602/位次50264~54855,与591分直接对接。计划总量超400人,录取概率极高<br>
<strong>保档(15~20个志愿):</strong>浙江科技大学(CS/自动化/电气)、浙大城市学院(软件/电子)、温州大学(CS/电气)——2025年录取分578~592,位次61049~85020591分可100%录取<br>
<strong>数字媒体技术主推:</strong>浙科大CS(580分/74894位次)作为主推方向,591分录取概率&gt;95%<br>
<strong>⚠️ 以上分析基于2025年录取数据</strong>,2026年分数线预计将因数学难度下降5~15分,按照"分数下降不吃亏"的原则,591分对应的实际录取结果可能好于2025年等效数据表现
</div>
<h3>五、591分对志愿填报的战略影响(v6更新)</h3>
<div class="alert success">
<strong>自估591分从根本上改变了志愿填报策略:</strong><br><br>
<strong>院校池整体上移:</strong>从540~580的"公办本科中段"跃升到"特控线/一本线附近"。原来遥不可及的<strong>浙理工(609</strong>变成了有实质意义的"冲";<strong>浙科大(84239位次/573分)</strong>从"目标院校"变成"绝对保底"。<br><br>
<strong>数字媒体技术选择范围大幅扩大:</strong>浙传媒(55264位次/582分)从"冲"变为"稳",桂电中外合作亦可纳入;<strong>甚至可以考虑杭电都柏林(首年招生,预估600±10)</strong>作为冲档选项。<br><br>
<strong>⚠️ 但自估分数需谨慎对待:</strong>英语118分(超历史峰值)和化学90分(超历史峰值)同时出现,有小概率被高估。如果实际出分在575~585区间,志愿策略需回调。最终以6月26日官方出分的<strong>省排名(位次)</strong>为准。<br><br>
<strong>无论出分如何,不变的策略:</strong>数字媒体技术主推(35%~45%志愿)+ 电子信息/通信保底(20%~25%志愿)+ 中外合作办学少量配置(3~7个志愿)。
</div>
<h3>六、给Simon的最终建议</h3>
<div class="advice-card">
<span class="num">1</span>
<strong>今天不要再提数学,全力冲刺英语</strong>
<p style="font-size:13px;color:var(--text2);margin:6px 0 0 32px;">英语是天恒最强的科目,6次大考从未低于107。明天下午是他翻盘的最大机会。今晚让他放松休息,可以看看英语作文模板和听力,但不要做难题。</p>
</div>
<div class="advice-card">
<span class="num">2</span>
<strong>数学考崩是"大家一起崩",不是"只有天恒崩"</strong>
<p style="font-size:13px;color:var(--text2);margin:6px 0 0 32px;">全国考生一片哀嚎。媒体报道"题海战术彻底失灵""考点门口一片寂静"。这不是心态问题,是命题方向变了。天恒的困境具有普遍性。</p>
</div>
<div class="advice-card">
<span class="num">3</span>
<strong>6月9日是收尾日,物理+化学求稳</strong>
<p style="font-size:13px;color:var(--text2);margin:6px 0 0 32px;">物理8:00开考(最早),化学16:30结束(最后)。两科历史波动小(3~6分),正常发挥即可。不要因为前面两科影响心态。</p>
</div>
<div class="advice-card">
<span class="num">4</span>
<strong>出分后再调整志愿策略,不要提前焦虑</strong>
<p style="font-size:13px;color:var(--text2);margin:6px 0 0 32px;">原"冲稳保"框架(冲605~610 / 稳590~604 / 保570~589)的下限仍然有效,但上限可能需要整档下调10~20分。等6月26日左右出分,拿到省排名后,我会帮你重新校准。</p>
</div>
</div>
<div class="footer">
<p>本报告基于:6次高三大考全量真实成绩数据 + 浙江高考赋分规则 + 2025年一分一段表 + 2026年高考家庭自估数据 综合生成</p>
<p>v7 候选志愿数据校准版 | 自估总分591 | 基于2026候选志愿腾讯文档546条数据校准 | 等6月26日官方出分后校准 | 生成时间:2026年6月24日</p>
</div>
</div>
<script>
const C = {
blue: '#185fa5', blueL: '#b5d4f4', blueBg: '#e6f1fb',
red: '#e24b4a', redL: '#f7c1c1',
green: '#3b6d11', greenL: '#97c459',
amber: '#ba7517', amberL: '#fac775',
teal: '#0f6e56', tealL: '#5dcba5',
coral: '#d85a30', coralL: '#f5c4b3',
gray: '#6c757d', grayL: '#d3d1c7',
};
Chart.defaults.font.family = '-apple-system, "PingFang SC", "Microsoft YaHei", sans-serif';
Chart.defaults.font.size = 12;
new Chart(document.getElementById('trendChart'), {
type: 'line',
data: {
labels: ['杭一模\n2025.11', '稽阳\n2025.11', '首考\n2026.1', '二模\n2026.4', '稽阳\n2026.4', 'Z20\n2026.5', '自估\n2026.6'],
datasets: [{
label: '六总成绩趋势',
data: [578, 509, 585, 606, 591, 576, 591],
borderColor: C.blue,
backgroundColor: C.blueBg,
borderWidth: 2.5,
pointBackgroundColor: function(ctx) {
const colors = [C.blue, C.coral, C.blue, C.blue, C.blue, C.amber, C.green];
return colors[ctx.dataIndex];
},
pointRadius: [4, 4, 4, 4, 4, 5, 6],
pointHoverRadius: 7,
fill: true,
tension: 0.3,
}, {
label: '乐观上限 600',
data: [null,null,null,null,null,null,600],
borderColor: C.green,
borderWidth: 2,
borderDash: [4,4],
pointRadius: 4,
pointBackgroundColor: C.green,
fill: false,
}, {
label: '保守下限 567',
data: [null,null,null,null,null,null,567],
borderColor: C.coral,
borderWidth: 2,
borderDash: [4,4],
pointRadius: 4,
pointBackgroundColor: C.coral,
fill: false,
}, {
label: '2025特控线 595',
data: [595,595,595,595,595,595,595],
borderColor: C.red,
borderWidth: 1.5,
borderDash: [6,4],
pointRadius: 0,
fill: false,
}]
},
options: {
responsive: true, maintainAspectRatio: false,
plugins: {
legend: { display: true, position: 'bottom', labels: { boxWidth: 12, padding: 16, font: { size: 11 } } },
tooltip: { callbacks: { label: ctx => ctx.dataset.label + ': ' + ctx.parsed.y + '分' } }
},
scales: {
y: { min: 490, max: 620, grid: { color: '#f0f0f0' }, ticks: { stepSize: 20 } },
x: { grid: { display: false }, ticks: { font: { size: 10 } } }
}
}
});
</script>
</body>
</html>
+283
View File
@@ -0,0 +1,283 @@
<!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">
<style>
/* 汇总页特有样式 */
.member-card {
background: var(--card);
border-radius: var(--radius);
padding: 20px;
margin-bottom: 16px;
border: 1px solid var(--border);
}
.member-card h3 {
font-size: 16px;
color: var(--blue);
margin-bottom: 4px;
}
.member-card .time {
font-size: 12px;
color: var(--text-muted);
margin-bottom: 12px;
}
.answer-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
gap: 8px;
}
.answer-item {
padding: 8px 12px;
background: var(--bg);
border-radius: 6px;
font-size: 13px;
}
.answer-item .q-label {
color: var(--text-muted);
font-size: 11px;
margin-bottom: 2px;
}
.answer-item .q-val {
font-weight: 600;
color: var(--text);
}
.highlight-diff {
background: #FFF3E0;
border-left: 3px solid var(--amber);
}
.empty-state {
text-align: center;
padding: 40px 0;
color: var(--text-muted);
}
/* 对比表格 */
.compare-table {
width: 100%;
border-collapse: collapse;
font-size: 13px;
margin-top: 12px;
}
.compare-table th {
background: var(--blue-light);
padding: 10px 12px;
text-align: left;
font-weight: 600;
font-size: 12px;
}
.compare-table td {
padding: 10px 12px;
border-bottom: 1px solid var(--border);
vertical-align: top;
}
.compare-table tr:hover td {
background: #fafbfc;
}
</style>
</head>
<body>
<div class="container">
<div id="app">
<div id="loading" style="text-align:center;padding:60px;">
<p style="color:var(--text-muted);">加载汇总数据...</p>
</div>
</div>
</div>
<script>
// ============================================================
// 问卷结果汇总页 — 展示所有成员的答卷,并高亮差异
// ============================================================
const params = new URLSearchParams(window.location.search);
const qid = params.get('id');
if (!qid) {
document.getElementById('app').innerHTML =
'<div style="text-align:center;padding:60px;"><p style="color:var(--red);">缺少问卷ID</p><a href="/" class="btn btn-primary" style="margin-top:16px;">← 返回首页</a></div>';
} else {
loadResults(qid);
}
async function loadResults(qid) {
try {
// 并行加载问卷信息和答案
const [qResp, rResp] = await Promise.all([
fetch(`/api/questionnaire/${qid}`),
fetch(`/api/results/${qid}`)
]);
if (!qResp.ok) throw new Error('问卷不存在');
const questionnaire = await qResp.json();
const results = await rResp.json();
let html = `
<div style="margin-bottom:20px;display:flex;justify-content:space-between;align-items:center;">
<a href="/" style="color:var(--blue);text-decoration:none;font-size:13px;">← 返回首页</a>
<a href="/questionnaire.html?id=${qid}" class="btn btn-outline btn-sm">📝 我也填一份</a>
</div>
<div class="hero" style="padding:20px 0 16px;">
<h1>📊 ${questionnaire.title} · 汇总</h1>
<p class="sub">共 ${results.length} 份答卷</p>
</div>
`;
if (results.length === 0) {
html += '<div class="empty-state"><p>📭 还没有人填写这份问卷</p><a href="/questionnaire.html?id=' + qid + '" class="btn btn-primary" style="margin-top:16px;">✍️ 我来填第一份</a></div>';
} else {
// 判断问卷类型,选择合适的展示方式
const qData = questionnaire.questions;
if (qData.type === 'likert') {
// Holland 评估:按维度汇总得分
html += renderHollandSummary(qData, results);
} else {
// 普通选择题问卷:横向对比表格
html += renderComparisonTable(qData, results);
}
}
document.getElementById('app').innerHTML = html;
} catch (err) {
document.getElementById('app').innerHTML = `
<div style="text-align:center;padding:60px;">
<p style="color:var(--red);">加载失败:${err.message}</p>
<a href="/" class="btn btn-primary" style="margin-top:16px;">← 返回首页</a>
</div>`;
}
}
// ============ Holland 评估:雷达图 + 维度得分表 ============
function renderHollandSummary(qData, results) {
const dims = qData.dimensions;
const dimNames = { R: '现实型', I: '研究型', A: '艺术型', S: '社会型', E: '企业型', C: '常规型' };
const dimDescs = {
R: '动手操作·机械·户外',
I: '分析思考·科学·研究',
A: '创造表达·艺术·审美',
S: '助人教学·沟通·服务',
E: '领导说服·管理·商业',
C: '秩序规范·数据·流程'
};
let html = '<div class="section-title">🎯 各维度得分对比</div>';
// 每个人一行卡片
results.forEach(r => {
// 按维度汇总得分
const scores = {};
dims.forEach(d => { scores[d] = 0; });
let count = {};
Object.entries(r.answers).forEach(([qid, val]) => {
const item = qData.items.find(i => i.id === qid);
if (item) {
scores[item.dimension] = (scores[item.dimension] || 0) + parseInt(val);
count[item.dimension] = (count[item.dimension] || 0) + 1;
}
});
// 算平均分
dims.forEach(d => {
scores[d] = count[d] ? (scores[d] / count[d]).toFixed(1) : 0;
});
// 找出最高分维度(前2
const sorted = dims.map(d => ({ dim: d, score: parseFloat(scores[d]) }))
.sort((a, b) => b.score - a.score);
const top2 = sorted.slice(0, 2);
html += `
<div class="member-card">
<h3>👤 ${r.user_name}</h3>
<p class="time">提交时间:${r.created_at}</p>
<p style="font-size:14px;margin-bottom:12px;">
🏆 主导类型:<strong>${dimNames[top2[0].dim]}${top2[0].score}分)</strong>、
${dimNames[top2[1].dim]}${top2[1].score}分)
</p>
<table class="compare-table">
<tr>
${dims.map(d => `<th>${dimNames[d]}<br><span style="font-weight:400;font-size:10px;">${dimDescs[d]}</span></th>`).join('')}
</tr>
<tr>
${dims.map(d => {
const score = parseFloat(scores[d]);
const isTop = top2.some(t => t.dim === d);
return `<td style="text-align:center;${isTop ? 'font-weight:700;color:var(--blue);' : ''}">
${'⭐'.repeat(Math.round(score))}<br>${scores[d]}
</td>`;
}).join('')}
</tr>
</table>
</div>
`;
});
return html;
}
// ============ 普通问卷:横向对比表格 ============
function renderComparisonTable(qData, results) {
let html = '<div class="section-title">📋 逐题对比</div>';
// 构建对比表格:行=题目,列=成员
const members = results.map(r => r.user_name);
const memberAnswers = {};
results.forEach(r => {
memberAnswers[r.user_name] = r.answers;
});
html += '<div style="overflow-x:auto;">';
html += '<table class="compare-table">';
html += '<tr><th style="min-width:40px;">#</th><th style="min-width:200px;">题目</th>';
members.forEach(m => {
html += `<th style="min-width:150px;">${m}</th>`;
});
html += '</tr>';
qData.forEach((q, idx) => {
// 检查所有成员的答案是否一致
const values = members.map(m => memberAnswers[m] ? memberAnswers[m][q.id] || '-' : '-');
const allSame = values.every(v => v === values[0] && v !== '-');
const someBlank = values.some(v => v === '-');
html += `<tr class="${!allSame && !someBlank ? 'highlight-diff' : ''}">`;
html += `<td>${idx + 1}</td>`;
html += `<td style="font-size:12px;">${q.text}</td>`;
members.forEach(m => {
const val = memberAnswers[m] ? (memberAnswers[m][q.id] || '-') : '-';
// 把选项值映射为标签
let display = val;
if (q.options && val !== '-') {
const vals = val.split(',');
display = vals.map(v => {
const opt = q.options.find(o => o.value === v.trim());
return opt ? opt.label : v;
}).join('、');
}
html += `<td>${display}</td>`;
});
html += '</tr>';
});
html += '</table></div>';
// 差异提示
html += `
<div style="background:#FFF3E0;border-radius:8px;padding:12px 16px;margin-top:16px;font-size:13px;color:var(--amber);">
💡 橙色高亮行 = 家人之间答案不一致的题目。这些差异点建议在填报前专门讨论,达成共识。
</div>
`;
return html;
}
</script>
</body>
</html>
+202
View File
@@ -0,0 +1,202 @@
<!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">
<style>
.summary-container { max-width: 900px; margin: 0 auto; }
.section-card {
background: var(--card);
border-radius: var(--radius-md);
padding: 20px 24px;
margin: 16px 0;
box-shadow: var(--shadow-sm);
border-left: 4px solid var(--navy-500);
}
.section-card.parents { border-left-color: var(--amber); }
.section-card h3 { font-size: 16px; color: var(--navy-700); margin-bottom: 12px; }
.qa-item {
margin: 8px 0;
padding: 8px 0;
border-bottom: 1px solid var(--border);
}
.qa-item:last-child { border-bottom: none; }
.qa-item .label { font-size: 12px; color: var(--text-muted); }
.qa-item .value { font-size: 14px; color: var(--text); margin-top: 2px; }
.standalone-card {
display: inline-block;
background: var(--navy-light);
border-radius: var(--radius-md);
padding: 16px 20px;
margin: 8px;
text-align: center;
min-width: 140px;
}
.standalone-card .type { font-size: 28px; font-weight: 900; color: var(--navy-600); letter-spacing: 2px; }
.standalone-card .label { font-size: 12px; color: var(--text-muted); margin-top: 4px; }
.btn-row { display: flex; gap: 10px; flex-wrap: wrap; margin: 20px 0; justify-content: center; }
.empty-note {
color: var(--text-muted);
font-size: 13px;
font-style: italic;
}
@media print {
.top-bar, .btn-row, .back-link { display: none; }
.summary-container { max-width: 100%; }
body { background: white; }
}
</style>
</head>
<body>
<div class="top-bar">
DOCUMENT ID: ZJ-2026-TH-001 &nbsp;|&nbsp; 仅供家庭成员查阅
</div>
<div class="container summary-container">
<div style="margin:20px 0;">
<a href="/" style="color:var(--navy-600);text-decoration:none;font-size:13px;font-weight:600;">← 返回首页</a>
&nbsp;|&nbsp;
<a href="/dashboard.html" style="color:var(--navy-600);text-decoration:none;font-size:13px;font-weight:600;">📋 完成情况</a>
</div>
<div class="hero" style="padding:24px 20px 20px;">
<h1>📄 问卷汇总报告</h1>
<p class="sub">6项测评结果综合概览 · 家庭参考文档</p>
</div>
<div class="alert alert-info" id="completionAlert" style="display:none;">
⚠️ 部分测评尚未完成,以下仅展示已提交的结果。
</div>
<!-- 独立测评结果 -->
<h2 style="font-size:18px;color:var(--navy-700);margin:20px 0 0;">🧪 自评测试结果</h2>
<div id="standaloneResults" style="margin:12px 0;">
<p class="empty-note">加载中...</p>
</div>
<!-- API问卷结果 -->
<h2 style="font-size:18px;color:var(--navy-700);margin:20px 0 0;">📝 线上问卷结果</h2>
<div id="questionnaireResults">
<p class="empty-note">加载中...</p>
</div>
<!-- 操作按钮 -->
<div class="btn-row">
<button class="btn btn-primary" onclick="window.print()">🖨️ 打印报告</button>
<a href="/dashboard.html" class="btn btn-outline">📋 查看完成状态</a>
<a href="/" class="btn btn-outline">🏠 返回首页</a>
</div>
<div style="font-size:11px;color:var(--text-muted);text-align:center;margin:20px 0;" id="genTime"></div>
</div>
<script>
(async function() {
try {
const resp = await fetch('/api/summary');
const data = await resp.json();
renderSummary(data);
} catch(e) {
document.getElementById('standaloneResults').innerHTML =
'<div class="alert alert-amber">无法连接后端服务,请确保 Flask 已启动</div>';
document.getElementById('questionnaireResults').innerHTML = '';
}
})();
function renderSummary(data) {
// 完成度提示
if (data.status.completed < data.status.total) {
document.getElementById('completionAlert').style.display = 'block';
document.getElementById('completionAlert').textContent =
'⚠️ 仅 ' + data.status.completed + '/' + data.status.total + ' 项测评已完成,以下为当前已提交结果。请填写剩余问卷后刷新。';
}
// 独立测评
const std = data.standalone_tests || {};
let stdHtml = '';
const testMeta = {
holland: { name: '霍兰德职业兴趣测试', icon: '🔬' },
mbti: { name: 'MBTI 性格测试', icon: '🧠' }
};
for (const [key, meta] of Object.entries(testMeta)) {
const s = std[key];
if (s) {
stdHtml += `<div class="standalone-card">
<div style="font-size:12px;color:var(--text-muted);">${meta.icon} ${meta.name}</div>
<div class="type">${s.result}</div>
<div class="label">${s.user_name} · ${s.completed_at || ''}</div>
</div>`;
} else {
stdHtml += `<div class="standalone-card" style="opacity:0.5;">
<div style="font-size:12px;color:var(--text-muted);">${meta.icon} ${meta.name}</div>
<div class="type">—</div>
<div class="label">未提交</div>
</div>`;
}
}
document.getElementById('standaloneResults').innerHTML = stdHtml || '<p class="empty-note">暂无独立测评结果</p>';
// API问卷
const qs = data.questionnaires || [];
let qHtml = '';
qs.forEach(q => {
const borderClass = q.target_user === '父母' ? ' parents' : '';
const tagBadge = q.target_user === '父母'
? '<span class="badge badge-amber" style="margin-left:8px;">父母填写</span>'
: '<span class="badge badge-blue" style="margin-left:8px;">天恒填写</span>';
if (q.responses && q.responses.length > 0) {
const responses = q.responses;
qHtml += `<div class="section-card${borderClass}">
<h3>${q.title} ${tagBadge} <span style="font-weight:400;font-size:12px;color:var(--text-muted);">${responses.length} 份答卷)</span></h3>`;
responses.forEach((r, ri) => {
const answers = r.answers || {};
qHtml += `<div style="margin:12px 0;padding:10px;background:var(--bg);border-radius:6px;">
<div style="font-weight:600;font-size:13px;margin-bottom:6px;">👤 ${r.user_name} <span style="font-weight:400;font-size:11px;color:var(--text-muted);">${r.created_at}</span></div>`;
Object.entries(answers).forEach(([key, val], vi) => {
if (vi < 10) { // 最多显示10条
qHtml += `<div class="qa-item">
<div class="label">Q${key}:</div>
<div class="value">${escapeHtml(String(val))}</div>
</div>`;
}
});
if (Object.keys(answers).length > 10) {
qHtml += `<div style="font-size:12px;color:var(--text-muted);">... 共 ${Object.keys(answers).length} 题</div>`;
}
qHtml += '</div>';
});
qHtml += '</div>';
} else {
qHtml += `<div class="section-card${borderClass}" style="opacity:0.6;">
<h3>${q.title} ${tagBadge}</h3>
<p class="empty-note">暂无答卷</p>
</div>`;
}
});
document.getElementById('questionnaireResults').innerHTML = qHtml || '<p class="empty-note">暂无问卷结果</p>';
// 生成时间
document.getElementById('genTime').textContent = '报告生成时间:' + (data.generated_at || '');
}
function escapeHtml(str) {
const div = document.createElement('div');
div.textContent = str;
return div.innerHTML;
}
</script>
</body>
</html>
@@ -0,0 +1,614 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>霍兰德职业兴趣测试 · 自评版</title>
<style>
:root {
--primary: #1a3a5c;
--primary-light: #2c5282;
--gold: #c9a84c;
--gold-light: #f0e6c8;
--bg: #f5f0e8;
--card: #ffffff;
--text: #2d3748;
--text-light: #718096;
--border: #e2e8f0;
--success: #38a169;
--accent-r: #e53e3e;
--accent-i: #3182ce;
--accent-a: #805ad5;
--accent-s: #38a169;
--accent-e: #dd6b20;
--accent-c: #718096;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body { font-family: "PingFang SC","Microsoft YaHei","Noto Sans SC",sans-serif; background: var(--bg); color: var(--text); line-height: 1.8; padding-bottom: 80px; }
/* Header */
.header { background: linear-gradient(135deg, var(--primary) 0%, var(--primary-light) 100%); color: #fff; padding: 40px 20px; text-align: center; position: relative; overflow: hidden; }
.header::after { content:""; position: absolute; top: -50%; right: -20%; width: 300px; height: 300px; background: rgba(201,168,76,0.1); border-radius: 50%; }
.header h1 { font-size: 28px; font-weight: 700; margin-bottom: 8px; position: relative; z-index: 1; }
.header .subtitle { font-size: 15px; opacity: 0.85; position: relative; z-index: 1; }
.header .badge { display: inline-block; background: var(--gold); color: var(--primary); padding: 4px 16px; border-radius: 20px; font-size: 13px; font-weight: 600; margin-top: 12px; position: relative; z-index: 1; }
/* Container */
.container { max-width: 720px; margin: 0 auto; padding: 20px; }
/* Intro Card */
.intro-card { background: var(--card); border-radius: 12px; padding: 28px; margin: 24px 0; box-shadow: 0 1px 3px rgba(0,0,0,0.08); border-left: 4px solid var(--primary); }
.intro-card h3 { font-size: 17px; color: var(--primary); margin-bottom: 8px; }
.intro-card p { font-size: 14px; color: var(--text-light); margin-bottom: 6px; }
/* Dimension Nav */
.dim-nav { display: flex; flex-wrap: wrap; gap: 8px; margin: 20px 0; position: sticky; top: 10px; z-index: 10; background: var(--bg); padding: 12px 0; }
.dim-nav button { padding: 8px 16px; border: 2px solid var(--border); border-radius: 20px; background: var(--card); cursor: pointer; font-size: 14px; font-weight: 600; transition: all 0.2s; color: var(--text); }
.dim-nav button:hover { border-color: var(--primary-light); }
.dim-nav button.active { background: var(--primary); color: #fff; border-color: var(--primary); }
.dim-nav button.done { border-color: var(--success); color: var(--success); }
.dim-nav button.done::after { content: " ✓"; }
/* Section */
.section { background: var(--card); border-radius: 12px; padding: 32px 28px; margin: 20px 0; box-shadow: 0 1px 3px rgba(0,0,0,0.08); }
.section h2 { font-size: 22px; color: var(--primary); margin-bottom: 4px; display: flex; align-items: center; gap: 10px; }
.section .dim-code { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: 50%; font-weight: 700; font-size: 18px; color: #fff; flex-shrink: 0; }
.section .dim-desc { font-size: 14px; color: var(--text-light); margin-bottom: 20px; }
/* Question */
.question { padding: 14px 0; border-bottom: 1px solid var(--border); display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.question:last-child { border-bottom: none; }
.question .q-text { flex: 1; font-size: 15px; }
.question .q-num { color: var(--text-light); font-size: 13px; margin-right: 6px; }
/* Rating */
.rating { display: flex; gap: 4px; flex-shrink: 0; }
.rating button { width: 44px; height: 36px; border: 2px solid var(--border); border-radius: 6px; background: var(--card); cursor: pointer; font-size: 13px; font-weight: 600; transition: all 0.15s; color: var(--text-light); }
.rating button:hover { border-color: var(--primary-light); background: #ebf4ff; }
.rating button.sel-zero { background: #fed7d7; border-color: var(--accent-r); color: var(--accent-r); }
.rating button.sel-one { background: #fefcbf; border-color: var(--gold); color: #b7791f; }
.rating button.sel-two { background: #c6f6d5; border-color: var(--success); color: #276749; }
.rating .r-label { font-size: 10px; color: var(--text-light); text-align: center; line-height: 1.2; }
/* Progress */
.progress-wrap { background: var(--card); border-radius: 12px; padding: 20px 28px; margin: 20px 0; box-shadow: 0 1px 3px rgba(0,0,0,0.08); }
.progress-bar { height: 8px; background: var(--border); border-radius: 4px; overflow: hidden; margin-bottom: 8px; }
.progress-fill { height: 100%; background: linear-gradient(90deg, var(--primary-light), var(--gold)); border-radius: 4px; transition: width 0.3s; }
.progress-text { font-size: 14px; color: var(--text-light); text-align: center; }
/* Results */
.results { background: var(--card); border-radius: 12px; padding: 32px 28px; margin: 20px 0; box-shadow: 0 1px 3px rgba(0,0,0,0.08); display: none; }
.results.show { display: block; }
.results h2 { font-size: 24px; color: var(--primary); text-align: center; margin-bottom: 24px; }
.result-code { text-align: center; margin: 20px 0; }
.result-code .code-letters { font-size: 64px; font-weight: 900; letter-spacing: 8px; background: linear-gradient(135deg, var(--primary), var(--gold)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; }
.result-code .code-label { font-size: 15px; color: var(--text-light); margin-top: 4px; }
.bar-chart { margin: 24px 0; }
.bar-row { display: flex; align-items: center; margin: 10px 0; gap: 12px; }
.bar-label { width: 80px; text-align: right; font-size: 14px; font-weight: 600; }
.bar-track { flex: 1; height: 28px; background: #f0f0f0; border-radius: 4px; overflow: hidden; position: relative; }
.bar-fill { height: 100%; border-radius: 4px; transition: width 0.8s ease-out; display: flex; align-items: center; padding-left: 8px; color: #fff; font-size: 13px; font-weight: 600; }
.bar-score { width: 40px; text-align: left; font-size: 14px; font-weight: 700; }
.interpretation { margin: 24px 0; padding: 20px; background: var(--gold-light); border-radius: 8px; border-left: 4px solid var(--gold); }
.interpretation h4 { font-size: 16px; color: var(--primary); margin-bottom: 8px; }
.interpretation p { font-size: 14px; color: var(--text); line-height: 1.7; }
.btn-primary { display: block; margin: 24px auto 0; padding: 14px 40px; background: linear-gradient(135deg, var(--primary), var(--primary-light)); color: #fff; border: none; border-radius: 8px; font-size: 16px; font-weight: 700; cursor: pointer; transition: all 0.2s; }
.btn-primary:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(26,58,92,0.3); }
.btn-primary:disabled { opacity: 0.5; cursor: not-allowed; }
.warning-box { background: #fff3cd; border: 1px solid #ffc107; border-radius: 8px; padding: 16px 20px; margin: 20px 0; font-size: 14px; color: #856404; }
.warning-box strong { color: #664d03; }
.footer { text-align: center; padding: 40px 20px; color: var(--text-light); font-size: 13px; }
/* History Panel */
.history-panel { background: var(--card); border-radius: 12px; padding: 28px; margin: 20px 0; box-shadow: 0 1px 3px rgba(0,0,0,0.08); }
.history-panel h3 { font-size: 18px; color: var(--primary); margin-bottom: 16px; display: flex; align-items: center; gap: 8px; }
.history-list { display: flex; flex-direction: column; gap: 8px; }
.history-item { display: flex; align-items: center; justify-content: space-between; padding: 14px 16px; border: 2px solid var(--border); border-radius: 8px; cursor: pointer; transition: all 0.15s; gap: 12px; flex-wrap: wrap; }
.history-item:hover { border-color: var(--primary-light); background: #f8fafc; }
.history-item.active { border-color: var(--primary); background: #ebf4ff; }
.history-item .hi-code { font-size: 20px; font-weight: 900; color: var(--primary); letter-spacing: 2px; }
.history-item .hi-time { font-size: 13px; color: var(--text-light); }
.history-item .hi-current { font-size: 12px; color: var(--success); font-weight: 600; }
.history-empty { text-align: center; color: var(--text-light); font-size: 14px; padding: 24px 0; }
.btn-reset { display: inline-block; padding: 10px 28px; background: #fff; color: var(--primary); border: 2px solid var(--primary); border-radius: 8px; font-size: 14px; font-weight: 600; cursor: pointer; transition: all 0.2s; }
.btn-reset:hover { background: var(--primary); color: #fff; }
.result-timestamp { text-align: center; font-size: 13px; color: var(--text-light); margin-top: -16px; margin-bottom: 16px; }
.btn-actions { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; margin-top: 24px; }
/* Dimension color classes */
.code-R { background: var(--accent-r); }
.code-I { background: var(--accent-i); }
.code-A { background: var(--accent-a); }
.code-S { background: var(--accent-s); }
.code-E { background: var(--accent-e); }
.code-C { background: var(--accent-c); }
</style>
</head>
<body>
<div class="header">
<h1>🔬 霍兰德职业兴趣测试</h1>
<p class="subtitle">Holland RIASEC · 自评版 · 60题</p>
<span class="badge">全程约10分钟</span>
<span class="badge" style="background:#1a3a5c;color:#c9a84c;border:1px solid #c9a84c;margin-left:6px;">👤 天恒专属</span>
</div>
<div class="container">
<div class="intro-card">
<h3>📖 这是什么?</h3>
<p>霍兰德(John Holland)是美国心理学家,他发现人适合的职业和兴趣类型强相关。他把所有人分成 <strong>6种类型</strong>(RIASEC),每个人通常是其中2~3种类型的组合。</p>
</div>
<div class="intro-card">
<h3>📝 怎么填?</h3>
<p>下面有60个活动描述。对每个描述,请按<strong>你的真实感受</strong>选择:</p>
<p>🔴 <strong>不喜欢</strong> = 0分 &nbsp;|&nbsp; 🟡 <strong>有点喜欢</strong> = 1分 &nbsp;|&nbsp; 🟢 <strong>非常喜欢</strong> = 2分</p>
<p style="margin-top:8px;">💡 <strong>不是"你会不会做"而是"你想不想做"</strong>——假设你现在就会这些技能,你愿意做吗?</p>
</div>
<div id="dimNav" class="dim-nav"></div>
<div class="progress-wrap">
<div class="progress-bar"><div id="progressFill" class="progress-fill" style="width:0%"></div></div>
<div class="progress-text" id="progressText">已答 0 / 60 题</div>
</div>
<div id="questions"></div>
<div style="text-align:center;margin:30px 0;">
<button id="btnSubmit" class="btn-primary" disabled onclick="calculateResults()">📊 查看我的霍兰德结果</button>
</div>
<div id="results" class="results">
<h2>🎯 你的霍兰德职业兴趣结果</h2>
<div class="result-timestamp" id="resultTimestamp"></div>
<div class="result-code">
<div class="code-letters" id="resultCode"></div>
<div class="code-label">三字母代码 · Holland Code</div>
</div>
<div id="barChart" class="bar-chart"></div>
<div id="interpretation" class="interpretation"></div>
<div class="btn-actions">
<button class="btn-reset" onclick="resetTest()">🔄 再做一次</button>
<button class="btn-reset" onclick="submitToServer()" style="border-color:var(--success);color:var(--success);">📤 提交结果到服务器</button>
</div>
<div class="warning-box">
<strong>⚠️ 重要说明:</strong>本测试为自评简化版,用于快速了解兴趣倾向。结果仅作参考,不代表最终职业选择。完整60题的科学测评建议配合专业咨询师解读。
</div>
</div>
<div id="historyPanel" class="history-panel" style="display:none;">
<h3>📋 测试历史记录</h3>
<div id="historyList" class="history-list"></div>
</div>
</div>
<div class="footer">
<p>基于 John Holland RIASEC 理论编制 | 天恒专属 · 高考志愿规划工具</p>
</div>
<script>
// ========== Holland RIASEC Test Data ==========
const dimensions = [
{
code: 'R', name: '现实型', full: 'Realistic',
color: '#e53e3e',
desc: '动手操作型 — 喜欢摆弄机械、动手建造、户外活动',
items: [
'修理坏掉的电器或玩具',
'组装家具、模型或乐高',
'操作机器或电动工具',
'户外体力劳动(如搬东西、整理院子)',
'搭建或建造东西(如木工、搭棚子)',
'开车、骑车或操控机械设备',
'养花、种菜或打理植物',
'做手工(木工、金工、陶艺等)',
'调试设备或仪器',
'参加体育训练或比赛'
]
},
{
code: 'I', name: '研究型', full: 'Investigative',
color: '#3182ce',
desc: '研究思考型 — 喜欢分析问题、做实验、探索原理',
items: [
'解数学题或逻辑谜题',
'做科学实验(化学、物理、生物)',
'深入钻研某个感兴趣的话题',
'分析数据找规律(如统计成绩、对比数据)',
'读科普书籍或科技文章',
'用望远镜看星星、研究天文',
'玩解谜游戏或推理题',
'研究电脑或手机的工作原理',
'读研究报告或学术文章',
'独立思考一个复杂问题直到弄明白'
]
},
{
code: 'A', name: '艺术型', full: 'Artistic',
color: '#805ad5',
desc: '艺术创意型 — 喜欢创作、表达、设计、不被规则束缚',
items: [
'画画、素描或设计图案',
'写故事、诗歌或小说',
'演奏乐器或唱歌',
'拍照或拍视频(如剪Vlog、修图)',
'设计海报、Logo或宣传物料',
'布置房间、改变装饰风格',
'看画展、艺术展或设计展',
'自己设计衣服或搭配造型',
'创作音乐或编曲',
'参加表演、戏剧或即兴创作'
]
},
{
code: 'S', name: '社会型', full: 'Social',
color: '#38a169',
desc: '社会服务型 — 喜欢帮助别人、团队合作、与人打交道',
items: [
'帮同学讲解不会的题目',
'照顾生病或受伤的人',
'组织班级活动或朋友聚会',
'倾听朋友的烦恼并给予安慰',
'参加志愿者或公益活动',
'教小孩学习或带小孩玩',
'调解同学之间的矛盾',
'陪长辈或老人聊天',
'参加社团活动并积极参与',
'关心和帮助需要帮助的人'
]
},
{
code: 'E', name: '企业型', full: 'Enterprising',
color: '#dd6b20',
desc: '企业领导型 — 喜欢领导、说服、竞争、追求目标',
items: [
'在班级或社团担任负责人',
'说服别人接受你的观点或方案',
'组织或策划一场活动(如晚会、比赛)',
'卖东西或推销产品',
'在众人面前演讲或汇报',
'制定计划并推动团队执行',
'和别人谈判或讨价还价',
'尝试做小生意或创业想法',
'参加辩论赛或竞赛',
'带领团队完成一个有挑战的目标'
]
},
{
code: 'C', name: '常规型', full: 'Conventional',
color: '#718096',
desc: '常规有序型 — 喜欢有条理、按规则、精确细致的工作',
items: [
'整理文件或资料使其井井有条',
'制作表格、清单或日程安排',
'核对账目、数据或找错误',
'严格按照流程或步骤办事',
'管理日程、提醒和待办事项',
'记录和整理课堂笔记',
'分类整理物品(如图书、收藏品)',
'填写表格或制作报表',
'遵守时间表和计划不迟到',
'归档和管理文档使其易于查找'
]
}
];
// ========== State ==========
const scores = {}; // { 'R0': 0, 'R1': 1, ... }
dimensions.forEach(d => { for (let i=0; i<10; i++) scores[d.code + i] = -1; });
// ========== Render ==========
function renderAll() {
renderNav();
renderQuestions();
updateProgress();
}
function renderNav() {
const nav = document.getElementById('dimNav');
nav.innerHTML = dimensions.map(d => {
const answered = getDimAnswered(d.code);
const allDone = answered === 10;
return `<button class="${allDone ? 'done' : ''}" onclick="scrollToDim('${d.code}')">
<span class="dim-code code-${d.code}" style="display:inline-flex;width:24px;height:24px;font-size:12px">${d.code}</span> ${d.name}
</button>`;
}).join('');
}
function renderQuestions() {
const container = document.getElementById('questions');
container.innerHTML = dimensions.map(d => `
<div class="section" id="dim-${d.code}">
<h2>
<span class="dim-code code-${d.code}">${d.code}</span>
${d.name}型 <span style="font-size:14px;color:var(--text-light);font-weight:400;">— ${d.desc}</span>
</h2>
${d.items.map((item, i) => {
const key = d.code + i;
const val = scores[key];
return `<div class="question">
<span class="q-text"><span class="q-num">${i+1}.</span>${item}</span>
<div class="rating" id="rating-${key}">
<button class="${val===0?'sel-zero':''}" onclick="setScore('${key}',0)">不喜欢</button>
<button class="${val===1?'sel-one':''}" onclick="setScore('${key}',1)">有点喜欢</button>
<button class="${val===2?'sel-two':''}" onclick="setScore('${key}',2)">非常喜欢</button>
</div>
</div>`;
}).join('')}
</div>
`).join('');
}
function setScore(key, val) {
scores[key] = val;
// Update button styles
const rating = document.getElementById('rating-' + key);
if (rating) {
rating.querySelectorAll('button').forEach((btn, i) => {
btn.className = i === val ? (i === 0 ? 'sel-zero' : i === 1 ? 'sel-one' : 'sel-two') : '';
});
}
updateProgress();
renderNav();
}
function getDimAnswered(code) {
let count = 0;
for (let i = 0; i < 10; i++) if (scores[code + i] >= 0) count++;
return count;
}
function updateProgress() {
let total = 0, answered = 0;
dimensions.forEach(d => {
for (let i = 0; i < 10; i++) { total++; if (scores[d.code + i] >= 0) answered++; }
});
const pct = Math.round((answered / total) * 100);
document.getElementById('progressFill').style.width = pct + '%';
document.getElementById('progressText').textContent = `已答 ${answered} / ${total} 题 (${pct}%)`;
document.getElementById('btnSubmit').disabled = answered < total;
}
function scrollToDim(code) {
document.getElementById('dim-' + code).scrollIntoView({ behavior: 'smooth', block: 'start' });
}
// ========== Calculate & Display ==========
function calculateResults() {
// Compute raw scores
const dimScores = dimensions.map(d => {
let sum = 0;
for (let i = 0; i < 10; i++) sum += scores[d.code + i];
return { code: d.code, name: d.name, full: d.full, desc: d.desc, color: d.color, score: sum };
});
// Sort descending
dimScores.sort((a, b) => b.score - a.score);
// Top 3 Holland code
const top3 = dimScores.slice(0, 3);
const code = top3.map(d => d.code).join('');
// Generate timestamp
const now = new Date();
const timestamp = now.toLocaleString('zh-CN', { year:'numeric', month:'2-digit', day:'2-digit', hour:'2-digit', minute:'2-digit', second:'2-digit', hour12:false });
// Display result code & timestamp
document.getElementById('resultCode').textContent = code;
document.getElementById('resultTimestamp').textContent = '⏰ 测试时间:' + timestamp;
// Bar chart
const maxScore = Math.max(...dimScores.map(d => d.score), 1);
document.getElementById('barChart').innerHTML = dimScores.map((d, idx) => {
const pct = Math.round((d.score / maxScore) * 100);
const isTop = idx < 3;
return `<div class="bar-row">
<span class="bar-label" style="color:${d.color};font-weight:700;">
<span style="background:${d.color};color:#fff;padding:2px 8px;border-radius:4px;font-size:12px;margin-right:4px;">${d.code}</span> ${d.name}
</span>
<div class="bar-track">
<div class="bar-fill" style="width:${pct}%;background:${d.color};${isTop?'':'opacity:0.6;'}">
${pct > 20 ? d.score + '分' : ''}
</div>
</div>
<span class="bar-score" style="color:${d.color};">${d.score}</span>
</div>`;
}).join('');
// Interpretation
const interpretations = {
R: { traits: '动手能力强、务实、直接', careers: '工程师、技师、飞行员、农业技术、建筑、机械制造、运动教练、电子维修', study: '工科(机械/电气/土木/航空航天)、体育、农学、职业技术教育' },
I: { traits: '善于分析、好奇心强、独立', careers: '科学家、医生、程序员、数据分析师、研究员、药剂师、数学老师、工程师', study: '理科(数学/物理/化学/生物)、医学、计算机科学、心理学、统计学' },
A: { traits: '有创造力、善于表达、敏感', careers: '设计师、作家、音乐家、摄影师、导演、插画师、UI设计师、建筑设计师', study: '设计学、艺术学、建筑学、文学、新闻传播、数字媒体' },
S: { traits: '乐于助人、善解人意、有耐心', careers: '教师、心理咨询师、社工、护士、医生、HR、培训师、导游', study: '教育学、心理学、医学、社会工作、人力资源管理' },
E: { traits: '自信、有说服力、目标导向', careers: '企业家、销售经理、律师、政治家、房产经纪人、市场总监、投资人', study: '工商管理、经济学、法学、市场营销、金融学' },
C: { traits: '有条理、细心、可靠', careers: '会计师、审计师、银行职员、行政人员、数据录入员、图书管理员、档案管理员', study: '会计学、财务管理、行政管理、图书情报、审计学' }
};
const primary = top3[0];
const interp = interpretations[primary.code];
document.getElementById('interpretation').innerHTML = `
<h4>📌 你的主导类型:${primary.code}${primary.name}型</h4>
<p><strong>性格特质:</strong>${interp.traits}</p>
<p><strong>适合职业方向:</strong>${interp.careers}</p>
<p><strong>匹配专业大类:</strong>${interp.study}</p>
<hr style="margin:16px 0;border-color:#ddd;">
<p><strong>完整三字母代码:</strong><span style="font-size:20px;font-weight:900;color:var(--primary);">${code}</span> — 表示你的兴趣类型是 ${top3.map(d=>d.name+'型').join(' + ')} 的组合。</p>
<p style="margin-top:8px;font-size:13px;color:var(--text-light);">大多数人的兴趣是2~3种类型的组合,极少有人是单一类型。你的前三类型组合在一起,才构成你独特的职业兴趣画像。</p>
`;
// Show results
document.getElementById('results').classList.add('show');
document.getElementById('results').scrollIntoView({ behavior: 'smooth', block: 'start' });
// Save result to localStorage
const resultData = { code, dimScores, timestamp: now.toISOString(), timestampFormatted: timestamp };
saveResult(resultData);
renderHistory();
}
// ========== localStorage Persistence ==========
const STORAGE_KEY = 'holland_test_history';
function saveResult(resultData) {
let history = [];
try {
history = JSON.parse(localStorage.getItem(STORAGE_KEY) || '[]');
} catch(e) { history = []; }
history.push(resultData);
// Keep max 20 entries
if (history.length > 20) history = history.slice(-20);
try {
localStorage.setItem(STORAGE_KEY, JSON.stringify(history));
} catch(e) { /* quota exceeded, silently fail */ }
}
function loadHistory() {
try {
return JSON.parse(localStorage.getItem(STORAGE_KEY) || '[]');
} catch(e) { return []; }
}
function renderHistory() {
const history = loadHistory();
const panel = document.getElementById('historyPanel');
const list = document.getElementById('historyList');
if (history.length === 0) {
list.innerHTML = '<div class="history-empty">暂无历史记录,完成一次测试后会自动保存</div>';
} else {
list.innerHTML = history.map((h, idx) => {
const isLatest = idx === history.length - 1;
return `<div class="history-item${isLatest ? ' active' : ''}" onclick="showHistoryResult(${idx})">
<span class="hi-code">${h.code}</span>
<span class="hi-time">${h.timestampFormatted}</span>
${isLatest ? '<span class="hi-current">最新</span>' : ''}
</div>`;
}).reverse().join(''); // newest first
}
panel.style.display = 'block';
}
function showHistoryResult(idx) {
const history = loadHistory();
if (idx < 0 || idx >= history.length) return;
const h = history[idx];
// Highlight active item
document.querySelectorAll('.history-item').forEach((el, i) => {
el.classList.toggle('active', i === (history.length - 1 - idx)); // reversed display
});
// Re-display result (same display logic as calculateResults, but from stored data)
document.getElementById('resultCode').textContent = h.code;
document.getElementById('resultTimestamp').textContent = '⏰ 测试时间:' + h.timestampFormatted;
const maxScore = Math.max(...h.dimScores.map(d => d.score), 1);
document.getElementById('barChart').innerHTML = h.dimScores.map((d, idx2) => {
const pct = Math.round((d.score / maxScore) * 100);
const isTop = idx2 < 3;
return `<div class="bar-row">
<span class="bar-label" style="color:${d.color};font-weight:700;">
<span style="background:${d.color};color:#fff;padding:2px 8px;border-radius:4px;font-size:12px;margin-right:4px;">${d.code}</span> ${d.name}
</span>
<div class="bar-track">
<div class="bar-fill" style="width:${pct}%;background:${d.color};${isTop?'':'opacity:0.6;'}">
${pct > 20 ? d.score + '分' : ''}
</div>
</div>
<span class="bar-score" style="color:${d.color};">${d.score}</span>
</div>`;
}).join('');
const interpretations = {
R: { traits: '动手能力强、务实、直接', careers: '工程师、技师、飞行员、农业技术、建筑、机械制造、运动教练、电子维修', study: '工科(机械/电气/土木/航空航天)、体育、农学、职业技术教育' },
I: { traits: '善于分析、好奇心强、独立', careers: '科学家、医生、程序员、数据分析师、研究员、药剂师、数学老师、工程师', study: '理科(数学/物理/化学/生物)、医学、计算机科学、心理学、统计学' },
A: { traits: '有创造力、善于表达、敏感', careers: '设计师、作家、音乐家、摄影师、导演、插画师、UI设计师、建筑设计师', study: '设计学、艺术学、建筑学、文学、新闻传播、数字媒体' },
S: { traits: '乐于助人、善解人意、有耐心', careers: '教师、心理咨询师、社工、护士、医生、HR、培训师、导游', study: '教育学、心理学、医学、社会工作、人力资源管理' },
E: { traits: '自信、有说服力、目标导向', careers: '企业家、销售经理、律师、政治家、房产经纪人、市场总监、投资人', study: '工商管理、经济学、法学、市场营销、金融学' },
C: { traits: '有条理、细心、可靠', careers: '会计师、审计师、银行职员、行政人员、数据录入员、图书管理员、档案管理员', study: '会计学、财务管理、行政管理、图书情报、审计学' }
};
const interp = interpretations[h.dimScores[0].code];
document.getElementById('interpretation').innerHTML = `
<h4>📌 你的主导类型:${h.dimScores[0].code}${h.dimScores[0].name}型</h4>
<p><strong>性格特质:</strong>${interp.traits}</p>
<p><strong>适合职业方向:</strong>${interp.careers}</p>
<p><strong>匹配专业大类:</strong>${interp.study}</p>
<hr style="margin:16px 0;border-color:#ddd;">
<p><strong>完整三字母代码:</strong><span style="font-size:20px;font-weight:900;color:var(--primary);">${h.code}</span> — 表示你的兴趣类型是 ${h.dimScores.slice(0,3).map(d=>d.name+'型').join(' + ')} 的组合。</p>
<p style="margin-top:8px;font-size:13px;color:var(--text-light);">大多数人的兴趣是2~3种类型的组合,极少有人是单一类型。你的前三类型组合在一起,才构成你独特的职业兴趣画像。</p>
`;
document.getElementById('results').classList.add('show');
document.getElementById('results').scrollIntoView({ behavior: 'smooth', block: 'start' });
}
function resetTest() {
if (!confirm('确定要重新测试吗?当前结果已自动保存到历史记录中,不会丢失。')) return;
// Reset all scores
dimensions.forEach(d => { for (let i = 0; i < 10; i++) scores[d.code + i] = -1; });
// Hide results
document.getElementById('results').classList.remove('show');
document.getElementById('resultCode').textContent = '';
document.getElementById('resultTimestamp').textContent = '';
document.getElementById('barChart').innerHTML = '';
document.getElementById('interpretation').innerHTML = '';
// Re-render questions
renderAll();
// Scroll to top
window.scrollTo({ top: 0, behavior: 'smooth' });
}
// ========== 提交到服务器 ==========
async function submitToServer() {
const code = document.getElementById('resultCode').textContent;
if (!code) { alert('请先完成测试再提交'); return; }
const dimScores = dimensions.map(d => {
let sum = 0;
for (let i = 0; i < 10; i++) sum += scores[d.code + i];
return { code: d.code, name: d.name, score: sum };
}).sort((a, b) => b.score - a.score);
try {
const resp = await fetch('/api/standalone/submit', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
test_name: 'holland',
user_name: '天恒',
result: code,
full_data: { code, dimScores }
})
});
const result = await resp.json();
if (result.success) {
alert('✅ 霍兰德测试结果已成功提交到服务器!\n可在首页「问卷完成情况」查看。');
} else {
alert('提交失败:' + (result.error || '未知错误'));
}
} catch(e) {
alert('提交失败:无法连接服务器。请确保通过 NAS 地址访问本页面。');
}
}
// ========== Init ==========
renderAll();
// Load and show history on page load if exists
(function() {
const history = loadHistory();
if (history.length > 0) {
renderHistory();
}
})();
</script>
</body>
</html>