startup-plan/技术设计/ios-projects/[进行中]-架构设计.md
2026-05-15 17:29:57 +08:00

6.2 KiB
Raw Blame History

知习 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/                     未实现 ❌

六、待重构项

  1. View 文件过大AIStudyAppApp.swift 包含 5 个独立页面,应拆分到各自文件
  2. 无 ViewModel 层:所有状态和数据逻辑写在 View 中,需要抽离
  3. 无 Model 层:数据结构(如学习任务、知识库卡片)分散在 View 中用局部变量定义
  4. 共享组件未集中ZXTabBarZXBackHeader 等组件散落在不同文件中
  5. 无网络层:无 API Client、无 Auth Service、无 Storage 层
  6. 无本地化:所有文案硬编码,未使用 LocalizedStringKey