feat(t245): use ERP images as procurement references

This commit is contained in:
QiuSW
2026-07-29 17:29:20 +08:00
parent a20590b4b7
commit 15074692a3
22 changed files with 1057 additions and 117 deletions
@@ -0,0 +1,61 @@
-- +goose Up
CREATE TABLE procurement_reference_sources (
procurement_request_id TEXT PRIMARY KEY NOT NULL
REFERENCES procurement_requests(id)
ON UPDATE RESTRICT ON DELETE RESTRICT,
origin TEXT NOT NULL
CHECK (origin IN ('ERP_FREIGHT_IMAGE', 'MANUAL_UPLOAD')),
product_thumb_ref TEXT
CHECK (
product_thumb_ref IS NULL
OR (
product_thumb_ref GLOB '[1-9]*'
AND product_thumb_ref NOT GLOB '*[^0-9]*'
AND length(product_thumb_ref) <= 20
)
),
source_image_sha256 TEXT
CHECK (
source_image_sha256 IS NULL
OR (
length(source_image_sha256) = 64
AND source_image_sha256 NOT GLOB '*[^0-9a-f]*'
)
),
bound_at TEXT NOT NULL,
CHECK (
(origin = 'ERP_FREIGHT_IMAGE'
AND product_thumb_ref IS NOT NULL
AND source_image_sha256 IS NOT NULL)
OR (origin = 'MANUAL_UPLOAD'
AND product_thumb_ref IS NULL
AND source_image_sha256 IS NULL)
)
);
INSERT INTO procurement_reference_sources (
procurement_request_id, origin, product_thumb_ref,
source_image_sha256, bound_at
)
SELECT id, 'MANUAL_UPLOAD', NULL, NULL, updated_at
FROM procurement_requests
WHERE reference_asset_id IS NOT NULL;
CREATE INDEX procurement_reference_sources_origin_idx
ON procurement_reference_sources (origin, bound_at, procurement_request_id);
-- +goose Down
CREATE TEMP TABLE procurement_reference_sources_v17_down_guard (
allowed INTEGER NOT NULL CHECK (allowed = 1)
);
INSERT INTO procurement_reference_sources_v17_down_guard (allowed)
SELECT CASE
WHEN EXISTS (SELECT 1 FROM procurement_reference_sources)
THEN 0
ELSE 1
END;
DROP TABLE procurement_reference_sources_v17_down_guard;
DROP INDEX procurement_reference_sources_origin_idx;
DROP TABLE procurement_reference_sources;