1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
| -- 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)
| ),
|
|