-- 勘察改造:移除 SOP(勘察技术要点与回执标准),新增「勘察明细」survey_detail -- 语义:勘察明细按「客户空间拓扑」登记,一条明细 = 建筑 + 楼层 + 房间(可空) + 现场照片 + 备注。 -- 幂等:CREATE TABLE IF NOT EXISTS / DROP TABLE IF EXISTS / 触发器先 DROP 后建,可重复执行。 BEGIN; -- 1. 新增勘察明细表 CREATE TABLE IF NOT EXISTS survey_detail ( id BIGSERIAL PRIMARY KEY, survey_order_id BIGINT NOT NULL REFERENCES survey_order(id) ON DELETE CASCADE, building_id BIGINT, building_name VARCHAR(128), floor_no VARCHAR(16), room_id BIGINT, room_name VARCHAR(128), photos TEXT, remark VARCHAR(255), created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW() ); COMMENT ON TABLE survey_detail IS '勘察工单明细表(建筑/楼层/房间 + 现场照片)'; COMMENT ON COLUMN survey_detail.id IS '自增主键'; COMMENT ON COLUMN survey_detail.survey_order_id IS '勘察工单ID(→ survey_order)'; COMMENT ON COLUMN survey_detail.building_id IS '建筑ID(→ customer_building)'; COMMENT ON COLUMN survey_detail.building_name IS '建筑名称(冗余,客户拓扑变更后仍可读)'; COMMENT ON COLUMN survey_detail.floor_no IS '所在楼层:正数为地上、负数为地下,如 1 / -1'; COMMENT ON COLUMN survey_detail.room_id IS '房间ID(→ customer_room,可空)'; COMMENT ON COLUMN survey_detail.room_name IS '房间名称(冗余,可空)'; COMMENT ON COLUMN survey_detail.photos IS '现场照片对象key(JSON数组字符串)'; COMMENT ON COLUMN survey_detail.remark IS '备注'; COMMENT ON COLUMN survey_detail.created_at IS '创建时间'; COMMENT ON COLUMN survey_detail.updated_at IS '更新时间'; CREATE INDEX IF NOT EXISTS idx_survey_detail_order ON survey_detail (survey_order_id); DROP TRIGGER IF EXISTS trg_survey_detail_updated_at ON survey_detail; CREATE TRIGGER trg_survey_detail_updated_at BEFORE UPDATE ON survey_detail FOR EACH ROW EXECUTE FUNCTION trigger_set_updated_at(); -- 2. 移除 SOP 两张表(回执表先删,避免外键依赖) DROP TABLE IF EXISTS survey_sop_result CASCADE; DROP TABLE IF EXISTS survey_sop_item CASCADE; COMMIT;