七月迭代短暂完结,还有很多后端的关键东西没有弄,这是一版赶时间做的东西
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m26s

This commit is contained in:
2026-07-25 17:06:58 +08:00
parent ad9f613dd6
commit 73f5125d3d
249 changed files with 17137 additions and 877 deletions

View File

@@ -0,0 +1,26 @@
BEGIN;
-- 已启用限制的店铺属于有效配置事实,存在时禁止删列回滚。
DO $$
BEGIN
IF to_regclass('tb_shop') IS NULL
OR NOT EXISTS (
SELECT 1
FROM pg_attribute
WHERE attrelid = to_regclass('tb_shop')
AND attname = 'client_login_disabled'
AND NOT attisdropped
) THEN
RETURN;
END IF;
LOCK TABLE tb_shop IN ACCESS EXCLUSIVE MODE;
IF EXISTS (SELECT 1 FROM tb_shop WHERE client_login_disabled = true LIMIT 1) THEN
RAISE EXCEPTION 'tb_shop 已存在C端登录限制配置禁止删列回滚请保留字段并向前修复';
END IF;
ALTER TABLE tb_shop DROP COLUMN client_login_disabled;
END
$$;
COMMIT;

View File

@@ -0,0 +1,5 @@
-- 店铺可独立禁止名下资产发起新的 C 端登录,不影响已有登录令牌。
ALTER TABLE tb_shop
ADD COLUMN client_login_disabled boolean NOT NULL DEFAULT false;
COMMENT ON COLUMN tb_shop.client_login_disabled IS '是否禁止该店铺资产发起新的C端登录';

View File

@@ -0,0 +1,3 @@
-- 回滚每日临期节点扫描索引。
DROP INDEX IF EXISTS idx_package_usage_device_expiry_scan;
DROP INDEX IF EXISTS idx_package_usage_card_expiry_scan;

View File

@@ -0,0 +1,16 @@
-- 为每日临期节点扫描增加按到期时间预筛的主套餐索引。
CREATE INDEX IF NOT EXISTS idx_package_usage_card_expiry_scan
ON tb_package_usage (expires_at, iot_card_id)
WHERE deleted_at IS NULL
AND master_usage_id IS NULL
AND refund_id IS NULL
AND status IN (1, 2)
AND expires_at IS NOT NULL;
CREATE INDEX IF NOT EXISTS idx_package_usage_device_expiry_scan
ON tb_package_usage (expires_at, device_id)
WHERE deleted_at IS NULL
AND master_usage_id IS NULL
AND refund_id IS NULL
AND status IN (1, 2)
AND expires_at IS NOT NULL;

View File

@@ -0,0 +1,2 @@
-- 回滚企业微信自建应用安全配置表。
DROP TABLE IF EXISTS tb_wecom_application;

View File

@@ -0,0 +1,32 @@
-- 创建企业微信自建应用安全配置表;凭据仅保存 AES-256-GCM 密文。
CREATE TABLE IF NOT EXISTS tb_wecom_application (
id bigserial PRIMARY KEY,
corp_id varchar(64) NOT NULL,
agent_id bigint NOT NULL,
name varchar(100) NOT NULL,
secret_ciphertext bytea NOT NULL,
callback_token_ciphertext bytea NOT NULL,
encoding_aes_key_ciphertext bytea NOT NULL,
status integer NOT NULL DEFAULT 1,
created_by bigint NOT NULL,
updated_by bigint NOT NULL,
last_connected_at timestamptz,
created_at timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP,
deleted_at timestamptz,
CONSTRAINT chk_wecom_application_status CHECK (status IN (0, 1)),
CONSTRAINT chk_wecom_application_agent_id CHECK (agent_id > 0)
);
CREATE UNIQUE INDEX IF NOT EXISTS uq_wecom_application_identity
ON tb_wecom_application (corp_id, agent_id)
WHERE deleted_at IS NULL;
CREATE INDEX IF NOT EXISTS idx_wecom_application_status
ON tb_wecom_application (status, id)
WHERE deleted_at IS NULL;
COMMENT ON TABLE tb_wecom_application IS '企业微信自建应用安全连接配置';
COMMENT ON COLUMN tb_wecom_application.secret_ciphertext IS '应用 Secret 的 AES-256-GCM 密文';
COMMENT ON COLUMN tb_wecom_application.callback_token_ciphertext IS '回调 Token 的 AES-256-GCM 密文';
COMMENT ON COLUMN tb_wecom_application.encoding_aes_key_ciphertext IS '回调 EncodingAESKey 的 AES-256-GCM 密文';

View File

@@ -0,0 +1,8 @@
-- 回滚企业微信可见成员快照及账号绑定字段。
DROP TABLE IF EXISTS tb_wecom_member;
DROP INDEX IF EXISTS uq_account_wecom_identity;
ALTER TABLE tb_account
DROP COLUMN IF EXISTS wecom_name,
DROP COLUMN IF EXISTS wecom_userid,
DROP COLUMN IF EXISTS wecom_corp_id;

View File

@@ -0,0 +1,36 @@
-- 增加系统账号企微身份绑定,并保存应用可见成员选择快照。
ALTER TABLE tb_account
ADD COLUMN IF NOT EXISTS wecom_corp_id varchar(64) NOT NULL DEFAULT '',
ADD COLUMN IF NOT EXISTS wecom_userid varchar(64) NOT NULL DEFAULT '',
ADD COLUMN IF NOT EXISTS wecom_name varchar(100) NOT NULL DEFAULT '';
CREATE UNIQUE INDEX IF NOT EXISTS uq_account_wecom_identity
ON tb_account (wecom_corp_id, wecom_userid)
WHERE deleted_at IS NULL AND wecom_corp_id <> '' AND wecom_userid <> '';
CREATE TABLE IF NOT EXISTS tb_wecom_member (
id bigserial PRIMARY KEY,
application_id bigint NOT NULL,
corp_id varchar(64) NOT NULL,
userid varchar(64) NOT NULL,
name varchar(100) NOT NULL,
department_ids jsonb NOT NULL DEFAULT '[]'::jsonb,
visible boolean NOT NULL DEFAULT true,
synced_at timestamptz NOT NULL,
created_at timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT chk_wecom_member_application_id CHECK (application_id > 0),
CONSTRAINT chk_wecom_member_userid CHECK (length(btrim(userid)) > 0)
);
CREATE UNIQUE INDEX IF NOT EXISTS uq_wecom_member_identity
ON tb_wecom_member (application_id, userid);
CREATE INDEX IF NOT EXISTS idx_wecom_member_visible_name
ON tb_wecom_member (application_id, visible, name, userid);
COMMENT ON TABLE tb_wecom_member IS '企业微信应用可见成员的本地选择快照,不作为组织模型';
COMMENT ON COLUMN tb_wecom_member.department_ids IS '企微部门 ID 列表,仅用于管理员辨认成员';
COMMENT ON COLUMN tb_account.wecom_corp_id IS '绑定的企业微信企业 ID';
COMMENT ON COLUMN tb_account.wecom_userid IS '绑定的企业微信成员 userid入库前统一转为小写';
COMMENT ON COLUMN tb_account.wecom_name IS '绑定时的企业微信成员姓名快照';

View File

@@ -0,0 +1,2 @@
-- 回滚企业微信审批场景配置表。
DROP TABLE IF EXISTS tb_wecom_approval_scene;

View File

@@ -0,0 +1,29 @@
-- 创建企业微信审批业务场景与后台模板当前映射配置。
CREATE TABLE IF NOT EXISTS tb_wecom_approval_scene (
id bigserial PRIMARY KEY,
business_type varchar(64) NOT NULL,
application_id bigint NOT NULL,
template_id varchar(128) NOT NULL,
template_name varchar(255) NOT NULL DEFAULT '',
control_mapping jsonb NOT NULL,
template_snapshot jsonb NOT NULL,
template_fingerprint char(64) NOT NULL,
status integer NOT NULL DEFAULT 1,
last_verified_at timestamptz NOT NULL,
created_by bigint NOT NULL,
updated_by bigint NOT NULL,
created_at timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT uq_wecom_approval_scene_business UNIQUE (business_type),
CONSTRAINT chk_wecom_approval_scene_business CHECK (business_type IN ('refund_approval', 'offline_recharge_approval')),
CONSTRAINT chk_wecom_approval_scene_application CHECK (application_id > 0),
CONSTRAINT chk_wecom_approval_scene_status CHECK (status IN (0, 1))
);
CREATE INDEX IF NOT EXISTS idx_wecom_approval_scene_application
ON tb_wecom_approval_scene (application_id, status);
COMMENT ON TABLE tb_wecom_approval_scene IS '稳定审批业务类型到企微后台模板和控件的当前映射';
COMMENT ON COLUMN tb_wecom_approval_scene.control_mapping IS '已通过模板详情校验的业务字段、控件 ID、类型及选项 key 映射';
COMMENT ON COLUMN tb_wecom_approval_scene.template_snapshot IS '校验时读取的控件最小快照,不包含审批节点或审批人规则';
COMMENT ON COLUMN tb_wecom_approval_scene.template_fingerprint IS '模板控件最小快照 SHA-256 指纹';

View File

@@ -0,0 +1,5 @@
DROP TABLE IF EXISTS tb_wecom_approval_context;
ALTER TABLE tb_wecom_application
DROP COLUMN IF EXISTS default_creator_name,
DROP COLUMN IF EXISTS default_creator_userid;

View File

@@ -0,0 +1,43 @@
-- 增加应用默认审批发起人,并创建企微审批渠道上下文。
ALTER TABLE tb_wecom_application
ADD COLUMN IF NOT EXISTS default_creator_userid varchar(64) NOT NULL DEFAULT '',
ADD COLUMN IF NOT EXISTS default_creator_name varchar(100) NOT NULL DEFAULT '';
CREATE TABLE IF NOT EXISTS tb_wecom_approval_context (
id bigserial PRIMARY KEY,
approval_instance_id bigint NOT NULL,
application_id bigint NOT NULL,
business_type varchar(64) NOT NULL,
template_id varchar(128) NOT NULL,
creator_userid varchar(64) NOT NULL,
creator_name varchar(100) NOT NULL,
creator_source varchar(16) NOT NULL,
control_mapping jsonb NOT NULL,
template_snapshot jsonb NOT NULL,
template_fingerprint char(64) NOT NULL,
submission_status integer NOT NULL DEFAULT 0,
sp_no varchar(128) NOT NULL DEFAULT '',
last_error varchar(500) NOT NULL DEFAULT '',
created_at timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT uq_wecom_approval_context_instance UNIQUE (approval_instance_id),
CONSTRAINT chk_wecom_approval_context_instance CHECK (approval_instance_id > 0),
CONSTRAINT chk_wecom_approval_context_application CHECK (application_id > 0),
CONSTRAINT chk_wecom_approval_context_creator CHECK (length(btrim(creator_userid)) > 0),
CONSTRAINT chk_wecom_approval_context_creator_source CHECK (creator_source IN ('bound', 'default')),
CONSTRAINT chk_wecom_approval_context_submission_status CHECK (submission_status IN (0, 1, 2, 3, 4)),
CONSTRAINT chk_wecom_approval_context_mapping CHECK (jsonb_typeof(control_mapping) = 'array'),
CONSTRAINT chk_wecom_approval_context_template CHECK (jsonb_typeof(template_snapshot) = 'object')
);
CREATE UNIQUE INDEX IF NOT EXISTS uq_wecom_approval_context_sp_no
ON tb_wecom_approval_context (sp_no) WHERE sp_no <> '';
CREATE INDEX IF NOT EXISTS idx_wecom_approval_context_recovery
ON tb_wecom_approval_context (submission_status, updated_at, id);
COMMENT ON COLUMN tb_wecom_application.default_creator_userid IS '代理等非企微账号提交业务时使用的默认企微审批发起人 userid';
COMMENT ON COLUMN tb_wecom_application.default_creator_name IS '默认企微审批发起人姓名快照';
COMMENT ON TABLE tb_wecom_approval_context IS '通用审批实例对应的企业微信提交安全快照与提交结果';
COMMENT ON COLUMN tb_wecom_approval_context.creator_source IS '企微发起人来源bound 系统账号绑定default 应用默认发起人';
COMMENT ON COLUMN tb_wecom_approval_context.submission_status IS '提交状态0待提交1请求处理中2已提交3明确失败4结果未知';

View File

@@ -0,0 +1,5 @@
ALTER TABLE tb_wecom_approval_context
DROP CONSTRAINT IF EXISTS chk_wecom_approval_context_detail_snapshot,
DROP COLUMN IF EXISTS last_synced_at,
DROP COLUMN IF EXISTS latest_detail_snapshot,
DROP COLUMN IF EXISTS latest_sp_status;

View File

@@ -0,0 +1,20 @@
-- 增加企业微信审批详情当前快照,供回调同步和后续读取投影复用。
ALTER TABLE tb_wecom_approval_context
ADD COLUMN IF NOT EXISTS latest_sp_status integer NOT NULL DEFAULT 0,
ADD COLUMN IF NOT EXISTS latest_detail_snapshot jsonb,
ADD COLUMN IF NOT EXISTS last_synced_at timestamptz;
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_constraint WHERE conname = 'chk_wecom_approval_context_detail_snapshot'
) THEN
ALTER TABLE tb_wecom_approval_context
ADD CONSTRAINT chk_wecom_approval_context_detail_snapshot
CHECK (latest_detail_snapshot IS NULL OR jsonb_typeof(latest_detail_snapshot) = 'object');
END IF;
END $$;
COMMENT ON COLUMN tb_wecom_approval_context.latest_sp_status IS '最近一次企微审批详情状态码';
COMMENT ON COLUMN tb_wecom_approval_context.latest_detail_snapshot IS '最近一次权威企微审批详情快照,不含 access_token';
COMMENT ON COLUMN tb_wecom_approval_context.last_synced_at IS '最近一次成功获取企微审批详情的时间';

View File

@@ -0,0 +1,7 @@
-- 回滚企微审批恢复时间字段与索引。
DROP INDEX IF EXISTS idx_wecom_approval_context_pending_sync;
DROP INDEX IF EXISTS idx_wecom_approval_context_unknown_recovery;
ALTER TABLE tb_wecom_approval_context
DROP COLUMN IF EXISTS last_recovery_at,
DROP COLUMN IF EXISTS submission_attempted_at;

View File

@@ -0,0 +1,20 @@
-- 增加企微审批提交与恢复时间,避免周期恢复覆盖原始提交时间窗。
ALTER TABLE tb_wecom_approval_context
ADD COLUMN IF NOT EXISTS submission_attempted_at timestamptz,
ADD COLUMN IF NOT EXISTS last_recovery_at timestamptz;
UPDATE tb_wecom_approval_context
SET submission_attempted_at = updated_at
WHERE submission_attempted_at IS NULL
AND submission_status IN (1, 4);
CREATE INDEX IF NOT EXISTS idx_wecom_approval_context_unknown_recovery
ON tb_wecom_approval_context (submission_status, last_recovery_at, id)
WHERE submission_status = 4 AND sp_no = '';
CREATE INDEX IF NOT EXISTS idx_wecom_approval_context_pending_sync
ON tb_wecom_approval_context (last_synced_at, id)
WHERE submission_status = 2 AND sp_no <> '';
COMMENT ON COLUMN tb_wecom_approval_context.submission_attempted_at IS '最近一次实际领取并准备调用企微提交接口的时间';
COMMENT ON COLUMN tb_wecom_approval_context.last_recovery_at IS '最近一次结果未知主动恢复尝试时间';

View File

@@ -0,0 +1,6 @@
-- 回滚员工线下代充值通用审批实例关联。
DROP INDEX IF EXISTS uq_agent_recharge_approval_instance;
ALTER TABLE tb_agent_recharge_record
DROP CONSTRAINT IF EXISTS chk_agent_recharge_approval_instance,
DROP COLUMN IF EXISTS approval_instance_id;

View File

@@ -0,0 +1,20 @@
-- 为员工线下代充值关联唯一通用审批实例。
ALTER TABLE tb_agent_recharge_record
ADD COLUMN IF NOT EXISTS approval_instance_id bigint;
CREATE UNIQUE INDEX IF NOT EXISTS uq_agent_recharge_approval_instance
ON tb_agent_recharge_record (approval_instance_id)
WHERE approval_instance_id IS NOT NULL;
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_constraint WHERE conname = 'chk_agent_recharge_approval_instance'
) THEN
ALTER TABLE tb_agent_recharge_record
ADD CONSTRAINT chk_agent_recharge_approval_instance
CHECK (approval_instance_id IS NULL OR approval_instance_id > 0);
END IF;
END $$;
COMMENT ON COLUMN tb_agent_recharge_record.approval_instance_id IS '员工线下代充值关联的唯一通用审批实例 ID在线充值为空';

View File

@@ -0,0 +1,6 @@
-- 回滚退款申请通用审批实例关联。
DROP INDEX IF EXISTS uq_refund_request_approval_instance;
ALTER TABLE tb_refund_request
DROP CONSTRAINT IF EXISTS chk_refund_request_approval_instance,
DROP COLUMN IF EXISTS approval_instance_id;

View File

@@ -0,0 +1,20 @@
-- 为退款申请关联唯一通用审批实例。
ALTER TABLE tb_refund_request
ADD COLUMN IF NOT EXISTS approval_instance_id bigint;
CREATE UNIQUE INDEX IF NOT EXISTS uq_refund_request_approval_instance
ON tb_refund_request (approval_instance_id)
WHERE approval_instance_id IS NOT NULL;
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_constraint WHERE conname = 'chk_refund_request_approval_instance'
) THEN
ALTER TABLE tb_refund_request
ADD CONSTRAINT chk_refund_request_approval_instance
CHECK (approval_instance_id IS NULL OR approval_instance_id > 0);
END IF;
END $$;
COMMENT ON COLUMN tb_refund_request.approval_instance_id IS '退款申请关联的唯一通用审批实例 ID存量旧审批记录为空';

View File

@@ -0,0 +1 @@
DROP TABLE IF EXISTS tb_asset_package_batch_order_task;

View File

@@ -0,0 +1,49 @@
CREATE TABLE IF NOT EXISTS tb_asset_package_batch_order_task (
id bigserial PRIMARY KEY,
task_no varchar(50) NOT NULL,
package_id bigint NOT NULL,
package_code varchar(100) NOT NULL DEFAULT '',
package_name varchar(255) NOT NULL DEFAULT '',
payment_method varchar(20) NOT NULL,
file_name varchar(255) NOT NULL DEFAULT '',
storage_key varchar(500) NOT NULL,
voucher_keys jsonb NOT NULL DEFAULT '[]'::jsonb,
status integer NOT NULL DEFAULT 1,
total_count integer NOT NULL DEFAULT 0,
success_count integer NOT NULL DEFAULT 0,
fail_count integer NOT NULL DEFAULT 0,
result_items jsonb NOT NULL DEFAULT '[]'::jsonb,
error_message text NOT NULL DEFAULT '',
creator_user_type integer NOT NULL DEFAULT 0,
creator_shop_id bigint NOT NULL DEFAULT 0,
creator_name varchar(100) NOT NULL DEFAULT '',
started_at timestamptz,
completed_at timestamptz,
creator bigint NOT NULL DEFAULT 0,
updater bigint NOT NULL DEFAULT 0,
created_at timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP,
deleted_at timestamptz,
CONSTRAINT chk_asset_package_batch_order_status CHECK (status IN (1, 2, 3, 4, 5)),
CONSTRAINT chk_asset_package_batch_order_payment_method CHECK (payment_method IN ('wallet', 'offline')),
CONSTRAINT chk_asset_package_batch_order_counts CHECK (
total_count >= 0 AND success_count >= 0 AND fail_count >= 0
AND success_count + fail_count <= total_count
)
);
CREATE UNIQUE INDEX IF NOT EXISTS uq_asset_package_batch_order_task_no
ON tb_asset_package_batch_order_task (task_no)
WHERE deleted_at IS NULL;
CREATE INDEX IF NOT EXISTS idx_asset_package_batch_order_status_created
ON tb_asset_package_batch_order_task (status, created_at DESC)
WHERE deleted_at IS NULL;
COMMENT ON TABLE tb_asset_package_batch_order_task IS '单列CSV资产套餐批量订购任务';
COMMENT ON COLUMN tb_asset_package_batch_order_task.package_id IS '整批统一套餐ID';
COMMENT ON COLUMN tb_asset_package_batch_order_task.payment_method IS '整批统一支付方式(wallet/offline)';
COMMENT ON COLUMN tb_asset_package_batch_order_task.storage_key IS '源CSV对象存储Key';
COMMENT ON COLUMN tb_asset_package_batch_order_task.voucher_keys IS '线下支付凭证对象存储Key列表';
COMMENT ON COLUMN tb_asset_package_batch_order_task.status IS '任务状态(1待处理,2处理中,3已完成,4已失败,5已取消)';
COMMENT ON COLUMN tb_asset_package_batch_order_task.result_items IS '逐行成功或失败结果明细';

View File

@@ -0,0 +1,7 @@
DROP INDEX IF EXISTS idx_device_import_task_operation_type;
ALTER TABLE tb_device_import_task
DROP COLUMN IF EXISTS operator_shop_id,
DROP COLUMN IF EXISTS operator_type,
DROP COLUMN IF EXISTS target_id,
DROP COLUMN IF EXISTS operation_type;

View File

@@ -0,0 +1,15 @@
-- 扩展既有设备导入任务,承载单列 CSV 批量分配代理或套餐系列。
ALTER TABLE tb_device_import_task
ADD COLUMN IF NOT EXISTS operation_type VARCHAR(32) NOT NULL DEFAULT 'import',
ADD COLUMN IF NOT EXISTS target_id BIGINT,
ADD COLUMN IF NOT EXISTS operator_type INT NOT NULL DEFAULT 0,
ADD COLUMN IF NOT EXISTS operator_shop_id BIGINT;
CREATE INDEX IF NOT EXISTS idx_device_import_task_operation_type
ON tb_device_import_task(operation_type, created_at DESC)
WHERE deleted_at IS NULL;
COMMENT ON COLUMN tb_device_import_task.operation_type IS '任务业务类型(import=导入设备,assign_shop=分配目标代理,assign_series=设置套餐系列)';
COMMENT ON COLUMN tb_device_import_task.target_id IS '批量分配目标店铺或套餐系列ID';
COMMENT ON COLUMN tb_device_import_task.operator_type IS '任务创建时操作者类型快照';
COMMENT ON COLUMN tb_device_import_task.operator_shop_id IS '任务创建时操作者店铺ID快照';

View File

@@ -0,0 +1,77 @@
-- 回滚七月迭代字段注释补丁,不修改任何表结构或业务数据。
COMMENT ON COLUMN tb_card_observation_effect.id IS NULL;
COMMENT ON COLUMN tb_card_observation_effect.created_at IS NULL;
COMMENT ON COLUMN tb_card_observation_effect.updated_at IS NULL;
COMMENT ON COLUMN tb_card_observation_effect.deleted_at IS NULL;
COMMENT ON COLUMN tb_card_observation_effect.creator IS NULL;
COMMENT ON COLUMN tb_card_observation_effect.updater IS NULL;
COMMENT ON COLUMN tb_wecom_application.id IS NULL;
COMMENT ON COLUMN tb_wecom_application.corp_id IS NULL;
COMMENT ON COLUMN tb_wecom_application.agent_id IS NULL;
COMMENT ON COLUMN tb_wecom_application.name IS NULL;
COMMENT ON COLUMN tb_wecom_application.status IS NULL;
COMMENT ON COLUMN tb_wecom_application.created_by IS NULL;
COMMENT ON COLUMN tb_wecom_application.updated_by IS NULL;
COMMENT ON COLUMN tb_wecom_application.last_connected_at IS NULL;
COMMENT ON COLUMN tb_wecom_application.created_at IS NULL;
COMMENT ON COLUMN tb_wecom_application.updated_at IS NULL;
COMMENT ON COLUMN tb_wecom_application.deleted_at IS NULL;
COMMENT ON COLUMN tb_wecom_member.id IS NULL;
COMMENT ON COLUMN tb_wecom_member.application_id IS NULL;
COMMENT ON COLUMN tb_wecom_member.corp_id IS NULL;
COMMENT ON COLUMN tb_wecom_member.userid IS NULL;
COMMENT ON COLUMN tb_wecom_member.name IS NULL;
COMMENT ON COLUMN tb_wecom_member.visible IS NULL;
COMMENT ON COLUMN tb_wecom_member.synced_at IS NULL;
COMMENT ON COLUMN tb_wecom_member.created_at IS NULL;
COMMENT ON COLUMN tb_wecom_member.updated_at IS NULL;
COMMENT ON COLUMN tb_wecom_approval_scene.id IS NULL;
COMMENT ON COLUMN tb_wecom_approval_scene.business_type IS NULL;
COMMENT ON COLUMN tb_wecom_approval_scene.application_id IS NULL;
COMMENT ON COLUMN tb_wecom_approval_scene.template_id IS NULL;
COMMENT ON COLUMN tb_wecom_approval_scene.template_name IS NULL;
COMMENT ON COLUMN tb_wecom_approval_scene.status IS NULL;
COMMENT ON COLUMN tb_wecom_approval_scene.last_verified_at IS NULL;
COMMENT ON COLUMN tb_wecom_approval_scene.created_by IS NULL;
COMMENT ON COLUMN tb_wecom_approval_scene.updated_by IS NULL;
COMMENT ON COLUMN tb_wecom_approval_scene.created_at IS NULL;
COMMENT ON COLUMN tb_wecom_approval_scene.updated_at IS NULL;
COMMENT ON COLUMN tb_wecom_approval_context.id IS NULL;
COMMENT ON COLUMN tb_wecom_approval_context.approval_instance_id IS NULL;
COMMENT ON COLUMN tb_wecom_approval_context.application_id IS NULL;
COMMENT ON COLUMN tb_wecom_approval_context.business_type IS NULL;
COMMENT ON COLUMN tb_wecom_approval_context.template_id IS NULL;
COMMENT ON COLUMN tb_wecom_approval_context.creator_userid IS NULL;
COMMENT ON COLUMN tb_wecom_approval_context.creator_name IS NULL;
COMMENT ON COLUMN tb_wecom_approval_context.control_mapping IS NULL;
COMMENT ON COLUMN tb_wecom_approval_context.template_snapshot IS NULL;
COMMENT ON COLUMN tb_wecom_approval_context.template_fingerprint IS NULL;
COMMENT ON COLUMN tb_wecom_approval_context.sp_no IS NULL;
COMMENT ON COLUMN tb_wecom_approval_context.last_error IS NULL;
COMMENT ON COLUMN tb_wecom_approval_context.created_at IS NULL;
COMMENT ON COLUMN tb_wecom_approval_context.updated_at IS NULL;
COMMENT ON COLUMN tb_asset_package_batch_order_task.id IS NULL;
COMMENT ON COLUMN tb_asset_package_batch_order_task.task_no IS NULL;
COMMENT ON COLUMN tb_asset_package_batch_order_task.package_code IS NULL;
COMMENT ON COLUMN tb_asset_package_batch_order_task.package_name IS NULL;
COMMENT ON COLUMN tb_asset_package_batch_order_task.file_name IS NULL;
COMMENT ON COLUMN tb_asset_package_batch_order_task.total_count IS NULL;
COMMENT ON COLUMN tb_asset_package_batch_order_task.success_count IS NULL;
COMMENT ON COLUMN tb_asset_package_batch_order_task.fail_count IS NULL;
COMMENT ON COLUMN tb_asset_package_batch_order_task.error_message IS NULL;
COMMENT ON COLUMN tb_asset_package_batch_order_task.creator_user_type IS NULL;
COMMENT ON COLUMN tb_asset_package_batch_order_task.creator_shop_id IS NULL;
COMMENT ON COLUMN tb_asset_package_batch_order_task.creator_name IS NULL;
COMMENT ON COLUMN tb_asset_package_batch_order_task.started_at IS NULL;
COMMENT ON COLUMN tb_asset_package_batch_order_task.completed_at IS NULL;
COMMENT ON COLUMN tb_asset_package_batch_order_task.creator IS NULL;
COMMENT ON COLUMN tb_asset_package_batch_order_task.updater IS NULL;
COMMENT ON COLUMN tb_asset_package_batch_order_task.created_at IS NULL;
COMMENT ON COLUMN tb_asset_package_batch_order_task.updated_at IS NULL;
COMMENT ON COLUMN tb_asset_package_batch_order_task.deleted_at IS NULL;

View File

@@ -0,0 +1,77 @@
-- 补齐七月迭代新增表的字段注释,确保数据库结构可直接识别字段业务含义。
COMMENT ON COLUMN tb_card_observation_effect.id IS '卡观测副作用处理记录ID';
COMMENT ON COLUMN tb_card_observation_effect.created_at IS '创建时间';
COMMENT ON COLUMN tb_card_observation_effect.updated_at IS '更新时间';
COMMENT ON COLUMN tb_card_observation_effect.deleted_at IS '软删除时间';
COMMENT ON COLUMN tb_card_observation_effect.creator IS '创建人账号ID';
COMMENT ON COLUMN tb_card_observation_effect.updater IS '更新人账号ID';
COMMENT ON COLUMN tb_wecom_application.id IS '企业微信应用配置ID';
COMMENT ON COLUMN tb_wecom_application.corp_id IS '企业微信企业ID';
COMMENT ON COLUMN tb_wecom_application.agent_id IS '企业微信自建应用AgentId';
COMMENT ON COLUMN tb_wecom_application.name IS '企业微信应用配置名称';
COMMENT ON COLUMN tb_wecom_application.status IS '启用状态0禁用1启用';
COMMENT ON COLUMN tb_wecom_application.created_by IS '创建人账号ID';
COMMENT ON COLUMN tb_wecom_application.updated_by IS '更新人账号ID';
COMMENT ON COLUMN tb_wecom_application.last_connected_at IS '最近一次连接成功时间';
COMMENT ON COLUMN tb_wecom_application.created_at IS '创建时间';
COMMENT ON COLUMN tb_wecom_application.updated_at IS '更新时间';
COMMENT ON COLUMN tb_wecom_application.deleted_at IS '软删除时间';
COMMENT ON COLUMN tb_wecom_member.id IS '企业微信成员快照ID';
COMMENT ON COLUMN tb_wecom_member.application_id IS '所属企业微信应用配置ID';
COMMENT ON COLUMN tb_wecom_member.corp_id IS '企业微信企业ID';
COMMENT ON COLUMN tb_wecom_member.userid IS '企业微信成员userid';
COMMENT ON COLUMN tb_wecom_member.name IS '企业微信成员姓名';
COMMENT ON COLUMN tb_wecom_member.visible IS '成员当前是否在应用可见范围内';
COMMENT ON COLUMN tb_wecom_member.synced_at IS '最近一次从企业微信同步时间';
COMMENT ON COLUMN tb_wecom_member.created_at IS '创建时间';
COMMENT ON COLUMN tb_wecom_member.updated_at IS '更新时间';
COMMENT ON COLUMN tb_wecom_approval_scene.id IS '企业微信审批场景配置ID';
COMMENT ON COLUMN tb_wecom_approval_scene.business_type IS '稳定审批业务类型编码';
COMMENT ON COLUMN tb_wecom_approval_scene.application_id IS '发起审批使用的企业微信应用配置ID';
COMMENT ON COLUMN tb_wecom_approval_scene.template_id IS '企业微信后台审批模板ID';
COMMENT ON COLUMN tb_wecom_approval_scene.template_name IS '企业微信审批模板名称快照';
COMMENT ON COLUMN tb_wecom_approval_scene.status IS '启用状态0禁用1启用';
COMMENT ON COLUMN tb_wecom_approval_scene.last_verified_at IS '最近一次模板结构校验通过时间';
COMMENT ON COLUMN tb_wecom_approval_scene.created_by IS '创建人账号ID';
COMMENT ON COLUMN tb_wecom_approval_scene.updated_by IS '更新人账号ID';
COMMENT ON COLUMN tb_wecom_approval_scene.created_at IS '创建时间';
COMMENT ON COLUMN tb_wecom_approval_scene.updated_at IS '更新时间';
COMMENT ON COLUMN tb_wecom_approval_context.id IS '企业微信审批渠道上下文ID';
COMMENT ON COLUMN tb_wecom_approval_context.approval_instance_id IS '关联的通用审批实例ID';
COMMENT ON COLUMN tb_wecom_approval_context.application_id IS '提交审批使用的企业微信应用配置ID';
COMMENT ON COLUMN tb_wecom_approval_context.business_type IS '提交时冻结的稳定审批业务类型';
COMMENT ON COLUMN tb_wecom_approval_context.template_id IS '提交时冻结的企业微信审批模板ID';
COMMENT ON COLUMN tb_wecom_approval_context.creator_userid IS '实际企业微信审批发起人userid';
COMMENT ON COLUMN tb_wecom_approval_context.creator_name IS '实际企业微信审批发起人姓名快照';
COMMENT ON COLUMN tb_wecom_approval_context.control_mapping IS '提交时冻结的业务字段与企微控件映射';
COMMENT ON COLUMN tb_wecom_approval_context.template_snapshot IS '提交时冻结的企微模板控件最小快照';
COMMENT ON COLUMN tb_wecom_approval_context.template_fingerprint IS '提交时冻结的模板控件快照SHA-256指纹';
COMMENT ON COLUMN tb_wecom_approval_context.sp_no IS '企业微信审批单号';
COMMENT ON COLUMN tb_wecom_approval_context.last_error IS '最近一次提交或恢复失败的安全摘要';
COMMENT ON COLUMN tb_wecom_approval_context.created_at IS '创建时间';
COMMENT ON COLUMN tb_wecom_approval_context.updated_at IS '更新时间';
COMMENT ON COLUMN tb_asset_package_batch_order_task.id IS '资产套餐批量订购任务ID';
COMMENT ON COLUMN tb_asset_package_batch_order_task.task_no IS '批量订购任务编号';
COMMENT ON COLUMN tb_asset_package_batch_order_task.package_code IS '整批统一套餐编码快照';
COMMENT ON COLUMN tb_asset_package_batch_order_task.package_name IS '整批统一套餐名称快照';
COMMENT ON COLUMN tb_asset_package_batch_order_task.file_name IS '上传的源CSV文件名';
COMMENT ON COLUMN tb_asset_package_batch_order_task.total_count IS '任务总行数';
COMMENT ON COLUMN tb_asset_package_batch_order_task.success_count IS '处理成功行数';
COMMENT ON COLUMN tb_asset_package_batch_order_task.fail_count IS '处理失败行数';
COMMENT ON COLUMN tb_asset_package_batch_order_task.error_message IS '任务级失败原因';
COMMENT ON COLUMN tb_asset_package_batch_order_task.creator_user_type IS '任务创建人账号类型快照';
COMMENT ON COLUMN tb_asset_package_batch_order_task.creator_shop_id IS '任务创建人所属店铺ID快照';
COMMENT ON COLUMN tb_asset_package_batch_order_task.creator_name IS '任务创建人名称快照';
COMMENT ON COLUMN tb_asset_package_batch_order_task.started_at IS '任务开始处理时间';
COMMENT ON COLUMN tb_asset_package_batch_order_task.completed_at IS '任务处理完成时间';
COMMENT ON COLUMN tb_asset_package_batch_order_task.creator IS '创建人账号ID';
COMMENT ON COLUMN tb_asset_package_batch_order_task.updater IS '更新人账号ID';
COMMENT ON COLUMN tb_asset_package_batch_order_task.created_at IS '创建时间';
COMMENT ON COLUMN tb_asset_package_batch_order_task.updated_at IS '更新时间';
COMMENT ON COLUMN tb_asset_package_batch_order_task.deleted_at IS '软删除时间';