跳到主要内容

工件API文档

概述

本文档详细记录了邮轮穿舱件管理系统后台的工件管理相关接口,包括工件基本信息管理、工件状态更新、工件信息查询等功能。系统采用FastAPI框架构建,支持JWT身份验证,并实现了完整的CRUD操作。

系统架构

整体架构图

flowchart TD
subgraph 客户端层
A[Web前端]
B[移动端]
C[第三方系统]
end

subgraph API网关层
D[FastAPI应用]
end

subgraph 业务逻辑层
E[工件路由器]
F[工件信息路由器]
G[服务层]
end

subgraph 数据访问层
H[工件模型]
I[工件信息模型]
end

subgraph 数据存储层
J[PostgreSQL]
K[MongoDB]
end

A --> D
B --> D
C --> D
D --> E
D --> F
E --> G
F --> G
G --> H
G --> I
H --> J
I --> K

核心组件关系图

classDiagram
class WorkpieceRouter {
+APIRouter workpiece_unit_router
+api_create_workpiece()
+api_get_workpiece()
+api_delete_workpiece()
+api_update_workpiece_status()
}

class WorkpieceInfoRouter {
+APIRouter workpiece_info_router
+api_create_workpiece_info()
+api_get_workpiece_info()
+api_get_all_workpiece_infos()
+api_update_workpiece_info()
+api_delete_workpiece_info()
+api_search_workpiece_infos_by_code()
}

class WorkpieceService {
+service_create_workpiece()
+service_get_workpiece_by_id()
+service_get_all_workpieces()
+service_update_workpiece()
+service_delete_workpiece()
+service_update_workpiece_status()
}

class WorkpieceInfoService {
+service_create_workpiece_info()
+service_get_workpiece_info_by_wp_id()
+service_get_all_workpiece_infos()
+service_update_workpiece_info()
+service_delete_workpiece_info()
+service_search_workpiece_infos_by_code()
}

class Workpiece {
+workpiece_id: IntField
+workpiece_status: IntField
+inspect_reference: IntField
+maintainance_reference: IntField
+created_by: IntField
+updated_by: IntField
+created_at: DatetimeField
+updated_at: DatetimeField
}

class WorkpieceInfo {
+wp_id: str
+wp_firestop_code: str
+wp_matrial: str
+wp_size: str
+wp_fire_rating: str
+wp_watertightness: str
+wp_main_vertical_zone: str
+wp_installation_location: str
+wp_z_coordinate: str
+wp_frame_station: str
+wp_longitudinal_stiffener: str
+wp_sap1: str
+wp_sap2: str
+wp_standard_drawing_catalogue: str
+wp_extra: str
}

WorkpieceRouter --> WorkpieceService : 调用
WorkpieceInfoRouter --> WorkpieceInfoService : 调用
WorkpieceService --> Workpiece : 操作
WorkpieceInfoService --> WorkpieceInfo : 操作

数据模型

工件模型 (Workpiece)

工件模型用于存储工件的基本信息,采用PostgreSQL关系型数据库存储。

字段说明:

  • workpiece_id: 工件ID,主键
  • workpiece_status: 工件状态,整数类型
  • inspect_reference: 视检参考工单ID
  • maintainance_reference: 维护参考工单ID
  • created_by: 创建人ID
  • updated_by: 更新人ID
  • created_at: 创建时间
  • updated_at: 更新时间

参考文件:

工件信息模型 (WorkpieceInfo)

工件信息模型用于存储工件的详细信息,采用MongoDB文档数据库存储。

字段说明:

  • wp_id: 工件ID,字符串类型
  • wp_firestop_code: 防火板代号
  • wp_matrial: 材料
  • wp_size: 规格
  • wp_fire_rating: 防火等级
  • wp_watertightness: 水密等级
  • wp_main_vertical_zone: 主竖区
  • wp_installation_location: 安装位置
  • wp_z_coordinate: Z坐标
  • wp_frame_station: 肋位
  • wp_longitudinal_stiffener: 纵桁
  • wp_sap1: SAP1
  • wp_sap2: SAP2
  • wp_standard_drawing_catalogue: 图册章节
  • wp_extra: 额外信息

参考文件:

API接口详情

工件管理接口

1. 创建工件

接口路径: POST /workpiece/

功能描述: 创建新的工件实体

请求参数:

响应数据:

{
"workpiece_id": 1,
"workpiece_status": 0,
"inspect_reference": 0,
"maintainance_reference": 0,
"created_by": -1,
"updated_by": -1,
"created_at": "2024-01-01T00:00:00",
"updated_at": "2024-01-01T00:00:00"
}

状态码:

  • 201: 创建成功
  • 400: 请求参数错误
  • 500: 服务器内部错误

参考文件:

2. 获取所有工件

接口路径: GET /workpiece/all

功能描述: 获取系统中所有工件实体

请求参数:

响应数据:

[
{
"workpiece_id": 1,
"workpiece_status": 0,
"inspect_reference": 0,
"maintainance_reference": 0,
"created_by": -1,
"updated_by": -1,
"created_at": "2024-01-01T00:00:00",
"updated_at": "2024-01-01T00:00:00"
}
]

参考文件:

3. 删除工件

接口路径: DELETE /workpiece/{wp_id}

功能描述: 根据ID删除工件实体

请求参数:

  • wp_id: 工件ID(路径参数)

响应数据:

{
"message": "Workpiece deleted successfully"
}

状态码:

  • 200: 删除成功
  • 404: 工件不存在
  • 500: 服务器内部错误

参考文件:

4. 更新工件状态

接口路径: PUT /workpiece/{wp_id}/status

功能描述: 根据ID更新工件状态

请求参数:

  • wp_id: 工件ID(路径参数)
  • status: 新状态(查询参数)

响应数据:

{
"workpiece_id": 1,
"workpiece_status": 1,
"inspect_reference": 0,
"maintainance_reference": 0,
"created_by": -1,
"updated_by": -1,
"created_at": "2024-01-01T00:00:00",
"updated_at": "2024-01-01T00:00:00"
}

状态码:

  • 200: 更新成功
  • 404: 工件不存在
  • 500: 服务器内部错误

参考文件:

工件信息管理接口

1. 创建工件信息

接口路径: POST /workpiece-info/

功能描述: 创建新的工件信息记录

请求参数:

{
"wp_id": "WP001",
"wp_firestop_code": "FS001",
"wp_matrial": "不锈钢",
"wp_size": "100x100",
"wp_fire_rating": "A级",
"wp_watertightness": "IP68",
"wp_main_vertical_zone": "MZ001",
"wp_installation_location": "甲板A区",
"wp_z_coordinate": "Z100",
"wp_frame_station": "FS001",
"wp_longitudinal_stiffener": "LS001",
"wp_sap1": "SAP001",
"wp_sap2": "SAP002",
"wp_standard_drawing_catalogue": "TD001",
"wp_extra": "额外信息"
}

响应数据:

{
"wp_id": "WP001",
"wp_firestop_code": "FS001",
"wp_matrial": "不锈钢",
"wp_size": "100x100",
"wp_fire_rating": "A级",
"wp_watertightness": "IP68",
"wp_main_vertical_zone": "MZ001",
"wp_installation_location": "甲板A区",
"wp_z_coordinate": "Z100",
"wp_frame_station": "FS001",
"wp_longitudinal_stiffener": "LS001",
"wp_sap1": "SAP001",
"wp_sap2": "SAP002",
"wp_standard_drawing_catalogue": "TD001",
"wp_extra": "额外信息"
}

参考文件:

2. 获取工件信息

接口路径: GET /workpiece-info/{wp_id}

功能描述: 根据工件wp_id获取详细信息

请求参数:

  • wp_id: 工件ID(路径参数)

响应数据: 同创建接口响应数据

状态码:

  • 200: 获取成功
  • 404: 工件信息不存在

参考文件:

3. 获取工件信息列表

接口路径: GET /workpiece-info/

功能描述: 分页获取工件信息列表

请求参数:

  • skip: 跳过的记录数(默认0)
  • limit: 返回的记录数(默认100,最大1000)

响应数据:

[
{
"wp_id": "WP001",
// ... 其他字段
}
]

参考文件:

4. 更新工件信息

接口路径: PUT /workpiece-info/{wp_id}

功能描述: 根据wp_id更新工件信息

请求参数:

  • wp_id: 工件ID(路径参数)
  • 更新数据(部分字段可选)

响应数据: 更新后的工件信息

参考文件:

5. 删除工件信息

接口路径: DELETE /workpiece-info/{wp_id}

功能描述: 根据wp_id删除工件信息

请求参数:

  • wp_id: 工件ID(路径参数)

响应数据:

状态码:

  • 200: 删除成功
  • 404: 工件信息不存在

参考文件:

6. 搜索工件信息

接口路径: GET /workpiece-info/search/by-code

功能描述: 根据防火板代号模糊搜索工件信息

请求参数:

  • code: 防火板代号(查询参数)

响应数据: 匹配的工件信息列表

参考文件:

数据流图

工件创建流程

sequenceDiagram
participant Client as 客户端
participant Router as WorkpieceRouter
participant Service as WorkpieceService
participant Model as Workpiece
participant DB as PostgreSQL

Client->>Router: POST /workpiece/
Router->>Service: service_create_workpiece()
Service->>Model: Workpiece.create()
Model->>DB: INSERT INTO workpieces
DB-->>Model: 返回新记录
Model-->>Service: 返回Workpiece对象
Service-->>Router: 返回工件数据
Router-->>Client: 201 Created

工件信息查询流程

sequenceDiagram
participant Client as 客户端
participant Router as WorkpieceInfoRouter
participant Service as WorkpieceInfoService
participant Model as WorkpieceInfo
participant DB as MongoDB

Client->>Router: GET /workpiece-info/{wp_id}
Router->>Service: service_get_workpiece_info_by_wp_id(wp_id)
Service->>Model: WorkpieceInfo.find_one({"wp_id": wp_id})
Model->>DB: db.workpiece_info.findOne({wp_id: wp_id})
DB-->>Model: 返回文档
Model-->>Service: 返回WorkpieceInfo对象
Service-->>Router: 返回工件信息
Router-->>Client: 200 OK

依赖关系分析

模块依赖图

flowchart TD
A[workpiece_router.py] --> B[workpiece_service.py]
A --> C[access_log_service.py]
A --> D[authorize.py]

E[workpiece_info_router.py] --> F[workpiece_info_service.py]
E --> C
E --> D

B --> G[workpiece.py]
F --> H[mg_workpiece_info.py]

G --> I[PostgreSQL]
H --> J[MongoDB]

style A fill:#e1f5fe
style E fill:#e1f5fe
style B fill:#f3e5f5
style F fill:#f3e5f5
style G fill:#e8f5e8
style H fill:#e8f5e8

服务层依赖关系

工件服务层依赖:

  • 依赖模型:Workpiece
  • 依赖数据库:PostgreSQL
  • 异常处理:HTTPException, DoesNotExist, IntegrityError

工件信息服务层依赖:

  • 依赖模型:WorkpieceInfo
  • 依赖数据库:MongoDB
  • 异常处理:HTTPException, bson.ObjectId

错误处理机制

统一错误处理

系统采用统一的错误处理机制,所有接口都包含完整的异常处理:

  1. 业务逻辑错误:返回400状态码,包含具体错误信息
  2. 资源不存在:返回404状态码
  3. 服务器内部错误:返回500状态码,记录详细日志
  4. 数据库约束错误:处理唯一性约束等数据库级错误

访问日志记录

所有接口调用都会自动记录访问日志,包括:

  • 操作类型和标题
  • 操作用户
  • 相关工件和工单
  • 操作时间戳

参考文件:

安全机制

JWT身份验证

所有工件管理接口都需要JWT令牌验证,确保只有授权用户才能访问。

验证流程:

  1. 客户端在请求头中包含Authorization: Bearer {token}
  2. 系统验证token的有效性
  3. 验证通过后,将用户信息存储在请求上下文中

参考文件:

性能优化建议

数据库优化

  1. 索引优化:为常用查询字段创建索引

    • Workpiece表的workpiece_id主键索引
    • WorkpieceInfo表的wp_id唯一索引
    • WorkpieceInfo表的wp_firestop_code搜索索引
  2. 查询优化:使用分页查询避免大数据量返回

  3. 连接池:配置数据库连接池提高并发性能

缓存策略

对于频繁查询但不经常变更的数据,可以考虑引入Redis缓存:

  • 工件基本信息缓存
  • 工件状态缓存
  • 常用搜索条件缓存

索引

本文档详细记录了邮轮穿舱件管理系统后台的工件管理API接口,涵盖了工件基本信息管理和工件详细信息管理的完整功能。系统采用分层架构设计,实现了清晰的职责分离和完整的错误处理机制。所有接口都支持JWT身份验证和访问日志记录,确保了系统的安全性和可追溯性。

核心文件参考: