gogo-agent

行程管理相关业务数据模型

差旅的行程管理部分,我们主要有两个业务单据: 差旅申请单(travel order):出差的"意图"——去哪、什么时候、为什么,要走审批、要长期留存、要做冲突检测。 差旅审批单(approval record):差旅单提交后产生的审…

TL;DR

差旅的行程管理部分,我们主要有两个业务单据: 差旅申请单(travel order):出差的"意图"——去哪、什么时候、为什么,要走审批、要长期留存、要做冲突检测。 差旅审批单(approval record):差旅单提交后产生的审…

差旅的行程管理部分,我们主要有两个业务单据: - 差旅申请单(travel_order):出差的"意图"——去哪、什么时候、为什么,要走审批、要长期留存、要做冲突检测。 - 差旅审批单(approval_record):差旅单提交后产生的审批流程实例,记录审批状态流转(待审批→通过/拒绝/撤销)和一份提交时的审批表单快照。 差旅申请单和差旅审批单之间的关系是1对多的,但是大部分情况下都是1对1,除非某个审批被拒绝,然后重新发起新的审批。 先看 travel_order(差旅申请单):

CREATE TABLE IF NOT EXISTS `travel_order` (
    `order_id`       VARCHAR(64)  NOT NULL COMMENT '差旅单ID',      -- 应用生成的主键(非自增)
    `user_id`        VARCHAR(64)  NOT NULL COMMENT '申请人ID',
    `destination`    VARCHAR(256) DEFAULT NULL COMMENT '目的地',
    `departure_city` VARCHAR(128) DEFAULT NULL COMMENT '出发城市',
    `departure_date` VARCHAR(32)  DEFAULT NULL COMMENT '出发日期',   -- 注意:日期存字符串,不是 DATE
    `return_date`    VARCHAR(32)  DEFAULT NULL COMMENT '返回日期',
    `purpose`        VARCHAR(512) DEFAULT NULL COMMENT '出差事由',
    `status`         VARCHAR(32)  NOT NULL DEFAULT 'DRAFT' COMMENT '状态: DRAFT/SUBMITTED/APPROVED/REJECTED/COMPLETED/CANCELLED',
    `approval_id`    VARCHAR(64)  DEFAULT NULL COMMENT '关联审批单ID',
    `created_at`     DATETIME     DEFAULT NULL,
    `updated_at`     DATETIME     DEFAULT NULL,
    PRIMARY KEY (`order_id`),
    KEY `idx_user_id` (`user_id`),
    KEY `idx_user_status` (`user_id`, `status`)   -- 支撑"查我的某状态差旅单"
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '差旅申请单';

TravelOrderStatus的状态机:DRAFT(草稿) → SUBMITTED(审批中) → APPROVED(已通过) / REJECTED(已拒绝) → COMPLETED(已完成) / CANCELLED(已取消)。 approval_record(差旅审批记录),它是差旅单提交审批后产生的流程实例:

CREATE TABLE IF NOT EXISTS `approval_record` (
    `process_instance_id` VARCHAR(64)   NOT NULL COMMENT '审批流程实例ID',   -- 应用生成 pi_+时间戳,非自增
    `user_id`             VARCHAR(64)   NOT NULL COMMENT '申请人ID',
    `title`               VARCHAR(256)  DEFAULT NULL COMMENT '审批标题',
    `status`              VARCHAR(32)   NOT NULL DEFAULT 'PENDING' COMMENT '状态: PENDING/APPROVED/REJECTED/CANCELLED',
    `approval_form`       TEXT          DEFAULT NULL COMMENT '审批表单JSON',   -- 注意:是 TEXT,不是 JSON 列
    `remark`              VARCHAR(512)  DEFAULT NULL COMMENT '备注(审批意见)',
    `submit_time`         DATETIME      DEFAULT NULL COMMENT '提交时间',
    `update_time`         DATETIME      DEFAULT NULL COMMENT '最后更新时间',
    `order_id`            VARCHAR(64)   DEFAULT NULL COMMENT '关联差旅单ID',   -- 反指 travel_order.order_id
    PRIMARY KEY (`process_instance_id`),
    KEY `idx_user_id` (`user_id`),
    KEY `idx_order_id` (`order_id`),
    KEY `idx_order_submit` (`order_id`, `submit_time`)   -- 支撑"取某差旅单最近一次审批"
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '差旅审批记录';

ApprovalRecordStatus共 4 态:PENDING(待审批) → APPROVED(已通过) / REJECTED(已拒绝) / CANCELLED(已撤销)。

版本提示

模型、框架与接口会持续变化。涉及版本号、参数与生产配置时,请在实践前对照对应官方文档。

LLMentor系统化学习大模型应用工程

内容来自个人课程知识库备份,并经过结构化整理。技术版本持续演进,生产使用前请结合官方文档验证。