wangdl
|
0b2aafe045
|
feat(ios): 浅色/深色切换图标 + ZXSettingRow 支持自定义图标
- 新增 icon-sun(太阳)/ icon-moon(月亮)双色图标
- ZXSettingRow 新增 isCustom 参数支持 Asset 图片
- SettingsView 外观行根据当前模式切换图标
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-30 09:27:28 +08:00 |
|
wangdl
|
5c1cb556b9
|
feat(ios): 设置/消息/搜索图标替换为自定义 SVG
- ProfileView: 铃铛→icon-notifications, 齿轮→icon-settings
- LibraryHomeView: 放大镜→icon-search
- ZhiXiIcon 枚举补全所有图标
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-30 09:24:24 +08:00 |
|
wangdl
|
791b863a0e
|
fix(ios): 修正三个 Tab 图标对应关系
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-30 09:19:41 +08:00 |
|
wangdl
|
371f00772a
|
feat(ios): 底部导航栏 4 个 Tab 全部替换为自定义双色图标
- 学习: tab-learn(书本图标,黑+灰 → 蓝+浅蓝)
- 知识库: tab-library(节点图标)
- 分析: tab-analysis(人群图标)
- 我的: tab-profile(层叠卡片图标)
- 每个图标 2 个 imageset(默认 + 激活双色)
- shared-assets/icons/ 作为跨平台 SVG 真理源
注意:TabView 系统图标尺寸不可自定义,若需放大需自建 TabBar 组件
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-30 09:17:30 +08:00 |
|
wangdl
|
9ce69f3ddb
|
feat(ios): 学习 Tab 图标双色方案(默认黑+灰 / 激活蓝+浅蓝)
- tab-learn.svg: 默认态(黑色主路径 + 灰色次路径)
- tab-learn-active.svg: 激活态(#3D7FFB + #9DA7FD 品牌色)
- ContentView 根据 selectedTab 自动切换图标
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-30 09:14:47 +08:00 |
|
wangdl
|
e254db0ba4
|
fix(ios): togglePin 改用 APIClient.request 替代不存在的 .post
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-30 09:07:23 +08:00 |
|
wangdl
|
d1b3ac160a
|
fix(ios): QuizGenerateRequest Codable 替代 [String: Any]
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-30 09:06:36 +08:00 |
|
wangdl
|
9dfc1e1954
|
fix(ios): AIMessage 调用补全 citations 参数
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-30 09:05:50 +08:00 |
|
wangdl
|
98d6d0dc7b
|
fix(ios): ProfileViewModel @Published 多变量拆分为独立行
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-30 09:04:37 +08:00 |
|
wangdl
|
7193dca877
|
fix(ios): AnalysisHomeView 括号结构修复
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-30 09:03:27 +08:00 |
|
wangdl
|
4d900dfec6
|
feat(ios): 自定义图标体系 + 学习 Tab 图标替换
- 新增 shared-assets/icons/tab-learn.svg(SVG源文件)
- 新增 Assets.xcassets/Icons/tab-learn.imageset(Template Image)
- 新增 ZhiXiIcon 统一图标枚举
- ContentView 学习 Tab 从 systemImage: flame 改为自定义图标
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-30 09:00:57 +08:00 |
|
wangdl
|
850e38d1a4
|
feat(ios): M2-04 测验入口(KB详情页 + 学习首页快捷操作)
- KB详情页 toolbar 新增 ? 测验按钮
- 学习首页新增快捷操作栏(AI问答/自测/复习)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-30 08:51:02 +08:00 |
|
wangdl
|
bac51224e2
|
feat(ios): M2 测验模块全部 4 个 issue
M2-01 测验列表页 (QuizListView):
- 展示知识库下所有测验 + 空状态/生成新测验按钮
- POST /quizzes 生成测验
M2-02 答题页面 (QuizTakerView):
- 选择题 ABCD 选项 / 判断题 ✓✗ / 填空题输入
- 进度条 + 上一题/下一题/提交按钮
- POST /quizzes/:id/start + POST /quizzes/:id/submit
M2-03 结果页 (QuizResultView):
- 得分展示 + 每题对错详情 + 解释
- 重新测验按钮
路由: quizList/quizTake/quizResult
QuizService: generate/list/detail/start/submit/results/history
Quiz 模型: Quiz/QuizQuestion/QuizAttempt/QuizAnswer/QuizSubmitRequest 等
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-30 08:50:25 +08:00 |
|
wangdl
|
c7b8360ff6
|
fix(ios): M1 审查修复 3 个 Bug
- AIChatPage 会话列表按钮补充 .sheet 展示历史对话
- AIChatViewModel 新增 loadSession() 加载对话历史
- NotificationListView 日期解析兼容多种 ISO 格式
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-30 08:47:19 +08:00 |
|
wangdl
|
26610c1baa
|
fix(ios): ChatCitation 字段对齐后端(excerptText 替代 content)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-30 08:44:00 +08:00 |
|
wangdl
|
ab7f772072
|
feat(ios): IOS-M1-07 设置页分组补全
- 新增「关于知习」分组标题
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-29 19:54:07 +08:00 |
|
wangdl
|
dd97470e04
|
feat(ios): IOS-M1-06 分析页增加 AI 综合分析卡片
- AI 综合分析卡片基于 activity 数据生成摘要文案
- 展示学习分钟/连续天数/掌握度等关键指标
- 下方列出 AI 学习推荐
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-29 19:53:32 +08:00 |
|
wangdl
|
90ad19aad1
|
feat(ios): IOS-M1-05 我的页面资产摘要 + 存储空间
- ProfileView 新增学习资产行(KB数/知识点/复习卡)
- 新增存储空间行(已用/总量)
- 新增消息中心快捷入口
- UserService 新增 fetchAssets()/fetchStorage()
- ProfileViewModel 新增 loadStats()
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-29 19:50:26 +08:00 |
|
wangdl
|
5ff979cc97
|
feat(ios): IOS-M1-04 AI 对话增强
- AIChatPage 新增引用来源展示(AI回答下方胶囊标签)
- 新增复制/重新生成按钮
- 右上角会话列表按钮
- SendMessageResponse 新增 citations 字段
- AIMessage 新增 citations 属性
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-29 19:48:46 +08:00 |
|
wangdl
|
2fcf68a64b
|
feat(ios): IOS-M1-03 消息页面增强
- NotificationListView 改为按时间段分组:今天/本周/更早
- 新增 6 种消息类型图标(导入完成/失败/测验/AI/订阅/系统)
- 右上角增加「全部已读」按钮
- 未读蓝点标识
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-29 19:46:26 +08:00 |
|
wangdl
|
657e9cf2b4
|
feat(ios): IOS-M1-02 知识库列表筛选 + 置顶 + 排序
- LibraryHomeView 新增 filter chips(全部/我的/已订阅/官方)
- ZLibraryCard 显示置顶图标 + 公开标签
- LibraryViewModel 新增 currentFilter + fetchKBs 按类型加载
- KnowledgeBaseService 新增 listSubscribed()
- KnowledgeBase 模型新增 isPinned/visibility/ownerType/isVerified
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-29 19:44:33 +08:00 |
|
wangdl
|
1162eaac07
|
feat(ios): IOS-M1-01 学习首页改版
- 新增主行动卡片(今日复习/开始学习,基于优先级)
- 新增本周摘要行(本周分钟/完成任务/复习卡片/连续天数)
- 接入 ActivityService.streak()/summary() + ReviewService.dueCards()
- 保留今日任务列表 + 每日思考题
- 移除旧的进度环卡片
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-29 19:39:49 +08:00 |
|
wangdl
|
8e37223b7f
|
fix(ios): 修复重复 list 方法 + FocusItem update Any 类型 + FocusItemUpdateRequest
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-28 21:00:35 +08:00 |
|
wangdl
|
7535865492
|
fix(ios): EditKnowledgePage 去掉多余的闭合括号
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-28 20:59:01 +08:00 |
|
wangdl
|
71a7f8aa8a
|
fix(ios): ZXImportRow 缺少闭合 } 导致 ImportReviewPage/EditKnowledgePage 被嵌套
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-28 20:56:17 +08:00 |
|
wangdl
|
011dabcb43
|
fix(ios): 重写 LibraryDetailPage body — 清理 ZStack/VStack 嵌套结构
- ZStack { Color; VStack { ... } } 结构正确分离
- ScrollView 内 VStack 的 if/else 分支独立清晰
- Source 列表去掉多余外层 VStack
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-28 20:52:05 +08:00 |
|
wangdl
|
6bb0ae6e29
|
fix(ios): 修复多余闭合括号 + EditKnowledgePage 缺少 body 闭合
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-28 20:48:45 +08:00 |
|
wangdl
|
64ee5a371f
|
fix(ios): 修复 if/else 与 VStack 闭合括号错位
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-28 20:46:30 +08:00 |
|
wangdl
|
a6c5d27e62
|
fix(ios): 修复 LibraryDetailPage 闭合括号错误
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-28 20:44:32 +08:00 |
|
wangdl
|
a8bf8d229f
|
feat(ios): IOS-M0-08~14 P2 辅助功能服务层全部补齐
M0-08 账号注销/设备管理:
- UserService: requestAccountDeletion/cancelDeletion/listDevices/removeDevice
M0-09 Push Token/通知偏好:
- NotificationService: markAllRead/getPreferences/updatePreferences/registerPushToken/removePushToken
M0-12 Review 生成卡片:
- ReviewService: generateCards()
M0-13 FocusItems 完整操作:
- FocusItemService: update()/complete()
KnowledgeBase update 接口已存在,服务层已接入
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-28 20:21:23 +08:00 |
|
wangdl
|
bd635f4af1
|
feat(ios): IOS-M0-06 + IOS-M0-07
- LearningSessionService 新增 list() 分页查询
- FileUploadService 新增 deleteFile() 调用 DELETE /files/:id
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-28 20:17:52 +08:00 |
|
wangdl
|
0a8d873157
|
feat(ios): IOS-M0-05 Learning Activity 学习统计详情
- ActivityService 新增 trend()/streak()/recommendations()
- ActivityViewModel 加载连续学习/趋势/推荐数据
- AnalysisHomeView 新增连续学习卡片(火焰+天数+最长记录)
- AnalysisHomeView 新增学习推荐列表(type图标+标题+优先级标签)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-28 20:17:15 +08:00 |
|
wangdl
|
6664612212
|
feat(ios): IOS-M0-04 Knowledge Source 知识源管理
- 新增 KnowledgeSourceService: list/detail/add/delete
- 新增 KnowledgeSource/AddSourceRequest 模型
- LibraryDetailPage 新增分段选择器:知识点 | 资料来源
- 资料来源 Tab 显示来源列表(类型图标/标题/解析状态/字数)
- 左滑删除资料来源
- 切换 Tab 自动加载数据
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-28 20:15:13 +08:00 |
|
wangdl
|
fea5bca8a6
|
feat(ios): IOS-M0-03 Import Candidate 候选知识点审批
- 新增 ImportCandidateService: listBySource/detail/update/accept/reject/batchAccept
- 新增 ImportCandidate/BatchAcceptRequest 模型
- 新增 ImportReviewPage 审批页面:
- 候选列表(置信度标签 + 标题 + 内容摘要)
- 点击展开 → 接受/拒绝按钮
- 全部接受批量操作
- 空状态 + 加载态
- Route 新增 importReview(sourceId:)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-28 20:12:01 +08:00 |
|
wangdl
|
60d89e2bba
|
feat(ios): IOS-M0-02 Document Import 文档导入
- 新增 DocumentImportService: create/getStatus
- 新增 CreateImportRequest/ImportStatusResponse 模型
- ImportPage 重写:
- 文件导入 → fileImporter → 上传 COS → POST /imports
- 相册导入 → PhotosPicker → 上传 COS → POST /imports
- 链接导入 → alert 输入 URL → POST /imports
- 自动选第一个知识库作为导入目标
- 导入状态提示 + 错误处理
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-28 20:07:20 +08:00 |
|
wangdl
|
444f1842d0
|
feat(ios): IOS-M0-01 RAG Chat 接入真实 API
- 新增 RagChatService: createSession/listSessions/getMessages/sendMessage/deleteSession
- 新增 ChatSession/ChatMessage/SendMessageResponse 等数据模型
- AIChatViewModel 重写:移除 mock,调用真实 /rag-chat API
- 自动选择知识库创建对话 session
- AIChatPage 增加加载态(创建 session 中)和错误态(无知识库)
- send() → POST /rag-chat/sessions/:id/messages 返回真实 AI 回复
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-28 20:00:07 +08:00 |
|
wangdl
|
481f513b11
|
feat(ios): 封面图底部半屏抽屉弹窗 + 左侧正方形卡片
- 封面图有独立中文标签"封面图"
- 120×120 正方形虚线框,左侧对齐
- 点击弹出底部半屏 sheet(height: 220)
- sheet 内:从相册选择(带图标+描述+箭头)
- 顶部有指示条(灰色胶囊)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-28 11:00:20 +08:00 |
|
wangdl
|
11c0fe42b7
|
feat(ios): 封面图改为卡片+底部弹窗选择 + 必填加红星
- 封面图改为全宽卡片,点击弹出底部 confirmationDialog
- 选项:"从相册选择" / "取消"
- 名称和描述字段加红色 * 必填标识
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-28 10:56:55 +08:00 |
|
wangdl
|
3547b6cef6
|
fix(ios): 封面框正方形 + 描述改文本域 + 描述必填
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-28 10:52:45 +08:00 |
|
wangdl
|
d6254287bb
|
fix(ios): 封面图改为正方形裁剪 512×512
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-28 10:50:08 +08:00 |
|
wangdl
|
587b61d564
|
feat(ios): 知识库列表卡片显示封面图
- ZLibraryCard 改用 coverUrl 显示封面图(56×56)
- 无封面时回退到默认书本图标
- KnowledgeBase 模型新增 coverUrl 字段
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-28 10:48:35 +08:00 |
|
wangdl
|
d77a7fe50d
|
fix(ios): CreateKnowledgeBaseRequest coverKey 设默认值 nil
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-28 10:45:38 +08:00 |
|
wangdl
|
32790070aa
|
fix(ios): 删除多余的闭合括号
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-28 10:44:02 +08:00 |
|
wangdl
|
cc40d8b364
|
feat(ios): 创建知识库支持上传封面图
- CreateLibraryPage 新增封面图区域(3:2,600×400)
- 自动裁剪 + 缩放到规范尺寸
- 上传到 COS,coverKey 传给后端
- FileUploadService 新增 uploadImageWithKey 返回 fileId+objectKey
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-28 10:43:00 +08:00 |
|
wangdl
|
c021370a82
|
fix(ios): 选择模式下点击卡片任意位置即可选中/取消
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-27 22:52:50 +08:00 |
|
wangdl
|
3f80f9aaf8
|
fix(ios): 拆分删除知识库和选择知识点按钮,避免误触
- 删除知识库 🗑 移到左侧灰色按钮,远离右侧操作区
- 选择知识点 ☑ 独立显示在右侧
- 不再共用 ⋯ 菜单
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-27 22:50:37 +08:00 |
|
wangdl
|
e1bfda0169
|
feat(ios): 知识点删除 + 批量选择删除
- 新增单个删除 + 批量删除 API 调用
- LibraryDetailPage 新增选择模式:
- ⋯ 菜单 → "选择知识点" 进入多选模式
- 全选/取消全选 + 批量删除按钮
- 选中的 items 显示选中标记
- 选择模式下禁止导航进入详情
- LibraryDetailViewModel 新增 deleteItem + batchDeleteItems
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-27 22:47:24 +08:00 |
|
wangdl
|
ed3e587bf0
|
fix(ios): 文件上传模式隐藏标题,标题仅在手写模式显示
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-27 22:29:13 +08:00 |
|
wangdl
|
2b464df7cf
|
feat(ios): 添加知识点 - 多选文件 + 标题可选 + 每个文件独立知识点
- 文件选择器改为多选(allowsMultipleSelection: true)
- 图片选择器支持多选(maxSelectionCount: 10)
- 标题改为可选,留空自动用文件名
- 每个文件独立上传 → 独立知识点
- 多文件时按钮显示"批量添加 (N个)"
- 已选文件可逐个删除
- 部分失败时显示 X/N 成功计数
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-27 22:26:32 +08:00 |
|
wangdl
|
42b60a21ec
|
feat(ios): TabBar 隐藏/出现增加平滑动画
- ContentView 新增 TabBarVisibleKey 环境值 + AnimatedTabBarHide modifier
- TabView 使用 .toolbar(visible/hidden) + .animation 驱动动画
- 子页面 onAppear 隐藏 → onDisappear 出现,带 easeInOut 0.28s
- 替换所有静态 .toolbar(.hidden, for: .tabBar) 为 .animatedTabBarHide()
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-27 22:16:22 +08:00 |
|