6.2 KiB
6.2 KiB
知习 ZhiXi — 项目架构
更新时间:2026-05-10
一、项目结构
AIStudyApp/
├── AIStudyAppApp.swift # 应用入口 + 引导流程路由
│ ├── OnboardingFlowView # Splash → Welcome → Login → Onboarding → GoalSetup
│ ├── SplashPage # 启动页
│ ├── WelcomePage # 欢迎页
│ ├── LoginPage # 登录页
│ ├── OnboardingPage # 功能引导
│ └── GoalSetupPage # 学习目标设置
│
├── ContentView.swift # 5-Tab 主界面
│ ├── ZXTabBar # 自定义底部 Tab 栏
│ ├── ZXAIInputBar # AI 输入栏
│ ├── ZXScoreBox # 评分组件
│ └── ZXIconBtn # 图标按钮
│
├── Core/
│ └── DesignSystem/
│ └── DesignTokens.swift # 颜色/渐变/圆角/间距/字号/排版
│
├── Features/
│ ├── AI/
│ │ ├── AIHomeView.swift # AI 首页(Tab 1)
│ │ └── DailyThinkingPage.swift # 今日思考 + AIChat + RecallTest + WeakPoints + AIFeedback
│ │
│ ├── Library/
│ │ ├── LibraryHomeView.swift # 知识库首页(Tab 2)
│ │ └── LibrarySubpages.swift # Create/Detail/Add/Import/KnowledgeDetail/Edit
│ │
│ ├── Study/
│ │ └── StudyHomeView.swift # 学习工作台(Tab 3)
│ │
│ ├── Analysis/
│ │ └── AnalysisHomeView.swift # 学习分析(Tab 4)
│ │
│ └── Profile/
│ └── ProfileView.swift # 我的(Tab 5)
│
└── Assets.xcassets/ # 资源文件
二、导航架构
@main AIStudyAppApp
├── hasCompletedOnboarding == false
│ └── OnboardingFlowView
│ ├── step 0: SplashPage ──(2s)──→ step 1
│ ├── step 1: WelcomePage ──"开始使用"──→ step 2
│ │ ──"已有账号"──→ hasCompletedOnboarding = true
│ ├── step 2: LoginPage ──"登录"──→ step 3
│ │ ──"跳过"──→ hasCompletedOnboarding = true
│ ├── step 3: OnboardingPage ──"下一步"──→ step 4
│ └── step 4: GoalSetupPage ──"开始学习"──→ hasCompletedOnboarding = true
│
└── hasCompletedOnboarding == true
└── ContentView (5-Tab)
├── Tab "AI" → NavigationStack { AIHomeView }
│ ├── → DailyThinkingPage → AIFeedbackPageView
│ ├── → RecallTestPage
│ ├── → WeakPointsPage
│ └── → AIChatPage
│
├── Tab "知识库" → NavigationStack { LibraryHomeView }
│ ├── → LibraryDetailPage → KnowledgeDetailPage
│ ├── → CreateLibraryPage
│ ├── → AddKnowledgePage
│ ├── → ImportPage
│ └── → EditKnowledgePage
│
├── Tab "学习" → NavigationStack { StudyHomeView }
├── Tab "分析" → NavigationStack { AnalysisHomeView }
└── Tab "我的" → NavigationStack { ProfileView }
三、数据流(当前均为静态 Mock)
所有页面目前使用 @State 管理的本地假数据,尚未接入真实后端:
| 数据 | 当前状态 |
|---|---|
| 用户信息 | ProfileView 中硬编码 |
| 知识库列表 | LibraryHomeView 中硬编码 4 个 |
| 学习任务 | StudyHomeView 中硬编码 5 个 |
| AI 分析结果 | 各 AI 页面静态文本 |
| 学习统计 | AnalysisHomeView 中硬编码 |
| 登录状态 | @AppStorage 布尔值控制 |
四、技术栈
| 层 | 技术 | 备注 |
|---|---|---|
| 语言 | Swift | — |
| UI 框架 | SwiftUI | iOS 17+ |
| 架构模式 | 当前未分层(View 内聚) | 计划 MVVM + Service + Repository |
| 设计系统 | 自定义 DesignTokens | 从 React 原型 1:1 提取 |
| 构建工具 | Xcode | — |
| 目标平台 | iPhone (iOS 17+) | 未做 iPad/Mac 适配 |
五、与计划架构的差异
计划文档(官网与技术基础.md)中定义的 iOS 目录结构:
计划架构 当前实现
───────────────────────────────── ─────────────────
App/AIStudyApp.swift AIStudyAppApp.swift ✅
App/AppConfig.swift 未实现 ❌
App/AppRouter.swift 未实现 ❌
Core/Network/ 未实现 ❌
Core/Auth/ 未实现 ❌
Core/Storage/ 未实现 ❌
Core/Localization/ 未实现 ❌
Core/DesignSystem/ DesignTokens.swift ✅ (部分)
Features/*/Views/ Features/*/ ✅
Features/*/ViewModels/ 未实现 ❌ (View 内聚状态)
Features/*/Models/ 未实现 ❌ (无独立 Model)
Shared/Components/ 分散在各 View 文件中 ⚠️
Shared/Extensions/ 仅 Color hex 扩展 ✅
Shared/Utils/ 未实现 ❌
Shared/Constants/ 未实现 ❌
Resources/Localizable.xcstrings 未实现 ❌
Resources/PreviewData/ 未实现 ❌
六、待重构项
- View 文件过大:
AIStudyAppApp.swift包含 5 个独立页面,应拆分到各自文件 - 无 ViewModel 层:所有状态和数据逻辑写在 View 中,需要抽离
- 无 Model 层:数据结构(如学习任务、知识库卡片)分散在 View 中用局部变量定义
- 共享组件未集中:
ZXTabBar、ZXBackHeader等组件散落在不同文件中 - 无网络层:无 API Client、无 Auth Service、无 Storage 层
- 无本地化:所有文案硬编码,未使用
LocalizedStringKey