-- Read-only CTE fixtures; no schema or business data is created/changed. fixture_folders AS ( SELECT ('00000000-0000-0000-0000-' || lpad(n::text,12,'0'))::uuid id, CASE WHEN n=1 THEN NULL ELSE ('00000000-0000-0000-0000-' || lpad((n-1)::text,12,'0'))::uuid END parent_id, 'tenant-a'::text tenant_id, NULL::integer f_delete_mark FROM generate_series(1,30) n ), fixture_permissions AS ( SELECT 'tenant-a'::text tenant_id, principal_type, principal_id, include_child_orgs, 'FOLDER'::text resource_type, ('00000000-0000-0000-0000-' || lpad(folder::text,12,'0'))::uuid resource_id, scope resource_scope, action action_code, CASE WHEN principal_id='revoked' THEN now() ELSE NULL END revoked_at, CASE WHEN principal_id='future' THEN now()+interval '1 day' ELSE now()-interval '1 day' END valid_from, CASE WHEN principal_id='expired' THEN now()-interval '1 second' ELSE NULL END valid_to, CASE WHEN principal_id='exhausted' THEN 1 ELSE NULL END max_use_count, 1 used_count, 'MANUAL'::text source_type FROM (VALUES ('USER','self',false,1,'SELF','PRINT'), ('USER','subtree',false,1,'SUBTREE','PRINT'), ('USER','subtree',false,2,'SUBTREE','PRINT'), ('USER','read-only',false,1,'SUBTREE','READ'), ('USER','leaf',false,25,'SELF','PRINT'), ('USER','revoked',false,1,'SUBTREE','PRINT'), ('USER','expired',false,1,'SUBTREE','PRINT'), ('USER','future',false,1,'SUBTREE','PRINT'), ('USER','exhausted',false,1,'SUBTREE','PRINT'), ('ROLE','role-1',false,1,'SUBTREE','PRINT'), ('POSITION','position-1',false,1,'SUBTREE','PRINT'), ('GROUP','group-1',false,1,'SUBTREE','PRINT'), ('ORG','org-direct',false,1,'SUBTREE','PRINT'), ('ORG','org-parent',true,1,'SUBTREE','PRINT') ) p(principal_type,principal_id,include_child_orgs,folder,scope,action) UNION ALL SELECT 'tenant-a', 'USER', 'applicant', false, 'FILE_VERSION', '00000000-0000-0000-0000-000000000101'::uuid, 'SELF', 'PRINT', NULL::timestamptz, now()-interval '1 day', NULL::timestamptz, NULL::integer, 0, 'WORKFLOW' ), fixture_tasks AS ( SELECT 'task-' || lpad(n::text,2,'0') f_id, 'tenant-a'::text f_tenant_id, NULL::integer f_delete_mark, CASE WHEN n=34 THEN 'yiquxiao' ELSE 'daidayin' END biz_status, 'file-' || n wenjian_id, 'D(00)'::text banbenhao, 'document-' || n wenjian_mingcheng, 'code-' || n wenjian_bianhao, 'org'::text jieshou_bumen_id, 'wenjian_dayin'::text laiyuan_leixing, 'application-' || n laiyuan_danju_id, 'detail-' || n laiyuan_mingxi_id, NULL::timestamp shenhe_wancheng_riqi, NULL::timestamp peixun_wancheng_riqi, NULL::timestamp shengxiao_riqi, '1'::text shifou_shoukong, 3 dayin_fenshu, NULL::text beizhu_shuoming, timestamp '2026-01-01' f_creator_time FROM generate_series(1,34) n ), fixture_resources AS ( SELECT 'file-' || n f_id, CASE WHEN n=33 THEN 'tenant-b' ELSE 'tenant-a' END f_tenant_id, CASE WHEN n=32 THEN 1 ELSE NULL END f_delete_mark, ('00000000-0000-0000-0000-' || lpad(least(n,30)::text,12,'0')) wenjian_mulu_id FROM generate_series(1,34) n WHERE n != 31 ), fixture_applications AS ( SELECT 'application-' || n f_id, CASE WHEN n=5 THEN 'tenant-b' ELSE 'tenant-a' END f_tenant_id, CASE WHEN n=4 THEN 1 ELSE NULL END f_delete_mark, CASE WHEN n=2 THEN 'other-user' ELSE 'applicant' END shenqing_ren, CASE WHEN n=3 THEN 1 ELSE 2 END f_flow_state FROM generate_series(1,10) n ), fixture_details AS ( SELECT 'detail-' || n f_id, 'tenant-a'::text f_tenant_id, CASE WHEN n=10 THEN 1 ELSE NULL END f_delete_mark, CASE WHEN n=6 THEN 'wrong-application' ELSE 'application-' || n END f_foreign_id, CASE WHEN n=7 THEN 'wrong-file' ELSE 'file-' || n END wenjian_id, CASE WHEN n=9 THEN 'wrong-version' ELSE 'D(00)' END banben_hao, 'version-' || n banben_id FROM generate_series(1,10) n ), fixture_versions AS ( SELECT 'version-' || n f_id, 'tenant-a'::text f_tenant_id, NULL::integer f_delete_mark, 'file-' || n wenjian_id, 'D(00)'::text banbenhao, ('00000000-0000-0000-0000-' || lpad((200+n)::text,12,'0')) wenjian_zhongxin_wenjian_id, CASE WHEN n=8 THEN '00000000-0000-0000-0000-000000000102' WHEN n>10 THEN ('00000000-0000-0000-0000-' || lpad((100+n)::text,12,'0')) ELSE '00000000-0000-0000-0000-000000000101' END wenjian_zhongxin_banben_id FROM generate_series(1,34) n ), fixture_org AS ( SELECT 'tenant-a'::text f_tenant_id, 'org'::text f_id, 'Department'::text f_full_name, NULL::integer f_delete_mark ), fixture_prints AS ( SELECT 'tenant-a'::text f_tenant_id, 'task-30'::text dayin_renwu_id, NULL::integer f_delete_mark, status biz_status FROM (VALUES ('yidayin'),('yizuofei')) p(status) ),