# 盘古用户平台 - 多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/hbxhWorkSpace/pangu-user-platform/pangu-ui`

**原型地址**：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
<!-- ✅ 正确：表格必须设置这些属性 -->
<el-table 
  :data="tableData" 
  border 
  stripe
  v-loading="loading"
  :header-cell-style="{ background: '#f5f7fa', color: '#606266' }"
  style="width: 100%"
>
  <!-- 列宽度必须明确指定，避免右侧大量空白 -->
  <el-table-column prop="name" label="名称" min-width="120" show-overflow-tooltip />
  <el-table-column prop="code" label="编码" width="120" />
  <el-table-column prop="status" label="状态" width="80" align="center" />
  <el-table-column prop="createTime" label="创建时间" width="160" />
  <!-- 操作列固定右侧 -->
  <el-table-column label="操作" width="180" fixed="right" align="center">
    <template #default="{ row }">
      <el-button link type="primary" @click="handleEdit(row)">编辑</el-button>
      <el-button link type="danger" @click="handleDelete(row)">删除</el-button>
    </template>
  </el-table-column>
</el-table>

<!-- ❌ 错误：不设置列宽会导致右侧大量空白 -->
<el-table :data="tableData">
  <el-table-column prop="name" label="名称" />
</el-table>
```

### 2. 列宽分配原则

| 字段类型 | 推荐宽度 | 说明 |
|---------|---------|------|
| ID/编号 | 80-100px | 固定宽度 |
| 名称/标题 | min-width: 120-200px | 弹性宽度，使用min-width |
| 状态/类型 | 80-100px | 固定宽度，居中 |
| 日期时间 | 160-180px | 固定宽度 |
| 手机号 | 120px | 固定宽度 |
| 操作列 | 根据按钮数量，120-200px | 固定右侧 |

### 3. 长文本处理

```vue
<!-- 使用 show-overflow-tooltip 处理长文本，鼠标悬停显示全部 -->
<el-table-column prop="remark" label="备注" min-width="150" show-overflow-tooltip />

<!-- 手机号脱敏显示 -->
<el-table-column prop="phone" label="手机号" width="120">
  <template #default="{ row }">
    {{ row.phone ? row.phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2') : '-' }}
  </template>
</el-table-column>
```

### 4. 表格响应式

```vue
<!-- 使用 el-scrollbar 包裹，确保水平滚动 -->
<el-scrollbar>
  <el-table :data="tableData" style="width: 100%; min-width: 800px;">
    <!-- 列定义 -->
  </el-table>
</el-scrollbar>
```

### 5. 搜索表单规范

```vue
<!-- ✅ 正确：使用 inline 表单，合理分布 -->
<el-form :model="queryParams" ref="queryFormRef" :inline="true" class="search-form">
  <el-form-item label="名称" prop="name">
    <el-input v-model="queryParams.name" placeholder="请输入名称" clearable style="width: 200px" />
  </el-form-item>
  <el-form-item label="状态" prop="status">
    <el-select v-model="queryParams.status" placeholder="请选择" clearable style="width: 120px">
      <el-option label="全部" value="" />
      <el-option label="正常" value="0" />
      <el-option label="停用" value="1" />
    </el-select>
  </el-form-item>
  <el-form-item>
    <el-button type="primary" :icon="Search" @click="handleQuery">查询</el-button>
    <el-button :icon="Refresh" @click="handleReset">重置</el-button>
  </el-form-item>
</el-form>

<!-- 操作按钮行 -->
<el-row :gutter="10" class="mb-8">
  <el-col :span="1.5">
    <el-button type="primary" :icon="Plus" @click="handleAdd">新增</el-button>
  </el-col>
</el-row>
```

### 6. 分页规范

```vue
<!-- 分页组件，右对齐 -->
<div style="display: flex; justify-content: flex-end; margin-top: 16px;">
  <el-pagination
    v-model:current-page="queryParams.pageNum"
    v-model:page-size="queryParams.pageSize"
    :page-sizes="[10, 20, 50, 100]"
    :total="total"
    layout="total, sizes, prev, pager, next, jumper"
    @size-change="handleQuery"
    @current-change="handleQuery"
  />
</div>
```

### 7. 弹窗规范

```vue
<el-dialog 
  v-model="dialogVisible" 
  :title="dialogTitle" 
  width="600px"
  :close-on-click-modal="false"
  destroy-on-close
>
  <el-form 
    ref="formRef" 
    :model="form" 
    :rules="rules" 
    label-width="100px"
  >
    <!-- 表单项 -->
  </el-form>
  <template #footer>
    <el-button @click="dialogVisible = false">取消</el-button>
    <el-button type="primary" @click="handleSubmit" :loading="submitLoading">确定</el-button>
  </template>
</el-dialog>
```

### 8. 状态Tag颜色规范

```vue
<!-- 状态：正常-success，停用-danger -->
<el-tag :type="row.status === '0' ? 'success' : 'danger'">
  {{ row.status === '0' ? '正常' : '停用' }}
</el-tag>

<!-- 身份类型：家长-primary，教师-success -->
<el-tag :type="row.identityType === '1' ? '' : 'success'">
  {{ row.identityType === '1' ? '家长' : '教师' }}
</el-tag>

<!-- 性别：男-primary，女-danger，未知-info -->
<el-tag :type="row.gender === '1' ? '' : row.gender === '2' ? 'danger' : 'info'">
  {{ { '0': '未知', '1': '男', '2': '女' }[row.gender] }}
</el-tag>
```

### 9. 空数据处理

```vue
<!-- 表格空数据提示 -->
<el-table :data="tableData">
  <template #empty>
    <el-empty description="暂无数据" />
  </template>
</el-table>

<!-- 字段空值显示 -->
<el-table-column prop="remark" label="备注">
  <template #default="{ row }">
    {{ row.remark || '-' }}
  </template>
</el-table-column>
```

### 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
<!-- 标准页面结构 -->
<template>
  <div class="app-container">
    <!-- 搜索区域 -->
    <el-card shadow="never" class="search-wrapper">
      <el-form>...</el-form>
    </el-card>
    
    <!-- 表格区域 -->
    <el-card shadow="never" style="margin-top: 12px;">
      <!-- 操作按钮 -->
      <el-row :gutter="10" style="margin-bottom: 12px;">
        <el-col :span="1.5">
          <el-button type="primary" :icon="Plus">新增</el-button>
        </el-col>
      </el-row>
      
      <!-- 表格 -->
      <el-table>...</el-table>
      
      <!-- 分页 -->
      <el-pagination />
    </el-card>
    
    <!-- 弹窗 -->
    <el-dialog>...</el-dialog>
  </div>
</template>

<style scoped>
.app-container {
  padding: 16px;
}
.search-wrapper {
  margin-bottom: 0;
}
</style>
```

---

## 共享约定

### 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/hbxhWorkSpace/pangu-user-platform/pangu-ui
- 技术栈：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）
- 顶部导航栏（显示用户信息、退出按钮）
- 右侧主内容区（<router-view>）

### 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/hbxhWorkSpace/pangu-user-platform/pangu-ui
- 技术栈：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/hbxhWorkSpace/pangu-user-platform/pangu-ui
- 技术栈：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/hbxhWorkSpace/pangu-user-platform/pangu-ui
- 技术栈：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/hbxhWorkSpace/pangu-user-platform/pangu-ui
- 技术栈：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/hbxhWorkSpace/pangu-user-platform/pangu-ui
- 技术栈：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/hbxhWorkSpace/pangu-user-platform/pangu-ui
- 技术栈：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*
