@soddong/agentic-domain-artifact-standard 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/.tbls.yml +54 -0
  2. package/CHANGELOG.md +94 -0
  3. package/README.md +386 -0
  4. package/dist/database.d.ts +8 -0
  5. package/dist/database.d.ts.map +1 -0
  6. package/dist/database.js +76 -0
  7. package/dist/database.js.map +1 -0
  8. package/dist/fixtures.d.ts +11 -0
  9. package/dist/fixtures.d.ts.map +1 -0
  10. package/dist/fixtures.js +537 -0
  11. package/dist/fixtures.js.map +1 -0
  12. package/dist/index.d.ts +72 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js +213 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/repositories.d.ts +46 -0
  17. package/dist/repositories.d.ts.map +1 -0
  18. package/dist/repositories.js +730 -0
  19. package/dist/repositories.js.map +1 -0
  20. package/dist/seed-apply.d.ts +20 -0
  21. package/dist/seed-apply.d.ts.map +1 -0
  22. package/dist/seed-apply.js +198 -0
  23. package/dist/seed-apply.js.map +1 -0
  24. package/dist/service.d.ts +40 -0
  25. package/dist/service.d.ts.map +1 -0
  26. package/dist/service.js +105 -0
  27. package/dist/service.js.map +1 -0
  28. package/dist/types.d.ts +499 -0
  29. package/dist/types.d.ts.map +1 -0
  30. package/dist/types.js +2 -0
  31. package/dist/types.js.map +1 -0
  32. package/docs/build.md +27 -0
  33. package/docs/configuration.md +5 -0
  34. package/docs/delivery.md +26 -0
  35. package/docs/operations.md +28 -0
  36. package/docs/publishing.md +43 -0
  37. package/docs/schema/generated/README.md +38 -0
  38. package/docs/schema/generated/artifact_standard_blueprint_nodes.md +137 -0
  39. package/docs/schema/generated/artifact_standard_blueprint_nodes.svg +88 -0
  40. package/docs/schema/generated/artifact_standard_code_groups.md +70 -0
  41. package/docs/schema/generated/artifact_standard_code_groups.svg +49 -0
  42. package/docs/schema/generated/artifact_standard_codes.md +88 -0
  43. package/docs/schema/generated/artifact_standard_codes.svg +49 -0
  44. package/docs/schema/generated/artifact_standard_component_bindings.md +118 -0
  45. package/docs/schema/generated/artifact_standard_component_bindings.svg +73 -0
  46. package/docs/schema/generated/artifact_standard_components.md +114 -0
  47. package/docs/schema/generated/artifact_standard_components.svg +73 -0
  48. package/docs/schema/generated/artifact_standard_diagram_policies.md +99 -0
  49. package/docs/schema/generated/artifact_standard_diagram_policies.svg +49 -0
  50. package/docs/schema/generated/artifact_standard_document_blueprints.md +101 -0
  51. package/docs/schema/generated/artifact_standard_document_blueprints.svg +128 -0
  52. package/docs/schema/generated/artifact_standard_document_component_relations.md +118 -0
  53. package/docs/schema/generated/artifact_standard_document_component_relations.svg +87 -0
  54. package/docs/schema/generated/artifact_standard_document_components.md +148 -0
  55. package/docs/schema/generated/artifact_standard_document_components.svg +139 -0
  56. package/docs/schema/generated/artifact_standard_figure_policies.md +99 -0
  57. package/docs/schema/generated/artifact_standard_figure_policies.svg +49 -0
  58. package/docs/schema/generated/artifact_standard_generated_output_links.md +144 -0
  59. package/docs/schema/generated/artifact_standard_generated_output_links.svg +57 -0
  60. package/docs/schema/generated/artifact_standard_physical_structure_policies.md +124 -0
  61. package/docs/schema/generated/artifact_standard_physical_structure_policies.svg +78 -0
  62. package/docs/schema/generated/artifact_standard_schema_migrations.md +52 -0
  63. package/docs/schema/generated/artifact_standard_schema_migrations.svg +27 -0
  64. package/docs/schema/generated/artifact_standard_source_mappings.md +120 -0
  65. package/docs/schema/generated/artifact_standard_source_mappings.svg +49 -0
  66. package/docs/schema/generated/artifact_standard_standards.md +102 -0
  67. package/docs/schema/generated/artifact_standard_standards.svg +313 -0
  68. package/docs/schema/generated/artifact_standard_table_column_schemas.md +147 -0
  69. package/docs/schema/generated/artifact_standard_table_column_schemas.svg +52 -0
  70. package/docs/schema/generated/artifact_standard_table_schemas.md +99 -0
  71. package/docs/schema/generated/artifact_standard_table_schemas.svg +71 -0
  72. package/docs/schema/generated/artifact_standard_template_slots.md +143 -0
  73. package/docs/schema/generated/artifact_standard_template_slots.svg +88 -0
  74. package/docs/schema/generated/artifact_standard_validation_rule_set_rules.md +128 -0
  75. package/docs/schema/generated/artifact_standard_validation_rule_set_rules.svg +52 -0
  76. package/docs/schema/generated/artifact_standard_validation_rule_sets.md +91 -0
  77. package/docs/schema/generated/artifact_standard_validation_rule_sets.svg +71 -0
  78. package/docs/schema/generated/schema.json +4230 -0
  79. package/docs/schema/generated/schema.mmd +327 -0
  80. package/docs/schema/generated/schema.svg +510 -0
  81. package/docs/usage.md +197 -0
  82. package/package.json +30 -0
  83. package/src/database/migrations/0001_artifact_standard_base.sql +1295 -0
@@ -0,0 +1,1295 @@
1
+ PRAGMA foreign_keys = ON;
2
+
3
+ -- artifact-standard 패키지의 migration 적용 이력을 관리한다.
4
+ CREATE TABLE IF NOT EXISTS artifact_standard_schema_migrations (
5
+ -- migration 식별자
6
+ migration_id VARCHAR(128) PRIMARY KEY,
7
+
8
+ -- migration 이름
9
+ migration_name VARCHAR(256) NOT NULL,
10
+
11
+ -- 적용 시각
12
+ applied_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
13
+ );
14
+
15
+ -- 코드 그룹을 정의한다.
16
+ CREATE TABLE IF NOT EXISTS artifact_standard_code_groups (
17
+ -- 코드 그룹 식별자
18
+ code_group_code VARCHAR(64) PRIMARY KEY,
19
+
20
+ -- 코드 그룹 한글명
21
+ code_group_name VARCHAR(128) NOT NULL,
22
+
23
+ -- 코드 그룹 설명
24
+ description TEXT,
25
+
26
+ -- 표시 정렬 순서
27
+ sort_order INTEGER NOT NULL DEFAULT 0,
28
+
29
+ -- 활성 여부. 1은 활성, 0은 비활성
30
+ is_active INTEGER NOT NULL DEFAULT 1
31
+ CHECK (is_active IN (0, 1)),
32
+
33
+ -- 생성 시각
34
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
35
+
36
+ -- 수정 시각
37
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
38
+ );
39
+
40
+ -- 코드 그룹별 코드 값을 정의한다.
41
+ CREATE TABLE IF NOT EXISTS artifact_standard_codes (
42
+ -- 코드 그룹 식별자
43
+ code_group_code VARCHAR(64) NOT NULL,
44
+
45
+ -- 코드 값. UPPER_SNAKE_CASE를 사용한다.
46
+ code VARCHAR(128) NOT NULL,
47
+
48
+ -- 코드 한글명
49
+ code_name VARCHAR(128) NOT NULL,
50
+
51
+ -- 코드 설명
52
+ description TEXT,
53
+
54
+ -- 표시 정렬 순서
55
+ sort_order INTEGER NOT NULL DEFAULT 0,
56
+
57
+ -- 활성 여부. 1은 활성, 0은 비활성
58
+ is_active INTEGER NOT NULL DEFAULT 1
59
+ CHECK (is_active IN (0, 1)),
60
+
61
+ -- 확장 메타데이터
62
+ metadata_json JSON
63
+ CHECK (metadata_json IS NULL OR json_valid(metadata_json)),
64
+
65
+ -- 생성 시각
66
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
67
+
68
+ -- 수정 시각
69
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
70
+
71
+ PRIMARY KEY (code_group_code, code),
72
+
73
+ FOREIGN KEY (code_group_code)
74
+ REFERENCES artifact_standard_code_groups (code_group_code)
75
+ ON DELETE CASCADE
76
+ );
77
+
78
+ -- 산출물 표준의 최상위 versioned definition을 관리한다.
79
+ CREATE TABLE IF NOT EXISTS artifact_standard_standards (
80
+ -- 산출물 표준 식별자
81
+ artifact_standard_id CHAR(36) PRIMARY KEY
82
+ CHECK (length(artifact_standard_id) = 36),
83
+
84
+ -- 산출물 표준 코드
85
+ artifact_standard_code VARCHAR(128) NOT NULL,
86
+
87
+ -- 산출물 표준 버전
88
+ artifact_standard_version VARCHAR(64) NOT NULL,
89
+
90
+ -- 산출물 표준명
91
+ artifact_standard_name VARCHAR(256) NOT NULL,
92
+
93
+ -- 산출물 표준 유형 코드
94
+ standard_type_code VARCHAR(64) NOT NULL DEFAULT 'DOCUMENT',
95
+
96
+ -- 산출물 표준 상태 코드
97
+ standard_status_code VARCHAR(64) NOT NULL DEFAULT 'DRAFT',
98
+
99
+ -- 산출물 표준 목적
100
+ purpose TEXT,
101
+
102
+ -- 산출물 표준 설명
103
+ description TEXT,
104
+
105
+ -- 소유 역할 코드
106
+ owner_role_code VARCHAR(128),
107
+
108
+ -- 활성 여부
109
+ is_active INTEGER NOT NULL DEFAULT 1
110
+ CHECK (is_active IN (0, 1)),
111
+
112
+ -- 생성 시각
113
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
114
+
115
+ -- 수정 시각
116
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
117
+
118
+ -- 확장 메타데이터
119
+ metadata_json JSON
120
+ CHECK (metadata_json IS NULL OR json_valid(metadata_json)),
121
+
122
+ UNIQUE (artifact_standard_code, artifact_standard_version)
123
+ );
124
+
125
+ -- 산출물 표준을 구성하는 개념, 서식, 가이드, 예시, LLM 보충 지침 resource를 관리한다.
126
+ CREATE TABLE IF NOT EXISTS artifact_standard_components (
127
+ -- component 식별자
128
+ component_id CHAR(36) PRIMARY KEY
129
+ CHECK (length(component_id) = 36),
130
+
131
+ -- 소속 산출물 표준 식별자
132
+ artifact_standard_id CHAR(36) NOT NULL
133
+ CHECK (length(artifact_standard_id) = 36),
134
+
135
+ -- component 코드
136
+ component_code VARCHAR(128) NOT NULL,
137
+
138
+ -- component 유형 코드
139
+ component_type_code VARCHAR(64) NOT NULL,
140
+
141
+ -- component 제목
142
+ component_title VARCHAR(256) NOT NULL,
143
+
144
+ -- component 목적
145
+ component_purpose TEXT,
146
+
147
+ -- 적용 성격 코드
148
+ applicability_code VARCHAR(64) NOT NULL DEFAULT 'COMMON_REFERENCE',
149
+
150
+ -- 참조 유형 코드
151
+ resource_ref_type_code VARCHAR(64) NOT NULL DEFAULT 'FILE_PATH',
152
+
153
+ -- 참조 값
154
+ resource_ref VARCHAR(1024),
155
+
156
+ -- 표시 정렬 순서
157
+ sort_order INTEGER NOT NULL DEFAULT 0,
158
+
159
+ -- 활성 여부
160
+ is_active INTEGER NOT NULL DEFAULT 1
161
+ CHECK (is_active IN (0, 1)),
162
+
163
+ -- 생성 시각
164
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
165
+
166
+ -- 수정 시각
167
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
168
+
169
+ -- 확장 메타데이터
170
+ metadata_json JSON
171
+ CHECK (metadata_json IS NULL OR json_valid(metadata_json)),
172
+
173
+ FOREIGN KEY (artifact_standard_id)
174
+ REFERENCES artifact_standard_standards (artifact_standard_id)
175
+ ON DELETE CASCADE,
176
+
177
+ UNIQUE (artifact_standard_id, component_code)
178
+ );
179
+
180
+ -- component와 산출물 표준 구조 요소 간 적용 관계를 관리한다.
181
+ CREATE TABLE IF NOT EXISTS artifact_standard_component_bindings (
182
+ -- component binding 식별자
183
+ component_binding_id CHAR(36) PRIMARY KEY
184
+ CHECK (length(component_binding_id) = 36),
185
+
186
+ -- 소속 산출물 표준 식별자
187
+ artifact_standard_id CHAR(36) NOT NULL
188
+ CHECK (length(artifact_standard_id) = 36),
189
+
190
+ -- component 식별자
191
+ component_id CHAR(36) NOT NULL
192
+ CHECK (length(component_id) = 36),
193
+
194
+ -- 적용 대상 유형 코드
195
+ target_type_code VARCHAR(128) NOT NULL,
196
+
197
+ -- 적용 대상 참조
198
+ target_ref VARCHAR(256) NOT NULL,
199
+
200
+ -- binding 역할 코드
201
+ binding_role_code VARCHAR(128) NOT NULL,
202
+
203
+ -- 우선순위
204
+ priority INTEGER NOT NULL DEFAULT 100,
205
+
206
+ -- 적용 조건
207
+ applies_when_json JSON
208
+ CHECK (applies_when_json IS NULL OR json_valid(applies_when_json)),
209
+
210
+ -- 설명
211
+ description TEXT,
212
+
213
+ -- 활성 여부
214
+ is_active INTEGER NOT NULL DEFAULT 1
215
+ CHECK (is_active IN (0, 1)),
216
+
217
+ -- 생성 시각
218
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
219
+
220
+ -- 수정 시각
221
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
222
+
223
+ -- 확장 메타데이터
224
+ metadata_json JSON
225
+ CHECK (metadata_json IS NULL OR json_valid(metadata_json)),
226
+
227
+ FOREIGN KEY (artifact_standard_id)
228
+ REFERENCES artifact_standard_standards (artifact_standard_id)
229
+ ON DELETE CASCADE,
230
+
231
+ FOREIGN KEY (component_id)
232
+ REFERENCES artifact_standard_components (component_id)
233
+ ON DELETE CASCADE,
234
+
235
+ UNIQUE (component_id, target_type_code, target_ref, binding_role_code)
236
+ );
237
+
238
+ -- 산출물 문서 구조 기준을 관리한다.
239
+ CREATE TABLE IF NOT EXISTS artifact_standard_document_blueprints (
240
+ -- blueprint 식별자
241
+ blueprint_id CHAR(36) PRIMARY KEY
242
+ CHECK (length(blueprint_id) = 36),
243
+
244
+ -- 소속 산출물 표준 식별자
245
+ artifact_standard_id CHAR(36) NOT NULL
246
+ CHECK (length(artifact_standard_id) = 36),
247
+
248
+ -- blueprint 코드
249
+ blueprint_code VARCHAR(128) NOT NULL,
250
+
251
+ -- blueprint 이름
252
+ blueprint_name VARCHAR(256) NOT NULL,
253
+
254
+ -- 문서 유형 코드
255
+ document_type_code VARCHAR(128) NOT NULL,
256
+
257
+ -- document taxonomy 코드
258
+ taxonomy_code VARCHAR(128),
259
+
260
+ -- 기본 TOC level limit
261
+ default_toc_level_limit INTEGER NOT NULL DEFAULT 3
262
+ CHECK (default_toc_level_limit >= 1),
263
+
264
+ -- 설명
265
+ description TEXT,
266
+
267
+ -- 생성 시각
268
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
269
+
270
+ -- 수정 시각
271
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
272
+
273
+ -- 확장 메타데이터
274
+ metadata_json JSON
275
+ CHECK (metadata_json IS NULL OR json_valid(metadata_json)),
276
+
277
+ FOREIGN KEY (artifact_standard_id)
278
+ REFERENCES artifact_standard_standards (artifact_standard_id)
279
+ ON DELETE CASCADE,
280
+
281
+ UNIQUE (artifact_standard_id, blueprint_code)
282
+ );
283
+
284
+ -- blueprint 내 목차 또는 논리 섹션 node를 관리한다.
285
+ CREATE TABLE IF NOT EXISTS artifact_standard_blueprint_nodes (
286
+ -- blueprint node 식별자
287
+ blueprint_node_id CHAR(36) PRIMARY KEY
288
+ CHECK (length(blueprint_node_id) = 36),
289
+
290
+ -- 소속 blueprint 식별자
291
+ blueprint_id CHAR(36) NOT NULL
292
+ CHECK (length(blueprint_id) = 36),
293
+
294
+ -- 부모 blueprint node 식별자
295
+ parent_blueprint_node_id CHAR(36)
296
+ CHECK (parent_blueprint_node_id IS NULL OR length(parent_blueprint_node_id) = 36),
297
+
298
+ -- node 코드
299
+ node_code VARCHAR(128) NOT NULL,
300
+
301
+ -- node 제목
302
+ node_title VARCHAR(256) NOT NULL,
303
+
304
+ -- node 유형 코드
305
+ node_type_code VARCHAR(64) NOT NULL DEFAULT 'BODY',
306
+
307
+ -- node level. ToC level 또는 논리 section level로 사용한다.
308
+ node_level INTEGER NOT NULL DEFAULT 1
309
+ CHECK (node_level >= 1),
310
+
311
+ -- 목차 표시 여부
312
+ toc_visible INTEGER NOT NULL DEFAULT 1
313
+ CHECK (toc_visible IN (0, 1)),
314
+
315
+ -- 필수 여부
316
+ is_required INTEGER NOT NULL DEFAULT 1
317
+ CHECK (is_required IN (0, 1)),
318
+
319
+ -- 반복 가능 여부
320
+ is_repeatable INTEGER NOT NULL DEFAULT 0
321
+ CHECK (is_repeatable IN (0, 1)),
322
+
323
+ -- 반복 context 코드
324
+ repeat_context_code VARCHAR(128),
325
+
326
+ -- document taxonomy 또는 node type 참조
327
+ taxonomy_ref VARCHAR(256),
328
+
329
+ -- 설명
330
+ description TEXT,
331
+
332
+ -- 표시 정렬 순서
333
+ sort_order INTEGER NOT NULL DEFAULT 0,
334
+
335
+ -- 생성 시각
336
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
337
+
338
+ -- 수정 시각
339
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
340
+
341
+ -- 확장 메타데이터
342
+ metadata_json JSON
343
+ CHECK (metadata_json IS NULL OR json_valid(metadata_json)),
344
+
345
+ FOREIGN KEY (blueprint_id)
346
+ REFERENCES artifact_standard_document_blueprints (blueprint_id)
347
+ ON DELETE CASCADE,
348
+
349
+ FOREIGN KEY (parent_blueprint_node_id)
350
+ REFERENCES artifact_standard_blueprint_nodes (blueprint_node_id)
351
+ ON DELETE CASCADE,
352
+
353
+ UNIQUE (blueprint_id, node_code)
354
+ );
355
+
356
+ -- blueprint node 내 section, table, figure, diagram 등이 들어갈 slot을 관리한다.
357
+ CREATE TABLE IF NOT EXISTS artifact_standard_template_slots (
358
+ -- slot 식별자
359
+ template_slot_id CHAR(36) PRIMARY KEY
360
+ CHECK (length(template_slot_id) = 36),
361
+
362
+ -- 소속 blueprint 식별자
363
+ blueprint_id CHAR(36) NOT NULL
364
+ CHECK (length(blueprint_id) = 36),
365
+
366
+ -- 소속 blueprint node 식별자
367
+ blueprint_node_id CHAR(36)
368
+ CHECK (blueprint_node_id IS NULL OR length(blueprint_node_id) = 36),
369
+
370
+ -- 부모 slot 식별자
371
+ parent_template_slot_id CHAR(36)
372
+ CHECK (parent_template_slot_id IS NULL OR length(parent_template_slot_id) = 36),
373
+
374
+ -- slot 코드
375
+ slot_code VARCHAR(128) NOT NULL,
376
+
377
+ -- slot 이름
378
+ slot_name VARCHAR(256) NOT NULL,
379
+
380
+ -- slot 유형 코드
381
+ slot_type_code VARCHAR(64) NOT NULL,
382
+
383
+ -- block 유형 코드
384
+ block_type_code VARCHAR(64),
385
+
386
+ -- slot 필수 여부
387
+ is_required INTEGER NOT NULL DEFAULT 1
388
+ CHECK (is_required IN (0, 1)),
389
+
390
+ -- 반복 가능 여부
391
+ is_repeatable INTEGER NOT NULL DEFAULT 0
392
+ CHECK (is_repeatable IN (0, 1)),
393
+
394
+ -- 반복 context 코드
395
+ repeat_context_code VARCHAR(128),
396
+
397
+ -- schema 참조
398
+ schema_ref VARCHAR(256),
399
+
400
+ -- 설명
401
+ description TEXT,
402
+
403
+ -- 표시 정렬 순서
404
+ sort_order INTEGER NOT NULL DEFAULT 0,
405
+
406
+ -- 생성 시각
407
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
408
+
409
+ -- 수정 시각
410
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
411
+
412
+ -- 확장 메타데이터
413
+ metadata_json JSON
414
+ CHECK (metadata_json IS NULL OR json_valid(metadata_json)),
415
+
416
+ FOREIGN KEY (blueprint_id)
417
+ REFERENCES artifact_standard_document_blueprints (blueprint_id)
418
+ ON DELETE CASCADE,
419
+
420
+ FOREIGN KEY (blueprint_node_id)
421
+ REFERENCES artifact_standard_blueprint_nodes (blueprint_node_id)
422
+ ON DELETE CASCADE,
423
+
424
+ FOREIGN KEY (parent_template_slot_id)
425
+ REFERENCES artifact_standard_template_slots (template_slot_id)
426
+ ON DELETE CASCADE,
427
+
428
+ UNIQUE (blueprint_id, slot_code)
429
+ );
430
+
431
+ -- 산출물 표준 문서의 본문, 부록 등 논리 document component를 관리한다.
432
+ CREATE TABLE IF NOT EXISTS artifact_standard_document_components (
433
+ -- document component 식별자
434
+ document_component_id CHAR(36) PRIMARY KEY
435
+ CHECK (length(document_component_id) = 36),
436
+
437
+ -- 소속 산출물 표준 식별자
438
+ artifact_standard_id CHAR(36) NOT NULL
439
+ CHECK (length(artifact_standard_id) = 36),
440
+
441
+ -- 관련 blueprint 식별자
442
+ blueprint_id CHAR(36)
443
+ CHECK (blueprint_id IS NULL OR length(blueprint_id) = 36),
444
+
445
+ -- 부모 document component 식별자
446
+ parent_document_component_id CHAR(36)
447
+ CHECK (parent_document_component_id IS NULL OR length(parent_document_component_id) = 36),
448
+
449
+ -- document component 코드
450
+ document_component_code VARCHAR(128) NOT NULL,
451
+
452
+ -- document component 이름
453
+ document_component_name VARCHAR(256) NOT NULL,
454
+
455
+ -- component 역할 코드. 본문, 부록, 보조자료, 통제정보 등을 구분한다.
456
+ component_role_code VARCHAR(64) NOT NULL DEFAULT 'MAIN'
457
+ CHECK (component_role_code IN ('MAIN', 'APPENDIX', 'SUPPORTING', 'CONTROL')),
458
+
459
+ -- component 유형 코드. 산출물 표준별로 정의하는 업무적 유형 코드다.
460
+ component_type_code VARCHAR(128) NOT NULL,
461
+
462
+ -- 표현 방식 코드. 하나의 document 내부 node인지, 별도 document인지 구분한다.
463
+ representation_code VARCHAR(64) NOT NULL DEFAULT 'SEPARATE_DOCUMENT'
464
+ CHECK (representation_code IN ('INTERNAL_NODE', 'SEPARATE_DOCUMENT')),
465
+
466
+ -- 논리 계층 level. 물리 폴더 깊이를 의미하지 않는다.
467
+ logical_level INTEGER NOT NULL DEFAULT 0
468
+ CHECK (logical_level >= 0),
469
+
470
+ -- 필수 여부
471
+ is_required INTEGER NOT NULL DEFAULT 1
472
+ CHECK (is_required IN (0, 1)),
473
+
474
+ -- 반복 가능 여부
475
+ is_repeatable INTEGER NOT NULL DEFAULT 0
476
+ CHECK (is_repeatable IN (0, 1)),
477
+
478
+ -- 표시 정렬 순서
479
+ sort_order INTEGER NOT NULL DEFAULT 0,
480
+
481
+ -- 설명
482
+ description TEXT,
483
+
484
+ -- 생성 시각
485
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
486
+
487
+ -- 수정 시각
488
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
489
+
490
+ -- 확장 메타데이터
491
+ metadata_json JSON
492
+ CHECK (metadata_json IS NULL OR json_valid(metadata_json)),
493
+
494
+ FOREIGN KEY (artifact_standard_id)
495
+ REFERENCES artifact_standard_standards (artifact_standard_id)
496
+ ON DELETE CASCADE,
497
+
498
+ FOREIGN KEY (blueprint_id)
499
+ REFERENCES artifact_standard_document_blueprints (blueprint_id)
500
+ ON DELETE SET NULL,
501
+
502
+ FOREIGN KEY (parent_document_component_id)
503
+ REFERENCES artifact_standard_document_components (document_component_id)
504
+ ON DELETE CASCADE,
505
+
506
+ UNIQUE (artifact_standard_id, document_component_code)
507
+ );
508
+
509
+ -- document component 간 논리 관계를 관리한다.
510
+ CREATE TABLE IF NOT EXISTS artifact_standard_document_component_relations (
511
+ -- document component relation 식별자
512
+ document_component_relation_id CHAR(36) PRIMARY KEY
513
+ CHECK (length(document_component_relation_id) = 36),
514
+
515
+ -- 소속 산출물 표준 식별자
516
+ artifact_standard_id CHAR(36) NOT NULL
517
+ CHECK (length(artifact_standard_id) = 36),
518
+
519
+ -- source document component 식별자
520
+ source_document_component_id CHAR(36) NOT NULL
521
+ CHECK (length(source_document_component_id) = 36),
522
+
523
+ -- target document component 식별자
524
+ target_document_component_id CHAR(36) NOT NULL
525
+ CHECK (length(target_document_component_id) = 36),
526
+
527
+ -- 관계 유형 코드
528
+ relation_type_code VARCHAR(64) NOT NULL
529
+ CHECK (relation_type_code IN ('CONTAINS', 'DETAILS', 'SUPPORTS', 'REFERENCES')),
530
+
531
+ -- 필수 관계 여부
532
+ is_required INTEGER NOT NULL DEFAULT 0
533
+ CHECK (is_required IN (0, 1)),
534
+
535
+ -- 표시 정렬 순서
536
+ sort_order INTEGER NOT NULL DEFAULT 0,
537
+
538
+ -- 설명
539
+ description TEXT,
540
+
541
+ -- 생성 시각
542
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
543
+
544
+ -- 수정 시각
545
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
546
+
547
+ -- 확장 메타데이터
548
+ metadata_json JSON
549
+ CHECK (metadata_json IS NULL OR json_valid(metadata_json)),
550
+
551
+ FOREIGN KEY (artifact_standard_id)
552
+ REFERENCES artifact_standard_standards (artifact_standard_id)
553
+ ON DELETE CASCADE,
554
+
555
+ FOREIGN KEY (source_document_component_id)
556
+ REFERENCES artifact_standard_document_components (document_component_id)
557
+ ON DELETE CASCADE,
558
+
559
+ FOREIGN KEY (target_document_component_id)
560
+ REFERENCES artifact_standard_document_components (document_component_id)
561
+ ON DELETE CASCADE,
562
+
563
+ UNIQUE (source_document_component_id, target_document_component_id, relation_type_code)
564
+ );
565
+
566
+ -- document component의 논리 구조를 물리 파일/폴더 구조로 배치하는 정책을 관리한다.
567
+ CREATE TABLE IF NOT EXISTS artifact_standard_physical_structure_policies (
568
+ -- physical structure policy 식별자
569
+ physical_structure_policy_id CHAR(36) PRIMARY KEY
570
+ CHECK (length(physical_structure_policy_id) = 36),
571
+
572
+ -- 소속 산출물 표준 식별자
573
+ artifact_standard_id CHAR(36) NOT NULL
574
+ CHECK (length(artifact_standard_id) = 36),
575
+
576
+ -- 특정 document component에 한정되는 경우의 component 식별자
577
+ document_component_id CHAR(36)
578
+ CHECK (document_component_id IS NULL OR length(document_component_id) = 36),
579
+
580
+ -- physical structure policy 코드
581
+ policy_code VARCHAR(128) NOT NULL,
582
+
583
+ -- physical structure policy 이름
584
+ policy_name VARCHAR(256) NOT NULL,
585
+
586
+ -- 물리 배치 전략 코드
587
+ strategy_code VARCHAR(64) NOT NULL
588
+ CHECK (strategy_code IN ('HIERARCHICAL', 'GROUPED_BY_LEVEL', 'GROUPED_BY_PARENT', 'FLAT_WITH_MANIFEST')),
589
+
590
+ -- 물리 구조에서 관계를 해석하는 기준 원천
591
+ relation_source_code VARCHAR(64) NOT NULL DEFAULT 'DB'
592
+ CHECK (relation_source_code IN ('DB', 'MANIFEST', 'FILE_PATH')),
593
+
594
+ -- 경로 pattern
595
+ path_pattern VARCHAR(1024),
596
+
597
+ -- 파일명 pattern
598
+ naming_pattern VARCHAR(512),
599
+
600
+ -- 기본 정책 여부
601
+ is_default INTEGER NOT NULL DEFAULT 0
602
+ CHECK (is_default IN (0, 1)),
603
+
604
+ -- 설명
605
+ description TEXT,
606
+
607
+ -- 생성 시각
608
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
609
+
610
+ -- 수정 시각
611
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
612
+
613
+ -- 확장 메타데이터
614
+ metadata_json JSON
615
+ CHECK (metadata_json IS NULL OR json_valid(metadata_json)),
616
+
617
+ FOREIGN KEY (artifact_standard_id)
618
+ REFERENCES artifact_standard_standards (artifact_standard_id)
619
+ ON DELETE CASCADE,
620
+
621
+ FOREIGN KEY (document_component_id)
622
+ REFERENCES artifact_standard_document_components (document_component_id)
623
+ ON DELETE SET NULL,
624
+
625
+ UNIQUE (artifact_standard_id, policy_code)
626
+ );
627
+
628
+ -- 산출물 표 단위 schema를 관리한다.
629
+ CREATE TABLE IF NOT EXISTS artifact_standard_table_schemas (
630
+ -- table schema 식별자
631
+ table_schema_id CHAR(36) PRIMARY KEY
632
+ CHECK (length(table_schema_id) = 36),
633
+
634
+ -- 소속 산출물 표준 식별자
635
+ artifact_standard_id CHAR(36) NOT NULL
636
+ CHECK (length(artifact_standard_id) = 36),
637
+
638
+ -- table schema 코드
639
+ table_schema_code VARCHAR(128) NOT NULL,
640
+
641
+ -- table 이름
642
+ table_name VARCHAR(256) NOT NULL,
643
+
644
+ -- caption 필수 여부
645
+ caption_required INTEGER NOT NULL DEFAULT 1
646
+ CHECK (caption_required IN (0, 1)),
647
+
648
+ -- row 필수 여부
649
+ rows_required INTEGER NOT NULL DEFAULT 0
650
+ CHECK (rows_required IN (0, 1)),
651
+
652
+ -- 설명
653
+ description TEXT,
654
+
655
+ -- 생성 시각
656
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
657
+
658
+ -- 수정 시각
659
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
660
+
661
+ -- 확장 메타데이터
662
+ metadata_json JSON
663
+ CHECK (metadata_json IS NULL OR json_valid(metadata_json)),
664
+
665
+ FOREIGN KEY (artifact_standard_id)
666
+ REFERENCES artifact_standard_standards (artifact_standard_id)
667
+ ON DELETE CASCADE,
668
+
669
+ UNIQUE (artifact_standard_id, table_schema_code)
670
+ );
671
+
672
+ -- 산출물 표의 column 단위 schema를 관리한다.
673
+ CREATE TABLE IF NOT EXISTS artifact_standard_table_column_schemas (
674
+ -- table column schema 식별자
675
+ table_column_schema_id CHAR(36) PRIMARY KEY
676
+ CHECK (length(table_column_schema_id) = 36),
677
+
678
+ -- 소속 table schema 식별자
679
+ table_schema_id CHAR(36) NOT NULL
680
+ CHECK (length(table_schema_id) = 36),
681
+
682
+ -- column 코드
683
+ column_code VARCHAR(128) NOT NULL,
684
+
685
+ -- 표시 column명
686
+ display_name VARCHAR(256) NOT NULL,
687
+
688
+ -- 값 유형 코드
689
+ value_type_code VARCHAR(64) NOT NULL DEFAULT 'TEXT',
690
+
691
+ -- 필수 여부
692
+ is_required INTEGER NOT NULL DEFAULT 1
693
+ CHECK (is_required IN (0, 1)),
694
+
695
+ -- NULL 허용 여부
696
+ is_nullable INTEGER NOT NULL DEFAULT 0
697
+ CHECK (is_nullable IN (0, 1)),
698
+
699
+ -- 표시 정렬 순서
700
+ sort_order INTEGER NOT NULL DEFAULT 0,
701
+
702
+ -- 코드셋 참조
703
+ code_set_ref VARCHAR(256),
704
+
705
+ -- 허용값 참조
706
+ allowed_values_ref VARCHAR(256),
707
+
708
+ -- validation rule 참조
709
+ validation_rule_ref VARCHAR(256),
710
+
711
+ -- 정규식 패턴
712
+ pattern VARCHAR(512),
713
+
714
+ -- 최소 숫자값
715
+ min_value DECIMAL,
716
+
717
+ -- 최대 숫자값
718
+ max_value DECIMAL,
719
+
720
+ -- 최소 길이
721
+ min_length INTEGER,
722
+
723
+ -- 최대 길이
724
+ max_length INTEGER,
725
+
726
+ -- 예시값
727
+ example_value TEXT,
728
+
729
+ -- 설명
730
+ description TEXT,
731
+
732
+ -- 생성 시각
733
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
734
+
735
+ -- 수정 시각
736
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
737
+
738
+ -- 확장 메타데이터
739
+ metadata_json JSON
740
+ CHECK (metadata_json IS NULL OR json_valid(metadata_json)),
741
+
742
+ FOREIGN KEY (table_schema_id)
743
+ REFERENCES artifact_standard_table_schemas (table_schema_id)
744
+ ON DELETE CASCADE,
745
+
746
+ UNIQUE (table_schema_id, column_code),
747
+ UNIQUE (table_schema_id, sort_order)
748
+ );
749
+
750
+ -- figure 작성/표현 policy를 관리한다.
751
+ CREATE TABLE IF NOT EXISTS artifact_standard_figure_policies (
752
+ -- figure policy 식별자
753
+ figure_policy_id CHAR(36) PRIMARY KEY
754
+ CHECK (length(figure_policy_id) = 36),
755
+
756
+ -- 소속 산출물 표준 식별자
757
+ artifact_standard_id CHAR(36) NOT NULL
758
+ CHECK (length(artifact_standard_id) = 36),
759
+
760
+ -- figure policy 코드
761
+ figure_policy_code VARCHAR(128) NOT NULL,
762
+
763
+ -- caption 필수 여부
764
+ caption_required INTEGER NOT NULL DEFAULT 1
765
+ CHECK (caption_required IN (0, 1)),
766
+
767
+ -- source path 필수 여부
768
+ source_path_required INTEGER NOT NULL DEFAULT 1
769
+ CHECK (source_path_required IN (0, 1)),
770
+
771
+ -- visible caption mode 코드
772
+ visible_caption_mode_code VARCHAR(64) NOT NULL DEFAULT 'DEDUPLICATE',
773
+
774
+ -- 설명
775
+ description TEXT,
776
+
777
+ -- 생성 시각
778
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
779
+
780
+ -- 수정 시각
781
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
782
+
783
+ -- 확장 메타데이터
784
+ metadata_json JSON
785
+ CHECK (metadata_json IS NULL OR json_valid(metadata_json)),
786
+
787
+ FOREIGN KEY (artifact_standard_id)
788
+ REFERENCES artifact_standard_standards (artifact_standard_id)
789
+ ON DELETE CASCADE,
790
+
791
+ UNIQUE (artifact_standard_id, figure_policy_code)
792
+ );
793
+
794
+ -- diagram 작성/표현 policy를 관리한다.
795
+ CREATE TABLE IF NOT EXISTS artifact_standard_diagram_policies (
796
+ -- diagram policy 식별자
797
+ diagram_policy_id CHAR(36) PRIMARY KEY
798
+ CHECK (length(diagram_policy_id) = 36),
799
+
800
+ -- 소속 산출물 표준 식별자
801
+ artifact_standard_id CHAR(36) NOT NULL
802
+ CHECK (length(artifact_standard_id) = 36),
803
+
804
+ -- diagram policy 코드
805
+ diagram_policy_code VARCHAR(128) NOT NULL,
806
+
807
+ -- notation 코드. 기본값은 ANY
808
+ notation_code VARCHAR(64) NOT NULL DEFAULT 'ANY',
809
+
810
+ -- source text 또는 path 필수 여부
811
+ source_required INTEGER NOT NULL DEFAULT 1
812
+ CHECK (source_required IN (0, 1)),
813
+
814
+ -- render output 필수 여부
815
+ render_output_required INTEGER NOT NULL DEFAULT 0
816
+ CHECK (render_output_required IN (0, 1)),
817
+
818
+ -- 설명
819
+ description TEXT,
820
+
821
+ -- 생성 시각
822
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
823
+
824
+ -- 수정 시각
825
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
826
+
827
+ -- 확장 메타데이터
828
+ metadata_json JSON
829
+ CHECK (metadata_json IS NULL OR json_valid(metadata_json)),
830
+
831
+ FOREIGN KEY (artifact_standard_id)
832
+ REFERENCES artifact_standard_standards (artifact_standard_id)
833
+ ON DELETE CASCADE,
834
+
835
+ UNIQUE (artifact_standard_id, diagram_policy_code)
836
+ );
837
+
838
+ -- 산출물 표준에 적용할 validation rule set을 관리한다.
839
+ CREATE TABLE IF NOT EXISTS artifact_standard_validation_rule_sets (
840
+ -- validation rule set 식별자
841
+ validation_rule_set_id CHAR(36) PRIMARY KEY
842
+ CHECK (length(validation_rule_set_id) = 36),
843
+
844
+ -- 소속 산출물 표준 식별자
845
+ artifact_standard_id CHAR(36) NOT NULL
846
+ CHECK (length(artifact_standard_id) = 36),
847
+
848
+ -- rule set 코드
849
+ rule_set_code VARCHAR(128) NOT NULL,
850
+
851
+ -- rule set 이름
852
+ rule_set_name VARCHAR(256) NOT NULL,
853
+
854
+ -- target domain
855
+ target_domain VARCHAR(128) NOT NULL DEFAULT 'artifact-standard',
856
+
857
+ -- 설명
858
+ description TEXT,
859
+
860
+ -- 생성 시각
861
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
862
+
863
+ -- 수정 시각
864
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
865
+
866
+ -- 확장 메타데이터
867
+ metadata_json JSON
868
+ CHECK (metadata_json IS NULL OR json_valid(metadata_json)),
869
+
870
+ FOREIGN KEY (artifact_standard_id)
871
+ REFERENCES artifact_standard_standards (artifact_standard_id)
872
+ ON DELETE CASCADE,
873
+
874
+ UNIQUE (artifact_standard_id, rule_set_code)
875
+ );
876
+
877
+ -- validation rule set에 포함된 contract-compatible rule을 관리한다.
878
+ CREATE TABLE IF NOT EXISTS artifact_standard_validation_rule_set_rules (
879
+ -- validation rule set rule 식별자
880
+ validation_rule_set_rule_id CHAR(36) PRIMARY KEY
881
+ CHECK (length(validation_rule_set_rule_id) = 36),
882
+
883
+ -- 소속 validation rule set 식별자
884
+ validation_rule_set_id CHAR(36) NOT NULL
885
+ CHECK (length(validation_rule_set_id) = 36),
886
+
887
+ -- rule 식별자
888
+ rule_id VARCHAR(256) NOT NULL,
889
+
890
+ -- validation type 코드. agentic-contract-validation과 정렬한다.
891
+ validation_type_code VARCHAR(64) NOT NULL,
892
+
893
+ -- execution mode 코드. agentic-contract-validation과 정렬한다.
894
+ execution_mode_code VARCHAR(64) NOT NULL,
895
+
896
+ -- severity 코드. agentic-contract-validation과 정렬한다.
897
+ severity_code VARCHAR(64) NOT NULL,
898
+
899
+ -- 적용 대상 유형 코드
900
+ applies_to_type_code VARCHAR(128) NOT NULL,
901
+
902
+ -- 적용 대상 참조
903
+ applies_to_ref VARCHAR(256),
904
+
905
+ -- source component 참조
906
+ source_component_ref VARCHAR(256),
907
+
908
+ -- rule parameter
909
+ parameters_json JSON
910
+ CHECK (parameters_json IS NULL OR json_valid(parameters_json)),
911
+
912
+ -- 위반 메시지
913
+ message TEXT NOT NULL,
914
+
915
+ -- 해결 가이드
916
+ remediation TEXT,
917
+
918
+ -- 표시 정렬 순서
919
+ sort_order INTEGER NOT NULL DEFAULT 0,
920
+
921
+ -- 활성 여부
922
+ is_active INTEGER NOT NULL DEFAULT 1
923
+ CHECK (is_active IN (0, 1)),
924
+
925
+ -- 생성 시각
926
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
927
+
928
+ -- 수정 시각
929
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
930
+
931
+ -- 확장 메타데이터
932
+ metadata_json JSON
933
+ CHECK (metadata_json IS NULL OR json_valid(metadata_json)),
934
+
935
+ FOREIGN KEY (validation_rule_set_id)
936
+ REFERENCES artifact_standard_validation_rule_sets (validation_rule_set_id)
937
+ ON DELETE CASCADE,
938
+
939
+ UNIQUE (validation_rule_set_id, rule_id)
940
+ );
941
+
942
+ -- 산출물 표준 또는 산출물 표준 기반 자동 생성 출력 간 생성 관계를 관리한다.
943
+ CREATE TABLE IF NOT EXISTS artifact_standard_generated_output_links (
944
+ -- generated output link 식별자
945
+ generated_output_link_id CHAR(36) PRIMARY KEY
946
+ CHECK (length(generated_output_link_id) = 36),
947
+
948
+ -- link 코드
949
+ link_code VARCHAR(128) NOT NULL,
950
+
951
+ -- source 산출물 표준 식별자
952
+ source_artifact_standard_id CHAR(36) NOT NULL
953
+ CHECK (length(source_artifact_standard_id) = 36),
954
+
955
+ -- source 산출물 표준 코드
956
+ source_artifact_standard_code VARCHAR(128) NOT NULL,
957
+
958
+ -- source 산출물 표준 버전
959
+ source_artifact_standard_version VARCHAR(64) NOT NULL,
960
+
961
+ -- target 유형 코드. 산출물 표준 또는 생성 출력물을 구분한다.
962
+ target_type_code VARCHAR(64) NOT NULL
963
+ CHECK (target_type_code IN ('ARTIFACT', 'GENERATED_OUTPUT')),
964
+
965
+ -- target 산출물 표준 식별자. target이 ARTIFACT인 경우 사용한다.
966
+ target_artifact_standard_id CHAR(36)
967
+ CHECK (target_artifact_standard_id IS NULL OR length(target_artifact_standard_id) = 36),
968
+
969
+ -- target 산출물 표준 코드
970
+ target_artifact_standard_code VARCHAR(128),
971
+
972
+ -- target 산출물 표준 버전
973
+ target_artifact_standard_version VARCHAR(64),
974
+
975
+ -- target 생성 출력명. target이 GENERATED_OUTPUT인 경우 사용한다.
976
+ target_output_name VARCHAR(256),
977
+
978
+ -- 생성 mode 코드
979
+ generation_mode_code VARCHAR(64) NOT NULL DEFAULT 'AUTOMATIC',
980
+
981
+ -- 표시 정렬 순서
982
+ sort_order INTEGER NOT NULL DEFAULT 0,
983
+
984
+ -- 설명
985
+ description TEXT,
986
+
987
+ -- 활성 여부
988
+ is_active INTEGER NOT NULL DEFAULT 1
989
+ CHECK (is_active IN (0, 1)),
990
+
991
+ -- 생성 시각
992
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
993
+
994
+ -- 수정 시각
995
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
996
+
997
+ -- 확장 메타데이터
998
+ metadata_json JSON
999
+ CHECK (metadata_json IS NULL OR json_valid(metadata_json)),
1000
+
1001
+ FOREIGN KEY (source_artifact_standard_id)
1002
+ REFERENCES artifact_standard_standards (artifact_standard_id)
1003
+ ON DELETE CASCADE,
1004
+
1005
+ FOREIGN KEY (target_artifact_standard_id)
1006
+ REFERENCES artifact_standard_standards (artifact_standard_id)
1007
+ ON DELETE SET NULL,
1008
+
1009
+ UNIQUE (link_code),
1010
+
1011
+ UNIQUE (
1012
+ source_artifact_standard_id,
1013
+ target_type_code,
1014
+ target_artifact_standard_code,
1015
+ target_artifact_standard_version,
1016
+ target_output_name
1017
+ )
1018
+ );
1019
+
1020
+ -- 설계 근거 및 후속 이행 후보 source mapping을 관리한다.
1021
+ CREATE TABLE IF NOT EXISTS artifact_standard_source_mappings (
1022
+ -- source mapping 식별자
1023
+ source_mapping_id CHAR(36) PRIMARY KEY
1024
+ CHECK (length(source_mapping_id) = 36),
1025
+
1026
+ -- 소속 산출물 표준 식별자
1027
+ artifact_standard_id CHAR(36) NOT NULL
1028
+ CHECK (length(artifact_standard_id) = 36),
1029
+
1030
+ -- source type 코드
1031
+ source_type_code VARCHAR(64) NOT NULL,
1032
+
1033
+ -- source URI 또는 경로
1034
+ source_uri VARCHAR(1024) NOT NULL,
1035
+
1036
+ -- source label
1037
+ source_label VARCHAR(256),
1038
+
1039
+ -- source section
1040
+ source_section VARCHAR(512),
1041
+
1042
+ -- source fragment
1043
+ source_fragment TEXT,
1044
+
1045
+ -- target type 코드
1046
+ target_type_code VARCHAR(128) NOT NULL,
1047
+
1048
+ -- target 참조
1049
+ target_ref VARCHAR(256) NOT NULL,
1050
+
1051
+ -- mapping type 코드
1052
+ mapping_type_code VARCHAR(64) NOT NULL,
1053
+
1054
+ -- mapping status 코드
1055
+ mapping_status_code VARCHAR(64) NOT NULL DEFAULT 'CANDIDATE',
1056
+
1057
+ -- 판단 근거
1058
+ rationale TEXT,
1059
+
1060
+ -- 손실/보완 사항
1061
+ loss_note TEXT,
1062
+
1063
+ -- 후속 조치 메모
1064
+ follow_up_note TEXT,
1065
+
1066
+ -- 생성 시각
1067
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
1068
+
1069
+ -- 수정 시각
1070
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
1071
+
1072
+ -- 확장 메타데이터
1073
+ metadata_json JSON
1074
+ CHECK (metadata_json IS NULL OR json_valid(metadata_json)),
1075
+
1076
+ FOREIGN KEY (artifact_standard_id)
1077
+ REFERENCES artifact_standard_standards (artifact_standard_id)
1078
+ ON DELETE CASCADE
1079
+ );
1080
+
1081
+ CREATE INDEX IF NOT EXISTS idx_artifact_standard_components_standard
1082
+ ON artifact_standard_components (artifact_standard_id);
1083
+
1084
+ CREATE INDEX IF NOT EXISTS idx_artifact_standard_component_bindings_standard
1085
+ ON artifact_standard_component_bindings (artifact_standard_id);
1086
+
1087
+ CREATE INDEX IF NOT EXISTS idx_artifact_standard_component_bindings_target
1088
+ ON artifact_standard_component_bindings (target_type_code, target_ref);
1089
+
1090
+ CREATE INDEX IF NOT EXISTS idx_artifact_standard_template_slots_blueprint
1091
+ ON artifact_standard_template_slots (blueprint_id);
1092
+
1093
+ CREATE INDEX IF NOT EXISTS idx_artifact_standard_blueprint_nodes_blueprint
1094
+ ON artifact_standard_blueprint_nodes (blueprint_id);
1095
+
1096
+ CREATE INDEX IF NOT EXISTS idx_artifact_standard_template_slots_node
1097
+ ON artifact_standard_template_slots (blueprint_node_id);
1098
+
1099
+ CREATE INDEX IF NOT EXISTS idx_artifact_standard_document_components_standard
1100
+ ON artifact_standard_document_components (artifact_standard_id);
1101
+
1102
+ CREATE INDEX IF NOT EXISTS idx_artifact_standard_document_components_parent
1103
+ ON artifact_standard_document_components (parent_document_component_id);
1104
+
1105
+ CREATE INDEX IF NOT EXISTS idx_artifact_standard_document_components_role_type
1106
+ ON artifact_standard_document_components (artifact_standard_id, component_role_code, component_type_code);
1107
+
1108
+ CREATE INDEX IF NOT EXISTS idx_artifact_standard_document_component_relations_standard
1109
+ ON artifact_standard_document_component_relations (artifact_standard_id);
1110
+
1111
+ CREATE INDEX IF NOT EXISTS idx_artifact_standard_document_component_relations_source
1112
+ ON artifact_standard_document_component_relations (source_document_component_id);
1113
+
1114
+ CREATE INDEX IF NOT EXISTS idx_artifact_standard_document_component_relations_target
1115
+ ON artifact_standard_document_component_relations (target_document_component_id);
1116
+
1117
+ CREATE INDEX IF NOT EXISTS idx_artifact_standard_physical_structure_policies_standard
1118
+ ON artifact_standard_physical_structure_policies (artifact_standard_id);
1119
+
1120
+ CREATE UNIQUE INDEX IF NOT EXISTS ux_artifact_standard_physical_structure_default
1121
+ ON artifact_standard_physical_structure_policies (artifact_standard_id)
1122
+ WHERE is_default = 1;
1123
+
1124
+ CREATE INDEX IF NOT EXISTS idx_artifact_standard_table_columns_schema
1125
+ ON artifact_standard_table_column_schemas (table_schema_id);
1126
+
1127
+ CREATE INDEX IF NOT EXISTS idx_artifact_standard_rule_set_rules_rule_set
1128
+ ON artifact_standard_validation_rule_set_rules (validation_rule_set_id);
1129
+
1130
+ CREATE INDEX IF NOT EXISTS idx_artifact_standard_generated_output_links_source
1131
+ ON artifact_standard_generated_output_links (source_artifact_standard_id);
1132
+
1133
+ CREATE INDEX IF NOT EXISTS idx_artifact_standard_generated_output_links_target_artifact
1134
+ ON artifact_standard_generated_output_links (target_artifact_standard_id);
1135
+
1136
+ CREATE INDEX IF NOT EXISTS idx_artifact_standard_source_mappings_standard
1137
+ ON artifact_standard_source_mappings (artifact_standard_id);
1138
+
1139
+ INSERT OR IGNORE INTO artifact_standard_schema_migrations (migration_id, migration_name)
1140
+ VALUES ('0001_artifact_standard_base', 'artifact-standard base schema');
1141
+
1142
+ INSERT OR IGNORE INTO artifact_standard_code_groups (code_group_code, code_group_name, description, sort_order)
1143
+ VALUES
1144
+ ('standard_type_code', '산출물 표준 유형 코드', '산출물 표준의 유형을 정의한다.', 10),
1145
+ ('standard_status_code', '산출물 표준 상태 코드', '산출물 표준의 lifecycle 상태를 정의한다.', 20),
1146
+ ('component_type_code', 'Component 유형 코드', '산출물 표준 component 유형을 정의한다.', 30),
1147
+ ('applicability_code', '적용 성격 코드', 'component 사용 성격을 정의한다.', 40),
1148
+ ('component_binding_target_type_code', 'Component Binding Target 유형 코드', 'component binding 적용 대상 유형을 정의한다.', 50),
1149
+ ('component_binding_role_code', 'Component Binding Role 코드', 'component binding 역할을 정의한다.', 60),
1150
+ ('blueprint_node_type_code', 'Blueprint Node 유형 코드', 'blueprint node 유형을 정의한다.', 70),
1151
+ ('slot_type_code', 'Template Slot 유형 코드', 'template slot 유형을 정의한다.', 80),
1152
+ ('block_type_code', 'Block 유형 코드', 'slot 또는 schema 대상 block 유형을 정의한다.', 90),
1153
+ ('value_type_code', '값 유형 코드', 'table column 값 유형을 정의한다.', 100),
1154
+ ('notation_code', 'Diagram notation 코드', 'diagram notation 유형을 정의한다.', 110),
1155
+ ('validation_target_type_code', 'Validation Target Type 코드', 'artifact-standard validation target type을 정의한다.', 120),
1156
+ ('validation_type_code', 'Validation Type 코드', 'agentic-contract-validation과 정렬되는 validation type을 정의한다.', 130),
1157
+ ('execution_mode_code', 'Execution Mode 코드', 'agentic-contract-validation과 정렬되는 execution mode를 정의한다.', 140),
1158
+ ('severity_code', 'Severity 코드', 'agentic-contract-validation과 정렬되는 severity를 정의한다.', 150),
1159
+ ('mapping_type_code', 'Source Mapping 유형 코드', 'source mapping 유형을 정의한다.', 160),
1160
+ ('mapping_status_code', 'Source Mapping 상태 코드', 'source mapping 검토 상태를 정의한다.', 170),
1161
+ ('document_component_role_code', 'Document Component 역할 코드', '산출물 문서 component 역할을 정의한다.', 180),
1162
+ ('document_component_representation_code', 'Document Component 표현 방식 코드', 'document component의 표현 방식을 정의한다.', 190),
1163
+ ('document_component_relation_type_code', 'Document Component 관계 유형 코드', 'document component 간 논리 관계를 정의한다.', 200),
1164
+ ('physical_structure_strategy_code', 'Physical Structure 전략 코드', '논리 document component를 물리 구조로 배치하는 전략을 정의한다.', 210),
1165
+ ('physical_relation_source_code', 'Physical Relation Source 코드', '물리 구조에서 관계를 해석하는 기준 원천을 정의한다.', 220),
1166
+ ('generated_output_target_type_code', 'Generated Output Target 유형 코드', '자동 생성 관계의 target 유형을 정의한다.', 230),
1167
+ ('generation_mode_code', 'Generation Mode 코드', '산출물 기반 생성 방식을 정의한다.', 240);
1168
+
1169
+ INSERT OR IGNORE INTO artifact_standard_codes (code_group_code, code, code_name, sort_order)
1170
+ VALUES
1171
+ ('standard_type_code', 'DOCUMENT', '문서형 산출물 표준', 10),
1172
+ ('standard_type_code', 'DATA', '데이터형 산출물 표준', 20),
1173
+ ('standard_status_code', 'DRAFT', '초안', 10),
1174
+ ('standard_status_code', 'ACTIVE', '활성', 20),
1175
+ ('standard_status_code', 'DEPRECATED', '폐기 예정', 30),
1176
+ ('standard_status_code', 'ARCHIVED', '보관', 40),
1177
+ ('component_type_code', 'CONCEPT', '개념', 10),
1178
+ ('component_type_code', 'FORMAT', '서식', 20),
1179
+ ('component_type_code', 'GUIDE', '가이드 및 기법', 30),
1180
+ ('component_type_code', 'EXAMPLE', '예시', 40),
1181
+ ('component_type_code', 'LLM_SUPPLEMENT', 'LLM 보충 지침', 50),
1182
+ ('applicability_code', 'COMMON_REFERENCE', '공통 참고', 10),
1183
+ ('applicability_code', 'HUMAN_REFERENCE', '사람 참고', 20),
1184
+ ('applicability_code', 'LLM_SUPPLEMENT', 'LLM 보충', 30),
1185
+ ('component_binding_target_type_code', 'ARTIFACT_STANDARD', '산출물 표준', 10),
1186
+ ('component_binding_target_type_code', 'DOCUMENT_BLUEPRINT', '문서 Blueprint', 20),
1187
+ ('component_binding_target_type_code', 'BLUEPRINT_NODE', 'Blueprint Node', 30),
1188
+ ('component_binding_target_type_code', 'TEMPLATE_SLOT', 'Template Slot', 40),
1189
+ ('component_binding_target_type_code', 'TABLE_SCHEMA', 'Table Schema', 50),
1190
+ ('component_binding_target_type_code', 'FIGURE_POLICY', 'Figure Policy', 60),
1191
+ ('component_binding_target_type_code', 'DIAGRAM_POLICY', 'Diagram Policy', 70),
1192
+ ('component_binding_target_type_code', 'VALIDATION_RULE_SET', 'Validation Rule Set', 80),
1193
+ ('component_binding_target_type_code', 'DOCUMENT_COMPONENT', 'Document Component', 90),
1194
+ ('component_binding_target_type_code', 'DOCUMENT_COMPONENT_RELATION', 'Document Component Relation', 100),
1195
+ ('component_binding_target_type_code', 'PHYSICAL_STRUCTURE_POLICY', 'Physical Structure Policy', 110),
1196
+ ('component_binding_role_code', 'PRIMARY_GUIDE', '주요 작성 가이드', 10),
1197
+ ('component_binding_role_code', 'SUPPLEMENTARY_GUIDE', '보조 작성 가이드', 20),
1198
+ ('component_binding_role_code', 'FORMAT_SOURCE', '서식 원천', 30),
1199
+ ('component_binding_role_code', 'EXAMPLE_GOOD', '좋은 예시', 40),
1200
+ ('component_binding_role_code', 'EXAMPLE_BAD', '나쁜 예시', 50),
1201
+ ('component_binding_role_code', 'LLM_SUPPLEMENT', 'LLM 보충 지침', 60),
1202
+ ('component_binding_role_code', 'VALIDATION_RATIONALE', '검증 근거', 70),
1203
+ ('component_binding_role_code', 'REFERENCE', '참고 자료', 80),
1204
+ ('blueprint_node_type_code', 'FRONT_MATTER', 'Front Matter', 10),
1205
+ ('blueprint_node_type_code', 'BODY', '본문', 20),
1206
+ ('blueprint_node_type_code', 'BACK_MATTER', 'Back Matter', 30),
1207
+ ('blueprint_node_type_code', 'APPENDIX', '부록', 40),
1208
+ ('slot_type_code', 'PARAGRAPH', '문단', 10),
1209
+ ('slot_type_code', 'TABLE', '표', 20),
1210
+ ('slot_type_code', 'FIGURE', '그림', 30),
1211
+ ('slot_type_code', 'DIAGRAM', '도해', 40),
1212
+ ('slot_type_code', 'CHECKLIST', '체크리스트', 50),
1213
+ ('block_type_code', 'PARAGRAPH', '문단', 10),
1214
+ ('block_type_code', 'TABLE', '표', 20),
1215
+ ('block_type_code', 'FIGURE', '그림', 30),
1216
+ ('block_type_code', 'DIAGRAM', '도해', 40),
1217
+ ('value_type_code', 'TEXT', '문자열', 10),
1218
+ ('value_type_code', 'LONG_TEXT', '긴 문자열', 20),
1219
+ ('value_type_code', 'INTEGER', '정수', 30),
1220
+ ('value_type_code', 'DECIMAL', '소수', 40),
1221
+ ('value_type_code', 'BOOLEAN', '불리언', 50),
1222
+ ('value_type_code', 'DATE', '날짜', 60),
1223
+ ('value_type_code', 'DATETIME', '일시', 70),
1224
+ ('value_type_code', 'CODE', '코드', 80),
1225
+ ('value_type_code', 'IDENTIFIER', '식별자', 90),
1226
+ ('value_type_code', 'LINK', '링크', 100),
1227
+ ('value_type_code', 'MARKDOWN', 'Markdown', 110),
1228
+ ('value_type_code', 'JSON', 'JSON', 120),
1229
+ ('notation_code', 'MERMAID', 'Mermaid', 10),
1230
+ ('notation_code', 'PLANTUML', 'PlantUML', 20),
1231
+ ('notation_code', 'DRAWIO', 'draw.io', 30),
1232
+ ('notation_code', 'SVG', 'SVG', 40),
1233
+ ('validation_target_type_code', 'ARTIFACT_STANDARD', '산출물 표준', 10),
1234
+ ('validation_target_type_code', 'DOCUMENT_BLUEPRINT', 'Document Blueprint', 20),
1235
+ ('validation_target_type_code', 'BLUEPRINT_NODE', 'Blueprint Node', 30),
1236
+ ('validation_target_type_code', 'TEMPLATE_SLOT', 'Template Slot', 40),
1237
+ ('validation_target_type_code', 'TABLE_SCHEMA', 'Table Schema', 50),
1238
+ ('validation_target_type_code', 'TABLE_COLUMN_SCHEMA', 'Table Column Schema', 60),
1239
+ ('validation_target_type_code', 'FIGURE_POLICY', 'Figure Policy', 70),
1240
+ ('validation_target_type_code', 'DIAGRAM_POLICY', 'Diagram Policy', 80),
1241
+ ('validation_target_type_code', 'COMPONENT', 'Component', 90),
1242
+ ('validation_target_type_code', 'COMPONENT_BINDING', 'Component Binding', 100),
1243
+ ('validation_target_type_code', 'VALIDATION_RULE_SET', 'Validation Rule Set', 110),
1244
+ ('validation_target_type_code', 'DOCUMENT_COMPONENT', 'Document Component', 120),
1245
+ ('validation_target_type_code', 'DOCUMENT_COMPONENT_RELATION', 'Document Component Relation', 130),
1246
+ ('validation_target_type_code', 'PHYSICAL_STRUCTURE_POLICY', 'Physical Structure Policy', 140),
1247
+ ('validation_type_code', 'STRUCTURE', '구조 검증', 10),
1248
+ ('validation_type_code', 'SCHEMA', 'Schema 검증', 20),
1249
+ ('validation_type_code', 'REFERENCE_INTEGRITY', '참조 무결성 검증', 30),
1250
+ ('validation_type_code', 'POLICY', '정책 검증', 40),
1251
+ ('validation_type_code', 'CONTENT_RULE', '내용 규칙 검증', 50),
1252
+ ('validation_type_code', 'QUALITY_CHECKLIST', '품질 체크리스트', 60),
1253
+ ('validation_type_code', 'RUBRIC', 'Rubric 평가', 70),
1254
+ ('validation_type_code', 'EXAMPLE_BASED_REVIEW', '예시 기반 검토', 80),
1255
+ ('execution_mode_code', 'AUTOMATED', '자동 실행', 10),
1256
+ ('execution_mode_code', 'HUMAN_REVIEW', '사람 검토', 20),
1257
+ ('execution_mode_code', 'LLM_EVALUATION', 'LLM 평가', 30),
1258
+ ('execution_mode_code', 'HYBRID', '혼합 실행', 40),
1259
+ ('severity_code', 'ERROR', '오류', 10),
1260
+ ('severity_code', 'WARNING', '경고', 20),
1261
+ ('severity_code', 'INFO', '정보', 30),
1262
+ ('mapping_type_code', 'DIRECT_COPY', '직접 반영', 10),
1263
+ ('mapping_type_code', 'NORMALIZED', '정규화 반영', 20),
1264
+ ('mapping_type_code', 'DERIVED_RULE', 'Rule 도출', 30),
1265
+ ('mapping_type_code', 'DERIVED_SCHEMA', 'Schema 도출', 40),
1266
+ ('mapping_type_code', 'DERIVED_POLICY', 'Policy 도출', 50),
1267
+ ('mapping_type_code', 'REFERENCE_ONLY', '참고', 60),
1268
+ ('mapping_type_code', 'EXCLUDED', '제외', 70),
1269
+ ('mapping_status_code', 'CANDIDATE', '후보', 10),
1270
+ ('mapping_status_code', 'APPROVED', '승인', 20),
1271
+ ('mapping_status_code', 'DEFERRED', '보류', 30),
1272
+ ('mapping_status_code', 'EXCLUDED', '제외', 40),
1273
+ ('mapping_status_code', 'SUPERSEDED', '대체', 50),
1274
+ ('document_component_role_code', 'MAIN', '본문', 10),
1275
+ ('document_component_role_code', 'APPENDIX', '부록', 20),
1276
+ ('document_component_role_code', 'SUPPORTING', '보조자료', 30),
1277
+ ('document_component_role_code', 'CONTROL', '통제정보', 40),
1278
+ ('document_component_representation_code', 'INTERNAL_NODE', '문서 내부 Node', 10),
1279
+ ('document_component_representation_code', 'SEPARATE_DOCUMENT', '별도 Document', 20),
1280
+ ('document_component_relation_type_code', 'CONTAINS', '포함', 10),
1281
+ ('document_component_relation_type_code', 'DETAILS', '상세화', 20),
1282
+ ('document_component_relation_type_code', 'SUPPORTS', '지원', 30),
1283
+ ('document_component_relation_type_code', 'REFERENCES', '참조', 40),
1284
+ ('physical_structure_strategy_code', 'HIERARCHICAL', '계층형 폴더', 10),
1285
+ ('physical_structure_strategy_code', 'GROUPED_BY_LEVEL', 'Level별 그룹', 20),
1286
+ ('physical_structure_strategy_code', 'GROUPED_BY_PARENT', '상위 component별 그룹', 30),
1287
+ ('physical_structure_strategy_code', 'FLAT_WITH_MANIFEST', 'Manifest 기반 단일 폴더', 40),
1288
+ ('physical_relation_source_code', 'DB', 'DB 관계 기준', 10),
1289
+ ('physical_relation_source_code', 'MANIFEST', 'Manifest 기준', 20),
1290
+ ('physical_relation_source_code', 'FILE_PATH', 'File path 기준', 30),
1291
+ ('generated_output_target_type_code', 'ARTIFACT', '산출물 표준', 10),
1292
+ ('generated_output_target_type_code', 'GENERATED_OUTPUT', '생성 출력물', 20),
1293
+ ('generation_mode_code', 'AUTOMATIC', '자동 생성', 10),
1294
+ ('generation_mode_code', 'ASSISTED', '보조 생성', 20),
1295
+ ('generation_mode_code', 'MANUAL', '수동 생성', 30);