feat: complete team-report PPT - slides 8-10 roadmap, assignments, QA

This commit is contained in:
2026-05-27 18:30:02 +08:00
parent dd850f1023
commit 2080da87aa

View File

@@ -704,6 +704,211 @@ prs.defineLayout({ name: "LAYOUT_WIDE", width: 13.33, height: 7.5 });
}); });
} }
// ════════════════════════════════════════════════════════
// Slide 8 — 四阶段路线图
// ════════════════════════════════════════════════════════
{
const sl = prs.addSlide();
sl.addShape("rect", {
x: 0, y: 0, w: "100%", h: "100%",
fill: { color: C.bg }, line: { color: C.bg, width: 0 },
});
topBar(sl);
sectionLabel(sl, "发展路线", 0.5, 0.55);
sectionTitle(sl, "四阶段推进计划", 0.5, 0.85);
sectionSub(sl, "当前处于第二阶段“Demo 打磨”,核心 Agent 链路已通,正在补全剩余模块", 0.5, 1.4);
slideNum(sl, 8, 10);
// 时间线底线
sl.addShape("rect", { x: 1.5, y: 2.35, w: 2.5, h: 0.05, fill: { color: C.green }, line: { color: C.green, width: 0 } });
sl.addShape("rect", { x: 4.0, y: 2.35, w: 2.5, h: 0.05, fill: { color: C.accent }, line: { color: C.accent, width: 0 } });
sl.addShape("rect", { x: 6.5, y: 2.35, w: 5.3, h: 0.05, fill: { color: C.border }, line: { color: C.border, width: 0 } });
const phases = [
{
icon: "✓", iconBg: C.green, borderC: C.green, borderW: 1,
label: "阶段 01 · 已完成", title: "技术验证 POC",
items: ["清洁架构 + Ports & Adapters", "Agent 协同框架搭建", "Milvus 向量检索链路打通", "前后端项目结构建立"],
cardBg: "F0FAF6", cardBorder: "A0D8C0",
},
{
icon: "⟳", iconBg: C.accent, borderC: C.accent, borderW: 2,
label: "阶段 02 · 进行中 ◀ 当前", title: "Demo 打磨",
items: ["5 页面前端已上线", "法规 Agent 对话全通", "Pipeline 已通OCR 联调中", "EHS 合规 & 监控开发中"],
cardBg: "FEF0F6", cardBorder: "E20074",
},
{
icon: "3", iconBg: C.text3, borderC: C.border, borderW: 1,
label: "阶段 03 · 待启动", title: "生产部署",
items: ["PLM/ERP/MES 集成", "Agent 能力扩展", "Milvus 集群化部署", "合规 & 监控完善"],
cardBg: C.bgCard, cardBorder: C.border,
},
{
icon: "4", iconBg: C.text3, borderC: C.border, borderW: 1,
label: "阶段 04 · 待启动", title: "规模推广",
items: ["多租户 & 权限体系", "主动预警 & 订阅", "1-2 行业试点推广", "数据治理 & 安全合规"],
cardBg: C.bgCard, cardBorder: C.border,
},
];
phases.forEach((p, i) => {
const cx = 0.6 + i * 3.1;
sl.addShape("ellipse", {
x: cx + 0.85, y: 2.1, w: 0.55, h: 0.55,
fill: { color: p.iconBg }, line: { color: p.iconBg, width: 0 },
});
sl.addText(p.icon, {
x: cx + 0.85, y: 2.12, w: 0.55, h: 0.5,
fontSize: 11, bold: true, color: "FFFFFF", align: "center", fontFace: "Calibri",
});
sl.addShape("rect", {
x: cx, y: 2.75, w: 2.85, h: 4.35,
fill: { color: p.cardBg }, line: { color: p.cardBorder, width: p.borderW },
shadow: makeShadow(),
});
sl.addText(p.label, {
x: cx + 0.12, y: 2.9, w: 2.6, h: 0.24,
fontSize: 8, bold: true, color: i === 1 ? C.accent : C.text3, fontFace: "Calibri",
});
sl.addText(p.title, {
x: cx + 0.12, y: 3.18, w: 2.6, h: 0.38,
fontSize: 14, bold: true, color: C.text, fontFace: "Calibri",
});
p.items.forEach((item, j) => {
sl.addText("▸ " + item, {
x: cx + 0.12, y: 3.65 + j * 0.6, w: 2.62, h: 0.38,
fontSize: 10, color: C.text2, fontFace: "Calibri Light",
});
});
});
}
// ════════════════════════════════════════════════════════
// Slide 9 — 下阶段重点 & 分工
// ════════════════════════════════════════════════════════
{
const sl = prs.addSlide();
sl.addShape("rect", {
x: 0, y: 0, w: "100%", h: "100%",
fill: { color: C.bg }, line: { color: C.bg, width: 0 },
});
topBar(sl);
sectionLabel(sl, "下一步", 0.5, 0.55);
sectionTitle(sl, "下阶段重点 & 角色分工", 0.5, 0.85);
sectionSub(sl, "Demo 收尾为核心目标,同步推进业务对齐与技术准备", 0.5, 1.4);
slideNum(sl, 9, 10);
const actions = [
{ icon: "🎯", title: "Demo 收尾", items: ["补全 parse/embed Pipeline", "接入 1-2 个真实文档场景", "Mock 替换为真实 LLM 调用"] },
{ icon: "🤝", title: "业务对齐", items: ["确认演示场景与业务方", "收集业务方反馈", "需求优先级排序"] },
{ icon: "🔧", title: "技术债清理", items: ["RBAC 权限设计实现", "接入 DocMind 正式账号", "前端性能优化 & KeepAlive"] },
{ icon: "📋", title: "资源 & 决策", items: ["GPU / 算力需求评估", "确认生产 LLM 方案", "确定生产环境部署规划"] },
];
actions.forEach((a, i) => {
const col = i % 2;
const row = Math.floor(i / 2);
const cx = 0.5 + col * 4.25;
const cy = 1.85 + row * 2.65;
sl.addShape("rect", {
x: cx, y: cy, w: 4.0, h: 2.45,
fill: { color: C.bgCard }, line: { color: C.border, width: 0.5 }, shadow: makeShadow(),
});
sl.addShape("rect", {
x: cx, y: cy, w: 4.0, h: 0.05,
fill: { color: C.accent }, line: { color: C.accent, width: 0 },
});
sl.addText(a.icon, {
x: cx + 0.18, y: cy + 0.15, w: 0.55, h: 0.5,
fontSize: 18, fontFace: "Segoe UI Emoji",
});
sl.addText(a.title, {
x: cx + 0.75, y: cy + 0.2, w: 3.1, h: 0.38,
fontSize: 13, bold: true, color: C.text, fontFace: "Calibri",
});
a.items.forEach((item, j) => {
sl.addText("▸ " + item, {
x: cx + 0.18, y: cy + 0.7 + j * 0.52, w: 3.6, h: 0.35,
fontSize: 10, color: C.text2, fontFace: "Calibri Light",
});
});
});
// 右侧角色分工栏
sl.addShape("rect", {
x: 9.1, y: 1.85, w: 3.8, h: 5.25,
fill: { color: C.bgCard }, line: { color: C.border, width: 0.5 }, shadow: makeShadow(),
});
sl.addShape("rect", {
x: 9.1, y: 1.85, w: 3.8, h: 0.05,
fill: { color: C.blue }, line: { color: C.blue, width: 0 },
});
sl.addText("角色分工", {
x: 9.3, y: 2.0, w: 3.4, h: 0.35,
fontSize: 13, bold: true, color: C.text, fontFace: "Calibri",
});
[
{ role: "前端工程师", tasks: "法规感知 UI / 文档管理 / 性能优化" },
{ role: "后端工程师", tasks: "Pipeline 补全 / API 稳定性 / RBAC" },
{ role: "AI 工程师", tasks: "Agent 调优 / LLM 接入 / Embedding" },
{ role: "全栈 / 架构", tasks: "合规分析模块 / 系统集成 / 文档" },
].forEach((r, i) => {
const ry = 2.55 + i * 1.12;
sl.addShape("rect", {
x: 9.25, y: ry, w: 3.5, h: 0.9,
fill: { color: C.bgHover }, line: { color: C.border, width: 0.4 },
});
sl.addText(r.role, {
x: 9.4, y: ry + 0.1, w: 3.2, h: 0.28,
fontSize: 10, bold: true, color: C.blue, fontFace: "Calibri",
});
sl.addText(r.tasks, {
x: 9.4, y: ry + 0.42, w: 3.2, h: 0.36,
fontSize: 9, color: C.text2, fontFace: "Calibri Light",
});
});
}
// ════════════════════════════════════════════════════════
// Slide 10 — 结语 & Q&A
// ════════════════════════════════════════════════════════
{
const sl = prs.addSlide();
sl.addShape("rect", {
x: 0, y: 0, w: "100%", h: "100%",
fill: { color: C.darkBg }, line: { color: C.darkBg, width: 0 },
});
sl.addShape("rect", {
x: 0, y: 0, w: "100%", h: 0.06,
fill: { type: "grad", stops: [{ position: 0, color: C.accent }, { position: 100, color: C.accentDk }] },
line: { color: C.accent, width: 0 },
});
sl.addText("感谢聆听", {
x: 1.5, y: 1.8, w: 10.3, h: 1.0,
fontSize: 48, bold: true, color: "FFFFFF", align: "center", fontFace: "Calibri",
});
sl.addText("AI + 合规智能中枢 · 团队阶段性汇报", {
x: 1.5, y: 2.9, w: 10.3, h: 0.4,
fontSize: 14, color: C.text3, align: "center", fontFace: "Calibri Light",
});
sl.addShape("rect", {
x: 4.5, y: 3.5, w: 4.33, h: 0.02,
fill: { color: C.accent, transparency: 40 }, line: { color: C.accent, width: 0 },
});
sl.addText("Q & A", {
x: 1.5, y: 3.7, w: 10.3, h: 0.85,
fontSize: 44, bold: true, color: C.accent, align: "center", fontFace: "Calibri",
});
sl.addText("欢迎提问与交流", {
x: 1.5, y: 4.6, w: 10.3, h: 0.4,
fontSize: 15, color: "FFFFFF", align: "center", fontFace: "Calibri Light",
});
sl.addText("T-Systems · AI 合规项目组 · 2026.05 · INTERNAL CONFIDENTIAL", {
x: 1.0, y: 6.9, w: 11.33, h: 0.28,
fontSize: 9, color: C.text3, align: "center", fontFace: "Calibri Light",
});
}
// ── 保存 ──────────────────────────────────────────────── // ── 保存 ────────────────────────────────────────────────
const OUT = "C:/Projects/AIProjects/AIRegulations/AIRegulation-DocAnalysis-Demo/team-report.pptx"; const OUT = "C:/Projects/AIProjects/AIRegulations/AIRegulation-DocAnalysis-Demo/team-report.pptx";
prs.writeFile({ fileName: OUT }) prs.writeFile({ fileName: OUT })