refactor: 收口技能与专员目录定义

统一 skill 与 specialist 清单,移除旧的 office 执行包与下线对象,并补入 text_to_speech、customer_followup 等当前目录定义与种子数据。
This commit is contained in:
eaiadmin
2026-09-22 23:38:56 +08:00
parent 90031b75f3
commit b7238ad667
148 changed files with 1230 additions and 1710 deletions
@@ -322,8 +322,8 @@ func seedSkillDefinitions() error {
items := applySkillCodes([]skillmodel.SkillDefinition{
{
Key: "smart-assistant",
Label: "通用助手",
Description: "默认协作入口,负责问题梳理、任务拆解和对话推进。",
Label: "智能助手",
Description: "说句话,复杂任务自动完成。 操作:打开「智能助手」,用自然语言描述目标 → 可拖入多份文件、关联知识库 → 助手自动拆解为「计划→执行→验证→交付」,全程可见可控",
ObjectKind: "skill",
Source: "eai",
ObjectEntryRoute: "/home",
@@ -335,13 +335,23 @@ func seedSkillDefinitions() error {
OutputSchemaJSON: mustJSON(map[string]any{"message": "assistant_reply"}),
ArtifactSchemaJSON: mustJSON(map[string]any{"artifacts": []string{"summary", "plan"}}),
OntologyBindingJSON: mustJSON(map[string]any{"object_types": []string{"task", "knowledge_item"}, "action_types": []string{"analyze", "draft"}}),
Color: "#409eff",
InteractionCardJSON: mustJSON(map[string]any{
"name": "智能助手",
"tagline": "今天帮你做些什么?描述你的任务,或先挂载技能与材料",
"greeting": "博昇AI数字员工,您说,我做",
"relationship_to_user": "你的通用协作搭档",
"tone": "专业、直接、可执行",
"opening_prompt": "直接告诉我目标,或者把材料贴给我,我来帮你起步。",
"starter_prompts": []string{"帮我拆解这个任务,并列出下一步", "把这段产品介绍整理成正式文案", "先帮我判断这个问题该找哪个专员或技能"},
}),
State: "active",
SortOrder: 10,
},
{
Key: "document-translate",
Label: "文档翻译",
Description: "把文本和文档稳定翻成目标语言,并保留语气和结构。",
Description: "整份翻译,排版原封不动。 操作:打开「文档翻译」,上传文件(Word/PDF/PPT/Excel)→ 选择目标语言 → 下载译文——排版、表格、图片位置全部保留",
ObjectKind: "skill",
Source: "eai",
ObjectEntryRoute: "/home",
@@ -353,13 +363,23 @@ func seedSkillDefinitions() error {
OutputSchemaJSON: mustJSON(map[string]any{"translation": "text"}),
ArtifactSchemaJSON: mustJSON(map[string]any{"artifacts": []string{"translated_document"}}),
OntologyBindingJSON: mustJSON(map[string]any{"object_types": []string{"document"}, "action_types": []string{"translate"}}),
Color: "#67c23a",
InteractionCardJSON: mustJSON(map[string]any{
"name": "文档翻译",
"tagline": "不仅翻译文字,还会先统一术语、语气和交付格式。",
"greeting": "先识别语境和术语,再生成可交付译文,避免只做逐句直译。",
"relationship_to_user": "你的翻译协作技能",
"tone": "专业、直接、可执行",
"opening_prompt": "把原文贴给我,并说明目标语言、受众和语气要求;如果有术语表,也一起给我。",
"starter_prompts": []string{"把这段产品说明翻译成英文,保持专业语气", "把这封邮件翻译成日文,语气礼貌一点", "把这份中文文档整理成英文摘要"},
}),
State: "active",
SortOrder: 20,
},
{
Key: "copy-proofreading",
Label: "文案校对",
Description: "检查错别字、语病和表达不顺,输出润色建议。",
Description: "错别字、语病,一键标出。 操作:打开「文案校对」,上传文档 → AI 自动逐句检查,标注错别字、语法问题 → 返回带高亮修订版 + 修改建议,可一键采纳",
ObjectKind: "skill",
Source: "eai",
ObjectEntryRoute: "/home",
@@ -371,13 +391,23 @@ func seedSkillDefinitions() error {
OutputSchemaJSON: mustJSON(map[string]any{"proofread_result": "text"}),
ArtifactSchemaJSON: mustJSON(map[string]any{"artifacts": []string{"clean_copy"}}),
OntologyBindingJSON: mustJSON(map[string]any{"object_types": []string{"copy"}, "action_types": []string{"review"}}),
Color: "#e6a23c",
InteractionCardJSON: mustJSON(map[string]any{
"name": "文案校对",
"tagline": "不是只改错字,而是把整段表达修顺、修稳、修清楚。",
"greeting": "先找出问题句和语气风险,再给出能直接使用的修订版本。",
"relationship_to_user": "你的文案润色技能",
"tone": "专业、直接、可执行",
"opening_prompt": "把文案贴给我,并告诉我这段内容要发给谁、希望保留什么语气。",
"starter_prompts": []string{"检查这段销售话术里的错别字和语病", "把这段产品介绍润得更正式一点", "帮我校对这封对外邮件,保留原意"},
}),
State: "active",
SortOrder: 30,
},
{
Key: "audio-transcribe",
Label: "语音转写",
Description: "把音频内容转成结构化文本,便于继续总结与提取。",
Label: "会议音频分析(转写)",
Description: "一小时录音,自动出纪要。 操作:打开「会议音频分析」,上传音频(MP3/M4A/WAV)→ AI 自动转写(带说话人标签)→ 同时输出纪要 + 待办清单 + 思维导图",
ObjectKind: "skill",
Source: "eai",
ObjectEntryRoute: "/home",
@@ -389,13 +419,23 @@ func seedSkillDefinitions() error {
OutputSchemaJSON: mustJSON(map[string]any{"transcript": "text"}),
ArtifactSchemaJSON: mustJSON(map[string]any{"artifacts": []string{"transcript"}}),
OntologyBindingJSON: mustJSON(map[string]any{"object_types": []string{"audio"}, "action_types": []string{"extract"}}),
Color: "#5263c3",
InteractionCardJSON: mustJSON(map[string]any{
"name": "会议音频分析(转写)",
"tagline": "把音频从“听过”变成“可查、可引用、可交付”的文本资产。",
"greeting": "先把语音内容转成可靠文本,再继续整理重点、纪要和后续动作。",
"relationship_to_user": "你的语音整理技能",
"tone": "专业、直接、可执行",
"opening_prompt": "把音频内容发给我,或者告诉我语言、场景和你最终想拿到什么结果。",
"starter_prompts": []string{"把这段会议录音转成文字,并分段整理", "先转写这段采访,再提取重点", "把语音内容整理成可发群里的纪要"},
}),
State: "active",
SortOrder: 40,
},
{
Key: "batch-extract",
Label: "批量提取",
Description: "从一批内容里抽取结构化字段和关键信息。",
Label: "批量字段提取 → Excel",
Description: "上百份文件的关键信息,自动汇表。 操作:在「智能助手」中选择目标知识库 → 用自然语言告诉 AI 需要哪些字段 → AI 自动遍历每份文件,逐项提取,保存为 Excel",
ObjectKind: "skill",
Source: "eai",
ObjectEntryRoute: "/home",
@@ -407,13 +447,23 @@ func seedSkillDefinitions() error {
OutputSchemaJSON: mustJSON(map[string]any{"rows": []string{"object"}}),
ArtifactSchemaJSON: mustJSON(map[string]any{"artifacts": []string{"spreadsheet", "json"}}),
OntologyBindingJSON: mustJSON(map[string]any{"object_types": []string{"document", "resume", "contract"}, "action_types": []string{"extract"}}),
Color: "#39b07a",
InteractionCardJSON: mustJSON(map[string]any{
"name": "批量字段提取 → Excel",
"tagline": "不是只把内容抓出来,而是直接整理成后续系统能用的结构化结果。",
"greeting": "先把字段定义清楚,再批量抽取,并把异常项单独挑出来。",
"relationship_to_user": "你的结构化提取技能",
"tone": "专业、直接、可执行",
"opening_prompt": "告诉我想抽哪些字段、输出成什么格式、哪些情况需要标记为异常。",
"starter_prompts": []string{"从这批简历里提取姓名、岗位和年限", "把这些合同里的付款条款统一抽出来", "帮我批量提取文章标题、作者和发布时间"},
}),
State: "active",
SortOrder: 50,
},
{
Key: "contract-review",
Label: "合同审查",
Description: "定位风险条款、待确认项并输出审查建议。",
Label: "合同批量审查与提取(审查)",
Description: "几十份合同,自动提取甲方、乙方、金额、付款方式等关键字段,一键汇总成 Excel 总表。还能按条件筛选\"百万以上合同\"或\"涉及公路运输的合同\",并自动归纳违约金条款。",
ObjectKind: "skill",
Source: "eai",
ObjectEntryRoute: "/home",
@@ -425,13 +475,23 @@ func seedSkillDefinitions() error {
OutputSchemaJSON: mustJSON(map[string]any{"risk_report": "text"}),
ArtifactSchemaJSON: mustJSON(map[string]any{"artifacts": []string{"risk_report", "redline"}}),
OntologyBindingJSON: mustJSON(map[string]any{"object_types": []string{"contract"}, "action_types": []string{"review", "analyze"}}),
Color: "#f56c6c",
InteractionCardJSON: mustJSON(map[string]any{
"name": "合同批量审查与提取(审查)",
"tagline": "不是只报风险,而是把风险依据、红线建议和后续确认项一起交出来。",
"greeting": "先定位高风险条款和待确认项,再整理成可交付的审查结果。",
"relationship_to_user": "你的合同审查技能",
"tone": "专业、直接、可执行",
"opening_prompt": "把合同发给我,并告诉我这次重点想看哪些条款,或者你站在哪一方立场。",
"starter_prompts": []string{"审查这份采购合同的风险点", "重点看赔偿责任和终止条款", "帮我整理一版待人工确认的风险清单"},
}),
State: "active",
SortOrder: 60,
},
{
Key: "report-generation",
Label: "报告生成",
Description: "把过程材料整理成日报、周报、复盘和交付说明。",
Label: "一键生成报告",
Description: "聊完天,PDF/Word 报告就写好了。 操作:在「智能助手」中上传资料或讨论要点 → 说\"帮我做成 PDF 报告\"或\"整理成 Word\" → AI 自动生成结构化内容,排版为正式文档,一键下载",
ObjectKind: "skill",
Source: "eai",
ObjectEntryRoute: "/home",
@@ -443,6 +503,16 @@ func seedSkillDefinitions() error {
OutputSchemaJSON: mustJSON(map[string]any{"report": "text"}),
ArtifactSchemaJSON: mustJSON(map[string]any{"artifacts": []string{"report"}}),
OntologyBindingJSON: mustJSON(map[string]any{"object_types": []string{"report", "task"}, "action_types": []string{"draft"}}),
Color: "#9c27b0",
InteractionCardJSON: mustJSON(map[string]any{
"name": "一键生成报告",
"tagline": "不只是把记录拼起来,而是把过程信息收成完整、清楚、可汇报的结果。",
"greeting": "先把材料归并成结构,再输出可直接提交的正式报告。",
"relationship_to_user": "你的报告整理技能",
"tone": "专业、直接、可执行",
"opening_prompt": "把材料给我,并告诉我报告类型、受众、周期和你最想突出哪些重点。",
"starter_prompts": []string{"把今天的工作记录整理成日报", "根据这些节点生成项目周报", "帮我把这次交付过程整理成复盘说明"},
}),
State: "active",
SortOrder: 70,
},
@@ -469,6 +539,12 @@ func seedSkillDefinitions() error {
if existing.ObjectEntryRoute == "" {
updates["object_entry_route"] = item.ObjectEntryRoute
}
if existing.Color == "" {
updates["color"] = item.Color
}
if existing.InteractionCardJSON == "" {
updates["interaction_card_json"] = item.InteractionCardJSON
}
if existing.StarterPromptsJSON == "" {
updates["starter_prompts_json"] = item.StarterPromptsJSON
}
@@ -783,29 +859,6 @@ func seedXAppDefinitions() error {
State: "active",
SortOrder: 60,
},
{
Key: "app-proposal-summary",
Label: "方案摘要",
Badge: "成品应用",
Kind: "汇报加速",
MarketTag: "成品应用",
XAppMode: "direct",
Tier: "business",
Source: "eai",
Color: "#7c3aed",
IconText: "方",
CoverTone: "linear-gradient(135deg, #6d28d9 0%, #a78bfa 100%)",
Summary: "直接进入方案摘要应用,把长方案压成管理层可读的短版本。",
Description: "适合售前方案、项目方案和内部提案的结论压缩与亮点提炼。",
SkillKey: "proposal-summary",
DefaultPrompt: "把这份解决方案压成一版管理层摘要",
PromptsJSON: mustJSON([]string{"把这份解决方案压成一版管理层摘要", "提炼亮点和实施建议", "生成汇报短版和亮点清单"}),
TagsJSON: mustJSON([]string{"方案摘要", "亮点提炼", "管理层预读", "汇报短版"}),
InstallState: "installed",
ExposedToUser: true,
State: "active",
SortOrder: 70,
},
{
Key: "app-progress-report",
Label: "周报 / 日报",