Files
ups-infra/.trae/documents/ups_management_plan.md
2026-04-28 17:11:19 +08:00

270 lines
8.2 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.
# UPS 主机和电池管理系统 - 实现计划
## 一、项目概述
本项目是一个基于 Django 的本地部署管理系统,用于管理 UPS 主机和电池的相关信息。
## 二、需求分析
### 2.1 数据模型需求
| 数据类型 | 字段需求 |
|---------|---------|
| UPS 主机 | IP 地址、型号、数量、存放位置、上次维保时间 |
| 电池 | 品牌、存放位置、型号、重量、数量、安装日期(用于计算已使用时长)、上次维保时间 |
| 联系人 | 姓名、联系电话、邮箱 |
| 维保供应商 | 公司名称、联系人、联系电话、邮箱、地址、备注 |
| 维修记录 | 关联设备、维修日期、维修内容、维修人员、关联维保供应商 |
### 2.2 功能需求
| 功能 | 描述 |
|-----|------|
| 电池已使用时长计算 | 根据安装日期自动计算,按年为单位显示(如 2.3 年) |
| 上次维保时间 | UPS 主机和电池均需记录上次维保时间 |
| 列表页搜索 | 支持按型号、位置、联系人等字段进行搜索过滤 |
### 2.3 页面需求
| 页面 | 功能描述 |
|-----|---------|
| 主页 (Dashboard) | 显示重要统计信息概览 |
| UPS 主机管理 | UPS 主机列表(支持搜索)、新增、编辑、删除 |
| 电池管理 | 电池列表(支持搜索、显示已使用时长)、新增、编辑、删除 |
| 联系人管理 | 联系人列表(支持搜索)、新增、编辑、删除 |
| 维保供应商管理 | 维保供应商列表(支持搜索)、新增、编辑、删除 |
| 维修记录管理 | 维修记录列表(支持搜索)、新增、编辑、删除 |
## 三、技术方案
### 3.1 技术栈
- **框架**: Django 5.x
- **数据库**: SQLite本地部署
- **前端**: Bootstrap 5
- **语言**: Python 3.x
### 3.2 项目结构
```
ups_management/
├── manage.py
├── ups_management/
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── ups_manager/
├── __init__.py
├── admin.py
├── apps.py
├── models.py
├── views.py
├── urls.py
└── templates/
└── ups_manager/
├── index.html
├── ups_list.html
├── ups_form.html
├── battery_list.html
├── battery_form.html
├── contact_list.html
├── contact_form.html
├── supplier_list.html
├── supplier_form.html
├── maintenance_list.html
└── maintenance_form.html
```
### 3.3 数据模型设计
#### 3.3.1 UPS 主机模型 (UPSHost)
| 字段名 | 类型 | 说明 |
|-------|------|------|
| ip_address | CharField | IP 地址 |
| model | CharField | 型号 |
| quantity | IntegerField | 数量 |
| location | CharField | 存放位置 |
| last_maintenance_date | DateField | 上次维保时间 |
| contact | ForeignKey | 关联联系人 |
| created_at | DateTimeField | 创建时间 |
| updated_at | DateTimeField | 更新时间 |
#### 3.3.2 电池模型 (Battery)
| 字段名 | 类型 | 说明 |
|-------|------|------|
| brand | CharField | 品牌 |
| model | CharField | 型号 |
| weight | FloatField | 重量 (kg) |
| quantity | IntegerField | 数量 |
| location | CharField | 存放位置 |
| install_date | DateField | 安装日期(用于计算已使用时长) |
| last_maintenance_date | DateField | 上次维保时间 |
| ups_host | ForeignKey | 关联 UPS 主机(可选) |
| created_at | DateTimeField | 创建时间 |
| updated_at | DateTimeField | 更新时间 |
**计算字段**`used_years` - 根据 `install_date` 自动计算已使用年数
#### 3.3.3 联系人模型 (Contact)
| 字段名 | 类型 | 说明 |
|-------|------|------|
| name | CharField | 姓名 |
| phone | CharField | 联系电话 |
| email | EmailField | 邮箱(可选) |
| created_at | DateTimeField | 创建时间 |
#### 3.3.4 维保供应商模型 (Supplier)
| 字段名 | 类型 | 说明 |
|-------|------|------|
| company_name | CharField | 公司名称 |
| contact_person | CharField | 联系人 |
| phone | CharField | 联系电话 |
| email | EmailField | 邮箱 |
| address | CharField | 地址 |
| remark | TextField | 备注(可选) |
| created_at | DateTimeField | 创建时间 |
#### 3.3.5 维修记录模型 (MaintenanceRecord)
| 字段名 | 类型 | 说明 |
|-------|------|------|
| ups_host | ForeignKey | 关联 UPS 主机 |
| battery | ForeignKey | 关联电池(可选) |
| supplier | ForeignKey | 关联维保供应商(可选) |
| maintenance_date | DateTimeField | 维修日期 |
| content | TextField | 维修内容 |
| technician | CharField | 维修人员 |
| created_at | DateTimeField | 创建时间 |
### 3.4 搜索功能设计
各列表页支持以下搜索字段:
| 页面 | 搜索字段 |
|-----|---------|
| UPS 主机列表 | 型号、位置、联系人 |
| 电池列表 | 型号、品牌、位置 |
| 联系人列表 | 姓名、电话 |
| 维保供应商列表 | 公司名称、联系人 |
| 维修记录列表 | 设备型号、维修人员、维保供应商 |
## 四、实现步骤
### 4.1 步骤一:创建 Django 项目
```bash
django-admin startproject ups_management
cd ups_management
python manage.py startapp ups_manager
```
### 4.2 步骤二:配置项目
1.`settings.py` 中注册 `ups_manager` 应用
2. 配置模板路径
3. 配置静态文件路径
4. 安装 django-bootstrap5
### 4.3 步骤三:创建数据模型
`ups_manager/models.py` 中定义五个模型:
- UPSHost: 包含 last_maintenance_date 字段
- Battery: 包含 install_date 和 last_maintenance_date 字段,添加 used_years 计算属性
- Contact
- Supplier: 维保供应商模型
- MaintenanceRecord: 关联维保供应商字段
### 4.4 步骤四:创建视图
`ups_manager/views.py` 中创建:
- DashboardView: 主页统计概览
- UPSHostListView: 支持搜索过滤
- UPSHostCreateView/UpdateView/DeleteView
- BatteryListView: 支持搜索过滤,显示已使用时长
- BatteryCreateView/UpdateView/DeleteView
- ContactListView: 支持搜索过滤
- ContactCreateView/UpdateView/DeleteView
- SupplierListView: 支持搜索过滤
- SupplierCreateView/UpdateView/DeleteView
- MaintenanceRecordListView: 支持搜索过滤
- MaintenanceRecordCreateView/UpdateView/DeleteView
### 4.5 步骤五:配置 URL 路由
`ups_manager/urls.py` 中配置各页面路由
### 4.6 步骤六:创建模板
使用 Bootstrap 5 创建响应式模板:
- `index.html`: 主页仪表盘
- `ups_list.html`: UPS 主机列表(带搜索框)
- `ups_form.html`: UPS 主机表单
- `battery_list.html`: 电池列表(带搜索框,显示已使用时长)
- `battery_form.html`: 电池表单
- `contact_list.html`: 联系人列表(带搜索框)
- `contact_form.html`: 联系人表单
- `supplier_list.html`: 维保供应商列表(带搜索框)
- `supplier_form.html`: 维保供应商表单
- `maintenance_list.html`: 维修记录列表(带搜索框)
- `maintenance_form.html`: 维修记录表单
### 4.7 步骤七:数据库迁移
```bash
python manage.py makemigrations
python manage.py migrate
```
### 4.8 步骤八:创建管理员用户
```bash
python manage.py createsuperuser
```
## 五、依赖与环境
### 5.1 依赖列表
| 依赖 | 版本 | 用途 |
|-----|------|------|
| Django | >=5.0 | Web 框架 |
| django-bootstrap5 | >=23.3 | Bootstrap 集成 |
### 5.2 安装命令
```bash
pip install django django-bootstrap5
```
## 六、运行方式
```bash
cd ups_management
python manage.py runserver
```
访问地址http://localhost:8000
## 七、风险评估
| 风险 | 描述 | 应对措施 |
|-----|------|---------|
| 数据库迁移失败 | 模型定义错误可能导致迁移失败 | 仔细检查模型定义,先测试迁移 |
| 模板渲染错误 | 模板语法错误导致页面无法显示 | 使用 Django 调试模式定位问题 |
| 数据关联问题 | 外键关联可能导致删除异常 | 设置合理的 on_delete 行为 |
| 日期计算错误 | 已使用时长计算可能出现精度问题 | 使用 datetime 模块精确计算 |
## 八、交付物
1. 完整的 Django 项目代码
2. SQLite 数据库文件(初始为空)
3. 可直接运行的本地服务
---
**计划完成后等待用户批准,然后执行实现。**