feat: 补齐消毒、种源与二维码身份链

This commit is contained in:
weijuesen
2026-08-14 08:39:56 +08:00
parent cc93c9a053
commit 6b222abb7b
24 changed files with 1344 additions and 9 deletions
@@ -0,0 +1,4 @@
ALTER TABLE batches DROP COLUMN IF EXISTS seed_source_id;
DROP TABLE IF EXISTS identity_links CASCADE;
DROP TABLE IF EXISTS disinfection_records CASCADE;
DROP TABLE IF EXISTS seed_sources CASCADE;
@@ -0,0 +1,64 @@
CREATE TABLE IF NOT EXISTS seed_sources (
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
public_id varchar(64) NOT NULL,
batch_id uuid,
parent_id uuid,
supplier varchar(128) NOT NULL,
seed_batch_no varchar(64) NOT NULL,
quarantine_no varchar(64),
variety varchar(64),
certificate_url varchar(512),
entry_at timestamptz,
note text,
created_by uuid,
created_at timestamptz NOT NULL DEFAULT now(),
updated_at timestamptz NOT NULL DEFAULT now()
);
CREATE UNIQUE INDEX IF NOT EXISTS idx_seed_sources_public_id ON seed_sources (public_id);
CREATE INDEX IF NOT EXISTS idx_seed_sources_batch_id ON seed_sources (batch_id);
CREATE INDEX IF NOT EXISTS idx_seed_sources_parent_id ON seed_sources (parent_id);
CREATE TABLE IF NOT EXISTS disinfection_records (
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
room_id uuid,
batch_id uuid,
kind varchar(16) NOT NULL DEFAULT 'plan',
plan_id uuid,
agent varchar(128) NOT NULL,
concentration varchar(64) NOT NULL,
amount varchar(64),
planned_at timestamptz,
executed_at timestamptz,
executor_id uuid,
reviewed_at timestamptz,
reviewer_id uuid,
photo_url varchar(512),
note text,
created_by uuid,
created_at timestamptz NOT NULL DEFAULT now(),
updated_at timestamptz NOT NULL DEFAULT now()
);
CREATE INDEX IF NOT EXISTS idx_disinfection_records_room_id ON disinfection_records (room_id);
CREATE INDEX IF NOT EXISTS idx_disinfection_records_batch_id ON disinfection_records (batch_id);
CREATE INDEX IF NOT EXISTS idx_disinfection_records_plan_id ON disinfection_records (plan_id);
CREATE TABLE IF NOT EXISTS identity_links (
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
public_id varchar(64) NOT NULL,
entity_type varchar(16) NOT NULL,
entity_id varchar(128) NOT NULL,
version integer NOT NULL DEFAULT 1,
created_at timestamptz NOT NULL DEFAULT now(),
updated_at timestamptz NOT NULL DEFAULT now()
);
CREATE UNIQUE INDEX IF NOT EXISTS idx_identity_links_public_id ON identity_links (public_id);
CREATE UNIQUE INDEX IF NOT EXISTS idx_identity_links_entity ON identity_links (entity_type, entity_id);
CREATE INDEX IF NOT EXISTS idx_identity_links_entity_type ON identity_links (entity_type);
ALTER TABLE batches
ADD COLUMN IF NOT EXISTS seed_source_id uuid;
CREATE INDEX IF NOT EXISTS idx_batches_seed_source_id ON batches (seed_source_id);