# 维修管理API使用说明 > **版本**: v1.0.0 > **作者**: 后端API扩展组 > **创建时间**: 2025-01-24 --- ## 📋 目录 1. [概述](#概述) 2. [故障类型说明](#故障类型说明) 3. [维修类型说明](#维修类型说明) 4. [API端点](#api端点) 5. [业务流程](#业务流程) 6. [状态说明](#状态说明) 7. [错误码](#错误码) --- ## 概述 维修管理API提供资产报修、维修、维修完成等全流程管理功能。支持自行维修、外部维修和保修维修三种维修类型。 --- ## 故障类型说明 | 类型 | 代码 | 说明 | |------|------|------| | 硬件故障 | hardware | 硬件相关故障 | | 软件故障 | software | 软件相关故障 | | 网络故障 | network | 网络相关故障 | | 其他故障 | other | 其他类型故障 | --- ## 维修类型说明 | 类型 | 代码 | 说明 | |------|------|------| | 自行维修 | self_repair | 内部人员自行维修 | | 外部维修 | vendor_repair | 委托供应商维修 | | 保修维修 | warranty | 厂商保修维修 | --- ## API端点 ### 1. 获取维修记录列表 **接口**: `GET /api/v1/maintenance-records` **查询参数**: ``` skip: 跳过条数(默认0) limit: 返回条数(默认20,最大100) asset_id: 资产ID筛选 status: 状态筛选 fault_type: 故障类型筛选 priority: 优先级筛选 maintenance_type: 维修类型筛选 keyword: 搜索关键词 ``` **响应示例**: ```json [ { "id": 1, "record_code": "MT202501240001", "asset": { "id": 1, "asset_code": "ASSET-20250124-0001", "asset_name": "联想台式机" }, "fault_description": "无法开机", "fault_type": "hardware", "priority": "high", "status": "pending", "report_user": { "id": 1, "real_name": "张三" }, "report_time": "2025-01-24T10:00:00Z" } ] ``` --- ### 2. 创建维修记录(报修) **接口**: `POST /api/v1/maintenance-records` **请求体**: ```json { "asset_id": 1, "fault_description": "无法开机,电源指示灯不亮", "fault_type": "hardware", "priority": "high", "maintenance_type": "vendor_repair", "vendor_id": 1, "remark": "可能是电源故障" } ``` **字段说明**: - `asset_id`: 资产ID(必填) - `fault_description`: 故障描述(必填) - `fault_type`: 故障类型(可选) - `priority`: 优先级(low/normal/high/urgent,默认normal) - `maintenance_type`: 维修类型(可选) - `vendor_id`: 维修供应商ID(外部维修时必填) - `maintenance_cost`: 维修费用(可选) - `maintenance_result`: 维修结果描述(可选) - `replaced_parts`: 更换的配件(可选) - `images`: 维修图片URL(可选,多个逗号分隔) - `remark`: 备注(可选) **业务逻辑**: - 自动生成维修单号 - 自动将资产状态设置为"维修中" --- ### 3. 开始维修 **接口**: `POST /api/v1/maintenance-records/{record_id}/start` **请求体**: ```json { "maintenance_type": "vendor_repair", "vendor_id": 1, "remark": "送往供应商维修" } ``` **字段说明**: - `maintenance_type`: 维修类型(必填) - `vendor_id`: 维修供应商ID(外部维修时必填) - `remark`: 备注(可选) **状态要求**: 只有"待处理"状态的维修记录可以开始维修 --- ### 4. 完成维修 **接口**: `POST /api/v1/maintenance-records/{record_id}/complete` **请求体**: ```json { "maintenance_result": "更换电源后正常", "maintenance_cost": 200.00, "replaced_parts": "电源模块", "images": "https://example.com/image1.jpg,https://example.com/image2.jpg", "asset_status": "in_stock" } ``` **字段说明**: - `maintenance_result`: 维修结果描述(必填) - `maintenance_cost`: 维修费用(可选) - `replaced_parts`: 更换的配件(可选) - `images`: 维修图片URL(可选) - `asset_status`: 资产维修后状态(in_stock/in_use,默认in_stock) **业务逻辑**: - 更新维修记录状态为"已完成" - 自动恢复资产状态(默认恢复为"库存中") --- ### 5. 取消维修 **接口**: `POST /api/v1/maintenance-records/{record_id}/cancel` **说明**: 取消维修记录 **状态要求**: 已完成的维修记录不能取消 --- ### 6. 获取维修统计 **接口**: `GET /api/v1/maintenance-records/statistics` **查询参数**: ``` asset_id: 资产ID(可选) ``` **响应示例**: ```json { "total": 100, "pending": 10, "in_progress": 20, "completed": 65, "cancelled": 5, "total_cost": 15000.00 } ``` --- ### 7. 获取资产的维修记录 **接口**: `GET /api/v1/maintenance-records/asset/{asset_id}` **查询参数**: ``` skip: 跳过条数(默认0) limit: 返回条数(默认50) ``` **说明**: 获取指定资产的所有维修记录 --- ## 业务流程 ### 报修流程 ``` 1. 创建维修记录(pending) ↓ 2. 开始维修(in_progress) ↓ 3. 完成维修(completed) ↓ 4. 恢复资产状态 ``` ### 自行维修流程 ``` 报修 → 开始维修(self_repair) → 完成维修 → 资产恢复 ``` ### 外部维修流程 ``` 报修 → 开始维修(vendor_repair + vendor_id) → 送修 → 维修完成 → 完成维修记录 → 资产恢复 ``` --- ## 状态说明 ### 维修记录状态 (status) | 状态 | 说明 | 可执行操作 | |------|------|------------| | pending | 待处理 | 开始维修、取消 | | in_progress | 维修中 | 完成维修、取消 | | completed | 已完成 | 无 | | cancelled | 已取消 | 无 | ### 优先级 (priority) | 级别 | 代码 | 说明 | |------|------|------| | 低 | low | 普通问题,不紧急 | | 正常 | normal | 常规维修 | | 高 | high | 影响使用,优先处理 | | 紧急 | urgent | 严重故障,立即处理 | --- ## 错误码 | 错误码 | 说明 | |--------|------| | 404 | 维修记录不存在 | | 400 | 资产不存在 | | 400 | 只有待处理状态可以开始维修 | | 400 | 只有维修中状态可以完成 | | 400 | 已完成不能更新或取消 | | 400 | 外部维修必须指定供应商 | | 403 | 权限不足 | --- ## 使用示例 ### Python示例 ```python import requests BASE_URL = "http://localhost:8000/api/v1" TOKEN = "your_access_token" headers = { "Authorization": f"Bearer {TOKEN}", "Content-Type": "application/json" } # 1. 报修 response = requests.post( f"{BASE_URL}/maintenance-records", json={ "asset_id": 1, "fault_description": "无法开机", "fault_type": "hardware", "priority": "high" }, headers=headers ) record = response.json() # 2. 开始维修 response = requests.post( f"{BASE_URL}/maintenance-records/{record['id']}/start", json={ "maintenance_type": "self_repair" }, headers=headers ) # 3. 完成维修 response = requests.post( f"{BASE_URL}/maintenance-records/{record['id']}/complete", json={ "maintenance_result": "更换电源后正常", "maintenance_cost": 200.00, "replaced_parts": "电源模块", "asset_status": "in_stock" }, headers=headers ) # 4. 获取维修统计 response = requests.get( f"{BASE_URL}/maintenance-records/statistics", headers=headers ) stats = response.json() print(f"总维修费用: {stats['total_cost']}") ``` --- ## 注意事项 1. **资产状态**: 创建维修记录会自动将资产状态设置为"维修中" 2. **状态恢复**: 完成维修会自动恢复资产状态(默认恢复为"库存中") 3. **外部维修**: 外部维修必须指定维修供应商 4. **费用记录**: 维修费用在完成维修时记录 5. **图片上传**: 支持多张图片,URL用逗号分隔 6. **历史记录**: 资产的所有维修记录都会保留,可追溯 --- ## 开发建议 1. **图片上传**: 配合文件上传API使用,上传维修前后照片 2. **消息通知**: 维修状态变更时发送通知给相关人员 3. **费用统计**: 定期统计维修费用,分析维修成本 4. **故障分析**: 根据故障类型和维修记录,分析资产质量问题 --- **开发完成日期**: 2025-01-24