updated
知习 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 引用