Files
lofyerandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> b9fbd4c6af refactor: simplify product copy
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-25 11:37:59 +08:00

1603 lines
85 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta
name="description"
content="产教融智,面向职业院校的供需分析、校企合作、数据检查与改进任务平台"
/>
<title>产教融智 · 供需分析与校企合作</title>
<link rel="icon" href="./favicon.svg" type="image/svg+xml" />
<link rel="stylesheet" href="./styles.css" />
<link rel="stylesheet" href="./enterprise.css" />
</head>
<body>
<div class="app-shell">
<aside class="sidebar" id="sidebar">
<div class="brand">
<div class="brand-mark" aria-hidden="true">
<span></span><span></span><span></span>
</div>
<div>
<strong>产教融智</strong>
<small>INDUSTRY · EDUCATION</small>
</div>
</div>
<div class="school-card" id="organizationCard">
<div class="school-emblem" id="organizationEmblem">杭</div>
<div>
<span id="organizationLabel">当前组织</span>
<strong id="organizationName">杭州科技职业技术学院</strong>
</div>
<button class="icon-button subtle" id="organizationSwitcher" aria-label="切换组织">
<svg viewBox="0 0 24 24" aria-hidden="true">
<path d="m9 18 6-6-6-6" />
</svg>
</button>
</div>
<nav class="main-nav" aria-label="主导航">
<div class="nav-group" id="schoolNav">
<span class="nav-label" id="workspaceNavLabel">工作空间</span>
<button class="nav-item active" data-view="dashboard" data-menu-key="dashboard">
<svg viewBox="0 0 24 24" aria-hidden="true">
<path d="M4 13h6V4H4v9Zm0 7h6v-4H4v4Zm10 0h6v-9h-6v9Zm0-16v4h6V4h-6Z" />
</svg>
<span>决策总览</span>
</button>
<button class="nav-item" data-view="loop" data-menu-key="loop">
<svg viewBox="0 0 24 24" aria-hidden="true">
<path d="M20 7h-9a4 4 0 0 0-4 4v1M4 17h9a4 4 0 0 0 4-4v-1M16 4l4 3-4 3M8 14l-4 3 4 3" />
</svg>
<span>业务流程</span>
<span class="nav-dot"></span>
</button>
<button class="nav-item" data-view="profession" data-menu-key="profession">
<svg viewBox="0 0 24 24" aria-hidden="true">
<path d="M3 11h18M5 7l7-4 7 4M5 11v7m4-7v7m6-7v7m4-7v7M3 21h18" />
</svg>
<span>专业分析</span>
<span class="nav-count">32</span>
</button>
<button class="nav-item" data-view="collaboration" data-menu-key="collaboration">
<svg viewBox="0 0 24 24" aria-hidden="true">
<path d="M8 12h8m-4-4v8M4 7h3l2-3h6l2 3h3v13H4V7Z" />
</svg>
<span>校企合作</span>
</button>
<button class="nav-item" data-view="actions" data-menu-key="actions">
<svg viewBox="0 0 24 24" aria-hidden="true">
<path d="m9 11 3 3L22 4M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11" />
</svg>
<span>改进任务</span>
<span class="nav-dot"></span>
</button>
<button class="nav-item" data-view="data" data-menu-key="data">
<svg viewBox="0 0 24 24" aria-hidden="true">
<ellipse cx="12" cy="5" rx="8" ry="3" />
<path d="M4 5v6c0 1.66 3.58 3 8 3s8-1.34 8-3V5M4 11v6c0 1.66 3.58 3 8 3s8-1.34 8-3v-6" />
</svg>
<span id="dataNavText">数据资产</span>
</button>
<span class="nav-label nav-label-spaced" id="deliveryNavLabel">交付中心</span>
<button class="nav-item" data-view="reports" data-menu-key="report">
<svg viewBox="0 0 24 24" aria-hidden="true">
<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6Z" />
<path d="M14 2v6h6M8 13h8M8 17h6" />
</svg>
<span>分析报告</span>
</button>
<button class="nav-item" data-showcase-open data-menu-key="screen">
<svg viewBox="0 0 24 24" aria-hidden="true">
<rect x="2" y="3" width="20" height="14" rx="2" />
<path d="M8 21h8m-4-4v4" />
</svg>
<span>展示大屏</span>
</button>
</div>
<div class="nav-group" id="platformNav" hidden>
<span class="nav-label">平台运营</span>
<button class="nav-item active" data-platform-target="platformOverview">
<svg viewBox="0 0 24 24" aria-hidden="true">
<path d="M4 13h6V4H4v9Zm0 7h6v-4H4v4Zm10 0h6v-9h-6v9Zm0-16v4h6V4h-6Z" />
</svg>
<span>平台总览</span>
</button>
<button class="nav-item" data-platform-target="packageManagement">
<svg viewBox="0 0 24 24" aria-hidden="true">
<path d="m4 7 8-4 8 4-8 4-8-4Zm0 0v10l8 4 8-4V7M12 11v10" />
</svg>
<span>数据包管理</span>
<span class="nav-count">11</span>
</button>
<button class="nav-item" data-platform-target="tenantManagement">
<svg viewBox="0 0 24 24" aria-hidden="true">
<path d="M3 10h18M5 7l7-4 7 4M5 10v8m4-8v8m6-8v8m4-8v8M3 21h18" />
</svg>
<span>机构与租户</span>
</button>
<button class="nav-item" data-platform-target="accountManagement">
<svg viewBox="0 0 24 24" aria-hidden="true">
<path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2M9 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8m7-1 2 2 4-4" />
</svg>
<span>账号与权限</span>
</button>
<span class="nav-label nav-label-spaced">系统保障</span>
<button class="nav-item" data-platform-target="backupManagement">
<svg viewBox="0 0 24 24" aria-hidden="true">
<ellipse cx="12" cy="5" rx="8" ry="3" />
<path d="M4 5v6c0 1.66 3.58 3 8 3s8-1.34 8-3V5M4 11v6c0 1.66 3.58 3 8 3s8-1.34 8-3v-6" />
</svg>
<span>备份与恢复</span>
</button>
<button class="nav-item" data-platform-target="auditManagement">
<svg viewBox="0 0 24 24" aria-hidden="true">
<path d="m9 12 2 2 4-4M12 22C7 20 4 16.5 4 11V5l8-3 8 3v6c0 5.5-3 9-8 11Z" />
</svg>
<span>审计与监控</span>
<span class="nav-dot"></span>
</button>
</div>
</nav>
<div class="sidebar-footer" id="sidebarFooter">
<div class="sync-line">
<span class="live-dot"></span>
<span>数据更新于 08:30</span>
</div>
<button class="meeting-pack" data-report-generate="package">
<span class="meeting-icon">
<svg viewBox="0 0 24 24" aria-hidden="true">
<path d="M12 3v12m0 0 4-4m-4 4-4-4M5 21h14" />
</svg>
</span>
<span>
<small>供需会材料包</small>
<strong>一键生成</strong>
</span>
<svg class="meeting-arrow" viewBox="0 0 24 24" aria-hidden="true">
<path d="m9 18 6-6-6-6" />
</svg>
</button>
</div>
</aside>
<div class="workspace">
<header class="topbar">
<div class="topbar-left">
<button class="icon-button mobile-menu" id="mobileMenu" aria-label="打开菜单">
<svg viewBox="0 0 24 24" aria-hidden="true">
<path d="M4 6h16M4 12h16M4 18h16" />
</svg>
</button>
<div>
<div class="breadcrumb">
<span id="breadcrumbRoot">产教融合中心</span>
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="m9 18 6-6-6-6" /></svg>
<strong id="breadcrumbCurrent">决策总览</strong>
</div>
<p class="topbar-date" id="topbarContext">2025—2026 学年 · 第 2 学期</p>
</div>
</div>
<div class="topbar-actions">
<button class="tour-launch" id="productTourButton">
<svg viewBox="0 0 24 24" aria-hidden="true">
<path d="M5 4h14v16H5V4Zm4 4h6M9 12h6M9 16h4" />
</svg>
<span>产品导览</span>
</button>
<span class="edition-badge">企业版</span>
<label class="role-switcher" aria-label="切换工作角色">
<span class="role-avatar" id="roleAvatar">周</span>
<span class="role-copy">
<strong id="roleUserName">周明远</strong>
<small id="roleName">校级管理者</small>
</span>
<select id="roleSelect">
<option value="校级管理者">校级管理者</option>
<option value="校级技术管理员">校级技术管理员</option>
<option value="学院负责人">学院负责人</option>
<option value="专业负责人">专业负责人</option>
<option value="就业老师">就业老师</option>
<option value="企业导师">企业导师</option>
<option value="厂商超级管理员">厂商超级管理员</option>
</select>
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5" /></svg>
</label>
<button class="icon-button notification-button" id="notificationButton" aria-label="通知">
<svg viewBox="0 0 24 24" aria-hidden="true">
<path d="M18 8a6 6 0 0 0-12 0c0 7-3 7-3 9h18c0-2-3-2-3-9M10 21h4" />
</svg>
<span>3</span>
</button>
</div>
</header>
<main class="main-content">
<!-- 校园业务流程 -->
<section class="view" id="view-loop" data-title="业务流程">
<div class="page-heading heading-with-actions">
<div>
<div class="eyebrow"><span></span> CAMPUS WORKFLOW</div>
<h1>企业需求到成效复核流程</h1>
<p>点击节点查看责任人、输入、输出和关联记录;当前角色可办理已满足前置条件的事项。</p>
</div>
<button class="button secondary" id="resetClosedLoop">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M20 11a8 8 0 1 0-2.34 5.66M20 4v7h-7" /></svg>
重置样板
</button>
</div>
<div class="loop-identity-strip" id="loopIdentityStrip"></div>
<article class="panel loop-status-panel">
<div class="panel-header">
<div><span class="panel-kicker">INTERACTIVE WORKFLOW</span><h2>需求到复核流程图</h2></div>
<span class="version-badge" id="loopSchemaBadge">SCHEMA V2</span>
</div>
<div class="loop-flow-toolbar">
<div class="loop-flow-summary" id="loopFlowSummary"></div>
<button class="button tertiary" id="loopFocusCurrent">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 8v8m-4-4h8M4 12a8 8 0 1 0 16 0 8 8 0 0 0-16 0Z" /></svg>
定位待办节点
</button>
</div>
<div class="loop-flow-scroll">
<div class="loop-flow-canvas">
<svg class="loop-flow-edges" id="loopFlowEdges" preserveAspectRatio="none" aria-hidden="true"></svg>
<div class="loop-flow-nodes" id="loopChain" role="group" aria-label="校园业务流程节点"></div>
</div>
</div>
<div class="loop-mobile-branches" id="loopMobileBranches" aria-label="流程回流关系"></div>
<div class="loop-flow-legend" aria-label="流程状态图例">
<span><i class="complete"></i>已完成</span>
<span><i class="current"></i>当前待办</span>
<span><i class="risk"></i>退回或整改</span>
<span><i class="locked"></i>前置未满足</span>
</div>
</article>
<div class="loop-layout">
<section class="loop-main">
<article class="panel loop-detail-panel">
<div class="panel-header">
<div><span class="panel-kicker" id="loopNodeKicker">NODE DETAIL</span><h2 id="loopNodeTitle">节点详情</h2></div>
<span class="status-badge" id="loopNodeStatus">待选择</span>
</div>
<div class="loop-node-detail" id="loopNodeDetail" aria-live="polite"></div>
</article>
<article class="panel loop-audit-panel">
<div class="panel-header">
<div><span class="panel-kicker">AUDIT EVENTS</span><h2>流程审计事件</h2></div>
<span class="panel-count" id="loopAuditCount">0 条</span>
</div>
<div class="loop-audit-list" id="loopAuditList"></div>
</article>
</section>
<aside class="panel loop-action-panel">
<div class="panel-header"><div><span class="panel-kicker">ROLE QUEUE</span><h2 id="loopRoleActionTitle">当前角色待办节点</h2></div></div>
<div class="loop-role-boundary" id="loopRoleBoundary"></div>
<div class="loop-action-list" id="loopActionList"></div>
</aside>
</div>
</section>
<!-- 决策总览 -->
<section class="view active" id="view-dashboard" data-title="决策总览">
<div class="page-heading heading-with-actions">
<div>
<div class="eyebrow"><span></span> SCHOOL OVERVIEW</div>
<h1>产教供需决策总览</h1>
<p>根据产业岗位变化建立专业建设任务,并通过报告、过程证据和后续复核检查结果。</p>
</div>
<div class="heading-actions">
<button class="button secondary" data-report-generate="package">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3v12m0 0 4-4m-4 4-4-4M5 21h14" /></svg>
导出材料
</button>
<button class="button primary" id="runAnalysis">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 2v4m0 12v4M4.93 4.93l2.83 2.83m8.48 8.48 2.83 2.83M2 12h4m12 0h4M4.93 19.07l2.83-2.83M16.24 7.76l2.83-2.83" /></svg>
生成本期分析
</button>
</div>
</div>
<div class="quality-strip">
<div class="quality-main">
<span class="quality-icon">
<svg viewBox="0 0 24 24" aria-hidden="true">
<circle cx="12" cy="12" r="9" />
<path d="m8.5 12 2.35 2.35 4.9-5.15" />
</svg>
</span>
<div>
<strong>本期数据已通过质量校验</strong>
<span>3 类数据资产 · 6 个数据源 · 128,642 条有效记录 · 岗位归一覆盖率 94.8%</span>
</div>
</div>
<button class="text-button" data-view-jump="data">
查看数据血缘
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="m9 18 6-6-6-6" /></svg>
</button>
</div>
<div class="metric-grid">
<article class="metric-card">
<div class="metric-top">
<span class="metric-label">全校供需匹配度</span>
<button class="info-button" data-tip="综合岗位匹配、技能覆盖、薪资竞争力计算">i</button>
</div>
<div class="metric-value"><strong id="metricMatch">78.6</strong><small>分</small></div>
<div class="metric-foot positive">
<span>↑ 4.2</span>
<small>较上期</small>
</div>
<div class="metric-spark" id="sparkMatch"></div>
</article>
<article class="metric-card">
<div class="metric-top">
<span class="metric-label">产业需求岗位</span>
<span class="metric-tag green">近90天</span>
</div>
<div class="metric-value"><strong id="metricJobs">18,420</strong><small>个</small></div>
<div class="metric-foot positive">
<span>↑ 12.8%</span>
<small>同比增速</small>
</div>
<div class="metric-spark" id="sparkJobs"></div>
</article>
<article class="metric-card">
<div class="metric-top">
<span class="metric-label">重点技能缺口</span>
<span class="metric-tag amber">待响应</span>
</div>
<div class="metric-value"><strong id="metricGaps">23</strong><small>项</small></div>
<div class="metric-foot warning">
<span>8 项高优先级</span>
<small>涉及 11 个专业</small>
</div>
<div class="metric-spark" id="sparkGaps"></div>
</article>
<article class="metric-card">
<div class="metric-top">
<span class="metric-label">改进任务完成率</span>
<span class="metric-tag blue">本学期</span>
</div>
<div class="metric-value"><strong id="metricActions">68</strong><small>%</small></div>
<div class="metric-foot positive">
<span>↑ 16%</span>
<small>21 / 31 项已完成</small>
</div>
<div class="metric-progress"><i style="width: 68%"></i></div>
</article>
</div>
<div class="dashboard-grid">
<article class="panel match-panel">
<div class="panel-header">
<div>
<span class="panel-kicker">核心指标</span>
<h2>专业与产业需求匹配趋势</h2>
</div>
<div class="segmented" id="periodSwitch">
<button data-period="term" class="active">本学期</button>
<button data-period="year">本学年</button>
<button data-period="three">近三年</button>
</div>
</div>
<div class="match-content">
<div class="score-dial" aria-label="供需匹配度78.6分">
<svg viewBox="0 0 160 160">
<circle class="dial-track" cx="80" cy="80" r="62"></circle>
<circle class="dial-value" id="dialValue" cx="80" cy="80" r="62"></circle>
</svg>
<div>
<strong id="dialScore">78.6</strong>
<span>综合匹配度</span>
</div>
</div>
<div class="trend-chart-wrap">
<div class="chart-legend">
<span><i class="legend-current"></i>本校匹配度</span>
<span><i class="legend-benchmark"></i>区域院校基准</span>
</div>
<svg class="line-chart" id="lineChart" viewBox="0 0 620 220" preserveAspectRatio="none" aria-label="专业匹配度趋势图"></svg>
<div class="chart-labels" id="chartLabels"></div>
</div>
</div>
<div class="match-summary">
<span><i class="summary-good"></i><strong>18 个</strong>专业保持高匹配</span>
<span><i class="summary-watch"></i><strong>9 个</strong>专业需要关注</span>
<span><i class="summary-risk"></i><strong>5 个</strong>专业进入预警</span>
</div>
</article>
<article class="panel ai-panel">
<div class="ai-panel-head">
<span class="ai-symbol">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="m12 3 1.6 4.4L18 9l-4.4 1.6L12 15l-1.6-4.4L6 9l4.4-1.6L12 3ZM19 15l.8 2.2L22 18l-2.2.8L19 21l-.8-2.2L16 18l2.2-.8L19 15Z" /></svg>
</span>
<div>
<small>AI DECISION BRIEF</small>
<h2>本期决策简报</h2>
</div>
<span class="ai-state">已生成</span>
</div>
<p class="ai-lead">
智能制造与数字商贸需求显著上升,学校整体匹配度提高,但云原生、工业视觉和跨境运营仍存在结构性缺口。
</p>
<div class="insight-list">
<button class="insight-item" data-view-jump="profession">
<span class="insight-index">01</span>
<span>
<strong>云原生技能需求增长 36%</strong>
<small>建议软件技术专业强化容器化实训</small>
</span>
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="m9 18 6-6-6-6" /></svg>
</button>
<button class="insight-item" data-view-jump="collaboration">
<span class="insight-index">02</span>
<span>
<strong>新增 7 家高匹配潜力企业</strong>
<small>集中在智能制造与数字贸易方向</small>
</span>
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="m9 18 6-6-6-6" /></svg>
</button>
<button class="insight-item" data-view-jump="actions">
<span class="insight-index">03</span>
<span>
<strong>3 项高优任务将在本月逾期</strong>
<small>需教务处协调学院负责人推进</small>
</span>
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="m9 18 6-6-6-6" /></svg>
</button>
</div>
<div class="ai-source">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20ZM12 8v5m0 3h.01" /></svg>
结论使用基础数据包、校级数据与企业确认数据,每条引用都注明来源
</div>
</article>
</div>
<div class="content-grid">
<article class="panel profession-rank">
<div class="panel-header">
<div>
<span class="panel-kicker">专业表现</span>
<h2>32个专业供需表现</h2>
</div>
<div class="panel-tools">
<label class="search-field compact">
<svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="11" cy="11" r="7" /><path d="m20 20-4-4" /></svg>
<input id="professionSearch" type="search" placeholder="搜索专业" />
</label>
<button class="text-button" data-view-jump="profession">
查看全部
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="m9 18 6-6-6-6" /></svg>
</button>
</div>
</div>
<div class="table-wrap">
<table class="data-table">
<thead>
<tr>
<th>专业名称</th>
<th>所属学院</th>
<th>匹配度</th>
<th>市场需求</th>
<th>技能缺口</th>
<th>趋势</th>
<th></th>
</tr>
</thead>
<tbody id="professionTable"></tbody>
</table>
</div>
</article>
<article class="panel industry-panel">
<div class="panel-header">
<div>
<span class="panel-kicker">产业信号</span>
<h2>需求增长最快方向</h2>
</div>
<button class="more-button" id="industryTrendMore" aria-label="查看完整产业趋势">
<svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="5" cy="12" r="1" /><circle cx="12" cy="12" r="1" /><circle cx="19" cy="12" r="1" /></svg>
</button>
</div>
<div class="industry-list" id="industryList"></div>
<div class="industry-note">
<span>观察窗口</span>
<strong>近 90 天</strong>
<span>样本岗位</span>
<strong>18,420</strong>
</div>
</article>
</div>
</section>
<!-- 专业分析 -->
<section class="view" id="view-profession" data-title="专业分析">
<div class="page-heading profession-heading">
<div>
<div class="eyebrow"><span></span> PROGRAM ANALYSIS</div>
<div class="heading-inline">
<h1 id="professionTitle">软件技术</h1>
<label class="profession-select">
<select id="professionSelect" aria-label="选择专业">
<option value="software">软件技术</option>
<option value="mechatronics">机电一体化技术</option>
<option value="ecommerce">电子商务</option>
</select>
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5" /></svg>
</label>
</div>
<p><span id="professionCollege">信息工程学院</span> · 2026届毕业生 <span id="graduateCount">186</span> 人</p>
</div>
<div class="heading-actions">
<button class="button secondary" id="compareProfession">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 19V9m6 10V5m6 14v-7m4 7H2" /></svg>
加入专业对比
</button>
<button class="button primary" data-report-generate="profession">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M6 2h9l5 5v15H6V2Zm9 0v6h5M10 13h6m-6 4h6" /></svg>
生成专业报告
</button>
</div>
</div>
<div class="profile-banner">
<div class="profile-score">
<span>供需匹配度</span>
<strong id="profileScore">84.2</strong>
<small id="profileLevel">高匹配</small>
</div>
<div class="profile-divider"></div>
<div class="profile-metric">
<span>对口岗位需求</span>
<strong id="profileDemand">2,864</strong>
<small class="up">↑ 18.6%</small>
</div>
<div class="profile-metric">
<span>薪资竞争力</span>
<strong id="profileSalary">1.08</strong>
<small>区域均值 = 1</small>
</div>
<div class="profile-metric">
<span>课程技能覆盖</span>
<strong id="profileCoverage">76%</strong>
<small>31 / 41 项</small>
</div>
<div class="profile-metric">
<span>潜力合作企业</span>
<strong id="profileCompanies">12</strong>
<small>其中 4 家高意向</small>
</div>
</div>
<div class="tab-bar" id="professionTabs">
<button class="active" data-tab="skills">技能供需</button>
<button data-tab="jobs">岗位流向</button>
<button data-tab="salary">薪资对标</button>
<button data-tab="courses">课程映射</button>
</div>
<div class="profession-layout" id="professionSkillsView">
<div class="profession-main">
<article class="panel skill-panel">
<div class="panel-header">
<div>
<span class="panel-kicker">技能供需</span>
<h2>产业技能需求与课程覆盖</h2>
</div>
<div class="legend-row">
<span><i class="market-legend"></i>市场需求强度</span>
<span><i class="course-legend"></i>课程覆盖度</span>
</div>
</div>
<div id="skillChart" class="skill-chart"></div>
</article>
<article class="panel course-panel">
<div class="panel-header">
<div>
<span class="panel-kicker">行动建议</span>
<h2>课程改进建议</h2>
</div>
<span class="explainable-tag">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="m12 3 1.6 4.4L18 9l-4.4 1.6L12 15l-1.6-4.4L6 9l4.4-1.6L12 3Z" /></svg>
AI辅助 · 专家审核
</span>
</div>
<div id="courseRecommendations" class="recommendation-list"></div>
</article>
</div>
<aside class="profession-side">
<article class="panel job-panel">
<div class="panel-header">
<div>
<span class="panel-kicker">热门岗位</span>
<h2>对口岗位需求</h2>
</div>
<span class="time-caption">近90天</span>
</div>
<div id="jobDemandList" class="job-demand-list"></div>
</article>
<article class="panel company-panel">
<div class="panel-header">
<div>
<span class="panel-kicker">企业推荐</span>
<h2>高匹配合作企业</h2>
</div>
<button class="text-button" data-view-jump="collaboration">全部</button>
</div>
<div id="companyShortlist" class="company-shortlist"></div>
</article>
</aside>
</div>
<div class="profession-tab-view" id="professionDetailView" hidden></div>
</section>
<!-- 校企合作 -->
<section class="view" id="view-collaboration" data-title="校企合作">
<div class="page-heading heading-with-actions">
<div>
<div class="eyebrow"><span></span> COLLABORATION HUB</div>
<h1 id="collaborationHeading">校企合作</h1>
<p id="collaborationDescription">根据企业需求安排课程共建、合作项目和人才培养计划。</p>
</div>
<div class="heading-actions">
<button class="button secondary" id="enterpriseDemandButton">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 4h16v16H4V4Zm4 4h8m-8 4h5m-5 4h7" /></svg>
发起需求调研
</button>
<button class="button primary" id="newProjectButton">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 5v14M5 12h14" /></svg>
新建合作项目
</button>
</div>
</div>
<div class="collab-stats">
<div><span>在库合作企业</span><strong>126</strong><small>家</small><em>↑ 18</em></div>
<div><span>本学期合作项目</span><strong>24</strong><small>个</small><em>8 个进行中</em></div>
<div><span>企业导师</span><strong>68</strong><small>人</small><em>覆盖 17 个专业</em></div>
<div><span>学生参与</span><strong>1,284</strong><small>人次</small><em>满意度 92%</em></div>
</div>
<div class="collab-layout">
<article class="panel pipeline-panel">
<div class="panel-header">
<div>
<span class="panel-kicker">项目进度</span>
<h2>本学期重点项目</h2>
</div>
<div class="segmented">
<button class="active" data-project-filter="all">全部</button><button data-project-filter="course">共建课程</button><button data-project-filter="practice">实训项目</button>
</div>
</div>
<div class="project-list" id="projectList"></div>
</article>
<article class="panel demand-panel">
<div class="panel-header">
<div>
<span class="panel-kicker">企业声音</span>
<h2>待响应企业需求</h2>
</div>
<span class="panel-count">6 项</span>
</div>
<div class="demand-list" id="enterpriseDemandList"></div>
</article>
</div>
<article class="panel partner-panel">
<div class="panel-header">
<div>
<span class="panel-kicker">智能推荐</span>
<h2>潜力合作伙伴</h2>
</div>
<div class="filter-pills">
<button class="active" data-partner-filter="all">综合推荐</button><button data-partner-filter="智能制造">智能制造</button><button data-partner-filter="数字技术">数字技术</button><button data-partner-filter="现代服务">现代服务</button>
</div>
</div>
<div class="partner-grid" id="partnerGrid"></div>
</article>
</section>
<!-- 改进任务 -->
<section class="view" id="view-actions" data-title="改进任务">
<div class="page-heading heading-with-actions">
<div>
<div class="eyebrow"><span></span> ACTION TRACKER</div>
<h1>改进任务进展</h1>
<p>查看每项专业建设任务的负责人、进度和实际效果。</p>
</div>
<button class="button primary" id="newTaskButton">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 5v14M5 12h14" /></svg>
创建改进任务
</button>
</div>
<div class="action-overview panel">
<div class="action-ring">
<svg viewBox="0 0 120 120">
<circle cx="60" cy="60" r="47"></circle>
<circle class="complete" cx="60" cy="60" r="47"></circle>
</svg>
<span><strong>68%</strong><small>总体完成</small></span>
</div>
<div class="action-stat"><span>全部任务</span><strong>31</strong><small>本学期</small></div>
<div class="action-stat"><span>进行中</span><strong>7</strong><small>2 项存在风险</small></div>
<div class="action-stat"><span>待确认</span><strong>3</strong><small>需要校级审核</small></div>
<div class="action-stat"><span>已完成</span><strong>21</strong><small>按期率 90%</small></div>
<div class="action-health">
<span>任务健康度</span>
<strong>良好</strong>
<div><i style="width: 82%"></i></div>
</div>
</div>
<article class="panel task-panel">
<div class="task-toolbar">
<div class="filter-pills" id="taskFilters">
<button class="active" data-filter="all">全部 31</button>
<button data-filter="progress">进行中 7</button>
<button data-filter="review">待确认 3</button>
<button data-filter="done">已完成 21</button>
</div>
<label class="search-field">
<svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="11" cy="11" r="7" /><path d="m20 20-4-4" /></svg>
<input id="taskSearch" type="search" placeholder="搜索任务、专业或负责人" />
</label>
</div>
<div class="table-wrap">
<table class="data-table task-table">
<thead>
<tr>
<th>改进事项</th>
<th>关联专业</th>
<th>负责人</th>
<th>截止日期</th>
<th>进度</th>
<th>状态</th>
<th></th>
</tr>
</thead>
<tbody id="taskTable"></tbody>
</table>
</div>
</article>
</section>
<!-- 数据资产 -->
<section class="view" id="view-data" data-title="数据资产">
<div class="page-heading heading-with-actions">
<div>
<div class="eyebrow"><span></span> DATA FOUNDATION</div>
<h1 id="dataPageTitle">数据资产与质量</h1>
<p id="dataPageDescription">区分厂商基础数据包、学校自有数据与企业授权数据,每项分析结论都注明数据来源。</p>
</div>
<button class="button primary" id="syncAllButton">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M20 11a8 8 0 1 0-2.34 5.66M20 4v7h-7" /></svg>
<span id="syncAllButtonText">同步全部数据</span>
</button>
</div>
<div class="data-health">
<article class="data-health-main">
<div class="health-score">
<span>数据健康度</span>
<strong>92.6</strong>
<small>优秀</small>
</div>
<div class="health-copy">
<h2>三类数据资产已完成本期校验</h2>
<p>厂商基础数据包处于有效服务期,校级数据已完成同步,企业数据均保留授权与确认记录。</p>
<div class="health-meta">
<span><i></i>有效记录 <strong>128,642</strong></span>
<span><i></i>最新入库 <strong>今天 08:30</strong></span>
<span><i></i>质量规则 <strong>38 条</strong></span>
</div>
</div>
</article>
<article class="quality-dimensions">
<div><span>完整性</span><strong>94.8%</strong><i><b style="width:94.8%"></b></i></div>
<div><span>准确性</span><strong>91.2%</strong><i><b style="width:91.2%"></b></i></div>
<div><span>及时性</span><strong>96.5%</strong><i><b style="width:96.5%"></b></i></div>
<div><span>归一覆盖</span><strong>94.8%</strong><i><b style="width:94.8%"></b></i></div>
</article>
</div>
<div class="source-summary-grid" aria-label="数据资产分类总览">
<button class="source-summary-card vendor" data-source-summary-filter="vendor">
<span class="source-summary-icon">
<svg viewBox="0 0 24 24" aria-hidden="true">
<path d="M4 7h16v13H4V7Zm3 0V4h10v3M8 12h8m-8 4h5" />
</svg>
</span>
<span class="source-summary-copy">
<span class="source-summary-title">
<strong>互联网基础数据包</strong>
<em class="commercial-pill paid">付费订阅</em>
</span>
<small>由平台厂商按授权收集、检查,并按服务周期导入</small>
<span class="source-summary-metrics">
<span><strong>2</strong> 个数据源</span>
<span><strong>77,520</strong> 条记录</span>
</span>
<span class="source-summary-foot">我方维护 · 服务有效至 2026-12-31</span>
</span>
<svg class="source-summary-arrow" viewBox="0 0 24 24" aria-hidden="true"><path d="m9 18 6-6-6-6" /></svg>
</button>
<button class="source-summary-card school" data-source-summary-filter="school">
<span class="source-summary-icon">
<svg viewBox="0 0 24 24" aria-hidden="true">
<path d="M3 10h18M5 7l7-4 7 4M5 10v8m4-8v8m6-8v8m4-8v8M3 21h18" />
</svg>
</span>
<span class="source-summary-copy">
<span class="source-summary-title">
<strong>校级数据</strong>
<em class="commercial-pill owned">校方自有</em>
</span>
<small>来自学校业务系统、课程资源与教学管理过程</small>
<span class="source-summary-metrics">
<span><strong>3</strong> 个数据源</span>
<span><strong>42,772</strong> 条记录</span>
</span>
<span class="source-summary-foot">学校所有 · 校方授权系统内使用</span>
</span>
<svg class="source-summary-arrow" viewBox="0 0 24 24" aria-hidden="true"><path d="m9 18 6-6-6-6" /></svg>
</button>
<button class="source-summary-card enterprise" data-source-summary-filter="enterprise">
<span class="source-summary-icon">
<svg viewBox="0 0 24 24" aria-hidden="true">
<path d="M4 21V7l8-4 8 4v14M8 10h2m4 0h2m-8 4h2m4 0h2m-6 7v-3h4v3" />
</svg>
</span>
<span class="source-summary-copy">
<span class="source-summary-title">
<strong>企业数据</strong>
<em class="commercial-pill authorized">合作授权</em>
</span>
<small>由合作企业确认提交,用于校企共育和需求验证</small>
<span class="source-summary-metrics">
<span><strong>1</strong> 个数据源</span>
<span><strong>8,350</strong> 条记录</span>
</span>
<span class="source-summary-foot">企业提供 · 按合作范围授权使用</span>
</span>
<svg class="source-summary-arrow" viewBox="0 0 24 24" aria-hidden="true"><path d="m9 18 6-6-6-6" /></svg>
</button>
</div>
<div class="data-usage-note">
<span class="data-usage-icon">
<svg viewBox="0 0 24 24" aria-hidden="true">
<path d="m9 12 2 2 4-4M12 22C7 20 4 16.5 4 11V5l8-3 8 3v6c0 5.5-3 9-8 11Z" />
</svg>
</span>
<span>
<strong>数据使用边界</strong>
<small>基础数据包按订阅协议授权使用;校级数据权属归学校;企业数据仅用于约定的合作与人才培养场景。</small>
</span>
<button id="dataAuthorizationButton">查看授权说明</button>
</div>
<article class="panel data-lineage-panel" id="dataReportLineage">
<div class="panel-header data-lineage-header">
<div>
<span class="panel-kicker">DATA → ANALYSIS → REPORT</span>
<h2>数据与报告双向依赖图谱</h2>
<p>选择报告可查看所需数据;选择数据源可查看使用它的报告。缺口会列出业务索取人和技术接口人。</p>
</div>
<span class="lineage-snapshot-badge"><i></i>分析快照 V2026.03</span>
</div>
<div class="data-lineage-toolbar">
<div class="lineage-mode-switch" id="dataLineageModeSwitch" role="group" aria-label="选择图谱查看方向">
<button class="active" data-lineage-mode="report" aria-pressed="true">从报告看数据</button>
<button data-lineage-mode="source" aria-pressed="false">从数据看报告</button>
</div>
<label class="lineage-selector">
<span id="dataLineageSelectorLabel">选择报告</span>
<select id="dataLineageSelector" aria-label="选择报告查看所需数据"></select>
</label>
<label class="lineage-gap-toggle">
<input type="checkbox" id="dataLineageGapToggle">
<span><i></i>只看缺口</span>
</label>
</div>
<div class="lineage-summary-grid" id="dataLineageSummary" aria-live="polite"></div>
<div class="lineage-legend" aria-label="图谱图例">
<span><i class="required"></i>必需数据</span>
<span><i class="optional"></i>可选增强</span>
<span><i class="gap"></i>存在缺口</span>
<small>点击数据节点查看资产要求,点击报告节点进入在线报告。</small>
</div>
<div class="data-lineage-canvas" id="dataLineageCanvas"></div>
<div class="lineage-gap-section">
<div class="lineage-gap-heading">
<div>
<span>DATA REQUEST DESK</span>
<h3>缺口与补数责任</h3>
</div>
<strong id="dataLineageGapCount">0 项待处理</strong>
</div>
<div class="lineage-gap-list" id="dataLineageGapList"></div>
</div>
</article>
<article class="panel source-panel">
<div class="panel-header">
<div>
<span class="panel-kicker">数据资产目录</span>
<h2>数据源清单与授权状态</h2>
</div>
<button class="button tertiary" id="addDataSourceButton">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 5v14M5 12h14" /></svg>
添加数据源
</button>
</div>
<div class="source-filter-toolbar">
<div class="source-filters" id="sourceFilters" aria-label="按数据类别筛选">
<button class="active" data-source-filter="all">全部来源 <strong>6</strong></button>
<button data-source-filter="vendor">基础数据包 <strong>2</strong></button>
<button data-source-filter="school">校级数据 <strong>3</strong></button>
<button data-source-filter="enterprise">企业数据 <strong>1</strong></button>
</div>
<span class="source-filter-result" id="sourceFilterResult">当前展示 6 个数据源</span>
</div>
<div class="source-grid" id="sourceGrid"></div>
</article>
<div class="data-bottom-grid">
<article class="panel lineage-panel">
<div class="panel-header">
<div>
<span class="panel-kicker">处理步骤</span>
<h2>本期数据加工血缘</h2>
</div>
<span class="version-badge">分析版本 V2026.03</span>
</div>
<div class="lineage-flow">
<div><span>01</span><strong>原始接入</strong><small>142,318 条</small></div>
<i><svg viewBox="0 0 24 24"><path d="m9 18 6-6-6-6" /></svg></i>
<div><span>02</span><strong>清洗去重</strong><small>移除 9,824 条</small></div>
<i><svg viewBox="0 0 24 24"><path d="m9 18 6-6-6-6" /></svg></i>
<div><span>03</span><strong>岗位归一</strong><small>覆盖率 94.8%</small></div>
<i><svg viewBox="0 0 24 24"><path d="m9 18 6-6-6-6" /></svg></i>
<div class="active"><span>04</span><strong>分析快照</strong><small>128,642 条</small></div>
</div>
</article>
<article class="panel issue-panel">
<div class="panel-header">
<div>
<span class="panel-kicker">质量事项</span>
<h2>待处理问题</h2>
</div>
<span class="panel-count amber-count">3 项</span>
</div>
<div class="issue-list">
<button data-data-issue="salary-missing">
<span class="issue-level high">高</span><span><strong>就业系统薪资字段缺失</strong><small>涉及 86 条记录 · 电子商务专业</small></span><svg viewBox="0 0 24 24"><path d="m9 18 6-6-6-6" /></svg>
</button>
<button data-data-issue="job-normalization">
<span class="issue-level mid">中</span><span><strong>218 个岗位名称待归一</strong><small>主要来自本地人才网新增数据</small></span><svg viewBox="0 0 24 24"><path d="m9 18 6-6-6-6" /></svg>
</button>
<button data-data-issue="enterprise-duplicate">
<span class="issue-level low">低</span><span><strong>疑似重复企业 12 家</strong><small>等待统一社会信用代码核验</small></span><svg viewBox="0 0 24 24"><path d="m9 18 6-6-6-6" /></svg>
</button>
</div>
</article>
</div>
</section>
<!-- 报告中心 -->
<section class="view reports-view" id="view-reports" data-title="分析报告">
<div class="page-heading heading-with-actions">
<div>
<div class="eyebrow"><span></span> REPORT CENTER</div>
<h1>分析报告中心</h1>
<p id="reportCenterDescription">查看和管理校级、学院、专业、产业与数据质量报告,并保留各版本。</p>
</div>
<div class="heading-actions">
<button class="button secondary" id="reportTemplateButton">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 5h16v14H4V5Zm4 4h8m-8 4h8m-8 4h5" /></svg>
报告模板
</button>
<button class="button primary" data-report-generate="center">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 5v14M5 12h14" /></svg>
生成新报告
</button>
</div>
</div>
<div class="report-stat-grid">
<article><span>可查看报告</span><strong id="reportTotalCount">42</strong><small>份</small><em>覆盖 32 个专业</em></article>
<article><span>本期新生成</span><strong id="reportNewCount">36</strong><small>份</small><em>全部口径一致</em></article>
<article><span>待审核</span><strong id="reportReviewCount">3</strong><small>份</small><em>需要业务负责人确认</em></article>
<article><span>最近数据快照</span><strong class="report-version-value">V2026.03</strong><em>质量评分 92.6</em></article>
</div>
<div class="featured-report-grid" id="featuredReports"></div>
<article class="panel report-library-panel">
<div class="report-library-head">
<div>
<span class="panel-kicker">报告资产库</span>
<h2>全部分析报告</h2>
</div>
<div class="report-library-tools">
<label class="search-field">
<svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="11" cy="11" r="7" /><path d="m20 20-4-4" /></svg>
<input id="reportSearch" type="search" placeholder="搜索报告、学院或专业" />
</label>
<select id="reportPeriodFilter" aria-label="选择报告周期">
<option value="all">全部周期</option>
<option value="current">2026年3月</option>
<option value="previous">2025年度</option>
</select>
</div>
</div>
<div class="report-type-filters" id="reportTypeFilters">
<button class="active" data-report-filter="all">全部</button>
<button data-report-filter="school">校级报告</button>
<button data-report-filter="college">学院报告</button>
<button data-report-filter="profession">专业报告</button>
<button data-report-filter="industry">产业专题</button>
<button data-report-filter="quality">数据质量</button>
</div>
<div class="report-list-grid" id="reportList"></div>
<div class="report-library-foot">
<span id="reportListSummary">显示 8 份报告</span>
<button id="loadMoreReports">加载更多历史报告</button>
</div>
</article>
</section>
<!-- 厂商超级管理员 -->
<section class="view platform-view" id="view-platform" data-title="平台总览">
<div class="page-heading heading-with-actions" id="platformOverview">
<div>
<div class="eyebrow"><span></span> PLATFORM OPERATIONS</div>
<h1>产教融智平台运营中心</h1>
<p>面向所有学校租户管理数据服务、机构授权、系统保障与平台级审计。</p>
</div>
<div class="heading-actions">
<button class="button secondary" data-platform-action="backup">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M20 11a8 8 0 1 0-2.34 5.66M20 4v7h-7" /></svg>
立即备份
</button>
<button class="button primary" data-platform-action="import">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 21V9m0 0 4 4m-4-4-4 4M5 3h14v4H5V3Z" /></svg>
导入基础数据包
</button>
</div>
</div>
<div class="platform-alert">
<span class="platform-alert-icon">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20Zm0-14v5m0 3h.01" /></svg>
</span>
<span>
<strong>平台运行正常</strong>
<small>12 家学校租户在线,今日任务成功率 99.3%,有 2 个基础数据包将在 15 天内到期。</small>
</span>
<button data-platform-target="auditManagement">查看运行详情</button>
</div>
<div class="platform-metric-grid">
<article>
<span>服务学校</span>
<strong>12</strong><small>家租户</small>
<em>↑ 本季度新增 2 家</em>
</article>
<article>
<span>平台数据资产</span>
<strong>2.84</strong><small>百万条</small>
<em>11 个在售数据包</em>
</article>
<article>
<span>今日处理任务</span>
<strong>428</strong><small>个</small>
<em>成功率 99.3%</em>
</article>
<article>
<span>平台可用性</span>
<strong>99.96</strong><small>%</small>
<em>连续稳定运行 46 天</em>
</article>
</div>
<div class="platform-grid" id="packageManagement">
<article class="panel platform-package-panel">
<div class="panel-header">
<div>
<span class="panel-kicker">商业数据服务</span>
<h2>基础数据包管理</h2>
</div>
<button class="button tertiary" data-platform-action="import">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 5v14M5 12h14" /></svg>
新建导入任务
</button>
</div>
<div class="table-wrap">
<table class="data-table platform-table">
<thead>
<tr>
<th>数据包</th>
<th>当前版本</th>
<th>授权学校</th>
<th>更新周期</th>
<th>服务状态</th>
<th>下次更新</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="platform-table-title"><strong>区域招聘岗位基础包</strong><small>杭州及长三角 · 86.4万条</small></span></td>
<td>V2026.03</td><td>12 家</td><td>每月</td>
<td><span class="status-badge done">正常服务</span></td><td>2026-04-01</td>
<td><button class="row-action" data-platform-action="packageDetail" aria-label="查看区域招聘岗位基础包"><svg viewBox="0 0 24 24"><path d="m9 18 6-6-6-6" /></svg></button></td>
</tr>
<tr>
<td><span class="platform-table-title"><strong>薪资与企业画像增强包</strong><small>重点产业企业 · 52.7万条</small></span></td>
<td>V2026.Q1</td><td>8 家</td><td>季度</td>
<td><span class="status-badge progress">即将到期</span></td><td>2026-04-15</td>
<td><button class="row-action" data-platform-action="packageDetail" aria-label="查看薪资与企业画像增强包"><svg viewBox="0 0 24 24"><path d="m9 18 6-6-6-6" /></svg></button></td>
</tr>
<tr>
<td><span class="platform-table-title"><strong>产业政策与趋势数据包</strong><small>浙江省产业政策 · 3.2万条</small></span></td>
<td>V2026.08</td><td>5 家</td><td>每周</td>
<td><span class="status-badge done">正常服务</span></td><td>2026-03-25</td>
<td><button class="row-action" data-platform-action="packageDetail" aria-label="查看产业政策与趋势数据包"><svg viewBox="0 0 24 24"><path d="m9 18 6-6-6-6" /></svg></button></td>
</tr>
</tbody>
</table>
</div>
</article>
<article class="panel platform-service-panel">
<div class="panel-header">
<div><span class="panel-kicker">服务健康</span><h2>核心服务状态</h2></div>
<span class="platform-live"><i></i>全部正常</span>
</div>
<div class="platform-service-list">
<button data-platform-action="service"><span><i class="service-green"></i><strong>数据接入服务</strong><small>今日处理 128 个任务</small></span><em>99.8%</em></button>
<button data-platform-action="service"><span><i class="service-green"></i><strong>AI分析引擎</strong><small>平均响应 2.3 秒</small></span><em>99.6%</em></button>
<button data-platform-action="service"><span><i class="service-green"></i><strong>报告生成服务</strong><small>队列中 6 个任务</small></span><em>99.9%</em></button>
<button data-platform-action="service"><span><i class="service-amber"></i><strong>外部数据更新</strong><small>1 个来源需要复核</small></span><em>97.2%</em></button>
</div>
</article>
</div>
<article class="panel platform-tenant-panel" id="tenantManagement">
<div class="panel-header">
<div><span class="panel-kicker">多租户管理</span><h2>学校机构与订阅状态</h2></div>
<button class="button tertiary" data-platform-action="tenant">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 5v14M5 12h14" /></svg>
新增学校租户
</button>
</div>
<div class="tenant-card-grid">
<button class="tenant-card" data-platform-action="tenantDetail">
<span class="tenant-logo">杭</span><span><strong>杭州科技职业技术学院</strong><small>旗舰版 · 6个数据源 · 386名用户</small></span><em class="status-badge done">运行中</em>
</button>
<button class="tenant-card" data-platform-action="tenantDetail">
<span class="tenant-logo blue">浙</span><span><strong>浙江机电职业技术大学</strong><small>专业版 · 4个数据源 · 248名用户</small></span><em class="status-badge done">运行中</em>
</button>
<button class="tenant-card" data-platform-action="tenantDetail">
<span class="tenant-logo amber">宁</span><span><strong>宁波城市职业技术学院</strong><small>标准版 · 3个数据源 · 169名用户</small></span><em class="status-badge review">配置中</em>
</button>
</div>
</article>
<div class="platform-bottom-grid">
<article class="panel platform-account-panel" id="accountManagement">
<div class="panel-header">
<div><span class="panel-kicker">平台权限</span><h2>账号与安全</h2></div>
<button class="text-button" data-platform-action="account">管理账号</button>
</div>
<div class="platform-quick-list">
<button data-platform-action="account"><span class="quick-icon green">管</span><span><strong>平台管理员</strong><small>8 个账号 · 2 个今日在线</small></span><em>管理</em></button>
<button data-platform-action="permission"><span class="quick-icon blue">权</span><span><strong>角色与权限模板</strong><small>7 套模板 · 最近更新于昨日</small></span><em>配置</em></button>
<button data-platform-action="security"><span class="quick-icon amber">安</span><span><strong>安全策略</strong><small>MFA已开启 · 无高危风险</small></span><em>查看</em></button>
</div>
</article>
<article class="panel platform-backup-panel" id="backupManagement">
<div class="panel-header">
<div><span class="panel-kicker">容灾保障</span><h2>备份与恢复</h2></div>
<span class="status-badge done">策略正常</span>
</div>
<div class="backup-hero">
<span class="backup-icon"><svg viewBox="0 0 24 24"><path d="M20 11a8 8 0 1 0-2.34 5.66M20 4v7h-7" /></svg></span>
<span><strong>最近备份成功</strong><small>今天 02:00 · 全量备份 · 18.6 GB</small></span>
</div>
<div class="backup-meta"><span>保留策略<strong>30 天</strong></span><span>异地副本<strong>2 份</strong></span><span>下次备份<strong>明天 02:00</strong></span></div>
<div class="backup-actions">
<button class="button secondary" data-platform-action="restore">恢复演练</button>
<button class="button primary" data-platform-action="backup">立即备份</button>
</div>
</article>
<article class="panel platform-audit-panel" id="auditManagement">
<div class="panel-header">
<div><span class="panel-kicker">平台审计</span><h2>最近关键操作</h2></div>
<button class="text-button" data-platform-action="audit">全部日志</button>
</div>
<div class="audit-list">
<button data-platform-action="audit"><span class="audit-dot green"></span><span><strong>基础数据包 V2026.03 发布</strong><small>陈致远 · 今天 09:42</small></span></button>
<button data-platform-action="audit"><span class="audit-dot blue"></span><span><strong>新增宁波城市职院租户</strong><small>平台运营组 · 昨天 16:20</small></span></button>
<button data-platform-action="audit"><span class="audit-dot amber"></span><span><strong>就业数据字段异常告警</strong><small>系统自动检测 · 昨天 08:13</small></span></button>
</div>
</article>
</div>
</section>
</main>
</div>
</div>
<div class="sidebar-scrim" id="sidebarScrim"></div>
<div class="tooltip" id="tooltip" role="tooltip"></div>
<div class="toast-region" id="toastRegion" aria-live="polite"></div>
<!-- 数据资产与运维工作台 -->
<div class="data-ops-backdrop" id="dataOpsDrawer" aria-hidden="true">
<aside class="data-ops-drawer" role="dialog" aria-modal="true" aria-labelledby="dataOpsTitle">
<header class="data-ops-header">
<div>
<span id="dataOpsKicker">DATA ASSET DETAIL</span>
<h2 id="dataOpsTitle">数据资产详情</h2>
<p id="dataOpsDescription">查看更新内容、导入要求、版本、质量与运行记录。</p>
</div>
<button id="closeDataOpsDrawer" aria-label="关闭数据运维工作台">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M6 6l12 12M18 6 6 18" /></svg>
</button>
</header>
<div class="data-ops-tabs" id="dataOpsTabs">
<button class="active" data-data-ops-tab="overview">更新概览</button>
<button data-data-ops-tab="requirements">数据要求</button>
<button data-data-ops-tab="history">版本与任务</button>
<button data-data-ops-tab="audit">授权与审计</button>
<button data-data-ops-tab="usage">接收与使用反馈</button>
</div>
<div class="data-ops-content" id="dataOpsContent"></div>
<footer class="data-ops-footer" id="dataOpsFooter"></footer>
</aside>
</div>
<!-- 业务详情工作台 -->
<div class="workspace-detail-backdrop" id="workspaceDetailDrawer" aria-hidden="true">
<aside class="workspace-detail-drawer" role="dialog" aria-modal="true" aria-labelledby="workspaceDetailTitle">
<header class="workspace-detail-header">
<div>
<span id="workspaceDetailKicker">WORKSPACE DETAIL</span>
<h2 id="workspaceDetailTitle">业务详情</h2>
<p id="workspaceDetailDescription">查看业务上下文、责任人与进展证据。</p>
</div>
<button id="closeWorkspaceDetail" aria-label="关闭业务详情">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M6 6l12 12M18 6 6 18" /></svg>
</button>
</header>
<div class="workspace-detail-content" id="workspaceDetailContent"></div>
<footer class="workspace-detail-footer" id="workspaceDetailFooter"></footer>
</aside>
</div>
<!-- 产品推广导览 -->
<div class="product-tour-backdrop" id="productTour" aria-hidden="true">
<section class="product-tour-modal" role="dialog" aria-modal="true" aria-labelledby="productTourTitle">
<button class="product-tour-close" id="closeProductTour" aria-label="关闭产品导览">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M6 6l12 12M18 6 6 18" /></svg>
</button>
<div class="product-tour-hero">
<span>PRODUCT WALKTHROUGH</span>
<h2 id="productTourTitle">5分钟看懂产教融智</h2>
<p>这里不只是数据看板。岗位变化、专业分析、企业合作、改进任务和正式报告都在同一套流程中办理。</p>
</div>
<div class="tour-value-grid">
<article><i>01</i><strong>看得清</strong><span>先对齐各来源的字段和统计口径,再查看专业、岗位与技能差距。</span></article>
<article><i>02</i><strong>能执行</strong><span>分析建议转成有负责人和验收要求的改进任务。</span></article>
<article><i>03</i><strong>讲得明</strong><span>每项结论都列出学校数据、区域基准、样本量和来源。</span></article>
</div>
<div class="tour-route">
<span><b>1</b>先核对数据</span><i></i>
<span><b>2</b>发现差距</span><i></i>
<span><b>3</b>任务跟进</span><i></i>
<span><b>4</b>报告交付</span>
</div>
<div class="product-tour-actions">
<button class="button secondary" id="tourPlatformButton">查看平台运营端</button>
<button class="button secondary" id="tourReportButton">直接查看全校报告</button>
<button class="button primary" id="startProductTour">开始7步导览</button>
</div>
<small>支持校级管理者、校级技术管理员、学院负责人、专业负责人、就业老师、企业导师和厂商超级管理员七种角色视角。</small>
</section>
</div>
<aside class="product-tour-coach" id="productTourCoach" hidden>
<div class="tour-coach-head">
<span id="tourStepLabel">01 / 07</span>
<button id="closeTourCoach" aria-label="退出产品导览">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M6 6l12 12M18 6 6 18" /></svg>
</button>
</div>
<strong id="tourStepTitle">先核对数据</strong>
<p id="tourStepDescription">区分厂商基础数据包、学校自有数据和企业授权数据,让每个结论都能回溯。</p>
<div class="tour-coach-actions">
<button id="tourPrevious">上一步</button>
<button id="tourNext">下一步</button>
</div>
</aside>
<!-- 供需会展示大屏 -->
<div class="showcase-screen" id="showcaseScreen" aria-hidden="true">
<header class="showcase-header">
<div class="showcase-brand">
<span class="showcase-brand-mark"><i></i><i></i><i></i></span>
<span><strong>产教融智 · 供需会展示大屏</strong><small>杭州科技职业技术学院 · 2026年春季分析快照</small></span>
</div>
<div class="showcase-header-actions">
<span><i></i>数据更新于 08:30</span>
<button id="closeShowcaseScreen" aria-label="退出展示大屏">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M6 6l12 12M18 6 6 18" /></svg>
</button>
</div>
</header>
<main class="showcase-content">
<section class="showcase-title">
<div><span>INDUSTRY × EDUCATION</span><h2>学校人才培养与产业需求对接态势</h2><p>覆盖 32 个专业、18,420 个岗位信号、126 家合作企业</p></div>
<div class="showcase-score"><strong>78.6</strong><span>全校供需匹配度</span><em>较上期 +4.2</em></div>
</section>
<section class="showcase-metrics">
<article><span>高匹配专业</span><strong>18<small>个</small></strong><em>占比 56.3%</em></article>
<article><span>重点技能缺口</span><strong>23<small>项</small></strong><em>8 项高优先级</em></article>
<article><span>合作企业</span><strong>126<small>家</small></strong><em>18 家本期新增</em></article>
<article><span>改进完成率</span><strong>68<small>%</small></strong><em>21 / 31 项完成</em></article>
</section>
<section class="showcase-main-grid">
<article class="showcase-panel showcase-ranking">
<div class="showcase-panel-head"><span>专业供需表现</span><strong>TOP 5 PROGRAMS</strong></div>
<div class="showcase-rank-list">
<span><b>01</b><strong>云计算技术应用</strong><i><em style="width:85.1%"></em></i><small>85.1</small></span>
<span><b>02</b><strong>软件技术</strong><i><em style="width:84.2%"></em></i><small>84.2</small></span>
<span><b>03</b><strong>新能源汽车技术</strong><i><em style="width:83.1%"></em></i><small>83.1</small></span>
<span><b>04</b><strong>工业机器人技术</strong><i><em style="width:82.3%"></em></i><small>82.3</small></span>
<span><b>05</b><strong>机电一体化技术</strong><i><em style="width:81.7%"></em></i><small>81.7</small></span>
</div>
</article>
<article class="showcase-panel showcase-growth">
<div class="showcase-panel-head"><span>产业需求增速</span><strong>90-DAY SIGNAL</strong></div>
<div class="showcase-growth-chart">
<span style="--value:95"><i>工业视觉</i><b>+38%</b></span>
<span style="--value:85"><i>跨境运营</i><b>+34%</b></span>
<span style="--value:78"><i>云平台</i><b>+31%</b></span>
<span style="--value:68"><i>工业机器人</i><b>+27%</b></span>
<span style="--value:60"><i>AI内容生产</i><b>+24%</b></span>
</div>
</article>
<article class="showcase-panel showcase-focus">
<div class="showcase-panel-head"><span>本期决策重点</span><strong>ACTION FOCUS</strong></div>
<div class="showcase-focus-list">
<span><b>P0</b><strong>11个专业响应高优技能缺口</strong><small>4月底前提交课程或实训调整方案</small></span>
<span><b>P1</b><strong>建设工业视觉与云原生共享实训</strong><small>已识别 7 家高匹配合作企业</small></span>
<span><b>P1</b><strong>每季度请企业确认一次需求</strong><small>互联网招聘信息与企业确认分开检查</small></span>
</div>
</article>
</section>
<footer class="showcase-footer">
<span>数据快照 SNP-2026-03-22-0830 · 质量评分 92.6 · 可查看来源与处理记录</span>
<strong>从产业信号到专业改进,让每项决策都有证据</strong>
</footer>
</main>
</div>
<!-- 通用表单弹窗 -->
<div class="modal-backdrop" id="formModal" aria-hidden="true">
<div class="modal form-modal" role="dialog" aria-modal="true" aria-labelledby="formModalTitle">
<button class="modal-close" data-close-modal aria-label="关闭">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M6 6l12 12M18 6 6 18" /></svg>
</button>
<div class="modal-kicker" id="formModalKicker">ACTION FORM</div>
<h2 id="formModalTitle">创建改进任务</h2>
<p id="formModalDescription">把分析结果写成有负责人和截止日期的任务。</p>
<form id="actionForm">
<label>
<span id="formNameLabel">任务名称</span>
<input id="formName" required value="强化云原生与容器化实训内容" />
</label>
<div class="form-row">
<label>
<span id="formScopeLabel">关联专业</span>
<select id="formScope"><option>软件技术</option><option>机电一体化技术</option><option>电子商务</option></select>
</label>
<label>
<span id="formPriorityLabel">优先级</span>
<select id="formPriority"><option>高优先级</option><option>中优先级</option><option>低优先级</option></select>
</label>
</div>
<label>
<span id="formGoalLabel">目标与说明</span>
<textarea id="formGoal" rows="4">依据近90天岗位数据,将 Docker、Kubernetes 与 CI/CD 实践纳入实训课程,并邀请企业导师参与课程评审。</textarea>
</label>
<div class="form-row">
<label>
<span id="formOwnerLabel">负责人</span>
<input id="formOwner" value="李雯 · 信息工程学院" />
</label>
<label>
<span id="formDueLabel">计划完成时间</span>
<input id="formDue" type="date" value="2026-06-30" />
</label>
</div>
<div class="modal-actions">
<button type="button" class="button secondary" data-close-modal>取消</button>
<button type="submit" class="button primary">确认创建</button>
</div>
</form>
</div>
</div>
<!-- 报告弹窗 -->
<div class="modal-backdrop" id="reportModal" aria-hidden="true">
<div class="modal report-modal" role="dialog" aria-modal="true" aria-labelledby="reportModalTitle">
<button class="modal-close" data-close-modal aria-label="关闭">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M6 6l12 12M18 6 6 18" /></svg>
</button>
<div class="report-modal-head">
<span class="report-graphic">
<svg viewBox="0 0 80 80" aria-hidden="true">
<path d="M22 8h27l13 13v51H22V8Z" />
<path d="M49 8v14h13M31 35h22M31 45h22M31 55h14" />
</svg>
</span>
<div>
<div class="modal-kicker">REPORT PACKAGE</div>
<h2 id="reportModalTitle">生成供需会材料包</h2>
<p id="reportModalDescription">所有报告将使用同一分析快照,确保统计口径一致。</p>
</div>
</div>
<div class="snapshot-card">
<span>数据快照</span>
<strong>V2026.03 · 2026年3月分析批次</strong>
<small>128,642 条有效记录 · 质量评分 92.6</small>
</div>
<fieldset class="report-options" id="reportOptions">
<legend>选择报告内容</legend>
<label><input type="checkbox" checked /><span><strong>全校供需分析总报告</strong><small>约 42 页 · PDF / Word</small></span></label>
<label><input type="checkbox" checked /><span><strong>32个专业人才需求报告</strong><small>独立文件 · 自动生成目录</small></span></label>
<label><input type="checkbox" checked /><span><strong>关键指标一页纸</strong><small>适用于会议汇报与报送</small></span></label>
<label><input type="checkbox" /><span><strong>数据口径与质量附件</strong><small>指标定义、样本量及数据来源</small></span></label>
</fieldset>
<div class="report-progress" id="reportProgress" hidden>
<div><span id="reportProgressText">正在准备报告模板…</span><strong id="reportProgressValue">0%</strong></div>
<i><b id="reportProgressBar"></b></i>
</div>
<div class="modal-actions">
<button class="button secondary" data-close-modal>取消</button>
<button class="button primary" id="generateReportButton">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3v12m0 0 4-4m-4 4-4-4M5 21h14" /></svg>
开始生成
</button>
</div>
</div>
</div>
<!-- 报告正文阅读器 -->
<div class="report-reader" id="reportReader" aria-hidden="true">
<header class="report-reader-header">
<div class="report-reader-identity">
<button class="icon-button report-reader-close" id="closeReportReader" aria-label="返回报告中心">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="m15 18-6-6 6-6" /></svg>
</button>
<span>
<small>报告在线预览</small>
<strong id="reportReaderTitle">全校产教供需分析总报告</strong>
</span>
</div>
<div class="report-reader-actions">
<span class="reader-version" id="reportReaderVersion">V2026.03</span>
<button class="button secondary" id="reportPrintButton">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M6 9V2h12v7M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2M6 14h12v8H6v-8Z" /></svg>
打印
</button>
<button class="button primary" id="reportDownloadButton">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3v12m0 0 4-4m-4 4-4-4M5 21h14" /></svg>
下载报告
</button>
</div>
</header>
<div class="report-approval-toolbar" id="reportApprovalToolbar"></div>
<div class="report-reader-layout">
<aside class="report-toc">
<span class="report-toc-label">报告目录</span>
<nav id="reportToc" aria-label="报告目录"></nav>
<div class="report-reader-meta">
<span>数据快照<strong>V2026.03</strong></span>
<span>质量评分<strong>92.6</strong></span>
<span>生成时间<strong>2026-03-22</strong></span>
</div>
</aside>
<main class="report-document-wrap">
<article class="report-document" id="reportDocument"></article>
</main>
</div>
</div>
<!-- 业务流程表单 -->
<div class="modal-backdrop" id="closedLoopModal" aria-hidden="true">
<div class="modal loop-modal" role="dialog" aria-modal="true" aria-labelledby="closedLoopModalTitle">
<button class="modal-close" data-close-modal aria-label="关闭">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M6 6l12 12M18 6 6 18" /></svg>
</button>
<div class="modal-kicker" id="closedLoopModalKicker">WORKFLOW ACTION</div>
<h2 id="closedLoopModalTitle">办理流程节点</h2>
<p id="closedLoopModalDescription">提交后将写入本地样板状态和审计事件。</p>
<form id="closedLoopForm">
<div class="loop-modal-fields" id="closedLoopFields"></div>
<div class="modal-actions">
<button type="button" class="button secondary" data-close-modal>取消</button>
<button type="submit" class="button primary" id="closedLoopSubmit">确认提交</button>
</div>
</form>
</div>
</div>
<!-- 平台级操作弹窗 -->
<div class="modal-backdrop" id="platformActionModal" aria-hidden="true">
<div class="modal platform-action-modal" role="dialog" aria-modal="true" aria-labelledby="platformActionTitle">
<button class="modal-close" data-close-modal aria-label="关闭">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M6 6l12 12M18 6 6 18" /></svg>
</button>
<div class="modal-kicker" id="platformActionKicker">PLATFORM OPERATION</div>
<h2 id="platformActionTitle">导入基础数据包</h2>
<p id="platformActionDescription">创建平台级数据导入任务,并选择授权学校范围。</p>
<div class="platform-action-content" id="platformActionContent"></div>
<div class="report-progress" id="platformActionProgress" hidden>
<div><span id="platformActionProgressText">正在校验数据包…</span><strong id="platformActionProgressValue">0%</strong></div>
<i><b id="platformActionProgressBar"></b></i>
</div>
<div class="modal-actions">
<button class="button secondary" data-close-modal>取消</button>
<button class="button primary" id="platformActionConfirm">确认执行</button>
</div>
</div>
</div>
<!-- 分析进度弹窗 -->
<div class="modal-backdrop" id="analysisModal" aria-hidden="true">
<div class="modal analysis-modal" role="dialog" aria-modal="true" aria-labelledby="analysisTitle">
<div class="analysis-orbit">
<span></span><span></span><i></i>
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="m12 3 1.6 4.4L18 9l-4.4 1.6L12 15l-1.6-4.4L6 9l4.4-1.6L12 3Z" /></svg>
</div>
<div class="modal-kicker">ANALYSIS ENGINE</div>
<h2 id="analysisTitle">正在生成本期供需分析</h2>
<p id="analysisStatus">读取本期分析快照…</p>
<div class="analysis-progress"><i id="analysisProgress"></i></div>
<div class="analysis-steps">
<span class="active">数据校验</span><span>岗位匹配</span><span>技能分析</span><span>生成建议</span>
</div>
</div>
</div>
<script src="./vendor/echarts.min.js"></script>
<script src="./vendor/echarts-gl.min.js"></script>
<script src="./report-visuals.js"></script>
<script src="./app.js"></script>
</body>
</html>