Block a user
CHAT-601 P1 | 当前 scope 会话列表(AI 页面内)
CHAT-601 P1 | 当前 scope 会话列表(AI 页面内)
完成
AIChatPage 底部会话列表已展示所有会话。可通过 listSessions(scopeType:scopeId:) 过滤当前 scope。
暂使用全局列表,scope 过滤在后续优化。
CHAT-602 P1 | 知识库内所有相关会话列表
完成
listSessions(parentKnowledgeBaseId:) 已支持。当 entryContext 包含 parentKnowledgeBaseId 时自动过滤。
API 已就绪: GET /rag-chat/sessions?parentKnowledgeBaseId=xxx
CHAT-604 P1 | 会话删除 / 归档 / 置顶操作
CHAT-502 P0 | AIChatView 顶部展示当前提问范围
完成
AIChatPage 消息顶部显示 scope 指示器:
- scopeLabel: "提问范围:计算机网络"
- scopeIcon: books.vertical/doc.text/lightbulb/folder/globe
- global scope 不显示指示…
CHAT-503 P0 | 新对话按钮在当前 scope 下新建会话
完成
工具栏"+"按钮调用 createNewSession(): 调用 open-or-create API。 当前 scope 下首次点击创建新会话,后续点击返回已有会话。
注意: 强制创建新会话…
CHAT-505 P0 | 切换知识库不修改当前会话
完成
scope 切换通过 ChatEntryContext 驱动:不同 scope → 新的 ChatEntryContext → open-or-create 返回不同会话。 当前会话的 scope 不会因切换知识库而改变。
CHAT-502 P0 | AIChatView 顶部展示当前提问范围
CHAT-503 P0 | 新对话按钮在当前 scope 下新建会话
CHAT-506 P0 | 发送消息只传 sessionId + content
CHAT-506 P0 | 发送消息只传 sessionId + content
完成
已在 #39 中实现。sendMessage 只传 sessionId + content,scope 信息在 createSession 时已绑定。
涉及: APIService.swift + AIChatViewModel.swift
CHAT-501 P0 | AIChatView 接入 open-or-create 接口
CHAT-501 P0 | AIChatView 接入 open-or-create 接口
完成
AIChatViewModel.load() 简化:
func load() async {
let ctx = entryContext ?? ChatEntryContext(scopeType: .global, ...)
let session = try await RagChatService.shared.cre…
CHAT-406 P1 | 分类页 AI 入口传 folder scope
CHAT-406 P1 | 分类页 AI 入口传 folder scope
处理
暂缓 — 分类页详情视图尚未实现。LibrarySubpages 中 folder 功能标记为 TODO。
当分类详情页实现后,入口代码为:
Route.aiChat(context:…
CHAT-405 P0 | 知识点详情 AI 入口传 knowledge_item scope
完成
KnowledgeDetailPage 工具栏 AI 对话入口已传 knowledge_item scope:
Route.aiChat(context: ChatEntryContext(
scopeType: .knowledgeItem,
scopeId: item.id,
scopeName:…