工单模型设计文档
文档概述
本文档详细记录了邮轮穿舱件管理系统后台的工单系统数据模型设计,包括工单状态、处理记录、数据模型关系以及系统架构。通过分析代码库中的相关文件,提供了完整的工单系统技术实现文档。
1. 工单核心数据模型
1.1 Ticket 工单模型
工单模型是系统的核心数据实体,用于管理所有工单相关信息。
classDiagram
class Ticket {
+ticket_id: IntField (PK)
+ticket_type: CharField
+ticket_status: CharField
+target_workpiece: IntField
+ticket_from: CharField
+ticket_tos: CharField
+ticket_content: TextField
+ticket_title: CharField
+feedback_text: TextField
+image_list: CharField
+reference_list: CharField
+created_by: IntField
+updated_by: IntField
+created_at: DatetimeField
+updated_at: DatetimeField
}
字段详细说明:
- 工单标识:
ticket_id作为主键,唯一标识每个工单 - 工单类型:
ticket_type支持多种工单类型,默认为"任务工单" - 工单状态:
ticket_status管理工单生命周期状态,默认为"未开始" - 关联工件:
target_workpiece关联目标产品ID - 来源目标:
ticket_from和ticket_tos记录工单流转路径 - 内容管理:
ticket_content和ticket_title存储工单详细信息 - 反馈信息:
feedback_text记录处理反馈 - 附件管理:
image_list和reference_list存储相关文件引用
参考文件:
1.2 工单状态管理
系统定义了明确的工单状态流转机制:
stateDiagram-v2
[*] --> open : 创建工单
open --> running : 开始处理
running --> closed : 完成处理
running --> issue : 发现问题
issue --> running : 问题解决
issue --> closed : 问题关闭
closed --> [*] : 工单结束
状态说明:
- open:工单创建,等待处理
- running:工单正在处理中
- closed:工单处理完成
- issue:处理过程中发现问题
参考文件:
2. 工单处理记录系统
2.1 AccessLog 访问日志模型
系统通过访问日志模型记录所有工单操作行为。
classDiagram
class AccessLog {
+log_id: IntField (PK)
+action_type: CharField
+action_title: CharField
+action_description: CharField
+related_users: CharField
+related_tickets: CharField
+related_workpieces: CharField
+created_by: IntField
+updated_by: IntField
+created_at: DatetimeField
+updated_at: DatetimeField
}
日志字段功能:
- 操作分类:
action_type标识操作类型(如工单创建、更新等) - 操作详情:
action_title和action_description记录具体操作内容 - 关联关系:
related_users、related_tickets、related_workpieces建立操作关联 - 审计信息:
created_by、updated_by记录操作人员
参考文件:
2.2 工单操作记录流程
sequenceDiagram
participant User
participant TicketRouter
participant TicketService
participant AccessLogService
participant Database
User->>TicketRouter: 发起工单操作
TicketRouter->>AccessLogService: 记录操作日志
AccessLogService->>Database: 保存日志记录
TicketRouter->>TicketService: 执行工单业务
TicketService->>Database: 操作工单数据
Database-->>TicketService: 返回操作结果
TicketService-->>TicketRouter: 返回业务结果
TicketRouter-->>User: 返回最终响应
参考文件:
3. 数据架构与依赖关系
3.1 系统组件依赖图
flowchart TD
subgraph Presentation Layer
A[TicketRouter]
B[AccessLogRouter]
end
subgraph Business Layer
C[TicketService]
D[AccessLogService]
end
subgraph Data Layer
E[Ticket Model]
F[AccessLog Model]
end
subgraph Schema Layer
G[TicketInSchema]
H[TicketOutSchema]
end
A --> C
B --> D
C --> E
D --> F
C --> G
C --> H
A --> D
3.2 类关系图
classDiagram
class TicketInSchema {
+ticket_type: Literal['inspect','maintenance']
+ticket_status: Literal['open','running','closed','issue']
+target_workpiece: int
+ticket_from: str
+ticket_tos: str
+ticket_content: str
+ticket_title: str
+feedback_text: str
+image_list: str
+reference_list: str
+created_by: int
+updated_by: int
+created_at: datetime
+updated_at: datetime
}
class TicketOutSchema {
+ticket_id: int
+ticket_type: Literal['inspect','maintenance']
+ticket_status: Literal['open','running','closed','issue']
+target_workpiece: int
+ticket_from: str
+ticket_tos: str
+ticket_content: str
+ticket_title: str
+feedback_text: str
+image_list: str
+reference_list: str
+created_by: int
+updated_by: int
+created_at: datetime
+updated_at: datetime
}
class TicketService {
+service_get_all_ticket_entitys() List[TicketOutSchema]
+service_create_ticket(TicketInSchema) Ticket
+service_update_ticket(int, TicketInSchema) Ticket
+service_get_ticket_by_id(int) TicketOutSchema
+service_delete_ticket(int) None
+service_get_all_tickets() List[TicketOutSchema]
}
class AccessLogService {
+service_create_access_log() AccessLog
+service_get_access_log_by_id(int) AccessLog
+service_get_all_access_logs() List[AccessLog]
+service_update_access_log() AccessLog
+service_delete_access_log(int) bool
}
TicketInSchema <.. TicketService : 输入参数
TicketOutSchema <.. TicketService : 返回结果
TicketService --> Ticket : 数据操作
TicketService --> AccessLogService : 日志记录
参考文件:
4. API接口设计
4.1 工单管理接口
系统提供完整的RESTful API接口:
| 方法 | 路径 | 功能 | 认证要求 |
|---|---|---|---|
| POST | /ticket/ | 创建工单 | JWT Token |
| GET | /ticket/{ticket_id} | 获取工单详情 | JWT Token |
| PUT | /ticket/{ticket_id} | 更新工单 | JWT Token |
| DELETE | /ticket/{ticket_id} | 删除工单 | JWT Token |
| GET | /ticketEntity/all | 获取所有工单 | JWT Token |
4.2 接口调用序列图
sequenceDiagram
participant Client
participant AuthMiddleware
participant TicketRouter
participant AccessLogService
participant TicketService
participant Database
Client->>AuthMiddleware: 请求带JWT Token
AuthMiddleware->>AuthMiddleware: 验证Token有效性
AuthMiddleware->>TicketRouter: 传递认证用户信息
TicketRouter->>AccessLogService: 记录操作审计日志
AccessLogService->>Database: 保存审计记录
TicketRouter->>TicketService: 调用业务服务
TicketService->>Database: 执行数据操作
Database-->>TicketService: 返回操作结果
TicketService-->>TicketRouter: 返回业务结果
TicketRouter-->>Client: 返回HTTP响应
参考文件:
5. 错误处理与异常管理
5.1 异常处理机制
系统采用分层的异常处理策略:
flowchart TD
A[API请求] --> B{参数验证}
B -->|通过| C[业务逻辑处理]
B -->|失败| D[返回400错误]
C --> E{数据操作}
E -->|成功| F[返回200成功]
E -->|数据不存在| G[返回404错误]
E -->|数据冲突| H[返回400错误]
E -->|系统异常| I[返回500错误]
5.2 错误代码定义
| 错误类型 | HTTP状态码 | 错误描述 | 处理方式 |
|---|---|---|---|
| 数据不存在 | 404 | 工单ID不存在 | 检查ID有效性 |
| 数据冲突 | 400 | 工单类型或状态不存在 | 验证输入参数 |
| 认证失败 | 401 | JWT Token无效 | 重新登录获取Token |
| 系统异常 | 500 | 服务器内部错误 | 查看服务器日志 |
参考文件:
6. 性能分析与优化建议
6.1 数据库查询优化
- 索引策略:在
ticket_id、ticket_status、created_at字段建立索引 - 分页查询:大量数据查询时使用分页机制,避免内存溢出
- 关联查询:合理使用预加载减少N+1查询问题
6.2 缓存策略建议
flowchart LR
A[API请求] --> B{缓存命中?}
B -->|是| C[返回缓存数据]
B -->|否| D[查询数据库]
D --> E[更新缓存]
E --> F[返回数据]
7. 索引
本文档全面分析了邮轮穿舱件管理系统后台的工单模型设计,涵盖了数据模型、状态管理、处理记录、API设计和系统架构等方面。系统采用分层架构设计,具有良好的可扩展性和维护性。
关键特性:
- 完整的工单生命周期管理
- 详细的审计日志记录
- RESTful API接口设计
- 完善的错误处理机制
- 模块化的服务架构
参考文件汇总: