AIStudyApp 现状与缺口分析 - 第一篇:现有资源盘点
生成日期:2026-05-11
后端地址:http://81.70.187.179:3001
一、项目文件结构
AIStudyApp/
├── AIStudyAppApp.swift # 应用入口,含 5 步 Onboarding 流程
├── ContentView.swift # 主 Tab 框架(5 个 Tab + 自定义底部栏)
│
├── Core/
│ ├── DesignSystem/DesignTokens.swift # 颜色/渐变/间距/字体全局设计令牌
│ ├── Models/APIModels.swift # 20+ DTO 数据模型
│ ├── Network/
│ │ ├── APIClient.swift # 通用 HTTP 客户端(actor, async/await)
│ │ ├── APIConfig.swift # baseURL 配置
│ │ └── APIError.swift # 错误枚举(网络/服务端/解码/认证)
│ └── Services/APIService.swift # 8 个服务类,15 个公开方法
│
├── Features/
│ ├── AI/
│ │ ├── AIHomeView.swift # AI 首页 + ZXQuickAction + ZXAIInteractionRow 组件
│ │ └── DailyThinkingPage.swift # 每日思考题 + RecallTestPage / WeakPointsPage /
│ │ # AIFeedbackPageView / AIChatPage 子页面
│ ├── Analysis/
│ │ └── AnalysisHomeView.swift # 学习分析页 + ZXChartView 折线图 + ZXWeakRow 薄弱点
│ ├── Library/
│ │ ├── LibraryHomeView.swift # 知识库列表首页
│ │ └── LibrarySubpages.swift # CreateLibraryPage / LibraryDetailPage /
│ │ # AddKnowledgePage / KnowledgeDetailPage /
│ │ # ImportPage / EditKnowledgePage
│ ├── Profile/
│ │ └── ProfileView.swift # 个人中心页
│ └── Study/
│ └── StudyHomeView.swift # 学习工作台 + 今日任务 + 周活跃柱状图
│
└── Info.plist # 手动管理(ATS例外 / Bundle元数据等)
二、5 个 Tab 页面清单
| Tab |
标签 |
SF Symbol |
View |
| 1 |
AI |
brain.head.profile |
AIHomeView |
| 2 |
知识库 |
books.vertical.fill |
LibraryHomeView |
| 3 |
学习 |
bolt.fill |
StudyHomeView |
| 4 |
分析 |
chart.bar.fill |
AnalysisHomeView |
| 5 |
我的 |
person.fill |
ProfileView |
三、所有页面/子页面总览(共 21 个)
AI 模块(1 主 + 4 子)
| 页面 |
数据来源 |
核心功能 |
| AIHomeView |
🔴硬编码 |
API 状态检测、思考题卡片、快捷操作、互动记录、提问输入栏 |
| DailyThinkingPage |
🔴硬编码 |
AI 思考题展示 + 回答提交 |
| RecallTestPage |
🔴硬编码 |
回忆测试输入 |
| WeakPointsPage |
🔴硬编码 |
薄弱知识点静态列表 |
| AIFeedbackPageView |
🔴硬编码 |
AI 反馈评分 + 操作入口 |
| AIChatPage |
🔴硬编码 |
AI 对话气泡界面 |
知识库模块(1 主 + 6 子)
| 页面 |
数据来源 |
核心功能 |
| LibraryHomeView |
🔴硬编码 |
知识库列表 + 搜索框 + 创建入口 |
| CreateLibraryPage |
🔴静态 |
创建表单(名称+描述) |
| LibraryDetailPage |
🔴硬编码 |
知识点静态列表 |
| AddKnowledgePage |
🔴静态 |
添加知识点表单 |
| KnowledgeDetailPage |
🔴硬编码 |
知识点详情+标签+复习/费曼入口 |
| ImportPage |
🔴静态 |
导入方式选择(拍照/文件/链接/相册) |
| EditKnowledgePage |
🔴静态 |
编辑知识点表单 |
学习模块(1 主)
| 页面 |
数据来源 |
核心功能 |
| StudyHomeView |
🔴硬编码 |
今日进度环、任务列表(5个任务)、本周活跃柱状图 |
分析模块(1 主)
| 页面 |
数据来源 |
核心功能 |
| AnalysisHomeView |
🔴硬编码 |
4项统计徽章、掌握度7日折线图、薄弱知识点列表 |
个人中心(1 主)
| 页面 |
数据来源 |
核心功能 |
| ProfileView |
🔴硬编码 |
个人卡片、菜单列表、成就徽章 |
启动流程(5 步 Onboarding)
| 步骤 |
页面 |
功能 |
| Step 0 |
SplashPage |
品牌开屏,2 秒自动跳转 |
| Step 1 |
WelcomePage |
3 大功能介绍 |
| Step 2 |
LoginPage |
手机号/邮箱 + 密码表单 + 微信/Apple 登录入口 |
| Step 3 |
OnboardingPage |
4 步功能轮播 |
| Step 4 |
GoalSetupPage |
学习目标/方法/每日时长选择 |
四、APIService 已封装方法(15 个)
| 服务类 |
方法 |
接口 |
| WaitlistService |
join(...) |
POST /waitlist |
|
stats() |
GET /waitlist/stats |
| AuthService |
appleLogin(...) |
POST /auth/apple |
|
logout() |
POST /auth/logout |
| UserService |
myProfile() |
GET /users/me |
|
updateProfile(...) |
PATCH /users/me |
| KnowledgeBaseService |
list() |
GET /knowledge-bases |
|
create(...) |
POST /knowledge-bases |
|
detail(id:) |
GET /knowledge-bases/:id |
| KnowledgeItemService |
list(baseId:) |
GET /knowledge-items |
|
detail(id:) |
GET /knowledge-items/:id |
|
create(...) |
POST /knowledge-items |
| AIAnalysisService |
analyze(...) |
POST /ai-analysis |
| ActivityService |
summary() |
GET /activity/summary |
| ReviewService |
due() |
GET /reviews/due |
| FocusItemService |
list() |
GET /focus-items |
| FeedbackService |
submit(...) |
POST /feedback |
五、后端接口 vs App 覆盖对照表
| 后端模块 |
接口数 |
App 覆盖 |
状态 |
| System |
3 |
0 |
❌ 无 |
| Auth |
3 |
2(Service 有,View 未接) |
🔶 |
| Users |
3 |
2(Service 有,View 未接) |
🔶 |
| KnowledgeBase |
5 |
3(Service 有,View 未接) |
🔶 |
| KnowledgeItems |
4 |
3(Service 有,View 未接) |
🔶 |
| DocumentImport |
2 |
0 |
❌ 无 |
| LearningSession |
3 |
0 |
❌ 无 |
| ActiveRecall |
2 |
0 |
❌ 无 |
| AIAnalysis |
3 |
1(Service 有,View 未接) |
🔶 |
| FocusItems |
4 |
1(Service 有,View 未接) |
🔶 |
| Review |
2 |
1(Service 有,View 未接) |
🔶 |
| LearningActivity |
2 |
1(Service 有,View 未接) |
🔶 |
| Notifications |
2 |
0 |
❌ 无 |
| Feedback |
4 |
1(Service 有,View 未接) |
🔶 |
| Waitlist |
3 |
2(Service 有,View 未接) |
🔶 |
覆盖率:Service 层 15/48 = 31%,View 层实际接入 0/48 = 0%