feat: Phase 1 完成 — 基础设施 + 用户认证 + 管理端 + 端到端验证
Phase 1 (基础设施与用户认证) 全部 11 个 Task 开发完成: 后端 (Go): - Auth 模块: 注册/登录/JWT(有状态)/Profile/密码修改 - Admin 模块: 用户列表/详情/禁用/启用/角色分配/创建用户 - 中间件: JWT认证 + RBAC角色权限 + 请求日志 + CORS + Panic恢复 - Dockerfile 多阶段构建 + Docker Compose 全栈部署 前台 (uni-app): - 登录/注册页面 + 自定义 TabBar + 个人中心 - 请求封装 + 状态管理 (Pinia) 管理端 (Vue 3 + Element Plus): - 登录/仪表盘/用户列表/用户详情 - Axios 封装 + 路由守卫 + Pinia 状态管理 验证: - 全流程 API 端到端测试通过 - Playwright 页面自动化验证通过 - code-reviewer 代码审查通过 Made-with: Cursor
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
|
||||
**架构:** Go 单体模块化服务 + uniapp 前台 + Vue3 管理端 + PostgreSQL + Redis,Docker Compose 编排。
|
||||
|
||||
**技术栈:** Go 1.23+ (Gin + GORM + Wire + zap) / Vue 3.4+ / uniapp 3.0 / Element Plus / PostgreSQL 17 / Redis 7 / Docker Compose
|
||||
**技术栈:** Go 1.23+ (Gin + GORM + Wire + zap) / uniapp 3.0 (Vue 3.4 + Pinia 2.x) / Vue 3.5+ 管理端 (Pinia 3.x + Element Plus) / PostgreSQL 17 / Redis 7 / Docker Compose
|
||||
|
||||
**设计文档:** `docs/plans/2026-02-27-echochat-system-design.md`
|
||||
|
||||
@@ -30,11 +30,52 @@
|
||||
7. **中间件**:说明中间件的作用、执行顺序依赖和副作用
|
||||
|
||||
**前端注释规范(Vue/uniapp):**
|
||||
1. **组件注释**:每个 `.vue` 文件顶部说明组件用途和依赖
|
||||
2. **API 函数**:每个 API 调用函数说明对应后端接口
|
||||
1. **组件注释**:每个 `.vue` 文件顶部 `<!-- -->` 说明组件用途、功能清单、对应 API 和文档引用
|
||||
2. **API 函数**:每个 API 调用函数说明对应后端接口路径和参数
|
||||
3. **Store**:state 字段、action 方法需要注释说明
|
||||
4. **工具函数**:参数和返回值类型、用途说明
|
||||
5. **复杂模板逻辑**:`v-if`/`v-for` 等复杂条件需要注释说明
|
||||
6. **CSS 注释**:`<style>` 顶部声明设计系统来源和色板引用
|
||||
|
||||
### 前端目录结构与编码规范
|
||||
|
||||
**目录结构(uni-app 前台):**
|
||||
|
||||
```
|
||||
frontend/src/
|
||||
├── api/ # API 接口模块,每个后端模块一个文件
|
||||
│ └── auth.js # 对应 /api/v1/auth/*
|
||||
├── pages/ # 页面组件(uni-app 页面路由)
|
||||
│ ├── auth/ # 认证页面(login/register)
|
||||
│ ├── index/ # 启动页(登录状态判断 + 路由重定向)
|
||||
│ ├── chat/ # 消息列表(TabBar 页)
|
||||
│ ├── contact/ # 联系人(TabBar 页)
|
||||
│ ├── meeting/ # 会议(TabBar 页)
|
||||
│ └── profile/ # 个人中心(TabBar 页)
|
||||
├── store/ # Pinia 状态管理
|
||||
│ └── user.js # 用户认证状态
|
||||
├── utils/ # 工具函数
|
||||
│ ├── request.js # HTTP 请求封装(基于 uni.request)
|
||||
│ └── storage.js # 本地存储封装
|
||||
├── services/ # 业务服务(WebSocket 等)
|
||||
│ └── websocket.js # WebSocket 管理(占位)
|
||||
├── static/ # 静态资源(图片、图标)
|
||||
├── main.js # 应用入口(Pinia 初始化)
|
||||
├── App.vue # 根组件
|
||||
├── pages.json # 页面路由 + TabBar 配置
|
||||
└── manifest.json # 应用配置
|
||||
```
|
||||
|
||||
**编码规范:**
|
||||
1. **模块化导入**:使用 `@/` 别名引用 `src/` 下的模块(如 `@/api/auth`、`@/store/user`)
|
||||
2. **命名规范**:文件名使用 kebab-case 或小写,Vue 组件 name 使用 PascalCase
|
||||
3. **导出方式**:统一使用 ES Module(`export` / `export default`)。禁止使用 CommonJS `module.exports`/`require`,Vite 构建环境不兼容 CJS
|
||||
4. **状态管理**:所有全局状态通过 Pinia Store 管理,组件内部状态使用 `data()`
|
||||
5. **API 调用**:页面组件不直接调用 `request.js`,必须通过 `api/` 层或 Store action
|
||||
6. **表单校验**:使用 label + error feedback 模式(禁止 placeholder-only),参照 ui-ux-pro-max UX 规则
|
||||
7. **设计系统**:所有页面 UI 必须基于 `design-system/echochat/MASTER.md` 设计规范实现
|
||||
8. **响应式单位**:使用 `rpx` 替代 `px`(750rpx = 屏幕宽度),确保多端适配
|
||||
9. **npm 配置**:`frontend/.npmrc` 设置 `legacy-peer-deps=true`(uni-app 生态需要)
|
||||
|
||||
### 日志规范
|
||||
|
||||
@@ -633,7 +674,17 @@ git commit -m "feat(auth): 用户注册/登录 API(Controller + 路由注册
|
||||
|
||||
**Step 1: 安装前端依赖**
|
||||
|
||||
Run: `cd frontend && npm install pinia @pinia/persist`
|
||||
> **版本策略:** uni-app 锁定 Vue 3.4.21,Pinia 3.x 需要 Vue >= 3.5.11,因此前台用户端必须使用 Pinia 2.x。后台管理端(Task 9)为独立 Vue 3 项目,不受此限制,可使用 Pinia 3.x。
|
||||
>
|
||||
> **npm 兼容性:** uni-app 的 peer dependency 链与 npm 7+ 的严格解析存在冲突,需在 `frontend/.npmrc` 中设置 `legacy-peer-deps=true`。
|
||||
|
||||
```bash
|
||||
# 创建 .npmrc 固化 npm 解析策略
|
||||
echo "legacy-peer-deps=true" > frontend/.npmrc
|
||||
|
||||
# 安装 Pinia 及持久化插件
|
||||
cd frontend && npm install pinia@2.1.7 pinia-plugin-persistedstate@3
|
||||
```
|
||||
|
||||
uniapp 内置了请求 API(uni.request),不需要额外安装 axios。
|
||||
|
||||
@@ -796,6 +847,8 @@ Run: `cd /path/to/EchoChat && npm create vite@latest admin -- --template vue`
|
||||
|
||||
**Step 2: 安装核心依赖**
|
||||
|
||||
> **版本策略:** 管理端为独立 Vue 3 项目(非 uni-app),可使用最新的 Vue 3.5+ 和 Pinia 3.x,不受 uni-app 版本限制。
|
||||
|
||||
Run: `cd admin && npm install element-plus vue-router@4 pinia axios @element-plus/icons-vue`
|
||||
|
||||
**Step 3: 创建布局框架**
|
||||
|
||||
Reference in New Issue
Block a user