fix(web): rename AI channel to AI 对话

This commit is contained in:
2026-07-22 15:46:50 +08:00
parent fecff65975
commit 43ac9388ac
6 changed files with 9 additions and 9 deletions

View File

@@ -10,7 +10,7 @@
森林AI 面向个人知识工作者、团队负责人和可信的内部协作成员,帮助用户把分散的事项、资料与沟通内容整理到清晰的项目空间中。 森林AI 面向个人知识工作者、团队负责人和可信的内部协作成员,帮助用户把分散的事项、资料与沟通内容整理到清晰的项目空间中。
每个项目都有独立的概况、Inbox、工作计划、AI 助手、笔记资料和计划任务。用户既可以在工作台查看所有项目的整体进展,也可以进入具体项目,围绕目标持续收集信息、安排工作、沉淀知识并复盘成果。 每个项目都有独立的概况、工作计划、AI 对话、笔记资料和计划任务。用户既可以在工作台查看所有项目的整体进展,也可以进入具体项目,围绕目标持续收集信息、安排工作、沉淀知识并复盘成果。
## 适用场景 ## 适用场景
@@ -38,7 +38,7 @@ Inbox 用于承接尚未归类的想法、消息和材料。用户可以查看
任务按项目组织,可记录标题、说明、标签、负责人、创建时间和完成状态。项目内标签帮助用户按主题或优先级整理计划,同时保留进行中与已完成事项,方便跟进和复盘。 任务按项目组织,可记录标题、说明、标签、负责人、创建时间和完成状态。项目内标签帮助用户按主题或优先级整理计划,同时保留进行中与已完成事项,方便跟进和复盘。
### AI 助手 ### AI 对话
用户可以在项目内创建带有项目背景的 AI 会话入口提前明确本次协作的目标和参考上下文。AI 输出与正式项目内容相互区分,需要用户确认后才能转化为任务、笔记或资料。 用户可以在项目内创建带有项目背景的 AI 会话入口提前明确本次协作的目标和参考上下文。AI 输出与正式项目内容相互区分,需要用户确认后才能转化为任务、笔记或资料。

View File

@@ -116,7 +116,7 @@ if (!aiApiSource.includes('signal,')) failures.push('AI API requests must pass t
if (/\b(?:task|note|source)Id\b/.test(aiApiSource)) failures.push('AI session responses must not expose automatic formal object IDs') if (/\b(?:task|note|source)Id\b/.test(aiApiSource)) failures.push('AI session responses must not expose automatic formal object IDs')
const aiPageSource = readFileSync('src/pages/projects/project-ai.tsx', 'utf8') const aiPageSource = readFileSync('src/pages/projects/project-ai.tsx', 'utf8')
for (const required of ['AI 助手', '创建会话', 'loading', 'error']) { for (const required of ['AI 对话', '创建会话', 'loading', 'error']) {
if (!aiPageSource.includes(required)) failures.push(`project AI page must include ${required}`) if (!aiPageSource.includes(required)) failures.push(`project AI page must include ${required}`)
} }
for (const required of ['AbortController', 'generationRef', 'projectRef', 'setSessions([])']) { for (const required of ['AbortController', 'generationRef', 'projectRef', 'setSessions([])']) {

View File

@@ -37,7 +37,7 @@ const visualCheckWorkspace = {
{ id: 'overview', projectId, type: 'overview', title: '概况', icon: 'home', count: 0, url: '', sortOrder: 0 }, { id: 'overview', projectId, type: 'overview', title: '概况', icon: 'home', count: 0, url: '', sortOrder: 0 },
{ id: 'inbox', projectId, type: 'inbox', title: 'Inbox 消息流', icon: 'email', count: 2, url: '', sortOrder: 1 }, { id: 'inbox', projectId, type: 'inbox', title: 'Inbox 消息流', icon: 'email', count: 2, url: '', sortOrder: 1 },
{ id: 'tasks', projectId, type: 'tasks', title: '工作计划', icon: 'list', count: 0, url: '', sortOrder: 1 }, { id: 'tasks', projectId, type: 'tasks', title: '工作计划', icon: 'list', count: 0, url: '', sortOrder: 1 },
{ id: 'ai', projectId, type: 'ai_sessions', title: 'AI 助手', icon: 'robot', count: 0, url: '', sortOrder: 2 }, { id: 'ai', projectId, type: 'ai_sessions', title: 'AI 对话', icon: 'robot', count: 0, url: '', sortOrder: 2 },
{ id: 'notes', projectId, type: 'notes_sources', title: '笔记资料', icon: 'file', count: 0, url: '', sortOrder: 3 }, { id: 'notes', projectId, type: 'notes_sources', title: '笔记资料', icon: 'file', count: 0, url: '', sortOrder: 3 },
{ id: 'cron', projectId, type: 'cron', title: '计划任务', icon: 'clock', count: 0, url: '', sortOrder: 4 }, { id: 'cron', projectId, type: 'cron', title: '计划任务', icon: 'clock', count: 0, url: '', sortOrder: 4 },
], ],
@@ -213,7 +213,7 @@ const channelListHoverMetrics = await collectMetrics()
const channelPageChecks = [] const channelPageChecks = []
for (const channel of [ for (const channel of [
{ label: '工作计划', pageClass: 'project-tasks-page', expectedHeading: '工作计划' }, { label: '工作计划', pageClass: 'project-tasks-page', expectedHeading: '工作计划' },
{ label: 'AI 助手', pageClass: 'project-ai-page', expectedHeading: 'AI 助手' }, { label: 'AI 对话', pageClass: 'project-ai-page', expectedHeading: 'AI 对话' },
{ label: '笔记资料', pageClass: 'project-notes-page', expectedHeading: '笔记资料' }, { label: '笔记资料', pageClass: 'project-notes-page', expectedHeading: '笔记资料' },
{ label: '计划任务', pageClass: 'project-cron-page', expectedHeading: '计划任务' }, { label: '计划任务', pageClass: 'project-cron-page', expectedHeading: '计划任务' },
{ label: '新建频道', pageClass: 'project-new-channel-page', expectedHeading: '新建频道' }, { label: '新建频道', pageClass: 'project-new-channel-page', expectedHeading: '新建频道' },

View File

@@ -95,7 +95,7 @@ function channelLabel(channel: WorkspaceChannelDTO) {
case 'tasks': case 'tasks':
return '工作计划' return '工作计划'
case 'ai_sessions': case 'ai_sessions':
return 'AI 助手' return 'AI 对话'
case 'notes_sources': case 'notes_sources':
return '笔记资料' return '笔记资料'
case 'cron': case 'cron':

View File

@@ -110,7 +110,7 @@ export function ProjectAi({
<div className="project-channel-page project-ai-page overview-page"> <div className="project-channel-page project-ai-page overview-page">
<div className="overview-head"> <div className="overview-head">
<div> <div>
<Title heading={4}>AI </Title> <Title heading={4}>AI </Title>
<Text type="secondary"></Text> <Text type="secondary"></Text>
</div> </div>
</div> </div>

View File

@@ -80,7 +80,7 @@ export function WorkspacePage({
const workspaceMetrics = [ const workspaceMetrics = [
{ title: '项目总数', value: projects.length, delta: `${urgentProjects} 个高优先级`, icon: <IconDashboard />, color: 'arcoblue' }, { title: '项目总数', value: projects.length, delta: `${urgentProjects} 个高优先级`, icon: <IconDashboard />, color: 'arcoblue' },
{ title: '未完成计划', value: unfinishedTasks.length, delta: '跨项目聚合', icon: <IconCheckCircleFill />, color: 'green' }, { title: '未完成计划', value: unfinishedTasks.length, delta: '跨项目聚合', icon: <IconCheckCircleFill />, color: 'green' },
{ title: 'AI智能体', value: aiSessions.length, delta: '项目内上下文', icon: <IconRobot />, color: 'purple' }, { title: 'AI 对话', value: aiSessions.length, delta: '项目内上下文', icon: <IconRobot />, color: 'purple' },
{ title: '知识资料', value: notes.length, delta: '笔记与资料合计', icon: <IconFile />, color: 'cyan' }, { title: '知识资料', value: notes.length, delta: '笔记与资料合计', icon: <IconFile />, color: 'cyan' },
] ]
@@ -89,7 +89,7 @@ export function WorkspacePage({
<div className="overview-head"> <div className="overview-head">
<div> <div>
<Title heading={4}></Title> <Title heading={4}></Title>
<Text type="secondary">AI智能体和知识资</Text> <Text type="secondary">AI </Text>
</div> </div>
</div> </div>