fix: recognize unlocked N lanes in shadow aggregation
This commit is contained in:
43
scripts/shadow-lane-lock/fixture.sql
Normal file
43
scripts/shadow-lane-lock/fixture.sql
Normal file
@@ -0,0 +1,43 @@
|
||||
-- Only synthetic fixtures; this script is run exclusively in a randomly named scratch DB.
|
||||
CREATE TABLE alg.cargo_space_snapshot(warehouse_id varchar(80),space_id varchar(80),lane_code varchar(80),depth_raw varchar(10),space_status varchar(10),locked varchar(10),tray_code varchar(80),snapshot_generation bigint);
|
||||
CREATE TABLE alg.space_inventory_summary(warehouse_id varchar(80),space_id varchar(80),stock_detail_count int,snapshot_generation bigint);
|
||||
CREATE TABLE alg.space_role(space_id varchar(80),role varchar(40));
|
||||
CREATE TABLE alg.active_job_snapshot(warehouse_id varchar(80),source_space_id varchar(80),in_or_out varchar(10),snapshot_generation bigint);
|
||||
CREATE TABLE alg.reservation(reservation_id varchar(80),space_id varchar(80),status varchar(20));
|
||||
CREATE TABLE alg.shadow_snapshot_state(warehouse_id varchar(80),snapshot_generation bigint,snapshot_status varchar(20));
|
||||
CREATE TABLE alg.lane_state(warehouse_id varchar(80),lane_code varchar(80),space_count int,occupied_count int,available_count int,pending_outbound bit,has_gap bit,semantic_fingerprint varbinary(32),snapshot_generation bigint,rebuilt_at datetime2 DEFAULT SYSUTCDATETIME(),PRIMARY KEY(warehouse_id,lane_code));
|
||||
GO
|
||||
-- Explicit test stub: fingerprint internals are outside this aggregation regression.
|
||||
-- The actual rebuild procedure, cursor, guards and MERGE are always executed unmodified.
|
||||
CREATE PROCEDURE alg.usp_compute_lane_semantic_fingerprint
|
||||
@warehouse_id varchar(80),@lane_code varchar(80),@semantic_fingerprint varbinary(32) OUTPUT,
|
||||
@inventory_source varchar(20),@snapshot_generation bigint
|
||||
AS
|
||||
SET @semantic_fingerprint=HASHBYTES('SHA2_256',@warehouse_id+':'+@lane_code+':'+CONVERT(varchar(30),@snapshot_generation));
|
||||
GO
|
||||
INSERT alg.shadow_snapshot_state VALUES('01',101,'PUBLISHED'),('02',201,'PUBLISHED');
|
||||
INSERT alg.cargo_space_snapshot VALUES
|
||||
('01','N','UNLOCK_N','1','1','N',NULL,101),
|
||||
('01','ZERO','UNLOCK_ZERO','1','1','0',NULL,101),
|
||||
('01','NULL','UNLOCK_NULL','1','1',NULL,NULL,101),
|
||||
('01','BLANK','UNLOCK_BLANK','1','1',' ',NULL,101),
|
||||
('01','TRIM','UNLOCK_TRIM','1','1',' N ',NULL,101),
|
||||
('01','Y','LOCK_Y','1','1','Y',NULL,101),
|
||||
('01','UNKNOWN','LOCK_UNKNOWN','1','1','?',NULL,101),
|
||||
('01','STATUS','OCCUPIED','1','2','N',NULL,101),
|
||||
('01','TRAY','HAS_TRAY','1','1','N','T1',101),
|
||||
('01','STOCK','HAS_STOCK','1','1','N',NULL,101),
|
||||
('01','ROLE','PROTECTED','1','1','N',NULL,101),
|
||||
('01','RESERVED','RESERVED','1','1','N',NULL,101),
|
||||
('01','RELEASED','UNLOCK_RELEASED','1','1','N',NULL,101),
|
||||
('01','OUT1','OUTBOUND','1','1','N',NULL,101),
|
||||
('01','OUT2','OUTBOUND','2','1','N',NULL,101),
|
||||
('01','GAP1','GAP','1','1','N',NULL,101),
|
||||
('01','GAP2','GAP','2','2','N','T2',101),
|
||||
('01','HISTORY','UNLOCK_HISTORY','1','1','N',NULL,101),
|
||||
('01','N','UNLOCK_N','1','2','Y','OLD',100),
|
||||
('02','W2','OTHER_WAREHOUSE','1','1','N',NULL,201);
|
||||
INSERT alg.space_inventory_summary VALUES('01','STOCK',1,101),('01','HISTORY',1,100);
|
||||
INSERT alg.space_role VALUES('ROLE','BUFFER');
|
||||
INSERT alg.reservation VALUES('R1','RESERVED','ACTIVE'),('R2','RELEASED','RELEASED');
|
||||
INSERT alg.active_job_snapshot VALUES('01','OUT1','20',101),('01','HISTORY','20',100);
|
||||
Reference in New Issue
Block a user