content asset_use 从零建(SSOT 后端-04 定义表名/索引、建表 SQL 此前未写、feature disabled): - V28 建表 muse_content_work_asset_use_precheck(单表,照 knowledge bind_precheck) - 两段式:asset-use-prechecks(market 来源 verify(content/asset_use)+consume token、明文仅此阶段) → asset-uses(凭 precheckId + work 级乐观锁,单表转 consumed 即使用事实,AI archive 引用 precheckId) - purposes 白名单 reference/ai_context/generate_reference(禁 template 模板化=forbiddenPurpose) - content-server 依赖 market-api(经端口,不碰 market.dal)+ 错误码 1_041_002_xxx 验证:编译 OK、MuseContentAssetUseServiceTest 8/0(正路 verify+consume/伪造拒/缺 token 拒/禁用 purpose 拒/ 越权拒/create 闭环/work revision 冲突/precheck 过期)、BcBoundaryArchTest 0 违例(content→market-api)。 asset_use 只记录使用授权事实、不写正文/参考来源(产品-02F L456),不涉及资产物化。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
46 lines
2.5 KiB
SQL
46 lines
2.5 KiB
SQL
-- V28:content asset_use 跨空间 handoff 兑现(P3)——作品使用市场资产作参考/AI 上下文的预检凭证(单表两段式)。
|
|
-- SSOT 后端-04 L135 定义 muse_content_work_asset_use_precheck(此前 feature disabled、建表 SQL 未写、L1081 仅索引约定);
|
|
-- 评审版 Q1=单表:precheck 表即事实载体(active→consumed = 作品可用此市场资产作参考/AI 上下文凭证),
|
|
-- AI 接受候选时引用 precheck_id(后端-04 L849 muse_ai_candidate_decision_archive.work_asset_use_precheck_id)。
|
|
-- 形态照 muse_knowledge_bind_precheck(V14):kb_id→source_asset_id + source_asset_type;全列向后兼容(全新表)。
|
|
CREATE TABLE muse_content_work_asset_use_precheck (
|
|
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
precheck_id VARCHAR(128) NOT NULL,
|
|
command_id VARCHAR(128) NOT NULL,
|
|
request_hash CHAR(64) NOT NULL,
|
|
work_id BIGINT NOT NULL,
|
|
source_asset_id BIGINT NOT NULL,
|
|
source_asset_type VARCHAR(32) NOT NULL DEFAULT 'market_asset',
|
|
owner_user_id BIGINT NOT NULL,
|
|
actor_user_id BIGINT NOT NULL,
|
|
expected_work_revision INT,
|
|
source_snapshot_id VARCHAR(128) NOT NULL,
|
|
authorization_snapshot_id VARCHAR(128) NOT NULL,
|
|
handoff_hash CHAR(64),
|
|
status VARCHAR(32) NOT NULL DEFAULT 'active',
|
|
expires_at TIMESTAMP NOT NULL,
|
|
consumed_at TIMESTAMP,
|
|
result_summary JSONB NOT NULL DEFAULT '{}'::jsonb,
|
|
error_code VARCHAR(64),
|
|
error_message TEXT,
|
|
creator VARCHAR(64) NOT NULL DEFAULT '',
|
|
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updater VARCHAR(64) NOT NULL DEFAULT '',
|
|
update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
deleted BOOLEAN NOT NULL DEFAULT FALSE,
|
|
tenant_id BIGINT NOT NULL DEFAULT 0,
|
|
CONSTRAINT uk_muse_content_asset_use_precheck_id UNIQUE (tenant_id, precheck_id),
|
|
CONSTRAINT uk_muse_content_asset_use_precheck_command UNIQUE (tenant_id, command_id)
|
|
);
|
|
|
|
CREATE INDEX idx_muse_content_asset_use_precheck_owner_status
|
|
ON muse_content_work_asset_use_precheck(tenant_id, owner_user_id, status, create_time);
|
|
CREATE INDEX idx_muse_content_asset_use_precheck_work_asset
|
|
ON muse_content_work_asset_use_precheck(tenant_id, work_id, source_asset_id, status);
|
|
CREATE INDEX idx_muse_content_asset_use_precheck_active
|
|
ON muse_content_work_asset_use_precheck(tenant_id, precheck_id, expires_at)
|
|
WHERE consumed_at IS NULL AND deleted = FALSE;
|
|
CREATE TRIGGER trg_muse_content_asset_use_precheck_updated_at
|
|
BEFORE UPDATE ON muse_content_work_asset_use_precheck
|
|
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|