# 盘古用户平台 - 多Agent协同开发指南
---
## 重要:协同开发规则
### 1. 开发服务器管理
```
⚠️ 关键规则:
- 只有 Agent-1 负责启动 npm run dev(端口3000)
- Agent-2 ~ Agent-7 只创建/修改文件,绝不启动dev server
- 所有Agent共享同一个项目目录,自动热更新
```
### 2. 文件边界划分
每个Agent只能操作自己负责的文件,避免冲突:
| Agent | 可操作的文件 |
|-------|------------|
| Agent-1 | src/layout/*, src/mock/index.js, src/mock/user.js, src/utils/*, src/views/dashboard/*, src/main.js, src/router/index.js, src/App.vue |
| Agent-2 | src/views/login/* |
| Agent-3 | src/views/school/*, src/api/school.js, src/mock/school.js |
| Agent-4 | src/views/member/*, src/api/member.js, src/mock/member.js |
| Agent-5 | src/views/student/*, src/api/student.js, src/mock/student.js |
| Agent-6 | src/views/application/*, src/api/application.js, src/mock/application.js |
| Agent-7 | src/views/base/*, src/api/grade.js, src/api/class.js, src/api/subject.js, src/api/region.js, src/mock/grade.js, src/mock/class.js, src/mock/subject.js, src/mock/region.js |
### 3. 共享文件更新规则
`src/mock/index.js` 需要汇总所有mock文件:
- Agent-1 创建基础结构,只import user.js
- Agent-3~7 完成后,各自在末尾追加自己的import
```javascript
// Agent-1 创建的基础内容
import './user'
// Agent-3 追加
import './school'
// Agent-4 追加
import './member'
// ... 以此类推
```
### 4. 验证方式
- Agent-1 完成后启动 `npm run dev`,保持运行
- Agent-2~7 完成后,刷新浏览器即可看到新页面(Vite热更新)
- 无需重启服务器
---
## 项目概述
使用多个AI Agent并行开发前端页面,每个Agent负责一个独立模块。
**技术栈**:Vue 3 + Vite + Element Plus + Pinia + Vue Router + MockJS
**项目路径**:`/Users/felix/pgWorkSpace/pangu-user-platform/frontend`
**原型地址**:https://modao.cc/proto/atlwMul8t9pi6yxQ42W7up/sharing
**作者**:pangu
---
## Agent分工
| Agent | 负责模块 | 启动Server | 文件范围 |
|-------|---------|:----------:|---------|
| Agent-1 | 核心基础设施 | ✅ 是 | layout, utils, mock入口, dashboard |
| Agent-2 | 登录页面 | ❌ 否 | views/login |
| Agent-3 | 学校管理 | ❌ 否 | views/school, api/school, mock/school |
| Agent-4 | 会员管理 | ❌ 否 | views/member, api/member, mock/member |
| Agent-5 | 学生管理 | ❌ 否 | views/student, api/student, mock/student |
| Agent-6 | 应用管理 | ❌ 否 | views/application, api/application, mock/application |
| Agent-7 | 基础数据 | ❌ 否 | views/base/*, api/grade等, mock/grade等 |
**执行顺序**:
1. 先完成 Agent-1(启动dev server,保持运行)
2. Agent-2~7 并行开发(只创建文件,不启动server)
3. 每个Agent完成后刷新浏览器验证
---
## 前端编码规范(所有Agent必须遵守)
### 1. 表格规范
```vue
编辑
删除
```
### 2. 列宽分配原则
| 字段类型 | 推荐宽度 | 说明 |
|---------|---------|------|
| ID/编号 | 80-100px | 固定宽度 |
| 名称/标题 | min-width: 120-200px | 弹性宽度,使用min-width |
| 状态/类型 | 80-100px | 固定宽度,居中 |
| 日期时间 | 160-180px | 固定宽度 |
| 手机号 | 120px | 固定宽度 |
| 操作列 | 根据按钮数量,120-200px | 固定右侧 |
### 3. 长文本处理
```vue
{{ row.phone ? row.phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2') : '-' }}
```
### 4. 表格响应式
```vue
```
### 5. 搜索表单规范
```vue
查询
重置
新增
```
### 6. 分页规范
```vue
```
### 7. 弹窗规范
```vue
取消
确定
```
### 8. 状态Tag颜色规范
```vue
{{ row.status === '0' ? '正常' : '停用' }}
{{ row.identityType === '1' ? '家长' : '教师' }}
{{ { '0': '未知', '1': '男', '2': '女' }[row.gender] }}
```
### 9. 空数据处理
```vue
{{ row.remark || '-' }}
```
### 10. 删除确认规范
```javascript
// 使用 ElMessageBox 确认删除
const handleDelete = (row) => {
ElMessageBox.confirm(`确定要删除"${row.name}"吗?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
// 调用删除API
deleteApi(row.id).then(() => {
ElMessage.success('删除成功')
handleQuery()
})
}).catch(() => {})
}
```
### 11. 页面布局规范
```vue
...
新增
...
...
```
---
## 共享约定
### 1. 目录结构
```
src/
├── api/ # API接口定义
├── assets/styles/ # 全局样式
├── components/ # 公共组件
├── layout/ # 布局组件
├── mock/ # Mock数据
│ ├── index.js # Mock入口(汇总所有mock)
│ ├── user.js
│ ├── school.js
│ └── ...
├── router/ # 路由配置
├── store/ # Pinia Store
├── utils/ # 工具函数
└── views/ # 页面视图
```
### 2. API响应格式
```javascript
// 成功响应
{ code: 200, msg: '操作成功', data: { ... } }
// 分页响应
{ code: 200, msg: '查询成功', total: 100, rows: [ ... ] }
// 错误响应
{ code: 500, msg: '操作失败' }
```
### 3. Mock数据规范
```javascript
// mock/xxx.js 格式
import Mock from 'mockjs'
// GET请求用RegExp匹配URL
Mock.mock(/\/api\/xxx\/list/, 'get', (options) => {
return { code: 200, total: 100, rows: [...] }
})
// POST/PUT/DELETE用字符串匹配
Mock.mock('/api/xxx', 'post', { code: 200, msg: '新增成功' })
```
---
## Agent-1:核心基础设施
```
你是一个Vue 3前端开发专家。请为"盘古用户平台"创建核心基础设施。
## 项目信息
- 项目路径:/Users/felix/pgWorkSpace/pangu-user-platform/frontend
- 技术栈:Vue 3 + Vite + Element Plus + Pinia + Vue Router + MockJS
- 作者:pangu
## 重要:你是唯一需要启动dev server的Agent
完成开发后,执行 npm run dev 启动服务器(端口3000),并保持运行。
其他Agent会在你之后并行开发,共享同一个项目。
## 编码规范
请严格遵守本文档"前端编码规范"章节的所有规范。
## 你的任务
### 1. 创建布局组件 src/layout/index.vue
- 左侧边栏(可折叠,展开200px,折叠64px)
- 顶部导航栏(显示用户信息、退出按钮)
- 右侧主内容区()
### 2. 创建 src/layout/components/Sidebar.vue
菜单项:
- 首页 (icon: HomeFilled)
- 学校管理 (icon: School)
- 会员管理 (icon: User)
- 学生管理 (icon: UserFilled)
- 应用管理 (icon: Grid)
- 基础数据 (icon: Setting, 有子菜单)
- 年级管理
- 班级管理
- 学科管理
- 区域管理
### 3. 创建 src/layout/components/Navbar.vue
- 折叠按钮
- 面包屑导航
- 右侧:用户头像、昵称、下拉菜单(退出登录)
### 4. 创建Mock入口 src/mock/index.js
```javascript
import './user'
// 其他Agent会在此添加import
```
### 5. 创建用户Mock src/mock/user.js
- POST /api/login - 登录(返回token)
- GET /api/getInfo - 获取用户信息(返回用户名、头像、权限)
- POST /api/logout - 退出
### 6. 创建工具函数 src/utils/request.js
- 基于axios封装
- 请求拦截器:添加Authorization头
- 响应拦截器:处理code!=200的情况,弹出错误提示
### 7. 创建首页 src/views/dashboard/index.vue
- 欢迎信息卡片
- 统计卡片(学校数、会员数、学生数、应用数)使用Mock数据
### 8. 确保 src/main.js 正确引入所有依赖
### 9. 确保 src/router/index.js 路由配置正确
## 设计参考
- 主题色:#409EFF
- 侧边栏背景:#304156
- 布局参考RuoYi-Vue
## 完成后
1. 运行 npm run dev 启动开发服务器
2. 确认 http://localhost:3000 可以正常访问
3. 保持服务器运行,其他Agent会继续开发
```
---
## Agent-2:登录页面
```
你是一个Vue 3前端开发专家。请为"盘古用户平台"创建登录页面。
## 项目信息
- 项目路径:/Users/felix/pgWorkSpace/pangu-user-platform/frontend
- 技术栈:Vue 3 + Element Plus
- 作者:pangu
## ⚠️ 重要:不要启动dev server
Agent-1已经启动了开发服务器(端口3000),你只需创建文件。
完成后刷新浏览器即可看到效果(Vite热更新)。
## 你只能操作这些文件
- src/views/login/index.vue(新建)
- src/views/login/其他组件(如需要)
## 编码规范
请严格遵守本文档"前端编码规范"章节的所有规范。
## 你的任务
### 1. 创建登录页面 src/views/login/index.vue
页面设计:
- 居中登录卡片(宽度400px,圆角8px,阴影)
- 背景:渐变色 linear-gradient(135deg, #667eea 0%, #764ba2 100%)
- 标题:盘古用户平台
- 副标题:统一用户管理系统
表单字段:
- 用户名(el-input,前缀图标User,placeholder="请输入用户名")
- 密码(el-input type="password",前缀图标Lock,show-password)
- 验证码(el-input + 右侧验证码图片,点击刷新)
- 记住密码(el-checkbox)
- 登录按钮(el-button type="primary" 全宽,高度40px)
功能:
- 表单验证(用户名、密码、验证码必填)
- 点击验证码图片刷新
- 登录成功存储token,跳转首页
- 登录失败显示错误提示
### 2. 验证码Mock(在 src/mock/user.js 中添加)
- GET /api/captchaImage - 返回 { code: 200, img: 'base64图片', uuid: 'xxx' }
- 可以用Mock生成简单的文字验证码
### 3. 样式要求
- 登录卡片居中显示
- 响应式适配移动端
## Mock数据说明
调用接口:
- GET /api/captchaImage
- POST /api/login { username, password, code, uuid }
## 完成后
确保登录页面可以正常显示,输入admin/admin123可以登录成功
```
---
## Agent-3:学校管理
```
你是一个Vue 3前端开发专家。请为"盘古用户平台"创建学校管理模块。
## 项目信息
- 项目路径:/Users/felix/pgWorkSpace/pangu-user-platform/frontend
- 技术栈:Vue 3 + Element Plus
- 作者:pangu
- 原型参考:https://modao.cc/proto/atlwMul8t9pi6yxQ42W7up/sharing
## ⚠️ 重要:不要启动dev server
Agent-1已经启动了开发服务器(端口3000),你只需创建文件。
完成后刷新浏览器即可看到效果(Vite热更新)。
## 你只能操作这些文件
- src/views/school/*(新建)
- src/api/school.js(新建)
- src/mock/school.js(新建)
- src/mock/index.js(追加import './school')
## 编码规范
请严格遵守本文档"前端编码规范"章节的所有规范,特别是:
- 表格列必须指定宽度,避免右侧空白
- 使用min-width让名称列自适应
- 操作列fixed="right"
- 长文本使用show-overflow-tooltip
## 你的任务
### 1. 创建页面 src/views/school/index.vue
布局(左右分栏,使用el-row el-col):
- 左侧(span=6,约250px):区域树
- 右侧(span=18):学校列表
左侧区域树:
- 使用 el-tree,带搜索过滤
- 数据:湖北省 > 武汉市 > 武昌区/汉口区/汉阳区...
- 点击节点筛选右侧表格
右侧列表:
- 搜索条件:学校名称(input)、状态(select)
- 表格字段(指定列宽):
- 名称 min-width="150" show-overflow-tooltip
- 类型 width="100"
- 所属区域 min-width="180" show-overflow-tooltip
- 状态 width="80" align="center"
- 创建时间 width="160"
- 创建人 width="100"
- 操作 width="200" fixed="right"
- 操作按钮:编辑、删除、新增年级、新增班级
- 分页
### 2. 创建弹窗 src/views/school/components/SchoolDialog.vue
- 新增/编辑学校
- 字段:学校名称(必填)、学校类型(下拉)、所属区域(级联)、状态(开关)
### 3. 创建弹窗 src/views/school/components/GradeDialog.vue
- 为学校新增年级
- 字段:年级选择(多选checkbox)
### 4. 创建弹窗 src/views/school/components/ClassDialog.vue
- 为年级新增班级
- 字段:班级选择(多选checkbox)
### 5. 创建API src/api/school.js
### 6. 创建Mock src/mock/school.js
区域树Mock数据:
```javascript
const regionTree = [
{
regionId: 1, regionName: '湖北', children: [
{ regionId: 11, regionName: '武汉', children: [
{ regionId: 111, regionName: '武昌区' },
{ regionId: 112, regionName: '汉口区' },
{ regionId: 113, regionName: '汉阳区' },
{ regionId: 114, regionName: '江夏区' }
]},
{ regionId: 12, regionName: '黄冈', children: [
{ regionId: 121, regionName: '黄州区' },
{ regionId: 122, regionName: '红安县' }
]}
]
}
]
```
### 7. 在 src/mock/index.js 中添加 import './school'
## 完成后
确保页面可以正常展示,左侧树点击可筛选,CRUD功能正常
```
---
## Agent-4:会员管理
```
你是一个Vue 3前端开发专家。请为"盘古用户平台"创建会员管理模块。
## 项目信息
- 项目路径:/Users/felix/pgWorkSpace/pangu-user-platform/frontend
- 技术栈:Vue 3 + Element Plus
- 作者:pangu
## ⚠️ 重要:不要启动dev server
Agent-1已经启动了开发服务器(端口3000),你只需创建文件。
完成后刷新浏览器即可看到效果(Vite热更新)。
## 你只能操作这些文件
- src/views/member/*(新建)
- src/api/member.js(新建)
- src/mock/member.js(新建)
- src/mock/index.js(追加import './member')
## 编码规范
请严格遵守本文档"前端编码规范"章节的所有规范,特别是:
- 表格列必须指定宽度
- 手机号脱敏显示 138****5678
- 状态使用Tag组件
## 你的任务
### 1. 创建页面 src/views/member/index.vue
搜索条件:
- 手机号(input, width=150px)
- 昵称(input, width=150px)
- 身份类型(select: 全部/家长/教师, width=120px)
- 状态(select: 全部/正常/停用, width=100px)
- 注册时间(date-picker范围, width=240px)
表格字段(列宽):
- 会员编号 width="140"
- 手机号 width="120" (脱敏显示)
- 昵称 min-width="100"
- 性别 width="60" align="center"
- 出生日期 width="100"
- 身份类型 width="80" align="center" (Tag)
- 注册时间 width="160"
- 注册来源 width="80"
- 状态 width="70" align="center" (Tag)
- 操作 width="180" fixed="right"
操作按钮:编辑、重置密码、删除
### 2. 创建弹窗 src/views/member/components/MemberDialog.vue
字段:
- 手机号(必填)
- 昵称
- 性别(radio:男/女/未知)
- 出生日期(date-picker)
- 身份类型(radio:家长/教师)
- 当身份=教师时显示:区域、学校、年级、班级(级联)
- 状态(switch)
学生绑定区域(表格):
- 显示已绑定学生
- 添加/移除按钮
### 3. 创建弹窗 src/views/member/components/ResetPwdDialog.vue
- 显示新密码
- 复制按钮
### 4. 创建API src/api/member.js
### 5. 创建Mock src/mock/member.js
### 6. 在 src/mock/index.js 中添加 import './member'
## 完成后
确保页面可以正常展示和交互
```
---
## Agent-5:学生管理
```
你是一个Vue 3前端开发专家。请为"盘古用户平台"创建学生管理模块。
## 项目信息
- 项目路径:/Users/felix/pgWorkSpace/pangu-user-platform/frontend
- 技术栈:Vue 3 + Element Plus
- 作者:pangu
## ⚠️ 重要:不要启动dev server
Agent-1已经启动了开发服务器(端口3000),你只需创建文件。
完成后刷新浏览器即可看到效果(Vite热更新)。
## 你只能操作这些文件
- src/views/student/*(新建)
- src/api/student.js(新建)
- src/mock/student.js(新建)
- src/mock/index.js(追加import './student')
## 编码规范
请严格遵守本文档"前端编码规范"章节的所有规范。
## 你的任务
### 1. 创建页面 src/views/student/index.vue
布局(左右分栏):
- 左侧(span=6):学校树(学校>年级>班级,使用el-tree)
- 右侧(span=18):学生列表
搜索条件:姓名、学号、性别、用户手机号、学科
表格字段(列宽):
- 姓名 min-width="80"
- 学号 width="100"
- 性别 width="60" align="center"
- 出生年月 width="100"
- 地区 min-width="150" show-overflow-tooltip
- 学校 min-width="140" show-overflow-tooltip
- 年级 width="80"
- 班级 width="60"
- 学科 width="60"
- 用户昵称 width="100"
- 用户手机号 width="120"(脱敏)
- 操作 width="120" fixed="right"
功能按钮:新增学生、批量导入
### 2. 创建弹窗 src/views/student/components/StudentDialog.vue
字段:姓名(必填)、学号、性别、出生日期、学校信息(级联,必填)、学科、归属用户
### 3. 创建弹窗 src/views/student/components/ImportDialog.vue
- 下载模板按钮
- 上传Excel(el-upload)
- 导入结果展示
### 4. 创建API src/api/student.js
### 5. 创建Mock src/mock/student.js
### 6. 在 src/mock/index.js 中添加 import './student'
## 完成后
确保页面可以正常展示和交互
```
---
## Agent-6:应用管理
```
你是一个Vue 3前端开发专家。请为"盘古用户平台"创建应用管理模块。
## 项目信息
- 项目路径:/Users/felix/pgWorkSpace/pangu-user-platform/frontend
- 技术栈:Vue 3 + Element Plus
- 作者:pangu
## ⚠️ 重要:不要启动dev server
Agent-1已经启动了开发服务器(端口3000),你只需创建文件。
完成后刷新浏览器即可看到效果(Vite热更新)。
## 你只能操作这些文件
- src/views/application/*(新建)
- src/api/application.js(新建)
- src/mock/application.js(新建)
- src/mock/index.js(追加import './application')
## 编码规范
请严格遵守本文档"前端编码规范"章节的所有规范。
## 你的任务
### 1. 创建页面 src/views/application/index.vue
搜索条件:应用名称、应用编码、状态
表格字段(列宽):
- 应用名称 min-width="150"
- 应用编码 width="120"
- 授权接口 min-width="250"(多个用Tag展示,show-overflow-tooltip)
- 状态 width="80" align="center"
- 创建时间 width="160"
- 创建人 width="100"
- 操作 width="180" fixed="right"
操作按钮:编辑、重置密钥、删除
### 2. 创建弹窗 src/views/application/components/AppDialog.vue
字段:
- 应用名称(必填)
- 应用编码(自动生成,disabled)
- 应用描述
- 联系人、联系电话
- 状态
- 接口授权(checkbox-group):
- 查询学生信息
- 查询学校信息
- 查询年级信息
- 查询班级信息
- 查询会员信息
- 查询区域树
### 3. 创建弹窗 src/views/application/components/SecretDialog.vue
- 显示密钥(只读input)
- 复制按钮
### 4. 创建API src/api/application.js
### 5. 创建Mock src/mock/application.js
### 6. 在 src/mock/index.js 中添加 import './application'
## 完成后
确保页面可以正常展示和交互
```
---
## Agent-7:基础数据
```
你是一个Vue 3前端开发专家。请为"盘古用户平台"创建基础数据管理模块(年级/班级/学科/区域)。
## 项目信息
- 项目路径:/Users/felix/pgWorkSpace/pangu-user-platform/frontend
- 技术栈:Vue 3 + Element Plus
- 作者:pangu
## ⚠️ 重要:不要启动dev server
Agent-1已经启动了开发服务器(端口3000),你只需创建文件。
完成后刷新浏览器即可看到效果(Vite热更新)。
## 你只能操作这些文件
- src/views/base/*(新建)
- src/api/grade.js, class.js, subject.js, region.js(新建)
- src/mock/grade.js, class.js, subject.js, region.js(新建)
- src/mock/index.js(追加import)
## 编码规范
请严格遵守本文档"前端编码规范"章节的所有规范。
## 你的任务
这4个页面结构相似,可以复用代码模式。
### 1. 年级管理 src/views/base/grade/index.vue
搜索:年级名称、状态
表格字段(列宽):
- 年级名称 min-width="150"
- 年级编码 width="120"
- 排序 width="80" align="center"
- 状态 width="80" align="center"
- 创建时间 width="160"
- 操作 width="150" fixed="right"
弹窗字段:年级名称(必填)、年级编码(自动生成)、排序、状态
### 2. 班级管理 src/views/base/class/index.vue
(结构同年级管理)
### 3. 学科管理 src/views/base/subject/index.vue
(结构同年级管理)
### 4. 区域管理 src/views/base/region/index.vue
特殊布局:
- 使用树形表格(el-table + row-key + tree-props)
- 展示省-市-区结构
- 操作:新增子区域、编辑、删除
### 5. 创建API
- src/api/grade.js
- src/api/class.js
- src/api/subject.js
- src/api/region.js
### 6. 创建Mock(预置数据)
- src/mock/grade.js:一年级~六年级、七年级~九年级、高一~高三
- src/mock/class.js:1班~10班
- src/mock/subject.js:语文、数学、英语、物理、化学、生物、历史、地理、政治
- src/mock/region.js:复用school.js的区域数据
### 7. 在 src/mock/index.js 中添加所有import
## 完成后
确保4个页面都可以正常展示和交互
```
---
## 执行指南
### 第一步:启动Agent-1(必须先完成)
1. 开启新会话,复制本文档
2. 告诉Cursor:`请完成Agent-1的任务`
3. Agent-1会创建文件并启动 `npm run dev`(端口3000)
4. **保持这个会话和服务器运行**
### 第二步:并行启动Agent-2~7
1. 开启6个新会话
2. 每个会话复制本文档
3. 分别告诉Cursor:
- `请完成Agent-2的任务`
- `请完成Agent-3的任务`
- ... 以此类推
### 关键规则
```
✅ Agent-1:创建文件 + 启动dev server + 保持运行
✅ Agent-2~7:只创建文件,不启动server
✅ 验证方式:刷新浏览器(Vite自动热更新)
❌ 错误:每个Agent都启动npm run dev
```
### 完成后检查
1. 访问 http://localhost:3000 验证所有页面
2. 检查 `src/mock/index.js` 是否引入了所有mock文件:
```javascript
import './user'
import './school'
import './member'
import './student'
import './application'
import './grade'
import './class'
import './subject'
import './region'
```
3. 检查各页面表格是否无右侧空白
4. 测试CRUD功能是否正常
---
*文档作者:pangu*
*创建时间:2026-01-31*