--- updated: 2026-05-17 --- # 知习 iOS 已实现功能汇总 > 从各设计/计划文档中提取的已完成内容,集中存放。原文档中已移除这些内容,仅保留待推进部分。 --- ## 一、项目基础 | 项目 | 状态 | |------|------| | SwiftUI iOS 17+ | ✅ | | 自定义 DesignTokens | ✅ 颜色/渐变/圆角/间距/字体/排版 | | Xcode 项目 | ✅ 使用 PBXFileSystemSynchronizedRootGroup(objectVersion 77) | | 目标平台 | iPhone(iOS 17+) | --- ## 二、架构层 ### 已完成搭建 | 层 | 说明 | |------|------| | Model 层 | 10 个数据实体(AuthModels、User、KnowledgeBase 等) | | Network 层 | APIClient + APIEndpoint + APIError | | Storage 层 | KeychainStore + TokenStore | | Service 层 | 5 个 Service 协议 + 实现 + 20 个 APIEndpoint | | Auth 体系 | AuthService + AuthServiceProtocol | | AppSession | @MainActor 全局登录状态,驱动路由分流 | | ViewModel 层 | 起步:ReviewPlanViewModel、AIChatViewModel、StudyHomeViewModel | | DesignSystem | DesignTokens.swift:颜色/渐变/圆角/间距/字号/排版 | --- ## 三、页面(22 页全部完成 UI) ### Onboarding 流程 | 页面 | 状态 | |------|------| | SplashPage(启动页) | ✅ | | WelcomePage(欢迎页) | ✅ | | LoginPage(登录页,仅 Apple 登录) | ✅ | | OnboardingPage(功能引导) | ✅ | | GoalSetupPage(学习目标设置) | ✅ | ### 主界面 5-Tab | Tab | 页面 | 状态 | |-----|------|------| | AI | AIHomeView | ✅ | | AI | DailyThinkingPage | ✅ | | AI | RecallTestPage | ✅ | | AI | WeakPointsPage | ✅ | | AI | AIFeedbackPageView | ✅ | | AI | AIChatPage | ✅ | | 知识库 | LibraryHomeView | ✅ | | 知识库 | LibraryDetailPage | ✅ | | 知识库 | CreateLibraryPage | ✅ | | 知识库 | AddKnowledgePage | ✅ | | 知识库 | ImportPage | ✅ | | 知识库 | EditKnowledgePage | ✅ | | 知识库 | KnowledgeDetailPage | ✅ | | 学习 | StudyHomeView | ✅ | | 分析 | AnalysisHomeView | ✅ | | 我的 | ProfileView | ✅ | ### 独立功能页 | 页面 | 状态 | |------|------| | ReviewPlanView(复习计划) | ✅ | | FeedbackView + FeedbackViewModel | ✅ | | 设置子页面(5 个) | ✅ | --- ## 四、Auth / 登录 - Sign in with Apple 集成(ASAuthorizationController) - Apple entitlements 已配置 - APIClient 自动注入 Authorization header - 401 自动 refresh token 重试 - Token 存 Keychain(不存 UserDefaults) - AppSession 驱动路由(替代 @AppStorage) - 启动时自动 checkSession → refresh → /users/me --- ## 五、设计系统 ### 颜色 - 28 个颜色 token 双主题化(浅色/深色自适应) - `Color(light:dark:)` 基于 `UITraitCollection.userInterfaceStyle` ### 组件(29 个共享组件) ``` Shared/Components/ ├── ZXTabBar, ZXBackHeader, ZXIconBtn, ZXScoreBox ├── ZXAIInputBar, ZXOutlineBtn, ZXQuickAction ├── ZXAIInteractionRow, ZXCardRow, ZXChip ├── ZXImportOption, ZXWeakRow, ZXStatBadge ├── ZXProfileStat, ZXProfileMenuRow, ZXAchievementBadge ├── ZXChartView, ZXSTaskRow, FeatureRow, ReviewTaskRow ├── ZXLoadingView, ZXErrorView, ZXEmptyView ``` ### 主题切换 - ColorSchemeManager:系统/浅色/深色三选一 - @AppStorage 持久化 - 4 处 `.preferredColorScheme(.dark)` 已移除 - 13 处内联 `Color(hex:)` 替换为自适应 token --- ## 六、代码质量 | 项目 | 说明 | |------|------| | 大文件拆分 | 3 个大文件拆为 15+ 个独立文件 | | 共享组件集中 | `Shared/Components/` 下 20+ 组件 | | 加载/错误/空状态 | ZXLoadingView / ZXErrorView / ZXEmptyView | | 语言系统 | Localizable.strings (Base=中文) + ZXStrings + LanguageManager | | 反馈页 | FeedbackView + FeedbackViewModel,4 类反馈分类 | | 设置页 | 5 个子页面 + 外观/语言切换 | --- ## 七、已对接的后端 API | API | 状态 | |-----|------| | POST /api/auth/apple | ✅ | | POST /api/auth/refresh | ✅ | | POST /api/auth/logout | ✅ | | GET /api/users/me | ✅ | | PATCH /api/users/me | ✅ | --- ## 八、已废弃/清理的内容 - 旧 LoginPage(含手机号/邮箱/微信入口)→ 替换为仅 Apple 登录的 LoginView - `@AppStorage("hasCompletedOnboarding")` 路由控制 → 替换为 AppSession - 3 个大文件中内联的子页面定义 → 拆分为独立文件 - 分散在各 View 中的共享组件定义 → 集中到 `Shared/Components/` - 强制暗黑模式 `.preferredColorScheme(.dark)` → 移除 - 13 处内联 `Color(hex:)` → 替换为 token 引用