Merge remote-tracking branch 'origin/test' into test
# Conflicts: # deploy/sql/README.md
This commit is contained in:
Vendored
-1
@@ -30,7 +30,6 @@ SELFOP_SOURCE_ACCOUNT=lingxing-primary
|
||||
# 未核准额度使用0,真实出口拒绝请求;有效模式仍需显式的独占交接证明与截止时间。
|
||||
SELFOP_DAILY_REQUEST_BUDGET=0
|
||||
SELFOP_MIN_REQUEST_INTERVAL_MS=5000
|
||||
SELFOP_EXECUTION_ENABLED=false
|
||||
SELFOP_SALES_PUBLICATION_ENABLED=false
|
||||
REDIS_PASSWORD=
|
||||
AUTH_DB_URL=jdbc:mysql://host.docker.internal:3306/baiyue_auth?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
|
||||
|
||||
@@ -30,6 +30,8 @@
|
||||
|
||||
客户/商品资料基线为 `lastleg-service/src/main/resources/db/selfop-master-data.sql`,仅新增 `ll_selfop_owner`、`ll_selfop_product` 两表,并同步在 Lastleg 和海外统一空库基线。按来源账号、货主编码、SKU 和完整资料版本关联,不创建平台客户、收费对象或独立映射表;未知实测尺寸保持 NULL。对 TEST 已有库只审阅并授权这两张新表的 CREATE,不能重放统一初始化文件,也不重置采集数据。
|
||||
|
||||
历史库存还原基线为 `lastleg-service/src/main/resources/db/selfop-inventory-history.sql`,新增流水事实、历史日版本和日库存三表;同步 Lastleg 与海外空库基线。仅执行这三表 CREATE,不重放原始库存或销量表。匹配版本复用 `sync_task/run/stage` 的 `INVENTORY_FLOW_HISTORY`、`INVENTORY_HISTORY_BUILD` 与 `INVENTORY_FLOW/HISTORY_INPUT`,原库存快照不改写。完成三表并部署 Integration、Lastleg、Admin 后,才启用 `baiyue.self-operated-analytics.inventory-history-enabled=true`;默认关闭,历史目标30日优先再60日。保留当前账号出口、1200ms间隔和所有被历史版本引用的证据;现有销量副本淘汰不得删除这些引用。
|
||||
|
||||
## 唯一入口与区域边界
|
||||
|
||||
两个统一 SQL 文件仍只用于空库初始化,名称中的“增量”不表示可向已有业务库重放。已有生产库的受控结构补齐单独放在 `migrations/`,只允许明确审阅过的增量变更;不提供存量数据回填、清理或兼容入口。
|
||||
@@ -37,7 +39,7 @@
|
||||
| 区域 | 完整入口 | 服务 schema | 表数 |
|
||||
|---|---|---|---:|
|
||||
| 国内 | `头程数据库统一增量-MySQL8.sql` | `baiyue_auth`、`baiyue_iam`、`baiyue_order`、`baiyue_warehouse`、`baiyue_firstleg`、`baiyue_file`、`baiyue_audit`、`baiyue_finance` | 226 |
|
||||
| 海外 | `海外区域统一增量-MySQL8.sql` | `baiyue_lastleg`、`baiyue_lastlag_warehouse` | 199 |
|
||||
| 海外 | `海外区域统一增量-MySQL8.sql` | `baiyue_lastleg`、`baiyue_lastlag_warehouse` | 202 |
|
||||
|
||||
- 所有服务位于同一测试环境;两份文件只分组组织服务 schema,不代表两个部署区域。`baiyue_lastlag_warehouse` 保留当前正式的 `lastlag` 拼写。
|
||||
- 两份文件必须在同一测试数据库实例中完成初始化;业务服务仍只访问本服务 schema,经内部接口访问 IAM/Warehouse。已移除事件桥两个 schema 的创建,不对已有数据库执行 DROP。
|
||||
@@ -150,4 +152,6 @@ node --test scripts/admin-test-env-modules/initialization-baseline-contract.test
|
||||
|
||||
`migrations/overseas/baiyue_lastleg/V24__cargo_discard_photos.sql` 仅新增废弃照片关联表,按客户、申请和托盘关联文件及提交时间。与 Lastleg、File 和三端照片功能共同发布;不回填历史废弃单,不修改库存。脚本存在不表示目标环境已执行。
|
||||
|
||||
自营库存周转后端导出权限见 `selfop-turnover-export-permission.sql`,仅新增 `platform:self-operated-analytics:export` 并授予平台管理员;同步 IAM 自营权限源及国内统一基线。配套部署 Lastleg、File、Admin,File 注册 `SELFOP_INVENTORY_TURNOVER`(Nacos同名配置同步);无业务建表及采集配置变更。执行前须逐项授权。
|
||||
|
||||
货物废弃通用库存与散箱字段迁移:`migrations/overseas/baiyue_lastleg/V25__cargo_discard_generic_inventory.sql`。新增库存仓位关联及箱唛快照,须先迁移再部署 Lastleg;不回填历史废弃单。
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
-- 自营库存周转后端导出权限;不建表,不修改销量、库存或采集任务。
|
||||
USE baiyue_iam;
|
||||
SET NAMES utf8mb4;
|
||||
START TRANSACTION;
|
||||
INSERT INTO iam_permission (id,tenant_id,app_code,permission_type,parent_id,permission_code,permission_name,route_path,http_method,sort_no,status,built_in,created_at,updated_at,deleted) VALUES
|
||||
(5118002,0,'PLATFORM','API',5118120,'platform:self-operated-analytics:export','导出平台自营库存周转','/api/platform/v1/files/export-tasks','POST',20,'ACTIVE',1,CURRENT_TIMESTAMP(3),CURRENT_TIMESTAMP(3),0)
|
||||
ON DUPLICATE KEY UPDATE permission_name=VALUES(permission_name),route_path=VALUES(route_path),http_method=VALUES(http_method),status='ACTIVE',deleted=0,updated_at=CURRENT_TIMESTAMP(3);
|
||||
INSERT INTO iam_role_permission (role_id,permission_id,tenant_id,created_at)
|
||||
SELECT 4000001,5118002,0,CURRENT_TIMESTAMP(3)
|
||||
WHERE NOT EXISTS (SELECT 1 FROM iam_role_permission WHERE role_id=4000001 AND permission_id=5118002 AND tenant_id=0);
|
||||
COMMIT;
|
||||
@@ -8323,10 +8323,12 @@ INSERT INTO iam_permission (id,tenant_id,app_code,permission_type,parent_id,perm
|
||||
(5118120,0,'PLATFORM','MENU',5118100,'platform:self-operated:inventory:menu','库存分析','/self-operated/inventory','GET',20,'ACTIVE',1,CURRENT_TIMESTAMP(3),CURRENT_TIMESTAMP(3),0),
|
||||
(5118130,0,'PLATFORM','MENU',5118100,'platform:self-operated:collection:menu','数据采集','/self-operated/collection','GET',30,'ACTIVE',1,CURRENT_TIMESTAMP(3),CURRENT_TIMESTAMP(3),0),
|
||||
(5118000,0,'PLATFORM','API',5118100,'platform:self-operated-analytics:list','读取平台自营出库销量与库存分析','/api/platform/v1/last-leg/self-operated-analytics','GET',40,'ACTIVE',1,CURRENT_TIMESTAMP(3),CURRENT_TIMESTAMP(3),0),
|
||||
(5118002,0,'PLATFORM','API',5118120,'platform:self-operated-analytics:export','导出平台自营库存周转','/api/platform/v1/files/export-tasks','POST',20,'ACTIVE',1,CURRENT_TIMESTAMP(3),CURRENT_TIMESTAMP(3),0),
|
||||
(5118001,0,'PLATFORM','API',5118130,'platform:self-operated-analytics:sync','平台自营采集重试与重采集','/api/platform/v1/last-leg/self-operated-analytics/sync-tasks','POST',10,'ACTIVE',1,CURRENT_TIMESTAMP(3),CURRENT_TIMESTAMP(3),0);
|
||||
INSERT INTO iam_role_permission (role_id,permission_id,tenant_id,created_at) VALUES
|
||||
(4000001,5118000,0,CURRENT_TIMESTAMP(3)),
|
||||
(4000001,5118001,0,CURRENT_TIMESTAMP(3)),
|
||||
(4000001,5118002,0,CURRENT_TIMESTAMP(3)),
|
||||
(4000001,5118100,0,CURRENT_TIMESTAMP(3)),
|
||||
(4000001,5118140,0,CURRENT_TIMESTAMP(3)),
|
||||
(4000001,5118110,0,CURRENT_TIMESTAMP(3)),
|
||||
|
||||
@@ -4007,7 +4007,7 @@ CREATE TABLE ll_selfop_sync_task (
|
||||
observation_baseline BIGINT NULL COMMENT '共享任务建立时已分配的最大详情采集代次,分仓子任务继承;用于识别旧任务恢复期间出现的其他任务新观测',
|
||||
request_key VARCHAR(128) NOT NULL COMMENT '共享发现包含切片/计划槽位;分仓任务包含仓库、任务族及切片或计划槽位;人工附请求幂等键',
|
||||
request_hash CHAR(64) NOT NULL COMMENT '请求类型、查询范围、范围摘要的指纹;同键不同请求拒绝',
|
||||
task_type VARCHAR(24) NOT NULL COMMENT 'SCHEDULED、MANUAL_RETRY、BACKFILL、RECHECK、REBUILD、VALIDATION;验证不由自动计划创建',
|
||||
task_type VARCHAR(24) NOT NULL COMMENT '计划、补采、复核、重建与验证;INVENTORY_FLOW_HISTORY为流水片,INVENTORY_HISTORY_BUILD为本地历史还原',
|
||||
planned_at_utc DATETIME(3) NULL COMMENT '计划时点;人工请求可空',
|
||||
query_from_utc DATETIME(3) NULL COMMENT '出库查询区间UTC下界,库存不填',
|
||||
query_until_utc DATETIME(3) NULL COMMENT '出库查询区间UTC上界,不含端点,库存不填',
|
||||
@@ -4386,3 +4386,88 @@ CREATE TABLE ll_selfop_product (
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='自营领星商品资料版本';
|
||||
|
||||
SELECT 'PASS' AS initialization_status, 'OVERSEAS' AS region, 199 AS initialized_tables;
|
||||
|
||||
USE baiyue_lastleg;
|
||||
|
||||
-- 历史库存基线;执行前必须取得指定环境的建表授权。
|
||||
CREATE TABLE IF NOT EXISTS ll_selfop_inventory_flow (
|
||||
id BIGINT NOT NULL COMMENT '应用生成的流水记录标识',
|
||||
source_account VARCHAR(64) NOT NULL COMMENT '受控来源账号',
|
||||
warehouse_code VARCHAR(64) NOT NULL COMMENT '来源仓库编码',
|
||||
customer_code VARCHAR(64) NOT NULL COMMENT '来源货主编码',
|
||||
sku_code VARCHAR(128) NOT NULL COMMENT '来源商品编码',
|
||||
source_flow_id VARCHAR(64) NOT NULL COMMENT '来源流水字符串标识',
|
||||
product_quality INT NOT NULL COMMENT '来源品质,零正品一次品,其他未知',
|
||||
cell_no VARCHAR(128) NULL COMMENT '来源库位编码',
|
||||
inner_batch_no VARCHAR(128) NULL COMMENT '来源内部批次号',
|
||||
bill_no VARCHAR(128) NULL COMMENT '来源业务单号',
|
||||
source_no VARCHAR(128) NULL COMMENT '来源关联单号',
|
||||
bill_type VARCHAR(32) NULL COMMENT '来源业务类型,未验证类型不得参与正式还原',
|
||||
book_qty DECIMAL(20,6) NULL COMMENT '来源记账增减量,未知为空',
|
||||
book_change_qty_raw VARCHAR(64) NULL COMMENT '来源带符号变动量原文',
|
||||
delta_quantity DECIMAL(20,6) NULL COMMENT '解析后的有符号实物变动量',
|
||||
close_quantity DECIMAL(20,6) NULL COMMENT '对应库位批次品质链的结存',
|
||||
source_create_time VARCHAR(64) NULL COMMENT '来源北京时间原文',
|
||||
event_at_utc DATETIME(3) NULL COMMENT '流水发生UTC时刻,无法解析时为空',
|
||||
business_date DATE NULL COMMENT '北京时间业务日期',
|
||||
quantity_unit VARCHAR(16) NULL COMMENT '已确认数量单位,未知为空',
|
||||
content_hash CHAR(64) NOT NULL COMMENT '当前事实内容摘要',
|
||||
revision_no BIGINT NOT NULL COMMENT '同来源流水单调增加的修订号',
|
||||
stage_id BIGINT NOT NULL COMMENT '当前事实对应不可变暂存证据',
|
||||
first_run_id BIGINT NOT NULL COMMENT '首次观察执行尝试',
|
||||
last_run_id BIGINT NOT NULL COMMENT '最近确认执行尝试',
|
||||
last_observed_at DATETIME(3) NOT NULL COMMENT '最近观察UTC时刻',
|
||||
validation_status VARCHAR(16) NOT NULL COMMENT '字段资格,有效或未知',
|
||||
validation_reason VARCHAR(64) NULL COMMENT '数量或身份待核验原因',
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_selfop_flow_source (source_account,warehouse_code,source_flow_id),
|
||||
KEY idx_selfop_flow_sku (source_account,warehouse_code,customer_code,sku_code,event_at_utc),
|
||||
KEY idx_selfop_flow_day (source_account,warehouse_code,business_date),
|
||||
CONSTRAINT chk_selfop_flow_revision CHECK (revision_no > 0)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='自营历史库存流水最新事实,旧版本保留于暂存证据';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ll_selfop_inventory_day_version (
|
||||
id BIGINT NOT NULL COMMENT '不可变历史日版本标识',
|
||||
source_account VARCHAR(64) NOT NULL COMMENT '受控来源账号',
|
||||
warehouse_code VARCHAR(64) NOT NULL COMMENT '来源仓库编码',
|
||||
business_date DATE NOT NULL COMMENT '北京时间日末所属日期',
|
||||
scope_hash CHAR(64) NOT NULL COMMENT '业务范围摘要',
|
||||
rule_version VARCHAR(32) NOT NULL COMMENT '日末库存还原规则版本',
|
||||
build_run_id BIGINT NOT NULL COMMENT '历史重建执行尝试',
|
||||
publication_group_id BIGINT NOT NULL COMMENT '必须一起切换的发布组标识',
|
||||
sales_run_id BIGINT NULL COMMENT '构建时固定的销量证据版本',
|
||||
anchor_run_id BIGINT NOT NULL COMMENT '固定的独立库存锚点版本',
|
||||
input_hash CHAR(64) NOT NULL COMMENT '冻结流水修订与覆盖及锚点输入摘要',
|
||||
evidence_json JSON NOT NULL COMMENT '固定输入清单及不可变证据引用',
|
||||
status VARCHAR(16) NOT NULL COMMENT '构建中、就绪、已发布、已替代或失败',
|
||||
head_slot TINYINT NULL COMMENT '当前日头为一,非当前版本为空',
|
||||
valid_sku_count BIGINT NOT NULL DEFAULT 0 COMMENT '合格商品数',
|
||||
unknown_sku_count BIGINT NOT NULL DEFAULT 0 COMMENT '待核验商品数',
|
||||
created_at DATETIME(3) NOT NULL COMMENT '版本创建UTC时刻',
|
||||
published_at DATETIME(3) NULL COMMENT '发布组提交UTC时刻',
|
||||
superseded_at DATETIME(3) NULL COMMENT '被新组替代的UTC时刻',
|
||||
invalidated_at DATETIME(3) NULL COMMENT '已确认输入失效的UTC时刻',
|
||||
invalidation_reason VARCHAR(64) NULL COMMENT '旧版本失效原因',
|
||||
rebuild_run_id BIGINT NULL COMMENT '处理失效版本的重建尝试',
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_selfop_history_head (source_account,warehouse_code,business_date,head_slot),
|
||||
UNIQUE KEY uk_selfop_history_build_day (build_run_id,business_date),
|
||||
KEY idx_selfop_history_group (publication_group_id,status),
|
||||
CONSTRAINT chk_selfop_history_head CHECK (head_slot IS NULL OR (head_slot=1 AND status='PUBLISHED'))
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='历史日库存不可变版本及原子发布日头';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ll_selfop_inventory_daily (
|
||||
day_version_id BIGINT NOT NULL COMMENT '所属历史日版本',
|
||||
customer_code VARCHAR(64) NOT NULL COMMENT '来源货主编码',
|
||||
sku_code VARCHAR(128) NOT NULL COMMENT '来源商品编码',
|
||||
product_quality INT NOT NULL COMMENT '来源库存品质',
|
||||
physical_quantity DECIMAL(20,6) NULL COMMENT '日末实物库存,未知为空,已确认零为零',
|
||||
quality_status VARCHAR(16) NOT NULL COMMENT '日末资格,有效或未知',
|
||||
quality_reason VARCHAR(64) NULL COMMENT '缺覆盖或锚点等未知原因',
|
||||
anchor_reference BIGINT NULL COMMENT '独立库存锚点版本',
|
||||
evidence_hash CHAR(64) NOT NULL COMMENT '该日计算证据摘要',
|
||||
source VARCHAR(32) NOT NULL COMMENT '库存来源标记,流水还原',
|
||||
PRIMARY KEY (day_version_id,customer_code,sku_code,product_quality),
|
||||
KEY idx_selfop_daily_identity (customer_code,sku_code,day_version_id),
|
||||
CONSTRAINT chk_selfop_daily_quantity CHECK ((quality_status='VALID' AND physical_quantity IS NOT NULL AND physical_quantity>=0) OR (quality_status='UNKNOWN' AND physical_quantity IS NULL))
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='历史日末分货主商品品质实物库存';
|
||||
|
||||
Reference in New Issue
Block a user