-- ============================================================================= -- 友通达新系统 · 询价后台业务表(inquiry_robot) -- 用途:分析看板 / 询价工单 / 员工岗位 / 机器人回复语 -- 排除:报价模板、识别任务、报价生成、存档死信 -- 说明:只对 inquiry_robot 执行;禁止对现网 jeecg-boot 执行。 -- ============================================================================= SET NAMES utf8mb4; -- --------------------------------------------------------------------------- -- 询价工单(六态 Owner) -- 状态约定:询价中 / 已报价 / 协商中 / 已成交 / 未成交 / 已关闭 -- --------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS `inq_ticket` ( `id` varchar(32) NOT NULL COMMENT '主键', `work_order_no` varchar(40) NOT NULL COMMENT '工单号', `sales_wecom_id` varchar(128) DEFAULT NULL COMMENT '发起销售企微 userid(入站 sender_id)', `sales_name` varchar(100) DEFAULT NULL COMMENT '销售展示名', `customer_name` varchar(200) DEFAULT NULL COMMENT '客户名称', `business_line` varchar(16) NOT NULL COMMENT '业务线 SEA/AIR/LAND', `biz_type_label` varchar(32) DEFAULT NULL COMMENT '展示用业务类型:海运/空运/陆运', `origin` varchar(200) DEFAULT NULL COMMENT '起运地', `destination` varchar(200) DEFAULT NULL COMMENT '目的地', `demand_title` varchar(500) DEFAULT NULL COMMENT '需求标题(路线摘要)', `demand_detail` text COMMENT '需求详情文本', `goods_name` varchar(200) DEFAULT NULL COMMENT '品名', `pieces` int DEFAULT NULL COMMENT '件数', `weight_kg` decimal(18,3) DEFAULT NULL COMMENT '重量KG', `volume_cbm` decimal(18,4) DEFAULT NULL COMMENT '体积CBM', `status` varchar(32) NOT NULL DEFAULT '询价中' COMMENT '六态', `cost_price` varchar(64) DEFAULT NULL COMMENT '成本价展示串', `sale_price` varchar(64) DEFAULT NULL COMMENT '售价展示串', `profit_rate` varchar(32) DEFAULT NULL COMMENT '毛利率展示串', `tms_hit` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否命中 TMS 标准价', `manual_quote` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否含手工报价', `event_exception` varchar(200) DEFAULT NULL COMMENT '事件异常摘要,无则空', `system_exception` varchar(200) DEFAULT NULL COMMENT '系统异常摘要,无则空', `system_exception_reason` varchar(500) DEFAULT NULL COMMENT '系统异常原因', `close_reason` varchar(500) DEFAULT NULL COMMENT '关单原因', `version` int NOT NULL DEFAULT 1 COMMENT '乐观锁/业务版本', `create_by` varchar(50) DEFAULT NULL, `create_time` datetime DEFAULT NULL, `update_by` varchar(50) DEFAULT NULL, `update_time` datetime DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `uk_inq_ticket_no` (`work_order_no`), KEY `idx_inq_ticket_status_time` (`status`,`create_time`), KEY `idx_inq_ticket_sales` (`sales_wecom_id`,`create_time`), KEY `idx_inq_ticket_line` (`business_line`,`create_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='询价工单'; -- --------------------------------------------------------------------------- -- 运输段(多段预留;本期列表可不展示) -- --------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS `inq_ticket_segment` ( `id` varchar(32) NOT NULL, `ticket_id` varchar(32) NOT NULL COMMENT '工单 id', `work_order_no` varchar(40) NOT NULL, `seg_index` int NOT NULL DEFAULT 1 COMMENT '段序号从 1 起', `origin` varchar(200) DEFAULT NULL, `destination` varchar(200) DEFAULT NULL, `business_line` varchar(16) DEFAULT NULL, `payload_json` longtext COMMENT '段级字段快照 JSON', `create_time` datetime DEFAULT NULL, `update_time` datetime DEFAULT NULL, PRIMARY KEY (`id`), KEY `idx_inq_seg_ticket` (`ticket_id`), KEY `idx_inq_seg_wo` (`work_order_no`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='询价工单运输段'; -- --------------------------------------------------------------------------- -- 六态流转日志(时间线) -- --------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS `inq_ticket_status_log` ( `id` varchar(32) NOT NULL, `ticket_id` varchar(32) NOT NULL, `work_order_no` varchar(40) NOT NULL, `from_status` varchar(32) DEFAULT NULL, `to_status` varchar(32) NOT NULL, `action` varchar(64) NOT NULL COMMENT 'transition / close / retry / abnormal_handle', `operator` varchar(100) DEFAULT NULL COMMENT '操作人登录名或系统', `remark` varchar(1000) DEFAULT NULL, `create_time` datetime DEFAULT NULL, PRIMARY KEY (`id`), KEY `idx_inq_status_log_wo` (`work_order_no`,`create_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='工单状态流转日志'; -- --------------------------------------------------------------------------- -- 报价快照(只读展示;不做模板管理) -- --------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS `inq_quote` ( `id` varchar(32) NOT NULL, `ticket_id` varchar(32) NOT NULL, `work_order_no` varchar(40) NOT NULL, `quote_version` int NOT NULL DEFAULT 1 COMMENT '报价版本号', `source` varchar(64) NOT NULL COMMENT 'TMS / MANUAL / CUSTOMER', `source_label` varchar(200) DEFAULT NULL COMMENT '展示来源名', `price_text` varchar(128) DEFAULT NULL COMMENT '价格展示串', `highlighted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否高亮(采用候选)', `payload_json` longtext COMMENT '费用明细等 JSON', `create_time` datetime DEFAULT NULL, `update_time` datetime DEFAULT NULL, PRIMARY KEY (`id`), KEY `idx_inq_quote_wo` (`work_order_no`,`quote_version`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='工单报价快照(只读)'; -- --------------------------------------------------------------------------- -- 附件元数据(只存指针,不存文件字节) -- --------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS `inq_attachment` ( `id` varchar(32) NOT NULL, `ticket_id` varchar(32) NOT NULL, `work_order_no` varchar(40) NOT NULL, `file_name` varchar(255) NOT NULL, `object_key` varchar(500) DEFAULT NULL COMMENT '对象存储键', `content_type` varchar(128) DEFAULT NULL, `file_size` bigint DEFAULT NULL, `create_time` datetime DEFAULT NULL, PRIMARY KEY (`id`), KEY `idx_inq_attach_wo` (`work_order_no`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='工单附件元数据'; -- --------------------------------------------------------------------------- -- 异常单(系统异常 handle / retry) -- --------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS `inq_exception_case` ( `id` varchar(32) NOT NULL, `ticket_id` varchar(32) NOT NULL, `work_order_no` varchar(40) NOT NULL, `case_type` varchar(32) NOT NULL COMMENT 'EVENT / SYSTEM', `title` varchar(200) NOT NULL, `reason` varchar(1000) DEFAULT NULL, `status` varchar(32) NOT NULL DEFAULT 'OPEN' COMMENT 'OPEN / HANDLED / RETRYING / CLOSED', `retry_count` int NOT NULL DEFAULT 0, `last_retry_at` datetime DEFAULT NULL, `handled_by` varchar(100) DEFAULT NULL, `handled_at` datetime DEFAULT NULL, `create_time` datetime DEFAULT NULL, `update_time` datetime DEFAULT NULL, PRIMARY KEY (`id`), KEY `idx_inq_exc_wo` (`work_order_no`,`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='询价异常单'; -- --------------------------------------------------------------------------- -- 员工岗位(业务角色,非 Jeecg 登录账号) -- role: sales / air / sea / land -- --------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS `inq_staff_role` ( `id` varchar(32) NOT NULL, `name` varchar(100) NOT NULL COMMENT '姓名', `wecom_id` varchar(128) NOT NULL COMMENT '企微 userid', `mobile` varchar(32) DEFAULT NULL COMMENT '手机(可脱敏展示)', `depart_name` varchar(128) DEFAULT NULL COMMENT '部门', `role_code` varchar(32) NOT NULL COMMENT 'sales/air/sea/land', `role_label` varchar(64) DEFAULT NULL COMMENT '展示角色名', `routes` varchar(500) DEFAULT NULL COMMENT '负责线路,销售可为空', `notify_event_exception` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否接收事件异常提醒', `status` varchar(16) NOT NULL DEFAULT 'active' COMMENT 'active/disabled', `create_by` varchar(50) DEFAULT NULL, `create_time` datetime DEFAULT NULL, `update_by` varchar(50) DEFAULT NULL, `update_time` datetime DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `uk_inq_staff_wecom` (`wecom_id`), KEY `idx_inq_staff_role` (`role_code`,`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='询价业务员工岗位'; -- --------------------------------------------------------------------------- -- 机器人回复语 -- --------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS `inq_bot_reply` ( `id` varchar(32) NOT NULL, `category_code` varchar(64) NOT NULL COMMENT '分类:inquiring/quoted/deal/...', `category_title` varchar(100) DEFAULT NULL COMMENT '分类中文名', `trigger_scene` varchar(255) NOT NULL COMMENT '触发场景说明', `reply_text` text NOT NULL COMMENT '回复正文,可含 {{变量}}', `enabled` tinyint(1) NOT NULL DEFAULT 1, `sort_no` int NOT NULL DEFAULT 0, `remark` varchar(500) DEFAULT NULL, `create_by` varchar(50) DEFAULT NULL, `create_time` datetime DEFAULT NULL, `update_by` varchar(50) DEFAULT NULL, `update_time` datetime DEFAULT NULL, PRIMARY KEY (`id`), KEY `idx_inq_reply_cat` (`category_code`,`enabled`,`sort_no`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='机器人回复语'; -- --------------------------------------------------------------------------- -- 看板日快照(可选;无行时 metrics 实时聚合 inq_ticket) -- --------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS `inq_dashboard_snapshot` ( `id` varchar(32) NOT NULL, `snap_date` date NOT NULL COMMENT '统计日', `metrics_json` longtext NOT NULL COMMENT '指标 JSON', `create_time` datetime DEFAULT NULL, `update_time` datetime DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `uk_inq_dash_date` (`snap_date`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='分析看板日快照';