diff --git a/.gitignore b/.gitignore index dd12de0d..2e20f10d 100644 --- a/.gitignore +++ b/.gitignore @@ -98,6 +98,7 @@ CLAUDE.md # Codex CLI local artifacts .codex/ +.superpowers/ # Sync tooling local state (generated each run; report is intentionally tracked) scripts/.*-sync-state.json diff --git a/mateclaw-ui/src/i18n/locales/en-US.ts b/mateclaw-ui/src/i18n/locales/en-US.ts index 4b0dfe33..7aaf7dba 100644 --- a/mateclaw-ui/src/i18n/locales/en-US.ts +++ b/mateclaw-ui/src/i18n/locales/en-US.ts @@ -360,6 +360,7 @@ export default { agentContext: 'Agent Context', skills: 'Skills', wiki: 'Wiki KB', + enterprise: 'Enterprise', tools: 'Tools', plugins: 'Plugins', core: 'Core', @@ -2412,6 +2413,73 @@ export default { hint: 'Default: admin / admin123', failed: 'Login failed. Please check your credentials.', }, + enterprise: { + eyebrow: 'Enterprise', + title: 'Enterprise AI Workbench', + subtitle: 'Verifiable judgment with cited evidence, owned approvals, and a complete audit trail — AI inside enterprise workflows, not yet another chatbox.', + tabs: { overview: 'Overview', contract: 'Contract Review', account: 'Account Intel', approvals: 'Approvals', audit: 'Audit' }, + risk: { high: 'High', medium: 'Medium', low: 'Low' }, + status: { aiReviewed: 'AI Reviewed', pendingLegal: 'Legal Pending', approved: 'Approved', signal: 'Signal' }, + overview: { + metricPending: 'Pending', metricHighRisk: 'High Risk', metricAccounts: 'Accounts', metricCited: 'Cited', + queueTitle: 'Work Queue', + queueDesc: 'Today\'s items for legal / sales / compliance, each carrying an AI judgment and source citation.', + evidenceTitle: 'Recent Evidence', + evidenceDesc: 'Source quotes, playbook clauses, and historical precedents the AI cited.', + coverageNote: 'of this week\'s judgments link to a verifiable source', + tagSource: 'source', tagPlaybook: 'playbook', tagPrecedent: 'precedent', + filterAll: 'All', filterHighRisk: 'High Risk', filterPending: 'Legal Pending', filterToday: 'Today', + pipelineTitle: 'Contract Review Pipeline', + pipelineDesc: 'Standard flow from upload to archive — every step leaves a trace.', + step1: 'Upload', step1Desc: 'Legal or sales drops a PDF', + step2: 'Extract', step2Desc: 'OCR / text extraction', + step3: 'AI Review', step3Desc: 'Clause-level risk + playbook diff', + step4: 'Legal Review', step4Desc: 'Human in the loop', + step5: 'Approve / Archive', step5Desc: 'Approval chain + audit', + }, + contract: { + listTitle: 'Contracts', filterAll: 'All', filterHigh: 'High', filterPending: 'Pending', + clausesFound: 'clause deviations', deviation: 'Deviation', suggestion: 'AI suggested rewrite', + approvalChain: 'Approval Chain', + btnApprove: 'Approve', btnReject: 'Reject', btnRequestRevision: 'Request revision', + evidenceTitle: 'Evidence', sourceContract: 'Source contract', playbookRule: 'Playbook rule', precedents: 'Precedents', + confidence: 'Confidence', model: 'Model', + }, + account: { + listTitle: 'Accounts', filterAll: 'All', filterHot: 'Hot', filterCooling: 'Cooling', + opportunityScore: 'Opportunity Score', aum: 'Size', + keyPeople: 'Key People', + timelineTitle: 'Account Timeline', + tlAll: 'All', tlPublic: 'Public', tlMeeting: 'Meetings', tlDoc: 'Docs', + evidence: 'Evidence', + actionsTitle: 'Recommended Actions', + actionsSub: 'Next steps inferred from timeline signals, ranked by priority.', + btnDoIt: 'Do it', btnSnooze: 'Snooze', + stage: { prospect: 'Prospect', qualified: 'Qualified', proposal: 'Proposal', negotiation: 'Negotiation', won: 'Won' }, + role: { decider: 'Decider', influencer: 'Influencer', user: 'User', procurement: 'Procurement' }, + eventKind: { news: 'News', hiring: 'Hiring', funding: 'Funding', product: 'Product', meeting: 'Meeting', doc: 'Doc', competitor: 'Competitor' }, + priority: { high: 'High', medium: 'Medium', low: 'Low' }, + }, + approvals: { + queueTitle: 'My Approval Queue', + queueDesc: 'Items waiting on your sign-off. AI judgments are ready; your call.', + filterMine: 'Mine', filterAll: 'All', filterHigh: 'High Risk', + requester: 'Requested by', target: 'Target', reason: 'Reason', evidence: 'Evidence', + btnApprove: 'Approve', btnReject: 'Reject', btnDelegate: 'Delegate', + kind: { contract: 'Contract', tool: 'Tool', transformation: 'Transform', access: 'Access' }, + slaTitle: 'SLA Monitor', + slaDesc: 'Response time and auto-approval rate — granular data exposes approval bottlenecks.', + slaAvg: 'Avg response', slaWithin: 'Within SLA', slaOverdue: 'Overdue', slaAutoApproved: 'Auto-approved', + slaAutoNote: 'Matched allowlist rule', + }, + audit: { + title: 'Audit Trail', + desc: 'Every AI judgment, human action, and tool call carries a timestamp and a piece of evidence. This is the minimum bar for AI in regulated workflows.', + scopeAll: 'All events', scopeContract: 'Contract', scopeAccount: 'Account', scopeTool: 'AI / Tools', + evidence: 'Linked evidence', + kind: { review: 'AI Review', approve: 'Approve', reject: 'Reject', tool: 'Tool call', access: 'Access', modify: 'Modify', agent: 'Agent action' }, + }, + }, channels: { title: 'Channels', desc: 'Connect your agents to messaging platforms and APIs', diff --git a/mateclaw-ui/src/i18n/locales/zh-CN.ts b/mateclaw-ui/src/i18n/locales/zh-CN.ts index 682b843d..4c72bd31 100644 --- a/mateclaw-ui/src/i18n/locales/zh-CN.ts +++ b/mateclaw-ui/src/i18n/locales/zh-CN.ts @@ -363,6 +363,7 @@ export default { agentContext: '智能体上下文', skills: '技能', wiki: 'Wiki 知识库', + enterprise: '企业场景', tools: '工具', plugins: '插件', datasources: '数据源', @@ -2424,6 +2425,161 @@ export default { hint: '默认账号: admin / admin123', failed: '登录失败,请检查账号密码', }, + enterprise: { + eyebrow: '企业场景', + title: '企业 AI 工作台', + subtitle: '把 AI 判断、证据引用、审批责任一体化 —— 让 AI 进入企业流程,而不是又一个聊天框。', + tabs: { + overview: '总览', + contract: '合同审查', + account: '客户情报', + approvals: '审批', + audit: '审计', + }, + risk: { high: '高风险', medium: '中等', low: '低' }, + status: { + aiReviewed: 'AI 已审', + pendingLegal: '法务待审', + approved: '已批准', + signal: '情报信号', + }, + overview: { + metricPending: '待处理', + metricHighRisk: '高风险', + metricAccounts: '关注客户', + metricCited: '引用覆盖', + queueTitle: '工作队列', + queueDesc: '今天需要法务、销售、合规处理的事项;每条都附带 AI 判断和证据出处', + evidenceTitle: '近期证据', + evidenceDesc: 'AI 判断引用的原文、Playbook 条款、历史先例', + coverageNote: '本周 AI 判断的引用覆盖率', + tagSource: '原文', + tagPlaybook: 'Playbook', + tagPrecedent: '先例', + filterAll: '全部', + filterHighRisk: '高风险', + filterPending: '待法务', + filterToday: '今天', + pipelineTitle: '合同审查流水', + pipelineDesc: '从上传到归档的标准流程,每一步都留痕', + step1: '上传', + step1Desc: '法务或销售拖拽合同 PDF', + step2: '提取', + step2Desc: 'OCR / 文本提取', + step3: 'AI 审查', + step3Desc: '条款级风险与 Playbook 偏离', + step4: '法务复核', + step4Desc: '人工最终把关', + step5: '审批 / 归档', + step5Desc: '审批链 + 审计留痕', + }, + contract: { + listTitle: '合同列表', + filterAll: '全部', + filterHigh: '高风险', + filterPending: '待审', + clausesFound: '条款偏离', + deviation: '偏离', + suggestion: 'AI 建议改写', + approvalChain: '审批链', + btnApprove: '批准', + btnReject: '驳回', + btnRequestRevision: '要求修订', + evidenceTitle: '证据', + sourceContract: '原合同', + playbookRule: 'Playbook 条款', + precedents: '历史先例', + confidence: '置信度', + model: '模型', + }, + account: { + listTitle: '客户列表', + filterAll: '全部', + filterHot: '高分', + filterCooling: '降温', + opportunityScore: '机会分', + aum: '体量', + keyPeople: '关键人', + timelineTitle: '账户时间线', + tlAll: '全部', + tlPublic: '公开信号', + tlMeeting: '会议', + tlDoc: '内部资料', + evidence: '证据', + actionsTitle: '推荐动作', + actionsSub: 'AI 根据时间线信号生成的下一步建议;按优先级排序', + btnDoIt: '去执行', + btnSnooze: '稍后', + stage: { + prospect: '潜在', + qualified: '确认意向', + proposal: '方案中', + negotiation: '谈判中', + won: '已成交', + }, + role: { + decider: '决策者', + influencer: '影响者', + user: '使用者', + procurement: '采购', + }, + eventKind: { + news: '新闻', + hiring: '招聘', + funding: '融资', + product: '产品', + meeting: '会议', + doc: '资料', + competitor: '竞品', + }, + priority: { high: '高优', medium: '中优', low: '低优' }, + }, + approvals: { + queueTitle: '我的审批队列', + queueDesc: '需要你点头才能继续的事项 —— AI 判断已就绪,等你把关', + filterMine: '我的', + filterAll: '全部', + filterHigh: '高风险', + requester: '发起人', + target: '对象', + reason: '原因', + evidence: '证据', + btnApprove: '批准', + btnReject: '驳回', + btnDelegate: '转交', + kind: { + contract: '合同', + tool: '工具', + transformation: '加工器', + access: '权限', + }, + slaTitle: 'SLA 监控', + slaDesc: '审批响应时间与自动批准比例 —— 数据越细,越容易发现"卡审批"的瓶颈', + slaAvg: '平均响应', + slaWithin: '按时完成', + slaOverdue: '逾期', + slaAutoApproved: '已自动批准', + slaAutoNote: '满足白名单规则', + }, + audit: { + title: '审计追溯', + desc: '每一次 AI 判断、人工操作、工具调用都有时间戳和证据。这是企业部署 AI 的最低门槛。', + scopeAll: '全部事件', + scopeContract: '合同相关', + scopeAccount: '客户相关', + scopeTool: 'AI / 工具', + evidence: '关联证据', + kind: { + review: 'AI 审查', + approve: '批准', + reject: '驳回', + tool: '工具调用', + access: '权限', + modify: '修改', + agent: 'Agent 行为', + }, + }, + }, channels: { title: '渠道管理', desc: '将数字员工连接到各消息平台和 API', diff --git a/mateclaw-ui/src/router/index.ts b/mateclaw-ui/src/router/index.ts index d5bc1c83..4fb32f22 100644 --- a/mateclaw-ui/src/router/index.ts +++ b/mateclaw-ui/src/router/index.ts @@ -39,6 +39,12 @@ const router = createRouter({ component: () => import('@/views/Wiki/index.vue'), meta: { title: 'Wiki' }, }, + { + path: 'enterprise', + name: 'Enterprise', + component: () => import('@/views/Enterprise/index.vue'), + meta: { title: 'Enterprise Scenarios' }, + }, { path: 'memory', name: 'Memory', diff --git a/mateclaw-ui/src/views/Enterprise/AccountIntel.vue b/mateclaw-ui/src/views/Enterprise/AccountIntel.vue new file mode 100644 index 00000000..0beaa613 --- /dev/null +++ b/mateclaw-ui/src/views/Enterprise/AccountIntel.vue @@ -0,0 +1,502 @@ + + + + + diff --git a/mateclaw-ui/src/views/Enterprise/Approvals.vue b/mateclaw-ui/src/views/Enterprise/Approvals.vue new file mode 100644 index 00000000..c2ba7910 --- /dev/null +++ b/mateclaw-ui/src/views/Enterprise/Approvals.vue @@ -0,0 +1,260 @@ + + + + + diff --git a/mateclaw-ui/src/views/Enterprise/Audit.vue b/mateclaw-ui/src/views/Enterprise/Audit.vue new file mode 100644 index 00000000..bcef320a --- /dev/null +++ b/mateclaw-ui/src/views/Enterprise/Audit.vue @@ -0,0 +1,186 @@ + + + + + diff --git a/mateclaw-ui/src/views/Enterprise/ContractReview.vue b/mateclaw-ui/src/views/Enterprise/ContractReview.vue new file mode 100644 index 00000000..bc7e83f4 --- /dev/null +++ b/mateclaw-ui/src/views/Enterprise/ContractReview.vue @@ -0,0 +1,564 @@ + + + + + diff --git a/mateclaw-ui/src/views/Enterprise/Overview.vue b/mateclaw-ui/src/views/Enterprise/Overview.vue new file mode 100644 index 00000000..475b31ae --- /dev/null +++ b/mateclaw-ui/src/views/Enterprise/Overview.vue @@ -0,0 +1,405 @@ + + + + + diff --git a/mateclaw-ui/src/views/Enterprise/index.vue b/mateclaw-ui/src/views/Enterprise/index.vue new file mode 100644 index 00000000..d8762fd1 --- /dev/null +++ b/mateclaw-ui/src/views/Enterprise/index.vue @@ -0,0 +1,132 @@ + + + + + diff --git a/mateclaw-ui/src/views/layout/MainLayout.vue b/mateclaw-ui/src/views/layout/MainLayout.vue index 865ed8b9..44318eaa 100644 --- a/mateclaw-ui/src/views/layout/MainLayout.vue +++ b/mateclaw-ui/src/views/layout/MainLayout.vue @@ -354,6 +354,11 @@ const navGroups = computed(() => [ label: t('nav.wiki'), icon: ``, }, + { + path: '/enterprise', + label: t('nav.enterprise'), + icon: ``, + }, { path: '/memory', label: t('nav.memory'),