17 Commits

Author SHA1 Message Date
wangdl
13688f4290 refactor: restructure API models and services for reading runtime 2026-07-08 19:34:13 +08:00
wangdl
1d8cbb94f9 fix: 阅读事件发送 + 首页继续学习 + AI Markdown 渲染 + 文档清理
- MaterialReaderView: 修复 onDisappear 顺序(先 close 再 export 再 cleanup)
- MaterialReaderView: 新增每 2 分钟定时发送,离开页面立即发送
- ReadingRuntimeSessionManager: closeMaterial() 不再 unregister
- ReadingRuntimeSessionManager: 新增 cleanup() 独立方法
- StudyHomeViewModel: 移除未完成会话回退路径(缺失 materialId)
- AIChatPage: 支持 Markdown 渲染(LocalizedStringKey)
- 删除 ios/docs/system-map/review/ 和 ios/review/ 审查文档

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-01 22:45:54 +08:00
wangdl
f2f2d8b8ac feat: Debug 模式连接本地 API + ATS 豁免 localhost 2026-06-27 12:42:51 +08:00
wangdl
5a7ee670af feat: global API request/response logging in APIClient
Every API call now logs: method, path, statusCode, response preview.
Network errors caught and logged before re-throwing.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-19 12:22:35 +08:00
wangdl
78d2c93b41 debug: add request logging to APIClient
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-19 12:14:10 +08:00
wangdl
4059f0197e fix(IOS-INFO-043): set vm.filePath after COS download + cleanup
- MaterialReaderViewModel.filePath: let → var for runtime updates
- Set vm.filePath to downloaded temp path before vm.load()
- Remove unused downloadedFilePath/resolvedPath

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-19 11:37:38 +08:00
wangdl
915d5e3fe2 fix(IOS-INFO-043): change source list nav to MaterialReaderView + add COS download
- LibraryDetailPage source list: Route.materialDetail → Route.materialReader
- KnowledgeSource: add fileId field for COS download
- MaterialReaderView: add COS download fallback in .task
- MaterialReaderView: add resolvedPath for downloaded file

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-19 11:34:21 +08:00
wangdl
123efb1612 feat(IOS-INFO-043): add 详情 and 整理知识点 toolbar buttons to MaterialReaderView
- MaterialReaderView: add info.circle button → MaterialDetailView
- MaterialReaderView: add brain button → trigger parse API + status polling
- MaterialReaderView: add triggerParse() with 2s poll loop
- KnowledgeSourceService: add parse() method (POST /sources/:id/parse)
- ImportStatusResponse: add jobId, progress fields
- ParseResponse: new model for parse trigger response

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-19 11:26:13 +08:00
wangdl
7c9d8e41a6 revert: undo ImportPage kbId parameter (user clicked wrong KB)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-18 22:34:29 +08:00
wangdl
def8c4c93a fix: all iOS compile errors - protocols, missing fields, colors, shadowed max
- Protocol conformance: list→listAll with extension defaults
- ContinueLearningResponse has no lastPosition→use nil
- LearningSession has no readingTargetType/materialId→use defaults
- Color.zxBlue→Color.blue, Color.zxIndigo→Color.indigo
- Shadowed max parameter→Swift.max
- ForEach Identifiable→explicit id: \.id

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-18 17:14:34 +08:00
wangdl
d28dba29fc fix: AuthManager has no currentUserId, use KeychainHelper.getUserId()
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-18 17:03:38 +08:00
wangdl
80c1d660cd feat: #80 标记已读 UI + 乐观更新
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-09 20:49:41 +08:00
wangdl
697220de00 fix: APIConfig baseURL longde.cloud → api.longde.cloud
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-09 20:39:57 +08:00
wangdl
a6dde9f0c6 feat: M-IOS-INFO V2 reading event system + iOS 26 build fixes
- Add zx_documentFFI bridging header + modulemap
- Update zx_document.swift (patched for static linking + iOS 26 SDK)
- Replace XCFramework with V2 symbols
- Add V2 types: ReadingMaterialContext, ReadingEventUploadItem, ReadingRuntimeAdapter
- Add V2 session manager: ReadingRuntimeSessionManager
- Add V2 position adapter: ReadingPositionAdapter
- Add V2 event mapper: ReadingEventMapper
- Add upload queue + pipeline: ReadingEventUploadQueue
- Add reading API client: ReadingAPI
- Fix QuickNoteSheet for new NoteAnchor fields (positionSnapshot)
- Restore MaterialReaderView lifecycle events (onAppear/onDisappear)
- Add ScenePhase handling for app background/foreground

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-09 19:58:57 +08:00
wangdl
5fe29a7d8c feat: #24 公开库发现 + 订阅管理
- KnowledgeBaseService 新增 discover/subscribe/unsubscribe API
- DiscoverView: 浏览公开库 + 订阅/取消订阅
- Route.discoverPublic + ProfileView 入口

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-06 19:36:34 +08:00
wangdl
4ebb70c036 feat: 图标线型化 + 首页重设计 + 知识库卡片优化 + 知识点列表重构
- 所有 SF Symbol .fill 图标替换为线性版本
- 自定义加载动画全部替换为原生 ProgressView/refreshable
- StudyHomeView 重设计:优先级驱动主行动卡片
- ZLibraryCard 重新设计:封面图自适应、信息布局优化
- LibraryDetailPage:顶部KB信息区、···菜单、排序、长按操作
- 知识点列表:文件类型图标、学习时长、分割线样式
- 弥散渐变顶部背景
- 新增 icon-folder、icon-xmark SVG

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30 20:07:15 +08:00
5f1930be40 feat: init AIStudyApp iOS project
- SwiftUI App
- Basic project structure
- Assets configuration
2026-05-04 16:12:51 +08:00