diff --git a/mateclaw-server/src/main/resources/db/migration/h2/V108__wiki_transformation_starter_pack.sql b/mateclaw-server/src/main/resources/db/migration/h2/V108__wiki_transformation_starter_pack.sql new file mode 100644 index 00000000..b87a450f --- /dev/null +++ b/mateclaw-server/src/main/resources/db/migration/h2/V108__wiki_transformation_starter_pack.sql @@ -0,0 +1,250 @@ +-- Starter pack: 7 workspace-wide transformation templates aligned with the +-- enterprise scenarios surface (contract review / sales intel / approvals). +-- kb_id = NULL means the template is offered to every KB in workspace 1. +-- Fixed ids in the seed range so future migrations can reference them. +-- Flyway runs this once; user edits to these rows are not clobbered on +-- a future repair pass because Flyway only repairs the schema_history +-- table, not the seeded rows. + +INSERT INTO mate_wiki_transformation + (id, kb_id, workspace_id, name, title, description, prompt_template, + apply_default, model_id, enabled, output_target, create_time, update_time, deleted) +VALUES +(1000004001, NULL, 1, + 'contract-risk-extract', + '合同风险点提取', + '逐条审查合同条款,标注风险等级、原文位置、AI 建议改写。配合企业场景 → 合同审查使用。', +'你是一名企业法务审查员。从下面的合同文本中完整提取所有需要关注的风险条款,按以下结构输出 Markdown: + +## 风险条款清单 + +对每条值得审查的条款,输出三级标题: + +### <条款简称> +- **风险等级**:高 / 中 / 低 +- **条款类型**:赔偿 / 责任限制 / 付款 / 保密 / 竞业 / 终止 / 管辖 / 数据保护 / 其他 +- **原文位置**:第 X 条 / 第 Y 页(材料未标号时写「未标注」) +- **原文摘录**:用「」引用关键句 +- **风险描述**:≤ 50 字说明风险所在 +- **建议改写**:给出可直接采用的修订版本 + +## 总体评估 + +一段话总结这份合同的整体风险水位与签字建议(≤ 200 字)。 + +要求: +- 不要虚构原文没有的条款 +- 数字与条款编号保留原样 +- 中文输出,不要任何客套或元描述 + +合同标题:{title} + +合同正文: +{input_text}', + FALSE, NULL, TRUE, 'page', NOW(), NOW(), 0), + +(1000004002, NULL, 1, + 'meeting-action-items', + '会议纪要 → 行动项', + '从会议纪要中穷尽抽取决议 + 行动项(owner / 截止日 / 验收标准),适合周会、决策会议。', +'你是会议纪要分析助理。从下面的纪要中穷尽抽取所有行动项与决议,按以下结构输出 Markdown: + +## 决议清单 +按时间或重要性顺序列出每条明确决议;每条 ≤ 一句话。 + +## 行动项清单 + +| 序号 | 行动 | 负责人 | 截止日 | 验收标准 | +|---|---|---|---|---| + +要求: +- 「行动」用动词开头(如「提交」「完成」「对齐」) +- 负责人若未明确写「未指派」 +- 截止日若未明确写「未定」 +- 验收标准一句话写出「做完是什么样」 +- 不要把「讨论了 X」当作行动项 + +## 风险与依赖 +一句话列出会议中提到的潜在阻塞或跨团队依赖(≤ 5 条)。 + +要求:中文,无客套,无元描述。 + +会议主题:{title} + +纪要正文: +{input_text}', + FALSE, NULL, TRUE, 'page', NOW(), NOW(), 0), + +(1000004003, NULL, 1, + 'customer-profile', + '客户邮件 / 访谈画像', + '把客户邮件、会议纪要、CRM 记录合成一份结构化客户画像,配合企业场景 → 客户情报使用。', +'你是销售情报员。从下面的客户邮件 / CRM 记录 / 访谈中提取一份客户画像,按以下结构输出 Markdown: + +## 客户档案 +- **名称**: +- **行业 / 规模**: +- **当前阶段**:潜在 / 沟通中 / 谈判中 / 已成交(若无明确信号写「未知」) +- **决策链关键人**:列出姓名 + 角色 + 倾向 + +## 痛点与机会 +- 3-5 条关键痛点,每条带原文引用 +- 2-3 条潜在切入点 + +## 异议预判 +列出客户可能的反对意见 + 对应应对话术。 + +## 下一步建议 +- 3 条具体动作,按优先级排序,每条带「为什么现在做」 + +要求:不要发明文本没说的事;不确定时写「未提及」。 + +客户:{title} + +原文: +{input_text}', + FALSE, NULL, TRUE, 'page', NOW(), NOW(), 0), + +(1000004004, NULL, 1, + 'competitor-update', + '竞品动态摘要', + '把新闻 / 产品 release / 招聘信号 / 客户提及合成一份竞品动态简报。', +'你是市场情报员。从下面的材料中提取与竞争对手相关的动态,按以下结构输出 Markdown: + +## 涉及对手 +列出材料中提到的所有竞品公司或产品。 + +## 关键动态 + +按时间倒序,每条输出: + +### <对手 / 产品> · <动态简称> +- **类型**:新产品 / 招聘 / 融资 / 客户胜出 / 价格调整 / 团队变动 / 其他 +- **原文摘录**:「」引用 +- **来源**:网页 / 邮件 / 新闻渠道 +- **对我们的影响**:威胁 / 机会 / 中性,一句话说明 + +## 战术建议 +3 条针对性的应对动作,按优先级排序。 + +## 监控建议 +列出值得长期追踪的关键词或信号。 + +要求:中文,不发明内容,不确定时跳过。 + +材料:{title} + +原文: +{input_text}', + FALSE, NULL, TRUE, 'page', NOW(), NOW(), 0), + +(1000004005, NULL, 1, + 'resume-structured-extract', + '简历结构化', + '把简历提取为标准化档案:教育、工作、技能、亮点。适合批量初筛。', +'你是 HR 助理。把下面的简历提取为结构化档案: + +## 候选人信息 +- **姓名**: +- **当前职位**: +- **总工作年限**: +- **专业领域**: + +## 教育经历 + +| 学校 | 学位 / 专业 | 时间 | +|---|---|---| + +## 工作经历 + +按时间倒序,每段输出: + +### <公司> · <职位> · <时间> +- **职责摘要**:≤ 30 字 +- **关键产出**:≤ 3 条 bullet(量化优先) + +## 技能矩阵 + +| 技能 | 熟练度 | +|---|---| + +## 候选人亮点 +一段话归纳最值得关注的 3 件事(≤ 150 字)。 + +要求:不要发明文本没有的经历;不确定写「未提及」;中文输出。注意:不要把性别 / 年龄 / 户籍写进画像。 + +简历:{title} + +原文: +{input_text}', + FALSE, NULL, TRUE, 'page', NOW(), NOW(), 0), + +(1000004006, NULL, 1, + 'incident-postmortem', + '事故 5-Why 复盘', + '从事故报告 / 时间线生成 5-Why 链 + 整改清单 + 相似事故关键词。适合 SRE / 运维团队。', +'你是 SRE 事故复盘助理。从下面的事故报告 / 时间线中输出 5-Why 分析: + +## 事故概要 +- **现象**:1 句话 +- **影响范围**:用户数 / 系统 / 持续时间 +- **触发时间**: + +## 5 Whys 链 + +1. **现象**:… + **Why?** … +2. **Why?** … +3. **Why?** … +4. **Why?** … +5. **根因 (Why?)** … + +## 整改清单 + +| 序号 | 行动 | 负责团队 | 优先级 | 截止 | +|---|---|---|---|---| + +## 相似事故关联 +列出可能相关的历史事故关键词(用于后续 wiki 检索)。 + +## 复盘要点 +3 条最值得团队记住的教训。 + +要求:中文,技术准确,不发明数据。 + +事故:{title} + +报告: +{input_text}', + FALSE, NULL, TRUE, 'page', NOW(), NOW(), 0), + +(1000004007, NULL, 1, + 'paper-imrad', + '论文 IMRaD 摘要', + '把论文 / 技术报告浓缩为 IMRaD 结构化摘要 + 关键术语表,适合研究型团队。', +'你是学术摘要助理。把下面的论文 / 技术报告浓缩为 IMRaD 结构化摘要: + +## Introduction +解决什么问题,为什么重要(≤ 100 字) + +## Methods +使用什么方法 / 数据 / 模型(≤ 150 字) + +## Results +最重要的 3-5 个量化或定性结果(每条 ≤ 30 字) + +## Discussion +- **主要洞察**:1-2 句 +- **局限性**:1-2 条 +- **可复现性**:高 / 中 / 低,附 1 句理由 + +## 关键术语 +列出 5-8 个核心术语,每个加一句话定义。 + +要求:保留 LaTeX 公式(如有),不发明结果,中文写作。 + +论文:{title} + +原文: +{input_text}', + FALSE, NULL, TRUE, 'page', NOW(), NOW(), 0); diff --git a/mateclaw-server/src/main/resources/db/migration/mysql/V108__wiki_transformation_starter_pack.sql b/mateclaw-server/src/main/resources/db/migration/mysql/V108__wiki_transformation_starter_pack.sql new file mode 100644 index 00000000..19b890a4 --- /dev/null +++ b/mateclaw-server/src/main/resources/db/migration/mysql/V108__wiki_transformation_starter_pack.sql @@ -0,0 +1,246 @@ +-- Starter pack: 7 workspace-wide transformation templates. See h2 sibling +-- for the prose explanation. INSERT IGNORE so a re-run (e.g. via repair) +-- never clobbers user edits. + +INSERT IGNORE INTO mate_wiki_transformation + (id, kb_id, workspace_id, name, title, description, prompt_template, + apply_default, model_id, enabled, output_target, create_time, update_time, deleted) +VALUES +(1000004001, NULL, 1, + 'contract-risk-extract', + '合同风险点提取', + '逐条审查合同条款,标注风险等级、原文位置、AI 建议改写。配合企业场景 → 合同审查使用。', +'你是一名企业法务审查员。从下面的合同文本中完整提取所有需要关注的风险条款,按以下结构输出 Markdown: + +## 风险条款清单 + +对每条值得审查的条款,输出三级标题: + +### <条款简称> +- **风险等级**:高 / 中 / 低 +- **条款类型**:赔偿 / 责任限制 / 付款 / 保密 / 竞业 / 终止 / 管辖 / 数据保护 / 其他 +- **原文位置**:第 X 条 / 第 Y 页(材料未标号时写「未标注」) +- **原文摘录**:用「」引用关键句 +- **风险描述**:≤ 50 字说明风险所在 +- **建议改写**:给出可直接采用的修订版本 + +## 总体评估 + +一段话总结这份合同的整体风险水位与签字建议(≤ 200 字)。 + +要求: +- 不要虚构原文没有的条款 +- 数字与条款编号保留原样 +- 中文输出,不要任何客套或元描述 + +合同标题:{title} + +合同正文: +{input_text}', + 0, NULL, 1, 'page', NOW(3), NOW(3), 0), + +(1000004002, NULL, 1, + 'meeting-action-items', + '会议纪要 → 行动项', + '从会议纪要中穷尽抽取决议 + 行动项(owner / 截止日 / 验收标准),适合周会、决策会议。', +'你是会议纪要分析助理。从下面的纪要中穷尽抽取所有行动项与决议,按以下结构输出 Markdown: + +## 决议清单 +按时间或重要性顺序列出每条明确决议;每条 ≤ 一句话。 + +## 行动项清单 + +| 序号 | 行动 | 负责人 | 截止日 | 验收标准 | +|---|---|---|---|---| + +要求: +- 「行动」用动词开头(如「提交」「完成」「对齐」) +- 负责人若未明确写「未指派」 +- 截止日若未明确写「未定」 +- 验收标准一句话写出「做完是什么样」 +- 不要把「讨论了 X」当作行动项 + +## 风险与依赖 +一句话列出会议中提到的潜在阻塞或跨团队依赖(≤ 5 条)。 + +要求:中文,无客套,无元描述。 + +会议主题:{title} + +纪要正文: +{input_text}', + 0, NULL, 1, 'page', NOW(3), NOW(3), 0), + +(1000004003, NULL, 1, + 'customer-profile', + '客户邮件 / 访谈画像', + '把客户邮件、会议纪要、CRM 记录合成一份结构化客户画像,配合企业场景 → 客户情报使用。', +'你是销售情报员。从下面的客户邮件 / CRM 记录 / 访谈中提取一份客户画像,按以下结构输出 Markdown: + +## 客户档案 +- **名称**: +- **行业 / 规模**: +- **当前阶段**:潜在 / 沟通中 / 谈判中 / 已成交(若无明确信号写「未知」) +- **决策链关键人**:列出姓名 + 角色 + 倾向 + +## 痛点与机会 +- 3-5 条关键痛点,每条带原文引用 +- 2-3 条潜在切入点 + +## 异议预判 +列出客户可能的反对意见 + 对应应对话术。 + +## 下一步建议 +- 3 条具体动作,按优先级排序,每条带「为什么现在做」 + +要求:不要发明文本没说的事;不确定时写「未提及」。 + +客户:{title} + +原文: +{input_text}', + 0, NULL, 1, 'page', NOW(3), NOW(3), 0), + +(1000004004, NULL, 1, + 'competitor-update', + '竞品动态摘要', + '把新闻 / 产品 release / 招聘信号 / 客户提及合成一份竞品动态简报。', +'你是市场情报员。从下面的材料中提取与竞争对手相关的动态,按以下结构输出 Markdown: + +## 涉及对手 +列出材料中提到的所有竞品公司或产品。 + +## 关键动态 + +按时间倒序,每条输出: + +### <对手 / 产品> · <动态简称> +- **类型**:新产品 / 招聘 / 融资 / 客户胜出 / 价格调整 / 团队变动 / 其他 +- **原文摘录**:「」引用 +- **来源**:网页 / 邮件 / 新闻渠道 +- **对我们的影响**:威胁 / 机会 / 中性,一句话说明 + +## 战术建议 +3 条针对性的应对动作,按优先级排序。 + +## 监控建议 +列出值得长期追踪的关键词或信号。 + +要求:中文,不发明内容,不确定时跳过。 + +材料:{title} + +原文: +{input_text}', + 0, NULL, 1, 'page', NOW(3), NOW(3), 0), + +(1000004005, NULL, 1, + 'resume-structured-extract', + '简历结构化', + '把简历提取为标准化档案:教育、工作、技能、亮点。适合批量初筛。', +'你是 HR 助理。把下面的简历提取为结构化档案: + +## 候选人信息 +- **姓名**: +- **当前职位**: +- **总工作年限**: +- **专业领域**: + +## 教育经历 + +| 学校 | 学位 / 专业 | 时间 | +|---|---|---| + +## 工作经历 + +按时间倒序,每段输出: + +### <公司> · <职位> · <时间> +- **职责摘要**:≤ 30 字 +- **关键产出**:≤ 3 条 bullet(量化优先) + +## 技能矩阵 + +| 技能 | 熟练度 | +|---|---| + +## 候选人亮点 +一段话归纳最值得关注的 3 件事(≤ 150 字)。 + +要求:不要发明文本没有的经历;不确定写「未提及」;中文输出。注意:不要把性别 / 年龄 / 户籍写进画像。 + +简历:{title} + +原文: +{input_text}', + 0, NULL, 1, 'page', NOW(3), NOW(3), 0), + +(1000004006, NULL, 1, + 'incident-postmortem', + '事故 5-Why 复盘', + '从事故报告 / 时间线生成 5-Why 链 + 整改清单 + 相似事故关键词。适合 SRE / 运维团队。', +'你是 SRE 事故复盘助理。从下面的事故报告 / 时间线中输出 5-Why 分析: + +## 事故概要 +- **现象**:1 句话 +- **影响范围**:用户数 / 系统 / 持续时间 +- **触发时间**: + +## 5 Whys 链 + +1. **现象**:… + **Why?** … +2. **Why?** … +3. **Why?** … +4. **Why?** … +5. **根因 (Why?)** … + +## 整改清单 + +| 序号 | 行动 | 负责团队 | 优先级 | 截止 | +|---|---|---|---|---| + +## 相似事故关联 +列出可能相关的历史事故关键词(用于后续 wiki 检索)。 + +## 复盘要点 +3 条最值得团队记住的教训。 + +要求:中文,技术准确,不发明数据。 + +事故:{title} + +报告: +{input_text}', + 0, NULL, 1, 'page', NOW(3), NOW(3), 0), + +(1000004007, NULL, 1, + 'paper-imrad', + '论文 IMRaD 摘要', + '把论文 / 技术报告浓缩为 IMRaD 结构化摘要 + 关键术语表,适合研究型团队。', +'你是学术摘要助理。把下面的论文 / 技术报告浓缩为 IMRaD 结构化摘要: + +## Introduction +解决什么问题,为什么重要(≤ 100 字) + +## Methods +使用什么方法 / 数据 / 模型(≤ 150 字) + +## Results +最重要的 3-5 个量化或定性结果(每条 ≤ 30 字) + +## Discussion +- **主要洞察**:1-2 句 +- **局限性**:1-2 条 +- **可复现性**:高 / 中 / 低,附 1 句理由 + +## 关键术语 +列出 5-8 个核心术语,每个加一句话定义。 + +要求:保留 LaTeX 公式(如有),不发明结果,中文写作。 + +论文:{title} + +原文: +{input_text}', + 0, NULL, 1, 'page', NOW(3), NOW(3), 0);