193 lines
5.1 KiB
Markdown
193 lines
5.1 KiB
Markdown
# CONSENSUS - 前端 UI 项目共识文档
|
||
|
||
## 📋 需求描述
|
||
|
||
### 项目目标
|
||
在现有 FastAPI 项目根目录下创建一个独立的前端 UI 项目,为后端 API 提供简易的管理界面。
|
||
|
||
### 核心需求
|
||
1. **无认证管理界面**: 直接访问,无需登录注册
|
||
2. **用户管理功能**: 完整的用户 CRUD 操作界面
|
||
3. **产品管理功能**: 完整的产品 CRUD 操作界面
|
||
4. **现代化 UI**: 使用 Vue 3 + Element Plus 构建
|
||
|
||
## 🏗️ 技术实现方案
|
||
|
||
### 前端技术栈
|
||
- **框架**: Vue 3 (Composition API)
|
||
- **构建工具**: Vite
|
||
- **UI 组件库**: Element Plus
|
||
- **HTTP 客户端**: Axios
|
||
- **路由管理**: Vue Router 4
|
||
- **开发语言**: JavaScript (可后续升级 TypeScript)
|
||
|
||
### 后端集成
|
||
- **API 基础地址**: `http://localhost:8000/api/v1`
|
||
- **跨域配置**: 后端已启用 CORS,支持前端访问
|
||
- **数据格式**: JSON
|
||
- **错误处理**: 基于 HTTP 状态码
|
||
|
||
## 🏗️ 技术约束
|
||
|
||
### 环境要求
|
||
- Node.js >= 16.0.0
|
||
- npm 或 yarn 包管理器
|
||
- 现代浏览器支持 (Chrome/Firefox/Safari/Edge)
|
||
|
||
### 集成约束
|
||
- 前端开发服务器: `http://localhost:3000`
|
||
- 后端 API 服务器: `http://localhost:8000`
|
||
- 无需修改后端代码,纯前端项目
|
||
|
||
### 性能约束
|
||
- 首次加载时间 < 3秒
|
||
- 界面响应时间 < 500ms
|
||
- 支持现代浏览器,无需 IE 兼容
|
||
|
||
## 📐 任务边界
|
||
|
||
### 包含功能
|
||
✅ **项目初始化**
|
||
- Vue 3 + Vite 项目搭建
|
||
- Element Plus UI 框架集成
|
||
- 基础路由配置
|
||
- Axios HTTP 客户端配置
|
||
|
||
✅ **用户管理模块**
|
||
- 用户列表展示 (表格)
|
||
- 新增用户表单
|
||
- 编辑用户功能
|
||
- 删除用户功能
|
||
- 基础表单验证
|
||
|
||
✅ **产品管理模块**
|
||
- 产品列表展示 (表格)
|
||
- 新增产品表单
|
||
- 编辑产品功能
|
||
- 删除产品功能
|
||
- 基础表单验证
|
||
|
||
✅ **界面布局**
|
||
- 响应式侧边栏导航
|
||
- 顶部导航栏
|
||
- 内容主区域
|
||
- 基础页面样式
|
||
|
||
✅ **用户体验**
|
||
- 操作成功/失败提示
|
||
- 加载状态指示
|
||
- 表单验证提示
|
||
- 确认删除对话框
|
||
|
||
### 不包含功能
|
||
❌ 用户认证和权限管理
|
||
❌ 数据搜索和过滤
|
||
❌ 分页处理
|
||
❌ 批量操作
|
||
❌ 数据导出功能
|
||
❌ 实时数据更新
|
||
❌ 复杂数据可视化
|
||
❌ 移动端优化
|
||
❌ 国际化支持
|
||
|
||
## ✅ 验收标准
|
||
|
||
### 功能验收
|
||
1. **项目启动**: `npm run dev` 成功启动,访问 http://localhost:3000
|
||
2. **用户管理**: 能够查看、新增、编辑、删除用户
|
||
3. **产品管理**: 能够查看、新增、编辑、删除产品
|
||
4. **API 集成**: 所有操作能够正确调用后端 API
|
||
5. **错误处理**: 网络错误和业务错误有适当提示
|
||
6. **界面美观**: 使用 Element Plus 组件,界面整洁美观
|
||
|
||
### 技术验收
|
||
1. **代码规范**: 遵循 Vue 3 最佳实践
|
||
2. **组件化**: 合理的组件拆分和复用
|
||
3. **响应式**: 支持桌面端和平板端访问
|
||
4. **性能**: 页面加载和操作响应流畅
|
||
5. **兼容性**: 支持主流现代浏览器
|
||
|
||
### 质量验收
|
||
1. **代码质量**: 结构清晰,注释适当
|
||
2. **错误处理**: 完善的异常处理机制
|
||
3. **用户体验**: 操作流畅,反馈及时
|
||
4. **可维护性**: 代码模块化,易于扩展
|
||
|
||
## 📊 数据模型接口
|
||
|
||
### 用户 API
|
||
```typescript
|
||
// 用户数据结构
|
||
interface User {
|
||
id: number
|
||
username: string
|
||
email: string
|
||
full_name?: string
|
||
is_active: boolean
|
||
}
|
||
|
||
// API 端点
|
||
GET /api/v1/users/ // 获取用户列表
|
||
GET /api/v1/users/{id} // 获取单个用户
|
||
POST /api/v1/users/ // 创建用户
|
||
PUT /api/v1/users/{id} // 更新用户
|
||
DELETE /api/v1/users/{id} // 删除用户
|
||
```
|
||
|
||
### 产品 API
|
||
```typescript
|
||
// 产品数据结构
|
||
interface Product {
|
||
id: number
|
||
name: string
|
||
description?: string
|
||
price: number
|
||
stock: number
|
||
is_available: boolean
|
||
}
|
||
|
||
// API 端点
|
||
GET /api/v1/products/ // 获取产品列表
|
||
GET /api/v1/products/{id} // 获取单个产品
|
||
POST /api/v1/products/ // 创建产品
|
||
PUT /api/v1/products/{id} // 更新产品
|
||
DELETE /api/v1/products/{id} // 删除产品
|
||
```
|
||
|
||
## 🔧 开发约定
|
||
|
||
### 目录结构
|
||
```
|
||
frontend/
|
||
├── src/
|
||
│ ├── components/ # 通用组件
|
||
│ ├── views/ # 页面组件
|
||
│ ├── api/ # API 接口定义
|
||
│ ├── utils/ # 工具函数
|
||
│ ├── router/ # 路由配置
|
||
│ ├── styles/ # 全局样式
|
||
│ └── main.js # 应用入口
|
||
├── public/ # 静态资源
|
||
├── package.json # 项目配置
|
||
└── vite.config.js # 构建配置
|
||
```
|
||
|
||
### 代码规范
|
||
- 使用 Vue 3 Composition API
|
||
- 组件名使用 PascalCase
|
||
- 文件名使用 kebab-case
|
||
- 接口调用统一使用 async/await
|
||
- 错误处理使用 try-catch
|
||
|
||
### 提交规范
|
||
- 功能开发完成后进行提交
|
||
- 提交信息使用中文,描述清晰
|
||
- 不提交 node_modules 和构建产物
|
||
|
||
## 🚀 项目交付物
|
||
|
||
1. **前端项目代码**: 完整的 Vue 3 项目
|
||
2. **开发文档**: README.md 包含启动和开发说明
|
||
3. **依赖配置**: package.json 包含所有必要依赖
|
||
4. **构建配置**: vite.config.js 开发和构建配置
|
||
5. **部署说明**: 简单的部署指导 |