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:
bujinyuan
2026-03-02 11:31:24 +08:00
parent e9bd4dd204
commit 4d03215fe4
63 changed files with 15908 additions and 102 deletions

View File

@@ -6,7 +6,7 @@
**架构:** Go 单体模块化服务 + uniapp 前台 + Vue3 管理端 + PostgreSQL + RedisDocker 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): 用户注册/登录 APIController + 路由注册
**Step 1: 安装前端依赖**
Run: `cd frontend && npm install pinia @pinia/persist`
> **版本策略:** uni-app 锁定 Vue 3.4.21Pinia 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 内置了请求 APIuni.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: 创建布局框架**