跳到主要内容

工单模型设计文档

文档概述

本文档详细记录了邮轮穿舱件管理系统后台的工单系统数据模型设计,包括工单状态、处理记录、数据模型关系以及系统架构。通过分析代码库中的相关文件,提供了完整的工单系统技术实现文档。

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_fromticket_tos 记录工单流转路径
  • 内容管理ticket_contentticket_title 存储工单详细信息
  • 反馈信息feedback_text 记录处理反馈
  • 附件管理image_listreference_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_titleaction_description 记录具体操作内容
  • 关联关系related_usersrelated_ticketsrelated_workpieces 建立操作关联
  • 审计信息created_byupdated_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工单类型或状态不存在验证输入参数
认证失败401JWT Token无效重新登录获取Token
系统异常500服务器内部错误查看服务器日志

参考文件:

6. 性能分析与优化建议

6.1 数据库查询优化

  • 索引策略:在 ticket_idticket_statuscreated_at 字段建立索引
  • 分页查询:大量数据查询时使用分页机制,避免内存溢出
  • 关联查询:合理使用预加载减少N+1查询问题

6.2 缓存策略建议

flowchart LR
A[API请求] --> B{缓存命中?}
B -->|是| C[返回缓存数据]
B -->|否| D[查询数据库]
D --> E[更新缓存]
E --> F[返回数据]

7. 索引

本文档全面分析了邮轮穿舱件管理系统后台的工单模型设计,涵盖了数据模型、状态管理、处理记录、API设计和系统架构等方面。系统采用分层架构设计,具有良好的可扩展性和维护性。

关键特性:

  • 完整的工单生命周期管理
  • 详细的审计日志记录
  • RESTful API接口设计
  • 完善的错误处理机制
  • 模块化的服务架构

参考文件汇总: