151 lines
8.1 KiB
Markdown
Raw Permalink Normal View History

# 知习 ZhiXi — iOS App
AI-first 系统化学习 AppSwiftUI + 深色主题。
## 导航关系
```
Splash2s 自动跳转)
Welcome欢迎页→ 已有账号 → Login
↓ 开始使用
Login手机号/邮箱登录)
↓ 登录成功
Onboarding4 步引导:输入知识 / 主动输出 / AI 分析 / 掌握知识)
↓ 下一步
GoalSetup学习目标 / 方法 / 时间)
↓ 开始学习
┌──────────────────────────────────────────────────────┐
│ 5-Tab 主界面 │
│ │
│ [AI] [知识库] [学习] [分析] [我的] │
│ │ │ │ │ │ │
│ ├─ 开始回答 ├─ 卡片点击 ├─ 任务点击 │ │ │
│ │ → Daily │ → Detail │ → Recall │ │ │
│ │ Thinking │ │ / Feedbk │ │ │
│ │ ├─ 创建 │ │ │ │
│ ├─ 快捷操作 │ → Create │ │ │ │
│ │ → Recall │ │ │ │ │
│ │ / Weak │ ┌ 知识点 │ │ │ │
│ │ │ ├ Detail │ │ │ │
│ └─ 互动列表 │ │ → KnwlD │ │ │ │
│ → AIChat │ ├ Add │ │ │ │
│ │ ├ Import │ │ │ │
│ │ └ Edit │ │ │ │
└──────────────────────────────────────────────────────┘
```
## 页面清单(对照 React 原型 22 页)
| # | 页面 | 文件 | 状态 |
|---|------|------|------|
| 1 | Splash 启动页 | `AIStudyAppApp.swift``SplashPage` | ✅ |
| 2 | Welcome 欢迎页 | `AIStudyAppApp.swift``WelcomePage` | ✅ |
| 3 | Login 登录页 | `AIStudyAppApp.swift``LoginPage` | ✅ |
| 4 | Onboarding 引导页 | `AIStudyAppApp.swift``OnboardingPage` | ✅ |
| 5 | GoalSetup 目标设置 | `AIStudyAppApp.swift``GoalSetupPage` | ✅ |
| 6 | AIHome AI 首页 | `Features/AI/AIHomeView.swift` | ✅ |
| 7 | LibraryHome 知识库首页 | `Features/Library/LibraryHomeView.swift` | ✅ |
| 8 | StudyHome 学习工作台 | `Features/Study/StudyHomeView.swift` | ✅ |
| 9 | AnalysisHome 学习分析 | `Features/Analysis/AnalysisHomeView.swift` | ✅ |
| 10 | Profile 我的 | `Features/Profile/ProfileView.swift` | ✅ |
| 11 | AIChat AI 对话 | `Features/AI/AIChatPage.swift` | ✅ |
| 12 | DailyThinking 今日思考 | `Features/AI/DailyThinkingPage.swift` | ✅ |
| 13 | RecallTest 回忆测试 | `Features/AI/RecallTestPage.swift` | ✅ |
| 14 | WeakPoints 薄弱点分析 | `Features/AI/WeakPointsPage.swift` | ✅ |
| 15 | AIFeedback AI 反馈 | `Features/AI/AIFeedbackPageView.swift` | ✅ |
| 16 | Settings 设置 | `Features/Profile/SettingsView.swift` | ✅ |
| 17 | GoalSetting 学习目标 | `Features/Profile/GoalSettingDetailView.swift` | ✅ |
| 18 | MethodPreference 方法偏好 | `Features/Profile/MethodPreferenceView.swift` | ✅ |
| 19 | FeedbackForm 帮助反馈 | `Features/Profile/FeedbackFormView.swift` | ✅ |
| 20 | EditProfile 编辑资料 | `Features/Profile/ProfileView.swift``EditProfilePage` | ✅ |
| 21 | NotificationList 通知 | `Features/Profile/ProfileView.swift``NotificationListView` | ✅ |
| 22 | LibrarySearch 搜索知识库 | `Features/Library/LibraryHomeView.swift` | ✅ |
| 23 | LibraryDetail 知识库详情 | `Features/Library/LibrarySubpages.swift` | ✅ |
| 24 | AddKnowledge 添加知识点 | `Features/Library/LibrarySubpages.swift` | ✅ |
| 25 | KnowledgeDetail 知识点详情 | `Features/Library/LibrarySubpages.swift` | ✅ |
| 26 | EditKnowledge 编辑知识点 | `Features/Library/LibrarySubpages.swift` | ✅ |
| 27 | CreateLibrary 创建知识库 | `Features/Library/LibrarySubpages.swift` | ✅ |
| 28 | Import 导入资料 | `Features/Library/LibrarySubpages.swift` | ✅ |
| 29 | ActiveRecall 回忆测试 | `Features/Study/StudyHomeView.swift``ActiveRecallView` | ✅ |
| 30 | ReviewCard 间隔复习 | `Features/Study/ReviewCardView.swift` | ✅ |
| 31 | LearningSession 学习会话 | `Features/Study/LearningSessionView.swift` | ✅ |
## 项目结构
```
AIStudyApp/
├── AIStudyAppApp.swift # 根路由 + Splash/Welcome/Login/Onboarding/GoalSetup
├── ContentView.swift # 5-Tab 主界面 + ZXTabBar + ZXIconBtn + ZXScoreBox + ZXAIInputBar
├── Core/
│ ├── DesignSystem/
│ │ ├── DesignTokens.swift # 颜色 / 渐变 / 圆角 / 间距 / 字号 / zxFontScaled
│ │ └── ZXAnimations.swift # ZXPressModifier / ZXPullToRefresh / ZXLoadingView
│ ├── Models/
│ │ └── APIModels.swift # KnowledgeItem 等数据模型
│ └── Navigation/
│ └── Route.swift # 统一路由枚举 + navigationDestination 映射
└── Features/
├── AI/
│ ├── AIHomeView.swift # AI 首页
│ ├── DailyThinkingPage.swift # 今日思考
│ ├── AIChatPage.swift # AI 对话
│ ├── RecallTestPage.swift # 回忆测试
│ ├── WeakPointsPage.swift # 薄弱点分析
│ └── AIFeedbackPageView.swift # AI 反馈
├── Library/
│ ├── LibraryHomeView.swift # 知识库首页 + 搜索
│ └── LibrarySubpages.swift # 创建/详情/添加/导入/知识点详情/编辑
├── Study/
│ ├── StudyHomeView.swift # 学习工作台
│ ├── ReviewCardView.swift # 间隔复习卡片
│ └── LearningSessionView.swift # 学习会话
├── Analysis/
│ └── AnalysisHomeView.swift # 学习分析
└── Profile/
├── ProfileView.swift # 我的页 + EditProfilePage + NotificationListView
├── SettingsView.swift # 设置
├── GoalSettingDetailView.swift # 学习目标设置
├── MethodPreferenceView.swift # 学习方法偏好
└── FeedbackFormView.swift # 帮助与反馈
```
## 设计系统
| 类别 | Token | 值 |
|------|-------|-----|
| 主背景 | `Color.zxBg0` | `#0F0F1A` |
| 页面渐变 | `ZXGradient.page` | `#0F0F1A → #12122A` |
| 品牌紫 | `Color.zxPurple` | `#7C6EFA` |
| 品牌橙 | `Color.zxOrange` | `#F97316` |
| 文字主色 | `Color.zxF0` | `#F0F0FF` |
| 卡片圆角 | `ZXRadius.xl3` | `20` |
| 按钮高度 | `ZXSize.buttonH` | `42` |
| 页面水平间距 | `ZXSpacing.pageHPadding` | `20` |
| 状态栏高度 | `ZXSpacing.statusBarH` | `44` |
| TabBar 高度 | `ZXSpacing.tabBarH` | `83` |
以上全部从 React 原型 1:1 像素级提取。
## 运行
Xcode 打开 `AIStudyApp.xcodeproj`,选择 iPhone 17 Pro 模拟器,`Cmd+R`
```
Clean Build 之前先:
rm -rf ~/Library/Developer/Xcode/DerivedData/AIStudyApp-*
```
## 最近修复记录
### 2026-05-19 — NavigationStack 迁移 + Dynamic Type
- **路由系统重构**:全部 `NavigationLink(destination:)``NavigationLink(value: Route)`,新增 `Core/Navigation/Route.swift` 统一路由枚举
- **Dynamic Type 支持**:新增 `zxFontScaled` ViewModifier基于 `@ScaledMetric`
- **手势冲突修复**`ZXPressModifier``DragGesture` 改为 `onLongPressGesture(minimumDuration: .infinity)` 解决与 ScrollView 冲突
- **触控目标放大**`ZXIconBtn` 36pt → 44pt
- **大文件拆分**:从 `DailyThinkingPage.swift` 拆出 4 个子页面,从 `SettingsView.swift` 拆出 3 个子页面
- **TabBar 胶囊指示器**:选中 Tab 上方紫色 Capsule 替代旧圆形指示器
- **ZXSTask 颜色模型**`Color` → hex `String`,支持 Hashable 路由参数
- **ZXAIInputBar 重构**提取为共享组件padding 由调用方控制