|
|
@@ -0,0 +1,58 @@
|
|
|
+# 移动端前端(老师 / 学生 / 家长)
|
|
|
+
|
|
|
+> 单一 Vue 项目,**按角色分包**:`teacher` / `student` / `parent` 三端共享 `shared/`(身份/登录态、通用组件、接口封装)。本文档描述工程结构约定;接口契约见 `../unified/`、`../academic/05-architecture/`、`../teaching/05-architecture/`。
|
|
|
+
|
|
|
+## 定位
|
|
|
+
|
|
|
+一个移动端仓服务三个角色端:
|
|
|
+
|
|
|
+| 端 | 主要场景 | 主要域 |
|
|
|
+|---|---|---|
|
|
|
+| 老师端 | 打卡、查看/批改练习、备课查看 | 教务(打卡)+ 教学(练习/备课) |
|
|
|
+| 学生端 | 做题、查看练习记录与分析 | 教学 |
|
|
|
+| 家长端 | 绑定孩子、查看孩子练习/费用 | 教务(bindchild 绑定、费用)+ 教学(练习) |
|
|
|
+
|
|
|
+三端**底层用户统一**(canonical_user_id + 7 角色),故共用 `shared/` 的 SSO 接入与登录态,仅按角色分包差异视图。
|
|
|
+
|
|
|
+## 技术栈(与规划对齐)
|
|
|
+
|
|
|
+| 关注点 | 选型 | 依据 |
|
|
|
+|---|---|---|
|
|
|
+| 框架 | Vue 3 + TypeScript + Vite | 与 PC 端同栈,组件/工具可复用 |
|
|
|
+| UI | 移动端 UI 组件库(Vant 系,落地时定) | 移动交互 |
|
|
|
+| 状态 | Pinia | 登录态 / 角色 / institution·campus 作用域 |
|
|
|
+| 接口封装 | 统一 `{code, data, message}` 信封 | 以教学 code 体系为基线(对齐清单 §2) |
|
|
|
+| 鉴权 | SSO(OIDC)token;家长端走微信 per-campus 授权 | 统一 identity 签发;教务微信免登收敛 |
|
|
|
+
|
|
|
+## 目录结构约定
|
|
|
+
|
|
|
+```
|
|
|
+frontend-mobile/
|
|
|
+├── README.md ← 本文件
|
|
|
+└── src/
|
|
|
+ ├── shared/ # 三端共享
|
|
|
+ │ ├── identity/ # SSO 接入:token 存取、刷新/吊销、微信授权(per-campus appid)
|
|
|
+ │ ├── components/ # 通用组件(作用域感知、列表、表单)
|
|
|
+ │ └── api/ # 接口封装:统一信封 + 错误码;按域分子目录
|
|
|
+ ├── teacher/ # 老师端:views/ + 路由
|
|
|
+ ├── student/ # 学生端:views/ + 路由
|
|
|
+ └── parent/ # 家长端:views/ + 路由
|
|
|
+```
|
|
|
+
|
|
|
+## 结构铁律
|
|
|
+
|
|
|
+1. **登录态/SSO 只有一份**,放 `shared/identity`;三端不得各自实现登录(对齐"底层用户统一")。
|
|
|
+2. **家长↔学生绑定以教务侧 `bindchild` 为事实源**(对齐清单 §6):家长端进入时按绑定关系拉取孩子数据。
|
|
|
+3. **三端路由独立**(各自 `views/`),但共用 `shared/components` 与 `shared/api`;角色差异用权限码判断,不写 `role == N` 硬编码。
|
|
|
+4. 接口调用只经 `shared/api/`,三端 `views` 内不散写请求。
|
|
|
+
|
|
|
+## 可复用资产(源自教务 Go 重构实战)
|
|
|
+
|
|
|
+- **三端复用**:与教务重构一致采用"移动教师/移动家长 Vant + 共享 `shared`"模式;`shared/identity`(SSO 接入、token 存取/刷新/吊销)三端共用一份。
|
|
|
+- **locale**:Vant4 默认中文,不动;如混用 Element Plus 组件需命令式+声明式双注入。
|
|
|
+- **响应封装**:统一「HTTP 恒 200 + body `code`」,判成功读 `code===200`、错误文案读 `data.msg`。
|
|
|
+- 建议 pnpm monorepo 与 `../frontend-pc` 共用 `shared`(types/http/色板/列表规范);移植清单见 `../unified/00-planning/experience-impact-analysis.md` §4。
|
|
|
+
|
|
|
+## 与文档目录的关系
|
|
|
+
|
|
|
+- 本目录**只放移动端代码**;家长绑定、费用、练习契约见 `../academic/05-architecture/` 与 `../teaching/05-architecture/`;学生端契约兼容基线见 `../unified/00-planning/cross-system-reconciliation.md` §5。
|