fastapi-demo/docs/frontend-ui/ALIGNMENT_frontend-ui.md

183 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ALIGNMENT - 前端 UI 项目需求对齐
## 📋 原始需求
在项目根目录下创建前端ui项目为此项目做一个简易ui页面。不需要登录注册。直接能访问得管理页面即可。技术选型使用Vue3。
## 🏗️ 项目上下文分析
### 现有项目架构
- **项目类型**: FastAPI 后端 API 项目
- **技术栈**: Python + FastAPI + SQLAlchemy + MySQL
- **架构模式**: 分层架构 + 应用工厂模式
- **API 版本**: v1 (`/api/v1/`)
- **主要实体**: Users、Products
- **数据库**: MySQL (开发环境支持 SQLite)
- **CORS 配置**: 已启用,允许跨域访问
### 现有 API 端点
1. **用户管理 API** (`/api/v1/users/`)
- GET `/` - 获取用户列表
- GET `/{user_id}` - 获取单个用户
- POST `/` - 创建新用户
- PUT `/{user_id}` - 更新用户
- DELETE `/{user_id}` - 删除用户
2. **产品管理 API** (`/api/v1/products/`)
- GET `/` - 获取产品列表
- GET `/{product_id}` - 获取单个产品
- POST `/` - 创建新产品
- PUT `/{product_id}` - 更新产品
- DELETE `/{product_id}` - 删除产品
### 数据模型
1. **用户 (User)**
- id: int (主键)
- username: str (用户名)
- email: EmailStr (邮箱)
- full_name: str? (全名)
- is_active: bool (激活状态)
2. **产品 (Product)**
- id: int (主键)
- name: str (产品名)
- description: str? (描述)
- price: float (价格)
- stock: int (库存)
- is_available: bool (可用状态)
## 🎯 需求理解确认
### 功能需求
1. **前端项目结构**
- 在项目根目录创建独立的前端项目
- 使用 Vue 3 技术栈
- 简易的管理界面设计
2. **用户体验**
- 无需登录认证机制
- 直接访问管理页面
- 简洁易用的界面
3. **功能范围**
- 用户管理功能 (CRUD)
- 产品管理功能 (CRUD)
- 数据展示和操作界面
### 技术需求
1. **前端技术栈**
- Vue 3 (Composition API)
- 现代前端工具链 (Vite)
- UI 框架选择 (需确认)
- HTTP 客户端 (Axios)
2. **项目集成**
- 与现有 FastAPI 后端 API 集成
- 跨域请求处理
- 开发环境配置
## ❓ 疑问澄清
### 1. UI 框架选择
**问题**: 选择哪个 Vue UI 组件库?
**建议选项**:
- Element Plus (成熟稳定,管理界面友好)
- Ant Design Vue (企业级组件)
- Naive UI (轻量现代)
- Quasar (功能丰富)
**推荐**: Element Plus - 最适合快速构建管理界面
### 2. 项目目录结构
**问题**: 前端项目放置位置?
**选项**:
- `frontend/` (推荐 - 独立前端项目)
- `web/` (简洁命名)
- `ui/` (简短命名)
**推荐**: `frontend/` - 语义明确
### 3. 开发服务器配置
**问题**: 前端开发服务器端口?
**建议**:
- 前端: `http://localhost:3000`
- 后端: `http://localhost:8000` (已确定)
- 避免端口冲突
### 4. 功能复杂度
**问题**: 管理界面功能深度?
**基础功能** (推荐):
- 数据列表展示 (表格)
- 增删改查操作
- 表单验证
- 操作反馈 (成功/错误提示)
**扩展功能** (可选):
- 数据搜索过滤
- 分页处理
- 批量操作
- 数据导出
## 🎯 边界确认
### 包含范围
✅ Vue 3 + Vite 前端项目搭建
✅ Element Plus UI 框架集成
✅ 用户管理 CRUD 界面
✅ 产品管理 CRUD 界面
✅ 响应式布局设计
✅ API 集成和错误处理
✅ 基础表单验证
### 不包含范围
❌ 用户认证登录系统
❌ 权限管理和角色控制
❌ 复杂的数据可视化
❌ 文件上传功能
❌ 实时数据更新 (WebSocket)
❌ 移动端适配优化
❌ 国际化多语言支持
## 💡 技术决策建议
### 1. 技术栈选择 (基于分析)
- **Vue 3** + **Composition API**: 现代化开发体验
- **Vite**: 快速构建工具,开发体验优秀
- **Element Plus**: 成熟的 Vue 3 UI 组件库,适合管理界面
- **Axios**: HTTP 客户端API 交互
- **Vue Router**: 路由管理 (SPA)
- **Pinia**: 状态管理 (可选,简单项目可不用)
### 2. 项目结构建议
```
frontend/
├── src/
│ ├── components/ # 通用组件
│ ├── views/ # 页面组件
│ ├── api/ # API 接口
│ ├── utils/ # 工具函数
│ ├── router/ # 路由配置
│ └── main.js # 入口文件
├── public/ # 静态资源
├── package.json # 依赖配置
└── vite.config.js # 构建配置
```
### 3. 页面结构设计
- **首页/仪表板**: 概览信息
- **用户管理页**: 用户列表 + CRUD 操作
- **产品管理页**: 产品列表 + CRUD 操作
## 🚨 关键假设
1. 假设后端 API 已正常运行在 8000 端口
2. 假设 CORS 已正确配置允许前端访问
3. 假设用户具备基本的 Vue 3 开发环境
4. 假设项目以简单实用为主,不需要复杂功能
## ✅ 验收标准
1. 成功创建 Vue 3 前端项目
2. 能够正常访问管理界面
3. 用户管理功能完整可用 (列表、增删改查)
4. 产品管理功能完整可用 (列表、增删改查)
5. 界面美观易用,响应式布局
6. 与后端 API 正常交互
7. 基础的错误处理和用户反馈