Files
selfrelease 8809a28e9c feat: 新增汇报PPT与生成脚本,修复tsconfig弃用告警
- 新增医科高校智能学习中心汇报PPT(27页,面向高校管理者与广电领导)
- 新增 pptxgenjs 生成脚本 scripts/gen-pptx.js
- 新增 SYSTEM-OVERVIEW.md 系统功能全景文档
- 新增 deploy.sh 部署脚本
- 补充 rate-limit guard、ai-stream controller、exam-prep 仓储等后端模块
- 补充 exam-recommendations、markdown、mock-exam、offline-indicator 前端组件
- tsconfig.json: 显式设置 rootDir=./src,加 ignoreDeprecations=6.0 静音 baseUrl 弃用告警

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-10 12:13:52 +08:00

1396 lines
55 KiB
JavaScript
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.
/**
* 生成「医科高校智能学习中心」汇报 PPT
* 面向高校管理者与广电领导,展现学生/学校/广电三方价值
* 文案刻意减少"AI赋能/智能化"等流行词,改用具体教育场景与管理动作
*/
const pptxgen = require('pptxgenjs');
const pres = new pptxgen();
pres.layout = 'LAYOUT_WIDE'; // 13.33 x 7.5 英寸
pres.author = 'College AI Center';
pres.title = '医科高校智能学习中心';
// ===== 主题色 =====
const C = {
ink: '1B3A5B', // 深藏青(主色/标题)
steel: '2C5F8A', // 钢青(副标题/线条)
edu: '2A7B7B', // 教育青(学生/学校)
gold: 'C8923D', // 琥珀金(广电/亮点)
rose: 'B5483D', // 警示红(挑战/差异)
bg: 'FFFFFF',
bgSoft: 'F4F6F8',
bgPanel: 'EDF1F4',
text: '2D3748',
textMid: '5A6A7A',
textLight: '8A98A6',
white: 'FFFFFF',
divider: 'D8DEE4',
};
// ===== 辅助函数 =====
const W = 13.33, H = 7.5;
function addSlide(bg = C.bg) {
const s = pres.addSlide();
s.background = { color: bg };
return s;
}
// 页面顶部色条 + 章节标签 + 主标题
function header(s, section, title, accent = C.ink) {
s.addShape('rect', { x: 0, y: 0, w: W, h: 0.12, fill: { color: accent } });
s.addText(section, {
x: 0.6, y: 0.32, w: 12, h: 0.35,
fontSize: 12, color: C.textLight, fontFace: 'Microsoft YaHei', charSpacing: 2,
});
s.addText(title, {
x: 0.6, y: 0.62, w: 12, h: 0.7,
fontSize: 26, bold: true, color: C.ink, fontFace: 'Microsoft YaHei',
});
s.addShape('rect', { x: 0.62, y: 1.32, w: 0.5, h: 0.05, fill: { color: accent } });
}
// 底部页码
function footer(s, n) {
s.addText(`${n}`, {
x: W - 1.0, y: H - 0.45, w: 0.8, h: 0.3,
fontSize: 10, color: C.textLight, align: 'right', fontFace: 'Microsoft YaHei',
});
s.addText('医科高校智能学习中心', {
x: 0.6, y: H - 0.45, w: 6, h: 0.3,
fontSize: 10, color: C.textLight, fontFace: 'Microsoft YaHei',
});
}
// 卡片:标题 + 正文(用于功能要点)
function card(s, x, y, w, h, title, lines, opts = {}) {
const fill = opts.fill || C.bgSoft;
const bar = opts.bar || C.edu;
s.addShape('roundRect', {
x, y, w, h, fill: { color: fill },
line: { color: C.divider, width: 0.5 }, rectRadius: 0.08,
});
s.addShape('rect', { x: x + 0.18, y: y + 0.22, w: 0.06, h: h - 0.44, fill: { color: bar } });
s.addText(title, {
x: x + 0.36, y: y + 0.18, w: w - 0.5, h: 0.4,
fontSize: 14, bold: true, color: C.ink, fontFace: 'Microsoft YaHei',
});
const body = Array.isArray(lines) ? lines.map(t => ({ text: t, options: { bullet: { code: '2022' }, indentLevel: 0 } })) : lines;
s.addText(body, {
x: x + 0.36, y: y + 0.62, w: w - 0.55, h: h - 0.8,
fontSize: 11.5, color: C.text, fontFace: 'Microsoft YaHei',
lineSpacingMultiple: 1.25, valign: 'top',
});
}
// 大数字 + 标签(用于指标卡)
function metric(s, x, y, w, num, label, accent = C.edu) {
s.addShape('roundRect', {
x, y, w, h: 1.5, fill: { color: C.bgSoft },
line: { color: C.divider, width: 0.5 }, rectRadius: 0.08,
});
s.addText(num, {
x, y: y + 0.18, w, h: 0.7,
fontSize: 34, bold: true, color: accent, align: 'center', fontFace: 'Microsoft YaHei',
});
s.addText(label, {
x, y: y + 0.95, w, h: 0.4,
fontSize: 12, color: C.textMid, align: 'center', fontFace: 'Microsoft YaHei',
});
}
// 三色角色徽标
function roleBadge(s, x, y, text, color) {
s.addShape('roundRect', {
x, y, w: 1.6, h: 0.4, fill: { color: color }, rectRadius: 0.06,
});
s.addText(text, {
x, y: y + 0.02, w: 1.6, h: 0.36,
fontSize: 12, bold: true, color: C.white, align: 'center', fontFace: 'Microsoft YaHei',
});
}
// ============================================================
// 第 1 页 · 封面
// ============================================================
{
const s = addSlide(C.ink);
// 装饰几何
s.addShape('rect', { x: 0, y: 0, w: 0.35, h: H, fill: { color: C.gold } });
s.addShape('rect', { x: 0.35, y: 0, w: 0.08, h: H, fill: { color: C.edu } });
s.addShape('rect', { x: 0, y: H - 1.6, w: W, h: 0.02, fill: { color: C.steel } });
s.addText('医科高校', {
x: 1.0, y: 2.0, w: 11, h: 1.0,
fontSize: 52, bold: true, color: C.white, fontFace: 'Microsoft YaHei',
});
s.addText('智能学习中心', {
x: 1.0, y: 2.85, w: 11, h: 1.0,
fontSize: 52, bold: true, color: C.white, fontFace: 'Microsoft YaHei',
});
s.addText('以能力为核心 · 贯穿医学人才培养全链路', {
x: 1.0, y: 4.0, w: 11, h: 0.6,
fontSize: 20, color: C.gold, fontFace: 'Microsoft YaHei',
});
s.addText('面向高校管理者与广电合作伙伴 · 汇报材料', {
x: 1.0, y: 5.9, w: 11, h: 0.4,
fontSize: 14, color: 'AEBFD0', fontFace: 'Microsoft YaHei',
});
s.addText('基础医学 → 临床医学 → 见习实习 → 住院医师培养', {
x: 1.0, y: 6.4, w: 11, h: 0.4,
fontSize: 13, color: '8FA3B8', fontFace: 'Microsoft YaHei', charSpacing: 1,
});
}
// ============================================================
// 第 2 页 · 目录
// ============================================================
{
const s = addSlide();
header(s, 'CONTENTS', '目录');
const items = [
['01', '医学教育的现实挑战', C.rose],
['02', '系统定位与三方共建', C.ink],
['03', '学生价值:贯穿成长链的学习与训练', C.edu],
['04', '学校价值:人才培养的数据底座', C.edu],
['05', '广电价值:算力支撑与数据通道', C.gold],
['06', '设计底线与差异化优势', C.steel],
];
items.forEach((it, i) => {
const y = 1.7 + i * 0.85;
s.addText(it[0], {
x: 0.9, y, w: 1.0, h: 0.6,
fontSize: 30, bold: true, color: it[2], fontFace: 'Microsoft YaHei',
});
s.addShape('rect', { x: 2.0, y: y + 0.28, w: 0.4, h: 0.03, fill: { color: C.divider } });
s.addText(it[1], {
x: 2.6, y: y + 0.08, w: 9.5, h: 0.5,
fontSize: 18, color: C.text, fontFace: 'Microsoft YaHei',
});
});
footer(s, 2);
}
// ============================================================
// 第 3 页 · 第一部分:医学教育的现实挑战
// ============================================================
{
const s = addSlide();
header(s, 'PART 01 · 现实挑战', '医学教育正在面对的四个痛点', C.rose);
const pains = [
['成长数据分散', '课程、作业、见习、实习、考核、科研各自为政,\n学生四年下来的成长轨迹难以拼成完整图景。'],
['过程性反馈缺失', '阶段性评价周期长,学生做完一次见习、写完\n一份报告,往往要等数周才得到老师反馈。'],
['临床训练机会有限', '真实病例和标准化病人接触不足,问诊沟通、\n临床决策这些核心能力很难反复练习。'],
['培养质量难量化', '缺乏全维度、可追溯的能力证据,就业推荐\n与住培选拔大多依赖期末成绩和主观印象。'],
];
pains.forEach((p, i) => {
const x = 0.6 + (i % 2) * 6.1;
const y = 1.7 + Math.floor(i / 2) * 2.5;
s.addShape('roundRect', {
x, y, w: 5.9, h: 2.25, fill: { color: C.bgSoft },
line: { color: C.divider, width: 0.5 }, rectRadius: 0.1,
});
s.addShape('rect', { x: x + 0.25, y: y + 0.25, w: 0.08, h: 1.75, fill: { color: C.rose } });
s.addText(p[0], {
x: x + 0.5, y: y + 0.22, w: 5.2, h: 0.45,
fontSize: 17, bold: true, color: C.ink, fontFace: 'Microsoft YaHei',
});
s.addText(p[1], {
x: x + 0.5, y: y + 0.78, w: 5.2, h: 1.3,
fontSize: 12.5, color: C.textMid, fontFace: 'Microsoft YaHei',
lineSpacingMultiple: 1.3, valign: 'top',
});
});
footer(s, 3);
}
// ============================================================
// 第 4 页 · 第二部分:系统定位
// ============================================================
{
const s = addSlide();
header(s, 'PART 02 · 系统定位', '一个学习中心,贯穿培养全链路', C.ink);
s.addShape('roundRect', {
x: 0.6, y: 1.7, w: 12.1, h: 1.6, fill: { color: C.bgPanel },
line: { color: C.divider, width: 0.5 }, rectRadius: 0.1,
});
s.addText('面向医学院校的学习中心平台。以"能力"为核心,把学生在校的所有学习活动——课程、对练、科研、协作——统一汇入能力图谱,形成数据贯通的闭环成长体系。', {
x: 0.9, y: 1.9, w: 11.5, h: 1.2,
fontSize: 15, color: C.text, fontFace: 'Microsoft YaHei',
lineSpacingMultiple: 1.4, valign: 'middle',
});
// 成长链路
const chain = ['基础医学', '临床医学', '见习实习', '住院医师培养'];
chain.forEach((t, i) => {
const x = 1.2 + i * 2.9;
s.addShape('roundRect', {
x, y: 3.7, w: 2.5, h: 0.7, fill: { color: C.edu }, rectRadius: 0.08,
});
s.addText(t, {
x, y: 3.74, w: 2.5, h: 0.62,
fontSize: 15, bold: true, color: C.white, align: 'center', fontFace: 'Microsoft YaHei',
});
if (i < 3) {
s.addText('→', {
x: x + 2.5, y: 3.7, w: 0.4, h: 0.7,
fontSize: 20, color: C.steel, align: 'center', valign: 'middle', fontFace: 'Microsoft YaHei',
});
}
});
s.addText('统一能力图谱贯穿四个阶段,所有学习行为映射到同一套能力标签', {
x: 0.6, y: 4.7, w: 12, h: 0.4,
fontSize: 12.5, color: C.textMid, align: 'center', fontFace: 'Microsoft YaHei',
});
// 三方共建
const parts = [
[C.edu, '学生', '贯穿成长链的\n学习与训练'],
[C.edu, '学校', '全景式人才\n培养数据底座'],
[C.gold, '广电', '算力与数据\n通道支撑'],
];
parts.forEach((p, i) => {
const x = 1.5 + i * 3.6;
s.addShape('roundRect', {
x, y: 5.4, w: 3.2, h: 1.5, fill: { color: C.white },
line: { color: p[0], width: 1.5 }, rectRadius: 0.1,
});
s.addText(p[1], {
x, y: 5.55, w: 3.2, h: 0.5,
fontSize: 18, bold: true, color: p[0], align: 'center', fontFace: 'Microsoft YaHei',
});
s.addText(p[2], {
x, y: 6.05, w: 3.2, h: 0.8,
fontSize: 12.5, color: C.textMid, align: 'center', fontFace: 'Microsoft YaHei',
lineSpacingMultiple: 1.2,
});
});
footer(s, 4);
}
// ============================================================
// 第 5 页 · 三方价值总览
// ============================================================
{
const s = addSlide();
header(s, 'PART 02 · 价值总览', '三方共建,各取所需', C.ink);
const cols = [
[C.edu, '学生', '通过多种交互提升能力', [
'学习空间:成长记录一站式汇聚',
'对练训练:课程+临床双场景模拟',
'能力画像:六维量化,成长可视',
'职业规划:目标导向,动态闭环',
'科研辅助:多源检索,证据分级',
'协同素养:负责任使用工具的能力',
]],
[C.edu, '学校', '了解学生全面情况', [
'导师端:题目审核+成果点评+带教画像',
'管理端:技能治理+权限+审计+合规',
'能力图谱:打破数据孤岛,全量贯通',
'培养质量:可量化、可追溯、可比较',
'教学质量:系统生成+人工审核双层保障',
'决策依据:基于行为数据而非主观印象',
]],
[C.gold, '广电', '提供算力与数据支持', [
'算力支撑:大模型推理算力供给',
'流式输出:支撑对话对练实时交互',
'数据通道:多源医学文献接入',
'社会价值:算力转化为人才培养质量',
'可扩展:技能库持续扩展,需求增长',
'品牌效益:广电算力赋能医学教育',
]],
];
cols.forEach((c, i) => {
const x = 0.6 + i * 4.1;
s.addShape('roundRect', {
x, y: 1.7, w: 3.9, h: 5.3, fill: { color: C.bgSoft },
line: { color: c[0], width: 1.2 }, rectRadius: 0.1,
});
s.addShape('rect', { x, y: 1.7, w: 3.9, h: 0.7, fill: { color: c[0] } });
s.addText(c[1], {
x, y: 1.78, w: 3.9, h: 0.55,
fontSize: 20, bold: true, color: C.white, align: 'center', fontFace: 'Microsoft YaHei',
});
s.addText(c[2], {
x: x + 0.2, y: 2.55, w: 3.5, h: 0.4,
fontSize: 12.5, color: c[0], align: 'center', fontFace: 'Microsoft YaHei', italic: true,
});
const items = c[3].map(t => ({ text: t, options: { bullet: { code: '2022' } } }));
s.addText(items, {
x: x + 0.3, y: 3.05, w: 3.5, h: 3.8,
fontSize: 12, color: C.text, fontFace: 'Microsoft YaHei',
lineSpacingMultiple: 1.35, valign: 'top',
});
});
footer(s, 5);
}
// ============================================================
// 第 6 页 · 第三部分章节页:学生价值
// ============================================================
{
const s = addSlide(C.edu);
s.addShape('rect', { x: 0, y: 0, w: 0.35, h: H, fill: { color: C.white } });
s.addText('PART 03', {
x: 1.0, y: 2.4, w: 11, h: 0.6,
fontSize: 18, color: 'BFE3E3', fontFace: 'Microsoft YaHei', charSpacing: 4,
});
s.addText('学生价值', {
x: 1.0, y: 2.9, w: 11, h: 1.0,
fontSize: 44, bold: true, color: C.white, fontFace: 'Microsoft YaHei',
});
s.addText('贯穿成长链的学习与训练 · 六个支撑', {
x: 1.0, y: 4.0, w: 11, h: 0.6,
fontSize: 18, color: 'D9EFEF', fontFace: 'Microsoft YaHei',
});
}
// ============================================================
// 第 7 页 · 学生价值总览
// ============================================================
{
const s = addSlide();
header(s, 'PART 03 · 学生价值', '六个支撑,贯穿在校全程', C.edu);
const items = [
['学习空间', '成长记录一站式汇聚,\n9种成果类型自动归档'],
['对练训练', '课程对练+临床对话,\n模拟考场与诊室'],
['能力画像', '六维量化评分,\n成长趋势可视'],
['职业规划', '目标导向,差距分析,\n动态闭环更新'],
['科研辅助', '多源文献检索,\n证据分级与引用管理'],
['协同素养', '负责任使用工具,\n四维度系统培养'],
];
items.forEach((it, i) => {
const x = 0.6 + (i % 3) * 4.1;
const y = 1.7 + Math.floor(i / 3) * 2.5;
s.addShape('roundRect', {
x, y, w: 3.9, h: 2.25, fill: { color: C.bgSoft },
line: { color: C.divider, width: 0.5 }, rectRadius: 0.1,
});
s.addShape('rect', { x: x + 0.25, y: y + 0.25, w: 0.08, h: 1.75, fill: { color: C.edu } });
s.addText(it[0], {
x: x + 0.5, y: y + 0.25, w: 3.2, h: 0.45,
fontSize: 17, bold: true, color: C.ink, fontFace: 'Microsoft YaHei',
});
s.addText(it[1], {
x: x + 0.5, y: y + 0.8, w: 3.2, h: 1.2,
fontSize: 12.5, color: C.textMid, fontFace: 'Microsoft YaHei',
lineSpacingMultiple: 1.3, valign: 'top',
});
});
footer(s, 7);
}
// ============================================================
// 第 8 页 · 学习空间
// ============================================================
{
const s = addSlide();
header(s, 'PART 03 · 学生价值 01', '学习空间:让成长有迹可循', C.edu);
// 左:9种成果类型
s.addText('九种成果类型,覆盖在校全程', {
x: 0.6, y: 1.6, w: 6, h: 0.4,
fontSize: 15, bold: true, color: C.ink, fontFace: 'Microsoft YaHei',
});
const types = ['课程记录', '作业', '实验报告', '临床见习', '临床实习', 'OSCE考核', '文献阅读', '科研成果', '证书/资格备考'];
types.forEach((t, i) => {
const x = 0.6 + (i % 3) * 2.05;
const y = 2.1 + Math.floor(i / 3) * 0.65;
s.addShape('roundRect', {
x, y, w: 1.9, h: 0.5, fill: { color: C.white },
line: { color: C.edu, width: 1 }, rectRadius: 0.06,
});
s.addText(t, {
x, y: y + 0.02, w: 1.9, h: 0.46,
fontSize: 12, color: C.edu, align: 'center', fontFace: 'Microsoft YaHei',
});
});
// 右:三个特性
s.addText('三个特性', {
x: 7.2, y: 1.6, w: 5.5, h: 0.4,
fontSize: 15, bold: true, color: C.ink, fontFace: 'Microsoft YaHei',
});
const feats = [
['三维自动归档', '按学年、学期、临床轮转科室\n三个维度自动归类'],
['能力标签映射', '每条成果自动映射到\n能力图谱中的能力标签'],
['里程碑标记', '标记阶段性成长节点,\n关联该阶段内全部成果'],
];
feats.forEach((f, i) => {
const y = 2.1 + i * 1.4;
s.addShape('roundRect', {
x: 7.2, y, w: 5.5, h: 1.25, fill: { color: C.bgSoft },
line: { color: C.divider, width: 0.5 }, rectRadius: 0.08,
});
s.addText(f[0], {
x: 7.4, y: y + 0.15, w: 5.1, h: 0.4,
fontSize: 13.5, bold: true, color: C.edu, fontFace: 'Microsoft YaHei',
});
s.addText(f[1], {
x: 7.4, y: y + 0.55, w: 5.1, h: 0.6,
fontSize: 11.5, color: C.textMid, fontFace: 'Microsoft YaHei',
lineSpacingMultiple: 1.2,
});
});
// 底部价值条
s.addShape('roundRect', {
x: 0.6, y: 6.3, w: 12.1, h: 0.7, fill: { color: C.edu }, rectRadius: 0.08,
});
s.addText('价值:告别分散记录,学生四年成长轨迹在一个空间里完整呈现,为画像与职业规划提供数据基础', {
x: 0.8, y: 6.35, w: 11.7, h: 0.6,
fontSize: 12.5, color: C.white, align: 'center', valign: 'middle', fontFace: 'Microsoft YaHei',
});
footer(s, 8);
}
// ============================================================
// 第 9 页 · 对练训练——课程对练
// ============================================================
{
const s = addSlide();
header(s, 'PART 03 · 学生价值 02', '对练训练(一):把考场搬进系统', C.edu);
// 流程链
const flow = ['系统出题', '导师审核', '学生对练', '诊断报告', '间隔重复'];
flow.forEach((t, i) => {
const x = 0.8 + i * 2.45;
s.addShape('roundRect', {
x, y: 1.7, w: 2.1, h: 0.65, fill: { color: i === 1 ? C.gold : C.edu }, rectRadius: 0.08,
});
s.addText(t, {
x, y: 1.74, w: 2.1, h: 0.57,
fontSize: 13, bold: true, color: C.white, align: 'center', fontFace: 'Microsoft YaHei',
});
if (i < 4) {
s.addText('→', {
x: x + 2.1, y: 1.7, w: 0.35, h: 0.65,
fontSize: 18, color: C.steel, align: 'center', valign: 'middle',
});
}
});
s.addText('导师审核环节用金色标出——题目必须经导师通过后才可使用,退回需注明原因', {
x: 0.6, y: 2.5, w: 12, h: 0.35,
fontSize: 11.5, color: C.textMid, align: 'center', fontFace: 'Microsoft YaHei', italic: true,
});
// 四个要点
const pts = [
['题型覆盖', 'A1-A4型选择题、病例分析题、\n临床决策题,贴近真实考试'],
['权威绑定', '每题绑定权威知识源\n(教材/指南/官方题库)'],
['限时作答', '逐题呈现,120秒/题,\n即时判定,模拟真实考场'],
['错题复现', 'SM-2算法优先复现错题\n与即将遗忘的题'],
];
pts.forEach((p, i) => {
const x = 0.6 + (i % 2) * 6.1;
const y = 3.1 + Math.floor(i / 2) * 1.5;
card(s, x, y, 5.9, 1.35, p[0], [p[1]], { bar: C.edu });
});
// 诊断报告说明
s.addShape('roundRect', {
x: 0.6, y: 6.2, w: 12.1, h: 0.8, fill: { color: C.bgPanel }, rectRadius: 0.08,
});
s.addText('诊断报告:正确率、用时、薄弱环节分析(低于60%的能力标签自动标记),并针对每个薄弱环节生成具体改进建议', {
x: 0.8, y: 6.3, w: 11.7, h: 0.6,
fontSize: 12.5, color: C.text, align: 'center', valign: 'middle', fontFace: 'Microsoft YaHei',
});
footer(s, 9);
}
// ============================================================
// 第 10 页 · 对练训练——临床情景对话
// ============================================================
{
const s = addSlide();
header(s, 'PART 03 · 学生价值 02', '对练训练(二):把诊室搬进系统', C.edu);
// 左:对话场景示意
s.addShape('roundRect', {
x: 0.6, y: 1.7, w: 5.8, h: 5.1, fill: { color: C.bgSoft },
line: { color: C.divider, width: 0.5 }, rectRadius: 0.1,
});
s.addText('模拟问诊对话', {
x: 0.8, y: 1.85, w: 5.4, h: 0.4,
fontSize: 15, bold: true, color: C.ink, fontFace: 'Microsoft YaHei',
});
const dialog = [
['学生', '您哪里不舒服?', C.edu],
['模拟患者', '胸口闷,活动后加重,有三四天了。', C.textMid],
['学生', '有没有放射痛?伴随出汗吗?', C.edu],
['模拟患者', '偶尔往左肩串,出汗不明显。', C.textMid],
['学生', '既往有高血压、糖尿病吗?', C.edu],
['模拟患者', '高血压五年,没规律吃药。', C.textMid],
];
dialog.forEach((d, i) => {
const y = 2.4 + i * 0.6;
s.addText(`${d[0]}`, {
x: 0.9, y, w: 0.8, h: 0.4,
fontSize: 11.5, bold: true, color: d[2], fontFace: 'Microsoft YaHei',
});
s.addText(d[1], {
x: 1.7, y, w: 4.5, h: 0.4,
fontSize: 11.5, color: C.text, fontFace: 'Microsoft YaHei',
});
});
s.addText('· 最多50轮对话 · 携带最近10轮历史保持连贯 · 角色扮演保持情景一致', {
x: 0.8, y: 6.1, w: 5.4, h: 0.5,
fontSize: 10.5, color: C.textLight, fontFace: 'Microsoft YaHei',
});
// 右:三维评估
s.addText('三维评估,量化临床能力', {
x: 6.7, y: 1.7, w: 6, h: 0.4,
fontSize: 15, bold: true, color: C.ink, fontFace: 'Microsoft YaHei',
});
const evals = [
['问诊完整性', '主诉、现病史、既往史、\n个人史是否覆盖到位'],
['临床推理', '鉴别诊断思路是否清晰,\n假设是否合理推进'],
['医患沟通', '提问方式、同理心、\n信息传达是否有效'],
];
evals.forEach((e, i) => {
const y = 2.2 + i * 1.5;
s.addShape('roundRect', {
x: 6.7, y, w: 6, h: 1.35, fill: { color: C.white },
line: { color: C.edu, width: 1 }, rectRadius: 0.08,
});
s.addShape('rect', { x: 6.7, y, w: 0.1, h: 1.35, fill: { color: C.edu } });
s.addText(e[0], {
x: 6.95, y: y + 0.18, w: 5.6, h: 0.4,
fontSize: 14, bold: true, color: C.edu, fontFace: 'Microsoft YaHei',
});
s.addText(e[1], {
x: 6.95, y: y + 0.6, w: 5.6, h: 0.65,
fontSize: 12, color: C.textMid, fontFace: 'Microsoft YaHei',
lineSpacingMultiple: 1.25,
});
});
footer(s, 10);
}
// ============================================================
// 第 11 页 · 能力画像
// ============================================================
{
const s = addSlide();
header(s, 'PART 03 · 学生价值 03', '能力画像:六维量化,看见自己', C.edu);
// 六维雷达示意(用六边形+标签模拟)
const cx = 3.5, cy = 4.2;
const dims = [
['知识掌握', 0, -1.6],
['临床技能', 1.4, -0.8],
['科研能力', 1.4, 0.8],
['人文素养', 0, 1.6],
['协同素养', -1.4, 0.8],
['职业倾向', -1.4, -0.8],
];
// 外框六边形
s.addShape('hexagon', {
x: cx - 1.8, y: cy - 1.8, w: 3.6, h: 3.6,
fill: { color: C.bgSoft }, line: { color: C.edu, width: 1.5 },
});
// 内层六边形(数据示意)
s.addShape('hexagon', {
x: cx - 1.1, y: cy - 1.1, w: 2.2, h: 2.2,
fill: { color: C.edu, transparency: 75 }, line: { color: C.edu, width: 1 },
});
dims.forEach((d) => {
s.addText(d[0], {
x: cx + d[1] - 0.9, y: cy + d[2] - 0.2, w: 1.8, h: 0.4,
fontSize: 11.5, bold: true, color: C.ink, align: 'center', fontFace: 'Microsoft YaHei',
});
});
s.addText('六维能力雷达(示意)', {
x: 0.6, y: 6.2, w: 5.8, h: 0.35,
fontSize: 11, color: C.textLight, align: 'center', fontFace: 'Microsoft YaHei',
});
// 右:特性
s.addText('画像的四个特性', {
x: 7.0, y: 1.7, w: 5.7, h: 0.4,
fontSize: 15, bold: true, color: C.ink, fontFace: 'Microsoft YaHei',
});
const feats = [
['每维0-100分', '六维度量化评分,\n分布一目了然'],
['数据可溯源', '每项结论可追溯到\n具体学习成果或对练记录'],
['动态更新', '能力图谱数据更新后\n自动重算,无需手动维护'],
['成长趋势', '能力维度时间序列,\n可视化成长曲线'],
];
feats.forEach((f, i) => {
const y = 2.2 + i * 1.15;
s.addShape('roundRect', {
x: 7.0, y, w: 5.7, h: 1.0, fill: { color: C.bgSoft },
line: { color: C.divider, width: 0.5 }, rectRadius: 0.08,
});
s.addText(f[0], {
x: 7.2, y: y + 0.12, w: 5.3, h: 0.35,
fontSize: 13, bold: true, color: C.edu, fontFace: 'Microsoft YaHei',
});
s.addText(f[1], {
x: 7.2, y: y + 0.48, w: 5.3, h: 0.45,
fontSize: 11.5, color: C.textMid, fontFace: 'Microsoft YaHei',
lineSpacingMultiple: 1.2,
});
});
footer(s, 11);
}
// ============================================================
// 第 12 页 · 职业规划
// ============================================================
{
const s = addSlide();
header(s, 'PART 03 · 学生价值 04', '职业规划:目标导向,动态闭环', C.edu);
// 闭环流程
const flow = [
['设定职业目标', '选择或自定义\n目标岗位'],
['匹配胜任力模型', '参照权威医学框架\n四大胜任力域'],
['能力差距分析', '逐项对照当前水平\n与岗位要求'],
['生成发展规划', '每个差距项提供\n行动与目标水平'],
];
flow.forEach((f, i) => {
const x = 0.7 + i * 3.05;
s.addShape('roundRect', {
x, y: 1.8, w: 2.8, h: 1.3, fill: { color: C.edu }, rectRadius: 0.08,
});
s.addText(f[0], {
x, y: 1.9, w: 2.8, h: 0.4,
fontSize: 13, bold: true, color: C.white, align: 'center', fontFace: 'Microsoft YaHei',
});
s.addText(f[1], {
x: x + 0.15, y: 2.35, w: 2.5, h: 0.65,
fontSize: 11, color: 'D9EFEF', align: 'center', fontFace: 'Microsoft YaHei',
lineSpacingMultiple: 1.2,
});
if (i < 3) {
s.addText('→', {
x: x + 2.8, y: 1.8, w: 0.25, h: 1.3,
fontSize: 18, color: C.steel, align: 'center', valign: 'middle',
});
}
});
// 闭环回箭头说明
s.addShape('roundRect', {
x: 0.7, y: 3.4, w: 11.9, h: 0.7, fill: { color: C.bgPanel }, rectRadius: 0.08,
});
s.addText('动态闭环:能力提升后 → 画像自动更新 → 差距重算 → 发展规划自动调整,无需学生手动维护', {
x: 0.9, y: 3.48, w: 11.5, h: 0.55,
fontSize: 12.5, color: C.edu, align: 'center', valign: 'middle', bold: true, fontFace: 'Microsoft YaHei',
});
// 胜任力模型四域
s.addText('岗位胜任力模型 · 参照权威医学框架', {
x: 0.6, y: 4.4, w: 12, h: 0.4,
fontSize: 14, bold: true, color: C.ink, fontFace: 'Microsoft YaHei',
});
const domains = [
['科学与学术', '基础医学知识、\n循证医学能力'],
['临床能力', '病史采集、临床推理、\n操作技能'],
['健康与社会', '公共卫生、预防医学、\n社会因素认知'],
['职业素养', '伦理、沟通、\n团队协作、自我提升'],
];
domains.forEach((d, i) => {
const x = 0.6 + i * 3.05;
s.addShape('roundRect', {
x, y: 4.9, w: 2.8, h: 1.5, fill: { color: C.bgSoft },
line: { color: C.edu, width: 1 }, rectRadius: 0.08,
});
s.addText(d[0], {
x, y: 5.05, w: 2.8, h: 0.4,
fontSize: 13, bold: true, color: C.edu, align: 'center', fontFace: 'Microsoft YaHei',
});
s.addText(d[1], {
x: x + 0.15, y: 5.5, w: 2.5, h: 0.8,
fontSize: 11, color: C.textMid, align: 'center', fontFace: 'Microsoft YaHei',
lineSpacingMultiple: 1.2,
});
});
s.addText('资源推荐:为每个差距项推荐对应的学习资源或对练任务,直接可执行', {
x: 0.6, y: 6.6, w: 12, h: 0.35,
fontSize: 11.5, color: C.textMid, fontFace: 'Microsoft YaHei', italic: true,
});
footer(s, 12);
}
// ============================================================
// 第 13 页 · 科研辅助
// ============================================================
{
const s = addSlide();
header(s, 'PART 03 · 学生价值 05', '科研辅助:多源检索,证据分级', C.edu);
// 流程链
const flow = ['自然语言描述', 'PICO/MeSH检索式', '多源检索', '证据分级总结', '引用导出'];
flow.forEach((t, i) => {
const x = 0.6 + i * 2.5;
s.addShape('roundRect', {
x, y: 1.7, w: 2.3, h: 0.65, fill: { color: C.edu }, rectRadius: 0.08,
});
s.addText(t, {
x, y: 1.74, w: 2.3, h: 0.57,
fontSize: 11.5, bold: true, color: C.white, align: 'center', fontFace: 'Microsoft YaHei',
});
if (i < 4) {
s.addText('→', {
x: x + 2.3, y: 1.7, w: 0.2, h: 0.65,
fontSize: 16, color: C.steel, align: 'center', valign: 'middle',
});
}
});
// 数据源
s.addText('接入的医学数据源', {
x: 0.6, y: 2.7, w: 6, h: 0.4,
fontSize: 14, bold: true, color: C.ink, fontFace: 'Microsoft YaHei',
});
const sources = ['PubMed', 'CNKI 中国知网', '万方数据', 'UpToDate', 'Cochrane'];
sources.forEach((t, i) => {
const x = 0.6 + (i % 3) * 2.05;
const y = 3.15 + Math.floor(i / 3) * 0.65;
s.addShape('roundRect', {
x, y, w: 1.9, h: 0.5, fill: { color: C.white },
line: { color: C.edu, width: 1 }, rectRadius: 0.06,
});
s.addText(t, {
x, y: y + 0.02, w: 1.9, h: 0.46,
fontSize: 12, color: C.edu, align: 'center', fontFace: 'Microsoft YaHei',
});
});
// 右:特性
const feats = [
['证据分级', '对纳入总结的每条资料\n标注证据强度'],
['带引用总结', '生成带引用的结论,\n每条可追溯来源'],
['引用管理', 'Vancouver / GB-T 7714 格式,\n导出 EndNote / NoteExpress'],
['版权安全', '仅提供摘要与链接,\n不存储或分发受版权全文'],
];
feats.forEach((f, i) => {
const x = 6.8 + (i % 2) * 3.0;
const y = 2.7 + Math.floor(i / 2) * 1.7;
card(s, x, y, 2.85, 1.55, f[0], [f[1]], { bar: C.edu });
});
// 底部价值
s.addShape('roundRect', {
x: 0.6, y: 6.3, w: 12.1, h: 0.7, fill: { color: C.edu }, rectRadius: 0.08,
});
s.addText('价值:把文献检索从"大海捞针"变成"精准取证",支撑课题研究与论文写作,同时培养循证思维', {
x: 0.8, y: 6.35, w: 11.7, h: 0.6,
fontSize: 12.5, color: C.white, align: 'center', valign: 'middle', fontFace: 'Microsoft YaHei',
});
footer(s, 13);
}
// ============================================================
// 第 14 页 · 协同素养
// ============================================================
{
const s = addSlide();
header(s, 'PART 03 · 学生价值 06', '协同素养:负责任地使用工具', C.edu);
s.addShape('roundRect', {
x: 0.6, y: 1.6, w: 12.1, h: 0.9, fill: { color: C.bgPanel }, rectRadius: 0.08,
});
s.addText('在医学领域,能否负责任地使用智能工具本身就是一种核心能力。系统从四个维度系统培养,并把结果计入能力画像与岗位胜任力对照。', {
x: 0.8, y: 1.7, w: 11.7, h: 0.7,
fontSize: 13, color: C.text, align: 'center', valign: 'middle', fontFace: 'Microsoft YaHei',
lineSpacingMultiple: 1.3,
});
const dims = [
['提问能力', '能否向工具提出\n精准、有效的问题'],
['批判性验证', '能否对工具输出进行\n来源核验与批判性思考'],
['责任边界意识', '是否清楚工具辅助\n与人工决策的边界'],
['协同工作流', '能否有效组织\n人机协作流程'],
];
dims.forEach((d, i) => {
const x = 0.6 + i * 3.05;
s.addShape('roundRect', {
x, y: 2.8, w: 2.8, h: 2.0, fill: { color: C.bgSoft },
line: { color: C.edu, width: 1.2 }, rectRadius: 0.1,
});
s.addShape('rect', { x, y: 2.8, w: 2.8, h: 0.55, fill: { color: C.edu } });
s.addText(d[0], {
x, y: 2.87, w: 2.8, h: 0.45,
fontSize: 14, bold: true, color: C.white, align: 'center', fontFace: 'Microsoft YaHei',
});
s.addText(d[1], {
x: x + 0.2, y: 3.5, w: 2.4, h: 1.1,
fontSize: 12, color: C.textMid, align: 'center', fontFace: 'Microsoft YaHei',
lineSpacingMultiple: 1.3, valign: 'middle',
});
});
// 机制说明
const mechs = [
'每个维度都有真实任务载体的训练任务,不是空讲理论',
'直接采用未核验输出时,系统会要求来源核验',
'评估结果计入能力画像与岗位胜任力对照',
'支持导师对协同质量进行点评',
];
mechs.forEach((m, i) => {
const y = 5.1 + i * 0.5;
s.addText('·', { x: 0.8, y, w: 0.3, h: 0.4, fontSize: 14, color: C.edu, bold: true, fontFace: 'Microsoft YaHei' });
s.addText(m, { x: 1.1, y, w: 11.5, h: 0.4, fontSize: 12, color: C.text, fontFace: 'Microsoft YaHei' });
});
footer(s, 14);
}
// ============================================================
// 第 15 页 · 补充模块
// ============================================================
{
const s = addSlide();
header(s, 'PART 03 · 学生价值 07', '补充模块:覆盖更多学习场景', C.edu);
const mods = [
['轮转见习', '记录临床轮转经历,\n按科室归档'],
['技能视频', '搜索与学习\n临床操作技能视频'],
['执业医师备考', '出题+间隔重复+\n模拟考试+个性化推荐'],
['学术交流', '记录学术交流与\n会议参与'],
['医学知识问答', '流式多轮\n医学知识对话'],
['病例推演', '逐步推演临床病例,\n保持全程上下文'],
['用药安全', '用药安全性\n检查与学习'],
['持续扩展', '技能库可持续扩展,\n按需新增能力'],
];
mods.forEach((m, i) => {
const x = 0.6 + (i % 4) * 3.05;
const y = 1.7 + Math.floor(i / 4) * 2.5;
s.addShape('roundRect', {
x, y, w: 2.85, h: 2.25, fill: { color: C.bgSoft },
line: { color: C.divider, width: 0.5 }, rectRadius: 0.1,
});
s.addShape('rect', { x: x + 0.2, y: y + 0.25, w: 0.08, h: 1.75, fill: { color: i === 7 ? C.gold : C.edu } });
s.addText(m[0], {
x: x + 0.4, y: y + 0.25, w: 2.3, h: 0.45,
fontSize: 14, bold: true, color: C.ink, fontFace: 'Microsoft YaHei',
});
s.addText(m[1], {
x: x + 0.4, y: y + 0.8, w: 2.3, h: 1.2,
fontSize: 11.5, color: C.textMid, fontFace: 'Microsoft YaHei',
lineSpacingMultiple: 1.25, valign: 'top',
});
});
footer(s, 15);
}
// ============================================================
// 第 16 页 · 学生价值小结(一个日常)
// ============================================================
{
const s = addSlide();
header(s, 'PART 03 · 学生价值', '一个学生的日常:闭环成长的一天', C.edu);
const steps = [
['1', '登录学习空间', '记录今日临床见习成果,\n系统自动归档+能力标签映射'],
['2', '收到过程性评价', '30秒内获得反馈\n与发展建议'],
['3', '课程对练', '系统出题(已过导师审核)→\n模拟答题 → 查看诊断报告'],
['4', '临床对话对练', '模拟问诊 →\n获得三维评估'],
['5', '查看能力画像', '六维度分数 +\n成长趋势'],
['6', '职业规划', '查看差距分析 →\n按推荐资源学习'],
['7', '闭环更新', '能力提升后 → 画像自动更新 →\n发展规划动态调整'],
];
steps.forEach((st, i) => {
const y = 1.7 + i * 0.72;
s.addShape('ellipse', {
x: 0.7, y: y + 0.05, w: 0.45, h: 0.45, fill: { color: C.edu },
});
s.addText(st[0], {
x: 0.7, y: y + 0.07, w: 0.45, h: 0.41,
fontSize: 14, bold: true, color: C.white, align: 'center', valign: 'middle', fontFace: 'Microsoft YaHei',
});
s.addText(st[1], {
x: 1.4, y, w: 3.0, h: 0.55,
fontSize: 13.5, bold: true, color: C.ink, fontFace: 'Microsoft YaHei', valign: 'middle',
});
s.addText(st[2], {
x: 4.6, y, w: 8.0, h: 0.55,
fontSize: 12, color: C.textMid, fontFace: 'Microsoft YaHei', valign: 'middle',
});
if (i < 6) {
s.addShape('rect', { x: 0.91, y: y + 0.5, w: 0.03, h: 0.27, fill: { color: C.divider } });
}
});
footer(s, 16);
}
// ============================================================
// 第 17 页 · 第四部分章节页:学校价值
// ============================================================
{
const s = addSlide(C.edu);
s.addShape('rect', { x: 0, y: 0, w: 0.35, h: H, fill: { color: C.white } });
s.addText('PART 04', {
x: 1.0, y: 2.4, w: 11, h: 0.6,
fontSize: 18, color: 'BFE3E3', fontFace: 'Microsoft YaHei', charSpacing: 4,
});
s.addText('学校价值', {
x: 1.0, y: 2.9, w: 11, h: 1.0,
fontSize: 44, bold: true, color: C.white, fontFace: 'Microsoft YaHei',
});
s.addText('人才培养的数据底座 · 导师+管理+贯通', {
x: 1.0, y: 4.0, w: 11, h: 0.6,
fontSize: 18, color: 'D9EFEF', fontFace: 'Microsoft YaHei',
});
}
// ============================================================
// 第 18 页 · 学校价值总览
// ============================================================
{
const s = addSlide();
header(s, 'PART 04 · 学校价值', '三个层面,支撑培养决策', C.edu);
const items = [
['导师端', '教学把关与精准指导', [
'题目审核:系统生成→导师把关',
'成果点评:促进学生反思改进',
'带教画像:脱敏查看学生能力分布',
]],
['管理端', '治理与合规并重', [
'技能治理:定义、配置、启用',
'权限管理:按角色分级',
'审计日志:配置变更可追溯',
'合规监控:越权拒绝可查',
]],
['数据底座', '能力图谱贯通,打破孤岛', [
'统一能力标签连接所有模块',
'画像基于全量行为数据',
'培养质量可量化、可追溯',
]],
];
items.forEach((it, i) => {
const x = 0.6 + i * 4.1;
s.addShape('roundRect', {
x, y: 1.7, w: 3.9, h: 5.1, fill: { color: C.bgSoft },
line: { color: C.edu, width: 1.2 }, rectRadius: 0.1,
});
s.addShape('rect', { x, y: 1.7, w: 3.9, h: 1.0, fill: { color: C.edu } });
s.addText(it[0], {
x, y: 1.82, w: 3.9, h: 0.5,
fontSize: 18, bold: true, color: C.white, align: 'center', fontFace: 'Microsoft YaHei',
});
s.addText(it[1], {
x, y: 2.3, w: 3.9, h: 0.35,
fontSize: 12, color: 'D9EFEF', align: 'center', fontFace: 'Microsoft YaHei',
});
const lines = it[2].map(t => ({ text: t, options: { bullet: { code: '2022' } } }));
s.addText(lines, {
x: x + 0.3, y: 2.95, w: 3.4, h: 3.6,
fontSize: 12.5, color: C.text, fontFace: 'Microsoft YaHei',
lineSpacingMultiple: 1.4, valign: 'top',
});
});
footer(s, 18);
}
// ============================================================
// 第 19 页 · 导师端
// ============================================================
{
const s = addSlide();
header(s, 'PART 04 · 学校价值 01', '导师端:让带教有据可依', C.edu);
const items = [
['题目审核', '系统生成的题目经导师通过后才可使用,\n退回需注明原因。保障教学内容准确性与权威性。', '系统出题 → 导师审核 → 通过/退回(附原因)'],
['成果点评', '对学生学习成果进行教学点评,\n点评对学生可见,促进学生反思与改进。', '导师点评 → 学生可见 → 反思改进'],
['带教学生画像', '查看所带学生的能力画像(脱敏),\n精准把握学生发展状况,针对性指导。', '脱敏画像 → 能力分布 → 针对性指导'],
];
items.forEach((it, i) => {
const y = 1.7 + i * 1.75;
s.addShape('roundRect', {
x: 0.6, y, w: 12.1, h: 1.55, fill: { color: C.bgSoft },
line: { color: C.divider, width: 0.5 }, rectRadius: 0.08,
});
s.addShape('rect', { x: 0.6, y, w: 0.1, h: 1.55, fill: { color: C.edu } });
s.addText(it[0], {
x: 0.9, y: y + 0.15, w: 3.0, h: 0.45,
fontSize: 16, bold: true, color: C.edu, fontFace: 'Microsoft YaHei',
});
s.addText(it[1], {
x: 0.9, y: y + 0.65, w: 6.8, h: 0.8,
fontSize: 12.5, color: C.text, fontFace: 'Microsoft YaHei',
lineSpacingMultiple: 1.3, valign: 'top',
});
s.addShape('roundRect', {
x: 8.0, y: y + 0.35, w: 4.5, h: 0.85, fill: { color: C.white },
line: { color: C.edu, width: 1 }, rectRadius: 0.06,
});
s.addText(it[2], {
x: 8.15, y: y + 0.4, w: 4.2, h: 0.75,
fontSize: 11, color: C.edu, align: 'center', valign: 'middle', fontFace: 'Microsoft YaHei',
lineSpacingMultiple: 1.2,
});
});
footer(s, 19);
}
// ============================================================
// 第 20 页 · 管理端
// ============================================================
{
const s = addSlide();
header(s, 'PART 04 · 学校价值 02', '管理端:治理与合规并重', C.edu);
// 技能五要素
s.addText('技能治理 · 每个技能含五要素', {
x: 0.6, y: 1.6, w: 12, h: 0.4,
fontSize: 15, bold: true, color: C.ink, fontFace: 'Microsoft YaHei',
});
const elems = ['输入规格', '处理逻辑', '知识源', '输出格式', '可信度规则'];
elems.forEach((e, i) => {
const x = 0.6 + i * 2.45;
s.addShape('roundRect', {
x, y: 2.05, w: 2.3, h: 0.6, fill: { color: C.edu }, rectRadius: 0.08,
});
s.addText(e, {
x, y: 2.09, w: 2.3, h: 0.52,
fontSize: 12.5, bold: true, color: C.white, align: 'center', fontFace: 'Microsoft YaHei',
});
});
s.addText('管理员可定义、配置、启用技能;每个技能的变更都进入审计日志(操作者、时间、内容)', {
x: 0.6, y: 2.8, w: 12, h: 0.35,
fontSize: 11.5, color: C.textMid, fontFace: 'Microsoft YaHei', italic: true,
});
// 三大治理能力
const govs = [
['权限管理', '按角色分级定义访问权限范围,\n学生、导师、管理员各司其职'],
['审计日志', '追踪所有技能配置变更,\n操作者、时间、内容全程留痕'],
['合规监控', '查看越权拒绝事件,\n确保敏感数据访问安全'],
];
govs.forEach((g, i) => {
const x = 0.6 + i * 4.1;
card(s, x, 3.4, 3.9, 1.8, g[0], [g[1]], { bar: C.edu });
});
// 合规默认原则
s.addShape('roundRect', {
x: 0.6, y: 5.5, w: 12.1, h: 1.5, fill: { color: C.bgPanel }, rectRadius: 0.08,
});
s.addText('合规默认 · 敏感数据天然受保护', {
x: 0.8, y: 5.6, w: 11.7, h: 0.4,
fontSize: 14, bold: true, color: C.ink, fontFace: 'Microsoft YaHei',
});
const rules = ['默认脱敏:非本人访问画像,敏感字段自动脱敏', '知情同意:跨用途使用必须有学生有效授权', '即时撤销:学生撤销授权后立即失效', '全审计:敏感操作留痕,保留≥12个月', '最小采集:仅采集与画像维度直接相关的数据'];
rules.forEach((r, i) => {
const x = 0.9 + (i % 3) * 4.0;
const y = 6.1 + Math.floor(i / 3) * 0.4;
s.addText('· ' + r, {
x, y, w: 3.8, h: 0.35,
fontSize: 10.5, color: C.text, fontFace: 'Microsoft YaHei',
});
});
footer(s, 20);
}
// ============================================================
// 第 21 页 · 数据贯通
// ============================================================
{
const s = addSlide();
header(s, 'PART 04 · 学校价值 03', '数据贯通:从孤岛到全景', C.edu);
// 对比:传统 vs 本系统
s.addText('传统平台:各模块数据孤立', {
x: 0.6, y: 1.6, w: 12, h: 0.4,
fontSize: 14, bold: true, color: C.rose, fontFace: 'Microsoft YaHei',
});
const isolated = ['课程系统', '作业系统', '见习记录', '考核系统', '科研管理'];
isolated.forEach((t, i) => {
const x = 0.6 + i * 2.45;
s.addShape('roundRect', {
x, y: 2.05, w: 2.3, h: 0.6, fill: { color: C.white },
line: { color: C.rose, width: 1, dashType: 'dash' }, rectRadius: 0.08,
});
s.addText(t, {
x, y: 2.09, w: 2.3, h: 0.52,
fontSize: 12, color: C.rose, align: 'center', fontFace: 'Microsoft YaHei',
});
});
s.addText('数据互不相通,学生画像是单一模块的局部视图', {
x: 0.6, y: 2.75, w: 12, h: 0.3,
fontSize: 11, color: C.textMid, fontFace: 'Microsoft YaHei', italic: true,
});
// 本系统
s.addText('本系统:统一能力图谱贯通所有模块', {
x: 0.6, y: 3.3, w: 12, h: 0.4,
fontSize: 14, bold: true, color: C.edu, fontFace: 'Microsoft YaHei',
});
// 中心能力图谱
s.addShape('ellipse', {
x: 5.4, y: 4.0, w: 2.5, h: 1.0, fill: { color: C.edu },
});
s.addText('能力图谱', {
x: 5.4, y: 4.1, w: 2.5, h: 0.8,
fontSize: 15, bold: true, color: C.white, align: 'center', valign: 'middle', fontFace: 'Microsoft YaHei',
});
const connected = ['学习空间', '课程对练', '临床对话', '能力画像', '职业规划', '科研查询'];
connected.forEach((t, i) => {
const angle = (i / 6) * Math.PI * 2;
const cx = 6.65, cy = 4.5, r = 2.2;
const x = cx + Math.cos(angle) * r - 0.9;
const y = cy + Math.sin(angle) * r * 0.55 - 0.25;
s.addShape('roundRect', {
x, y, w: 1.8, h: 0.5, fill: { color: C.bgSoft },
line: { color: C.edu, width: 1 }, rectRadius: 0.06,
});
s.addText(t, {
x, y: y + 0.02, w: 1.8, h: 0.46,
fontSize: 11, color: C.edu, align: 'center', fontFace: 'Microsoft YaHei',
});
});
// 三个收益
const gains = [
'学生画像基于全量行为数据,而非单一模块局部视图',
'职业规划能精确对照当前能力与目标岗位的差距',
'各模块使用数据相互增强,形成正反馈循环',
];
gains.forEach((g, i) => {
const y = 6.0 + i * 0.4;
s.addText('· ' + g, {
x: 0.8, y, w: 12, h: 0.35,
fontSize: 12, color: C.text, fontFace: 'Microsoft YaHei',
});
});
footer(s, 21);
}
// ============================================================
// 第 22 页 · 第五部分章节页:广电价值
// ============================================================
{
const s = addSlide(C.gold);
s.addShape('rect', { x: 0, y: 0, w: 0.35, h: H, fill: { color: C.white } });
s.addText('PART 05', {
x: 1.0, y: 2.4, w: 11, h: 0.6,
fontSize: 18, color: 'F0E0C0', fontFace: 'Microsoft YaHei', charSpacing: 4,
});
s.addText('广电价值', {
x: 1.0, y: 2.9, w: 11, h: 1.0,
fontSize: 44, bold: true, color: C.white, fontFace: 'Microsoft YaHei',
});
s.addText('算力支撑与数据通道 · 投入转化为人才培养', {
x: 1.0, y: 4.0, w: 11, h: 0.6,
fontSize: 18, color: 'F5E8D0', fontFace: 'Microsoft YaHei',
});
}
// ============================================================
// 第 23 页 · 广电价值总览
// ============================================================
{
const s = addSlide();
header(s, 'PART 05 · 广电价值', '算力与数据通道,支撑平台运行', C.gold);
const items = [
['算力支撑', '大模型推理算力供给', '支撑出题、评价、对话、\n总结等全部智能交互'],
['流式输出', 'SSE流式响应', '对话对练实时逐字输出,\n支撑自然交互体验'],
['数据通道', '多源医学文献接入', 'PubMed、CNKI、万方、\nUpToDate、Cochrane'],
['社会价值', '算力转化为培养质量', '每一次调用都转化为\n学生的能力提升'],
];
items.forEach((it, i) => {
const x = 0.6 + (i % 2) * 6.1;
const y = 1.7 + Math.floor(i / 2) * 2.5;
s.addShape('roundRect', {
x, y, w: 5.9, h: 2.25, fill: { color: C.bgSoft },
line: { color: C.gold, width: 1.2 }, rectRadius: 0.1,
});
s.addShape('rect', { x: x + 0.25, y: y + 0.25, w: 0.08, h: 1.75, fill: { color: C.gold } });
s.addText(it[0], {
x: x + 0.5, y: y + 0.22, w: 5.2, h: 0.4,
fontSize: 17, bold: true, color: C.ink, fontFace: 'Microsoft YaHei',
});
s.addText(it[1], {
x: x + 0.5, y: y + 0.65, w: 5.2, h: 0.35,
fontSize: 12.5, color: C.gold, bold: true, fontFace: 'Microsoft YaHei',
});
s.addText(it[2], {
x: x + 0.5, y: y + 1.05, w: 5.2, h: 1.0,
fontSize: 12, color: C.textMid, fontFace: 'Microsoft YaHei',
lineSpacingMultiple: 1.3, valign: 'top',
});
});
footer(s, 23);
}
// ============================================================
// 第 24 页 · 合作模式与投入产出
// ============================================================
{
const s = addSlide();
header(s, 'PART 05 · 广电价值', '合作模式与投入产出', C.gold);
// 指标卡
metric(s, 0.6, 1.7, 2.9, '21', '业务模块(后端)', C.gold);
metric(s, 3.7, 1.7, 2.9, '8+', '可复用技能', C.gold);
metric(s, 6.8, 1.7, 2.9, '5', '接入数据源', C.gold);
metric(s, 9.9, 1.7, 2.9, '3', '用户角色', C.gold);
// 调用保护
s.addText('调用保护机制', {
x: 0.6, y: 3.5, w: 12, h: 0.4,
fontSize: 15, bold: true, color: C.ink, fontFace: 'Microsoft YaHei',
});
const limits = [
['20次/分钟', '单用户调用上限,\n防止瞬时滥用'],
['500次/天', '单用户每日上限,\n保障算力公平分配'],
['兜底降级', '算力不可用时回退\n规则/缓存/默认,\n不拖垮主流程'],
];
limits.forEach((l, i) => {
const x = 0.6 + i * 4.1;
s.addShape('roundRect', {
x, y: 3.95, w: 3.9, h: 1.5, fill: { color: C.bgSoft },
line: { color: C.gold, width: 1 }, rectRadius: 0.08,
});
s.addText(l[0], {
x, y: 4.1, w: 3.9, h: 0.45,
fontSize: 16, bold: true, color: C.gold, align: 'center', fontFace: 'Microsoft YaHei',
});
s.addText(l[1], {
x: x + 0.2, y: 4.6, w: 3.5, h: 0.8,
fontSize: 11.5, color: C.textMid, align: 'center', fontFace: 'Microsoft YaHei',
lineSpacingMultiple: 1.25,
});
});
// 投入产出
s.addShape('roundRect', {
x: 0.6, y: 5.7, w: 12.1, h: 1.3, fill: { color: C.gold }, rectRadius: 0.08,
});
s.addText('投入产出', {
x: 0.8, y: 5.8, w: 11.7, h: 0.35,
fontSize: 13, bold: true, color: C.white, fontFace: 'Microsoft YaHei',
});
s.addText('算力投入 → 支撑学生日常学习与训练调用 → 转化为医学人才培养质量 → 广电算力赋能医学教育的社会效益与品牌价值。技能库可持续扩展,算力需求随应用深化稳步增长。', {
x: 0.8, y: 6.15, w: 11.7, h: 0.8,
fontSize: 12, color: C.white, fontFace: 'Microsoft YaHei',
lineSpacingMultiple: 1.3, valign: 'top',
});
footer(s, 24);
}
// ============================================================
// 第 25 页 · 第六部分:设计底线
// ============================================================
{
const s = addSlide();
header(s, 'PART 06 · 设计底线', '四个底线,确保系统可信可用', C.steel);
const lines = [
['能力贯通', '打破数据孤岛', '所有学习活动通过统一能力图谱连接。\n学习空间新增成果、对练完成测验、对话获得评分——\n都映射到同一套能力标签,画像基于全量行为数据。'],
['可信优先', '医学场景零容忍幻觉', '所有输出附带可信度标注(来源+置信度);\n无法溯源的内容标注"未经核验";题目必须绑定权威知识源;\n总结中无法追溯的结论不作为引用输出。'],
['合规默认', '敏感数据天然受保护', '默认脱敏、知情同意授权、即时撤销、\n全审计留痕(≥12个月)、最小采集。\n医学生画像包含敏感健康心理数据,天然受保护。'],
['人机协同', '辅助而非替代', '系统生成题目→导师审核后才可使用;\n文献总结明确提示"不替代阅读原文";\n直接采用未核验输出会被要求核验;所有建议可追溯依据。'],
];
lines.forEach((l, i) => {
const x = 0.6 + (i % 2) * 6.1;
const y = 1.7 + Math.floor(i / 2) * 2.7;
s.addShape('roundRect', {
x, y, w: 5.9, h: 2.45, fill: { color: C.bgSoft },
line: { color: C.steel, width: 1 }, rectRadius: 0.1,
});
s.addShape('rect', { x: x + 0.25, y: y + 0.25, w: 0.08, h: 1.95, fill: { color: C.steel } });
s.addText(l[0], {
x: x + 0.5, y: y + 0.22, w: 3.0, h: 0.4,
fontSize: 16, bold: true, color: C.ink, fontFace: 'Microsoft YaHei',
});
s.addText(l[1], {
x: x + 3.6, y: y + 0.25, w: 2.1, h: 0.35,
fontSize: 11.5, color: C.steel, align: 'right', bold: true, fontFace: 'Microsoft YaHei',
});
s.addText(l[2], {
x: x + 0.5, y: y + 0.7, w: 5.2, h: 1.6,
fontSize: 11.5, color: C.textMid, fontFace: 'Microsoft YaHei',
lineSpacingMultiple: 1.3, valign: 'top',
});
});
footer(s, 25);
}
// ============================================================
// 第 26 页 · 与传统教学平台差异
// ============================================================
{
const s = addSlide();
header(s, 'PART 06 · 差异化优势', '与传统教学平台的七个差异', C.steel);
const rows = [
['数据关联', '各模块数据孤立', '统一能力图谱贯通所有模块'],
['学习反馈', '周期性人工评价', '实时过程性评价 + 阶段终结性评价'],
['职业发展', '静态指导', '动态闭环:能力变化→规划自动更新'],
['协同素养', '无系统培养', '四维度协同能力训练+评估'],
['数据隐私', '粗放管理', '知情同意+即时撤销+默认脱敏+全审计'],
['教学质量', '缺乏把控', '系统生成+人工审核双层保障'],
['输出信任', '缺乏验证机制', '全链路可信度标注 + 来源溯源'],
];
// 表头
const headY = 1.7;
s.addShape('rect', { x: 0.6, y: headY, w: 12.1, h: 0.5, fill: { color: C.steel } });
s.addText('维度', { x: 0.7, y: headY + 0.05, w: 2.5, h: 0.4, fontSize: 12.5, bold: true, color: C.white, fontFace: 'Microsoft YaHei' });
s.addText('传统教学平台', { x: 3.3, y: headY + 0.05, w: 4.0, h: 0.4, fontSize: 12.5, bold: true, color: C.white, fontFace: 'Microsoft YaHei' });
s.addText('本系统', { x: 7.5, y: headY + 0.05, w: 5.0, h: 0.4, fontSize: 12.5, bold: true, color: C.white, fontFace: 'Microsoft YaHei' });
rows.forEach((r, i) => {
const y = headY + 0.5 + i * 0.62;
if (i % 2 === 0) {
s.addShape('rect', { x: 0.6, y, w: 12.1, h: 0.62, fill: { color: C.bgSoft } });
}
s.addText(r[0], { x: 0.7, y: y + 0.08, w: 2.5, h: 0.45, fontSize: 12, bold: true, color: C.ink, fontFace: 'Microsoft YaHei' });
s.addText(r[1], { x: 3.3, y: y + 0.08, w: 4.0, h: 0.45, fontSize: 11.5, color: C.rose, fontFace: 'Microsoft YaHei' });
s.addText(r[2], { x: 7.5, y: y + 0.08, w: 5.0, h: 0.45, fontSize: 11.5, color: C.edu, fontFace: 'Microsoft YaHei' });
});
footer(s, 26);
}
// ============================================================
// 第 27 页 · 结尾
// ============================================================
{
const s = addSlide(C.ink);
s.addShape('rect', { x: 0, y: 0, w: 0.35, h: H, fill: { color: C.gold } });
s.addShape('rect', { x: 0.35, y: 0, w: 0.08, h: H, fill: { color: C.edu } });
s.addText('让每一个医学生的成长', {
x: 1.0, y: 2.2, w: 11, h: 0.9,
fontSize: 40, bold: true, color: C.white, fontFace: 'Microsoft YaHei',
});
s.addText('都被看见、可追溯、有依据', {
x: 1.0, y: 3.0, w: 11, h: 0.9,
fontSize: 40, bold: true, color: C.gold, fontFace: 'Microsoft YaHei',
});
const summary = [
['贯穿成长链', '基础医学 → 临床医学 → 见习实习 → 住院医师培养'],
['数据可追溯', '每项能力结论可追溯到具体学习成果'],
['培养有依据', '基于全量行为数据,而非主观印象'],
['算力有价值', '广电算力投入转化为人才培养质量'],
];
summary.forEach((it, i) => {
const y = 4.4 + i * 0.55;
s.addText('· ', { x: 1.0, y, w: 0.3, h: 0.45, fontSize: 16, color: C.gold, bold: true, fontFace: 'Microsoft YaHei' });
s.addText(it[0], {
x: 1.3, y, w: 2.2, h: 0.45,
fontSize: 15, bold: true, color: C.white, fontFace: 'Microsoft YaHei',
});
s.addText(it[1], {
x: 3.6, y, w: 9, h: 0.45,
fontSize: 13, color: 'AEBFD0', fontFace: 'Microsoft YaHei',
});
});
s.addText('医科高校智能学习中心', {
x: 1.0, y: 6.8, w: 11, h: 0.4,
fontSize: 14, color: '8FA3B8', fontFace: 'Microsoft YaHei', charSpacing: 2,
});
}
// ===== 生成文件 =====
pres.writeFile({ fileName: '医科高校智能学习中心-汇报.pptx' })
.then(fn => console.log('已生成: ' + fn));