150 lines
4.5 KiB
Markdown
150 lines
4.5 KiB
Markdown
|
|
---
|
|||
|
|
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 引用
|