@soddong/agentic-domain-methodology 0.11.1

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 (90) hide show
  1. package/.tbls.yml +64 -0
  2. package/CHANGELOG.md +97 -0
  3. package/README.md +501 -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 +13 -0
  9. package/dist/fixtures.d.ts.map +1 -0
  10. package/dist/fixtures.js +413 -0
  11. package/dist/fixtures.js.map +1 -0
  12. package/dist/index.d.ts +31 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js +19 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/repositories.d.ts +54 -0
  17. package/dist/repositories.d.ts.map +1 -0
  18. package/dist/repositories.js +652 -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 +728 -0
  23. package/dist/seed-apply.js.map +1 -0
  24. package/dist/service.d.ts +107 -0
  25. package/dist/service.d.ts.map +1 -0
  26. package/dist/service.js +225 -0
  27. package/dist/service.js.map +1 -0
  28. package/dist/types.d.ts +356 -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/dist/validators.d.ts +17 -0
  33. package/dist/validators.d.ts.map +1 -0
  34. package/dist/validators.js +297 -0
  35. package/dist/validators.js.map +1 -0
  36. package/docs/build.md +47 -0
  37. package/docs/configuration.md +33 -0
  38. package/docs/delivery.md +52 -0
  39. package/docs/operations.md +55 -0
  40. package/docs/publishing.md +84 -0
  41. package/docs/schema/generated/README.md +39 -0
  42. package/docs/schema/generated/methodology_activities.md +121 -0
  43. package/docs/schema/generated/methodology_activities.svg +143 -0
  44. package/docs/schema/generated/methodology_activity_artifact_requirements.md +129 -0
  45. package/docs/schema/generated/methodology_activity_artifact_requirements.svg +52 -0
  46. package/docs/schema/generated/methodology_activity_criteria.md +112 -0
  47. package/docs/schema/generated/methodology_activity_criteria.svg +52 -0
  48. package/docs/schema/generated/methodology_baseline_requirements.md +103 -0
  49. package/docs/schema/generated/methodology_baseline_requirements.svg +27 -0
  50. package/docs/schema/generated/methodology_code_groups.md +70 -0
  51. package/docs/schema/generated/methodology_code_groups.svg +49 -0
  52. package/docs/schema/generated/methodology_codes.md +88 -0
  53. package/docs/schema/generated/methodology_codes.svg +49 -0
  54. package/docs/schema/generated/methodology_common_blueprint_policies.md +104 -0
  55. package/docs/schema/generated/methodology_common_blueprint_policies.svg +72 -0
  56. package/docs/schema/generated/methodology_common_blueprint_policy_nodes.md +118 -0
  57. package/docs/schema/generated/methodology_common_blueprint_policy_nodes.svg +59 -0
  58. package/docs/schema/generated/methodology_handoff_requirements.md +130 -0
  59. package/docs/schema/generated/methodology_handoff_requirements.svg +27 -0
  60. package/docs/schema/generated/methodology_lifecycles.md +105 -0
  61. package/docs/schema/generated/methodology_lifecycles.svg +71 -0
  62. package/docs/schema/generated/methodology_methodologies.md +92 -0
  63. package/docs/schema/generated/methodology_methodologies.svg +92 -0
  64. package/docs/schema/generated/methodology_phase_processes.md +106 -0
  65. package/docs/schema/generated/methodology_phase_processes.svg +77 -0
  66. package/docs/schema/generated/methodology_phases.md +107 -0
  67. package/docs/schema/generated/methodology_phases.svg +77 -0
  68. package/docs/schema/generated/methodology_processes.md +98 -0
  69. package/docs/schema/generated/methodology_processes.svg +118 -0
  70. package/docs/schema/generated/methodology_schema_migrations.md +52 -0
  71. package/docs/schema/generated/methodology_schema_migrations.svg +27 -0
  72. package/docs/schema/generated/methodology_stage_activities.md +106 -0
  73. package/docs/schema/generated/methodology_stage_activities.svg +77 -0
  74. package/docs/schema/generated/methodology_stage_artifact_requirements.md +109 -0
  75. package/docs/schema/generated/methodology_stage_artifact_requirements.svg +52 -0
  76. package/docs/schema/generated/methodology_stage_criteria.md +112 -0
  77. package/docs/schema/generated/methodology_stage_criteria.svg +52 -0
  78. package/docs/schema/generated/methodology_stages.md +117 -0
  79. package/docs/schema/generated/methodology_stages.svg +121 -0
  80. package/docs/schema/generated/methodology_steps.md +105 -0
  81. package/docs/schema/generated/methodology_steps.svg +52 -0
  82. package/docs/schema/generated/methodology_trace_policies.md +121 -0
  83. package/docs/schema/generated/methodology_trace_policies.svg +27 -0
  84. package/docs/schema/generated/schema.json +4253 -0
  85. package/docs/schema/generated/schema.mmd +296 -0
  86. package/docs/schema/generated/schema.svg +446 -0
  87. package/docs/schema/migrations.md +24 -0
  88. package/docs/usage.md +39 -0
  89. package/package.json +29 -0
  90. package/src/database/migrations/0001_methodology_base.sql +1190 -0
@@ -0,0 +1,121 @@
1
+ # methodology_activities
2
+
3
+ ## Description
4
+
5
+ process 내부의 기본 수행 활동을 관리한다.
6
+
7
+ <details>
8
+ <summary><strong>Table Definition</strong></summary>
9
+
10
+ ```sql
11
+ CREATE TABLE methodology_activities (
12
+ -- activity 식별자
13
+ activity_id CHAR(36) PRIMARY KEY
14
+ CHECK (length(activity_id) = 36),
15
+
16
+ -- 소속 process 식별자
17
+ process_id CHAR(36) NOT NULL
18
+ CHECK (length(process_id) = 36),
19
+
20
+ -- activity 코드
21
+ activity_code VARCHAR(128) NOT NULL,
22
+
23
+ -- activity 이름
24
+ activity_name VARCHAR(256) NOT NULL,
25
+
26
+ -- activity 목적
27
+ activity_purpose TEXT,
28
+
29
+ -- activity 유형 코드
30
+ activity_type_code VARCHAR(64) NOT NULL DEFAULT 'default',
31
+
32
+ -- 책임 role 코드
33
+ responsible_role_code VARCHAR(64),
34
+
35
+ -- process 내 activity 순서
36
+ sort_order INTEGER NOT NULL DEFAULT 0,
37
+
38
+ -- 필수 수행 여부
39
+ is_required INTEGER NOT NULL DEFAULT 1
40
+ CHECK (is_required IN (0, 1)),
41
+
42
+ -- tailoring 허용 여부
43
+ tailoring_allowed INTEGER NOT NULL DEFAULT 0
44
+ CHECK (tailoring_allowed IN (0, 1)),
45
+
46
+ -- 활성 여부
47
+ is_active INTEGER NOT NULL DEFAULT 1
48
+ CHECK (is_active IN (0, 1)),
49
+
50
+ -- 생성 시각
51
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
52
+
53
+ -- 수정 시각
54
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
55
+
56
+ -- 확장 메타데이터
57
+ metadata_json JSON
58
+ CHECK (metadata_json IS NULL OR json_valid(metadata_json)),
59
+
60
+ FOREIGN KEY (process_id)
61
+ REFERENCES methodology_processes (process_id)
62
+ ON DELETE CASCADE,
63
+
64
+ UNIQUE (process_id, activity_code),
65
+ UNIQUE (process_id, sort_order)
66
+ )
67
+ ```
68
+
69
+ </details>
70
+
71
+ ## Columns
72
+
73
+ | Name | Type | Default | Nullable | Children | Parents |
74
+ | --------------------- | ------------ | ----------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- |
75
+ | activity_id | CHAR(36) | | true | [methodology_steps](methodology_steps.md) [methodology_stage_activities](methodology_stage_activities.md) [methodology_activity_artifact_requirements](methodology_activity_artifact_requirements.md) [methodology_activity_criteria](methodology_activity_criteria.md) | |
76
+ | process_id | CHAR(36) | | false | | [methodology_processes](methodology_processes.md) |
77
+ | activity_code | VARCHAR(128) | | false | | |
78
+ | activity_name | VARCHAR(256) | | false | | |
79
+ | activity_purpose | TEXT | | true | | |
80
+ | activity_type_code | VARCHAR(64) | 'default' | false | | |
81
+ | responsible_role_code | VARCHAR(64) | | true | | |
82
+ | sort_order | INTEGER | 0 | false | | |
83
+ | is_required | INTEGER | 1 | false | | |
84
+ | tailoring_allowed | INTEGER | 0 | false | | |
85
+ | is_active | INTEGER | 1 | false | | |
86
+ | created_at | DATETIME | CURRENT_TIMESTAMP | false | | |
87
+ | updated_at | DATETIME | CURRENT_TIMESTAMP | false | | |
88
+ | metadata_json | JSON | | true | | |
89
+
90
+ ## Constraints
91
+
92
+ | Name | Type | Definition |
93
+ | ----------------------------------------- | ----------- | ----------------------------------------------------------------------------------------------------------------------- |
94
+ | activity_id | PRIMARY KEY | PRIMARY KEY (activity_id) |
95
+ | - (Foreign key ID: 0) | FOREIGN KEY | FOREIGN KEY (process_id) REFERENCES methodology_processes (process_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE |
96
+ | sqlite_autoindex_methodology_activities_3 | UNIQUE | UNIQUE (process_id, sort_order) |
97
+ | sqlite_autoindex_methodology_activities_2 | UNIQUE | UNIQUE (process_id, activity_code) |
98
+ | sqlite_autoindex_methodology_activities_1 | PRIMARY KEY | PRIMARY KEY (activity_id) |
99
+ | - | CHECK | CHECK (length(activity_id) = 36) |
100
+ | - | CHECK | CHECK (length(process_id) = 36) |
101
+ | - | CHECK | CHECK (is_required IN (0, 1)) |
102
+ | - | CHECK | CHECK (tailoring_allowed IN (0, 1)) |
103
+ | - | CHECK | CHECK (is_active IN (0, 1)) |
104
+ | - | CHECK | CHECK (metadata_json IS NULL OR json_valid(metadata_json)) |
105
+
106
+ ## Indexes
107
+
108
+ | Name | Definition |
109
+ | ----------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
110
+ | idx_methodology_activities_process_order | CREATE INDEX idx_methodology_activities_process_order<br /> ON methodology_activities (process_id, sort_order) |
111
+ | sqlite_autoindex_methodology_activities_3 | UNIQUE (process_id, sort_order) |
112
+ | sqlite_autoindex_methodology_activities_2 | UNIQUE (process_id, activity_code) |
113
+ | sqlite_autoindex_methodology_activities_1 | PRIMARY KEY (activity_id) |
114
+
115
+ ## Relations
116
+
117
+ ![er](methodology_activities.svg)
118
+
119
+ ---
120
+
121
+ > Generated by [tbls](https://github.com/k1LoW/tbls)
@@ -0,0 +1,143 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
3
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <!-- Generated by graphviz version 12.1.2 (20240928.0832)
5
+ -->
6
+ <!-- Title: methodology_activities Pages: 1 -->
7
+ <svg width="1635pt" height="699pt"
8
+ viewBox="0.00 0.00 1634.62 698.80" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
9
+ <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 694.8)">
10
+ <title>methodology_activities</title>
11
+ <polygon fill="white" stroke="none" points="-4,4 -4,-694.8 1630.62,-694.8 1630.62,4 -4,4"/>
12
+ <!-- methodology_activities -->
13
+ <g id="node1" class="node">
14
+ <title>methodology_activities</title>
15
+ <polygon fill="#efefef" stroke="none" points="621.71,-337.8 621.71,-383.8 873.94,-383.8 873.94,-337.8 621.71,-337.8"/>
16
+ <polygon fill="none" stroke="black" points="621.71,-337.8 621.71,-383.8 873.94,-383.8 873.94,-337.8 621.71,-337.8"/>
17
+ <text text-anchor="start" x="628.71" y="-361.6" font-family="Arial Bold" font-size="18.00">methodology_activities</text>
18
+ <text text-anchor="start" x="797.68" y="-361.6" font-family="Arial" font-size="14.00">    </text>
19
+ <text text-anchor="start" x="828.8" y="-361.6" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
20
+ <text text-anchor="start" x="629.96" y="-347.2" font-family="Arial" font-size="14.00" fill="#333333">process 내부의 기본 수행 활동을 관리한다.</text>
21
+ <polygon fill="none" stroke="black" points="621.71,-307 621.71,-337.8 873.94,-337.8 873.94,-307 621.71,-307"/>
22
+ <text text-anchor="start" x="628.71" y="-319.2" font-family="Arial" font-size="14.00">activity_id </text>
23
+ <text text-anchor="start" x="694.07" y="-319.2" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
24
+ <polygon fill="none" stroke="black" points="621.71,-276.2 621.71,-307 873.94,-307 873.94,-276.2 621.71,-276.2"/>
25
+ <text text-anchor="start" x="628.71" y="-288.4" font-family="Arial" font-size="14.00">process_id </text>
26
+ <text text-anchor="start" x="700.3" y="-288.4" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
27
+ <polygon fill="none" stroke="black" stroke-width="3" points="620.21,-274.7 620.21,-385.3 875.44,-385.3 875.44,-274.7 620.21,-274.7"/>
28
+ </g>
29
+ <!-- methodology_processes -->
30
+ <g id="node6" class="node">
31
+ <title>methodology_processes</title>
32
+ <polygon fill="#efefef" stroke="none" points="619.71,-104.8 619.71,-150.8 875.94,-150.8 875.94,-104.8 619.71,-104.8"/>
33
+ <polygon fill="none" stroke="black" points="619.71,-104.8 619.71,-150.8 875.94,-150.8 875.94,-104.8 619.71,-104.8"/>
34
+ <text text-anchor="start" x="626.71" y="-128.6" font-family="Arial Bold" font-size="18.00">methodology_processes</text>
35
+ <text text-anchor="start" x="799.68" y="-128.6" font-family="Arial" font-size="14.00">    </text>
36
+ <text text-anchor="start" x="830.8" y="-128.6" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
37
+ <text text-anchor="start" x="650.58" y="-114.2" font-family="Arial" font-size="14.00" fill="#333333">재사용 가능한 수행 절차를 관리한다.</text>
38
+ <polygon fill="none" stroke="black" points="619.71,-74 619.71,-104.8 875.94,-104.8 875.94,-74 619.71,-74"/>
39
+ <text text-anchor="start" x="626.71" y="-86.2" font-family="Arial" font-size="14.00">process_id </text>
40
+ <text text-anchor="start" x="698.3" y="-86.2" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
41
+ <polygon fill="none" stroke="black" points="619.71,-43.2 619.71,-74 875.94,-74 875.94,-43.2 619.71,-43.2"/>
42
+ <text text-anchor="start" x="626.71" y="-55.4" font-family="Arial" font-size="14.00">methodology_id </text>
43
+ <text text-anchor="start" x="729.45" y="-55.4" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
44
+ </g>
45
+ <!-- methodology_activities&#45;&gt;methodology_processes -->
46
+ <g id="edge5" class="edge">
47
+ <title>methodology_activities:process_id&#45;&gt;methodology_processes:process_id</title>
48
+ <path fill="none" stroke="black" d="M748.65,-265.11C758.06,-212.41 844.95,-249.69 875.94,-194 898.54,-153.37 923.43,-89.4 876.94,-89.4"/>
49
+ <polygon fill="black" stroke="black" points="748.67,-264.9 743.37,-274.5 748.23,-270.22 747.88,-274.53 747.88,-274.53 747.88,-274.53 748.23,-270.22 752.34,-275.24 748.67,-264.9"/>
50
+ </g>
51
+ <!-- methodology_steps -->
52
+ <g id="node2" class="node">
53
+ <title>methodology_steps</title>
54
+ <polygon fill="#efefef" stroke="none" points="43.2,-586.2 43.2,-632.2 266.45,-632.2 266.45,-586.2 43.2,-586.2"/>
55
+ <polygon fill="none" stroke="black" points="43.2,-586.2 43.2,-632.2 266.45,-632.2 266.45,-586.2 43.2,-586.2"/>
56
+ <text text-anchor="start" x="50.2" y="-610" font-family="Arial Bold" font-size="18.00">methodology_steps</text>
57
+ <text text-anchor="start" x="190.19" y="-610" font-family="Arial" font-size="14.00">    </text>
58
+ <text text-anchor="start" x="221.31" y="-610" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
59
+ <text text-anchor="start" x="59.53" y="-595.6" font-family="Arial" font-size="14.00" fill="#333333">activity 하위 순차 절차를 관리한다.</text>
60
+ <polygon fill="none" stroke="black" points="43.2,-555.4 43.2,-586.2 266.45,-586.2 266.45,-555.4 43.2,-555.4"/>
61
+ <text text-anchor="start" x="50.2" y="-567.6" font-family="Arial" font-size="14.00">step_id </text>
62
+ <text text-anchor="start" x="99.23" y="-567.6" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
63
+ <polygon fill="none" stroke="black" points="43.2,-524.6 43.2,-555.4 266.45,-555.4 266.45,-524.6 43.2,-524.6"/>
64
+ <text text-anchor="start" x="50.2" y="-536.8" font-family="Arial" font-size="14.00">activity_id </text>
65
+ <text text-anchor="start" x="115.56" y="-536.8" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
66
+ </g>
67
+ <!-- methodology_steps&#45;&gt;methodology_activities -->
68
+ <g id="edge1" class="edge">
69
+ <title>methodology_steps:activity_id&#45;&gt;methodology_activities:activity_id</title>
70
+ <path fill="none" stroke="black" d="M277.58,-538.69C304.21,-530.82 291.28,-489.38 318.82,-466 432.08,-369.83 472.13,-322.4 620.71,-322.4"/>
71
+ <polygon fill="black" stroke="black" points="277.7,-538.68 267.2,-535.49 272.41,-539.36 268.11,-539.91 268.11,-539.91 268.11,-539.91 272.41,-539.36 268.36,-544.42 277.7,-538.68"/>
72
+ </g>
73
+ <!-- methodology_stage_activities -->
74
+ <g id="node3" class="node">
75
+ <title>methodology_stage_activities</title>
76
+ <polygon fill="#efefef" stroke="none" points="370.72,-601.6 370.72,-647.6 668.93,-647.6 668.93,-601.6 370.72,-601.6"/>
77
+ <polygon fill="none" stroke="black" points="370.72,-601.6 370.72,-647.6 668.93,-647.6 668.93,-601.6 370.72,-601.6"/>
78
+ <text text-anchor="start" x="377.72" y="-625.4" font-family="Arial Bold" font-size="18.00">methodology_stage_activities</text>
79
+ <text text-anchor="start" x="592.67" y="-625.4" font-family="Arial" font-size="14.00">    </text>
80
+ <text text-anchor="start" x="623.79" y="-625.4" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
81
+ <text text-anchor="start" x="407.4" y="-611" font-family="Arial" font-size="14.00" fill="#333333">stage와 activity의 포함 관계를 관리한다.</text>
82
+ <polygon fill="none" stroke="black" points="370.72,-570.8 370.72,-601.6 668.93,-601.6 668.93,-570.8 370.72,-570.8"/>
83
+ <text text-anchor="start" x="377.72" y="-583" font-family="Arial" font-size="14.00">stage_activity_id </text>
84
+ <text text-anchor="start" x="485.11" y="-583" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
85
+ <polygon fill="none" stroke="black" points="370.72,-540 370.72,-570.8 668.93,-570.8 668.93,-540 370.72,-540"/>
86
+ <text text-anchor="start" x="377.72" y="-552.2" font-family="Arial" font-size="14.00">stage_id </text>
87
+ <text text-anchor="start" x="434.54" y="-552.2" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
88
+ <polygon fill="none" stroke="black" points="370.72,-509.2 370.72,-540 668.93,-540 668.93,-509.2 370.72,-509.2"/>
89
+ <text text-anchor="start" x="377.72" y="-521.4" font-family="Arial" font-size="14.00">activity_id </text>
90
+ <text text-anchor="start" x="443.08" y="-521.4" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
91
+ </g>
92
+ <!-- methodology_stage_activities&#45;&gt;methodology_activities -->
93
+ <g id="edge2" class="edge">
94
+ <title>methodology_stage_activities:activity_id&#45;&gt;methodology_activities:activity_id</title>
95
+ <path fill="none" stroke="black" d="M679.92,-521.71C690.82,-512.8 678.66,-485.25 668.93,-466 657.02,-442.45 633.53,-453.59 621.71,-430 600.29,-387.24 572.89,-322.4 620.71,-322.4"/>
96
+ <polygon fill="black" stroke="black" points="679.86,-521.73 669,-520.18 674.73,-523.21 670.57,-524.41 670.57,-524.41 670.57,-524.41 674.73,-523.21 671.5,-528.83 679.86,-521.73"/>
97
+ </g>
98
+ <!-- methodology_activity_artifact_requirements -->
99
+ <g id="node4" class="node">
100
+ <title>methodology_activity_artifact_requirements</title>
101
+ <polygon fill="#efefef" stroke="none" points="773.75,-586.2 773.75,-632.2 1177.9,-632.2 1177.9,-586.2 773.75,-586.2"/>
102
+ <polygon fill="none" stroke="black" points="773.75,-586.2 773.75,-632.2 1177.9,-632.2 1177.9,-586.2 773.75,-586.2"/>
103
+ <text text-anchor="start" x="780.75" y="-610" font-family="Arial Bold" font-size="18.00">methodology_activity_artifact_requirements</text>
104
+ <text text-anchor="start" x="1101.64" y="-610" font-family="Arial" font-size="14.00">    </text>
105
+ <text text-anchor="start" x="1132.76" y="-610" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
106
+ <text text-anchor="start" x="809.31" y="-595.6" font-family="Arial" font-size="14.00" fill="#333333">activity의 input/output/supporting 산출물 요구를 관리한다.</text>
107
+ <polygon fill="none" stroke="black" points="773.75,-555.4 773.75,-586.2 1177.9,-586.2 1177.9,-555.4 773.75,-555.4"/>
108
+ <text text-anchor="start" x="780.75" y="-567.6" font-family="Arial" font-size="14.00">activity_artifact_requirement_id </text>
109
+ <text text-anchor="start" x="978.39" y="-567.6" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
110
+ <polygon fill="none" stroke="black" points="773.75,-524.6 773.75,-555.4 1177.9,-555.4 1177.9,-524.6 773.75,-524.6"/>
111
+ <text text-anchor="start" x="780.75" y="-536.8" font-family="Arial" font-size="14.00">activity_id </text>
112
+ <text text-anchor="start" x="846.11" y="-536.8" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
113
+ </g>
114
+ <!-- methodology_activity_artifact_requirements&#45;&gt;methodology_activities -->
115
+ <g id="edge3" class="edge">
116
+ <title>methodology_activity_artifact_requirements:activity_id&#45;&gt;methodology_activities:activity_id</title>
117
+ <path fill="none" stroke="black" d="M762.93,-537.28C751.07,-528.41 762.24,-499.88 773.75,-481.4 800.2,-438.92 847.65,-472.59 873.94,-430 899.06,-389.3 922.76,-322.4 874.94,-322.4"/>
118
+ <polygon fill="black" stroke="black" points="762.79,-537.24 771.22,-544.25 767.93,-538.66 772.1,-539.82 772.1,-539.82 772.1,-539.82 767.93,-538.66 773.63,-535.57 762.79,-537.24"/>
119
+ </g>
120
+ <!-- methodology_activity_criteria -->
121
+ <g id="node5" class="node">
122
+ <title>methodology_activity_criteria</title>
123
+ <polygon fill="#efefef" stroke="none" points="1282.23,-586.2 1282.23,-632.2 1583.42,-632.2 1583.42,-586.2 1282.23,-586.2"/>
124
+ <polygon fill="none" stroke="black" points="1282.23,-586.2 1282.23,-632.2 1583.42,-632.2 1583.42,-586.2 1282.23,-586.2"/>
125
+ <text text-anchor="start" x="1289.23" y="-610" font-family="Arial Bold" font-size="18.00">methodology_activity_criteria</text>
126
+ <text text-anchor="start" x="1507.16" y="-610" font-family="Arial" font-size="14.00">    </text>
127
+ <text text-anchor="start" x="1538.28" y="-610" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
128
+ <text text-anchor="start" x="1309.51" y="-595.6" font-family="Arial" font-size="14.00" fill="#333333">activity의 completion 판단 기준을 관리한다.</text>
129
+ <polygon fill="none" stroke="black" points="1282.23,-555.4 1282.23,-586.2 1583.42,-586.2 1583.42,-555.4 1282.23,-555.4"/>
130
+ <text text-anchor="start" x="1289.23" y="-567.6" font-family="Arial" font-size="14.00">activity_criteria_id </text>
131
+ <text text-anchor="start" x="1404.38" y="-567.6" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
132
+ <polygon fill="none" stroke="black" points="1282.23,-524.6 1282.23,-555.4 1583.42,-555.4 1583.42,-524.6 1282.23,-524.6"/>
133
+ <text text-anchor="start" x="1289.23" y="-536.8" font-family="Arial" font-size="14.00">activity_id </text>
134
+ <text text-anchor="start" x="1354.59" y="-536.8" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
135
+ </g>
136
+ <!-- methodology_activity_criteria&#45;&gt;methodology_activities -->
137
+ <g id="edge4" class="edge">
138
+ <title>methodology_activity_criteria:activity_id&#45;&gt;methodology_activities:activity_id</title>
139
+ <path fill="none" stroke="black" d="M1271.11,-538.67C1244.59,-530.66 1258.06,-488.55 1229.82,-466 1096.89,-359.8 1045.09,-322.4 874.94,-322.4"/>
140
+ <polygon fill="black" stroke="black" points="1270.98,-538.65 1280.31,-544.42 1276.27,-539.35 1280.57,-539.91 1280.57,-539.91 1280.57,-539.91 1276.27,-539.35 1281.49,-535.49 1270.98,-538.65"/>
141
+ </g>
142
+ </g>
143
+ </svg>
@@ -0,0 +1,129 @@
1
+ # methodology_activity_artifact_requirements
2
+
3
+ ## Description
4
+
5
+ activity의 input/output/supporting 산출물 요구를 관리한다.
6
+
7
+ <details>
8
+ <summary><strong>Table Definition</strong></summary>
9
+
10
+ ```sql
11
+ CREATE TABLE methodology_activity_artifact_requirements (
12
+ -- activity artifact requirement 식별자
13
+ activity_artifact_requirement_id CHAR(36) PRIMARY KEY
14
+ CHECK (length(activity_artifact_requirement_id) = 36),
15
+
16
+ -- 소속 activity 식별자
17
+ activity_id CHAR(36) NOT NULL
18
+ CHECK (length(activity_id) = 36),
19
+
20
+ -- artifact standard 코드
21
+ artifact_standard_code VARCHAR(128) NOT NULL,
22
+
23
+ -- artifact standard 버전
24
+ artifact_standard_version VARCHAR(64) NOT NULL,
25
+
26
+ -- artifact-standard가 정의한 document component 코드. 산출물 전체가 아니라 특정 본문/부록 구성 단위를 대상으로 할 때 사용한다.
27
+ artifact_component_code VARCHAR(128),
28
+
29
+ -- artifact-standard document component 역할 코드. 예: MAIN, APPENDIX
30
+ artifact_component_role_code VARCHAR(64),
31
+
32
+ -- 산출물 요구 역할 코드
33
+ requirement_role_code VARCHAR(32) NOT NULL
34
+ CHECK (requirement_role_code IN ('input', 'output', 'supporting')),
35
+
36
+ -- output activity가 산출물을 어떻게 다루는지 나타내는 사용 코드
37
+ output_usage_code VARCHAR(32)
38
+ CHECK (output_usage_code IS NULL OR output_usage_code IN ('produces', 'refines', 'reviews', 'consolidates')),
39
+
40
+ -- activity 대표 output 여부
41
+ is_primary INTEGER NOT NULL DEFAULT 0
42
+ CHECK (is_primary IN (0, 1)),
43
+
44
+ -- 필수 여부
45
+ is_required INTEGER NOT NULL DEFAULT 1
46
+ CHECK (is_required IN (0, 1)),
47
+
48
+ -- validation 필수 여부
49
+ validation_required INTEGER NOT NULL DEFAULT 0
50
+ CHECK (validation_required IN (0, 1)),
51
+
52
+ -- activity 내 정렬 순서
53
+ sort_order INTEGER NOT NULL DEFAULT 0,
54
+
55
+ -- 생성 시각
56
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
57
+
58
+ -- 수정 시각
59
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
60
+
61
+ -- 확장 메타데이터
62
+ metadata_json JSON
63
+ CHECK (metadata_json IS NULL OR json_valid(metadata_json)),
64
+
65
+ FOREIGN KEY (activity_id)
66
+ REFERENCES methodology_activities (activity_id)
67
+ ON DELETE CASCADE,
68
+
69
+ UNIQUE (activity_id, sort_order)
70
+ )
71
+ ```
72
+
73
+ </details>
74
+
75
+ ## Columns
76
+
77
+ | Name | Type | Default | Nullable | Parents |
78
+ | -------------------------------- | ------------ | ----------------- | -------- | --------------------------------------------------- |
79
+ | activity_artifact_requirement_id | CHAR(36) | | true | |
80
+ | activity_id | CHAR(36) | | false | [methodology_activities](methodology_activities.md) |
81
+ | artifact_standard_code | VARCHAR(128) | | false | |
82
+ | artifact_standard_version | VARCHAR(64) | | false | |
83
+ | artifact_component_code | VARCHAR(128) | | true | |
84
+ | artifact_component_role_code | VARCHAR(64) | | true | |
85
+ | requirement_role_code | VARCHAR(32) | | false | |
86
+ | output_usage_code | VARCHAR(32) | | true | |
87
+ | is_primary | INTEGER | 0 | false | |
88
+ | is_required | INTEGER | 1 | false | |
89
+ | validation_required | INTEGER | 0 | false | |
90
+ | sort_order | INTEGER | 0 | false | |
91
+ | created_at | DATETIME | CURRENT_TIMESTAMP | false | |
92
+ | updated_at | DATETIME | CURRENT_TIMESTAMP | false | |
93
+ | metadata_json | JSON | | true | |
94
+
95
+ ## Constraints
96
+
97
+ | Name | Type | Definition |
98
+ | ------------------------------------------------------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------- |
99
+ | activity_artifact_requirement_id | PRIMARY KEY | PRIMARY KEY (activity_artifact_requirement_id) |
100
+ | - (Foreign key ID: 0) | FOREIGN KEY | FOREIGN KEY (activity_id) REFERENCES methodology_activities (activity_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE |
101
+ | sqlite_autoindex_methodology_activity_artifact_requirements_2 | UNIQUE | UNIQUE (activity_id, sort_order) |
102
+ | sqlite_autoindex_methodology_activity_artifact_requirements_1 | PRIMARY KEY | PRIMARY KEY (activity_artifact_requirement_id) |
103
+ | - | CHECK | CHECK (length(activity_artifact_requirement_id) = 36) |
104
+ | - | CHECK | CHECK (length(activity_id) = 36) |
105
+ | - | CHECK | CHECK (requirement_role_code IN ('input', 'output', 'supporting')) |
106
+ | - | CHECK | CHECK (output_usage_code IS NULL OR output_usage_code IN ('produces', 'refines', 'reviews', 'consolidates')) |
107
+ | - | CHECK | CHECK (is_primary IN (0, 1)) |
108
+ | - | CHECK | CHECK (is_required IN (0, 1)) |
109
+ | - | CHECK | CHECK (validation_required IN (0, 1)) |
110
+ | - | CHECK | CHECK (metadata_json IS NULL OR json_valid(metadata_json)) |
111
+
112
+ ## Indexes
113
+
114
+ | Name | Definition |
115
+ | ------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
116
+ | ux_methodology_activity_artifact_requirements_unique_target | CREATE UNIQUE INDEX ux_methodology_activity_artifact_requirements_unique_target<br /> ON methodology_activity_artifact_requirements (<br /> activity_id,<br /> artifact_standard_code,<br /> artifact_standard_version,<br /> requirement_role_code,<br /> COALESCE(artifact_component_code, '')<br /> ) |
117
+ | idx_methodology_activity_artifact_requirements_component | CREATE INDEX idx_methodology_activity_artifact_requirements_component<br /> ON methodology_activity_artifact_requirements (artifact_standard_code, artifact_component_code) |
118
+ | idx_methodology_activity_artifact_requirements_activity_role | CREATE INDEX idx_methodology_activity_artifact_requirements_activity_role<br /> ON methodology_activity_artifact_requirements (activity_id, requirement_role_code) |
119
+ | ux_methodology_activity_artifact_requirements_primary_output | CREATE UNIQUE INDEX ux_methodology_activity_artifact_requirements_primary_output<br /> ON methodology_activity_artifact_requirements (activity_id)<br /> WHERE is_primary = 1 |
120
+ | sqlite_autoindex_methodology_activity_artifact_requirements_2 | UNIQUE (activity_id, sort_order) |
121
+ | sqlite_autoindex_methodology_activity_artifact_requirements_1 | PRIMARY KEY (activity_artifact_requirement_id) |
122
+
123
+ ## Relations
124
+
125
+ ![er](methodology_activity_artifact_requirements.svg)
126
+
127
+ ---
128
+
129
+ > Generated by [tbls](https://github.com/k1LoW/tbls)
@@ -0,0 +1,52 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
3
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <!-- Generated by graphviz version 12.1.2 (20240928.0832)
5
+ -->
6
+ <!-- Title: methodology_activity_artifact_requirements Pages: 1 -->
7
+ <svg width="505pt" height="438pt"
8
+ viewBox="0.00 0.00 504.55 438.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
9
+ <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 434)">
10
+ <title>methodology_activity_artifact_requirements</title>
11
+ <polygon fill="white" stroke="none" points="-4,4 -4,-434 500.55,-434 500.55,4 -4,4"/>
12
+ <!-- methodology_activity_artifact_requirements -->
13
+ <g id="node1" class="node">
14
+ <title>methodology_activity_artifact_requirements</title>
15
+ <polygon fill="#efefef" stroke="none" points="46.2,-337.8 46.2,-383.8 450.35,-383.8 450.35,-337.8 46.2,-337.8"/>
16
+ <polygon fill="none" stroke="black" points="46.2,-337.8 46.2,-383.8 450.35,-383.8 450.35,-337.8 46.2,-337.8"/>
17
+ <text text-anchor="start" x="53.2" y="-361.6" font-family="Arial Bold" font-size="18.00">methodology_activity_artifact_requirements</text>
18
+ <text text-anchor="start" x="374.1" y="-361.6" font-family="Arial" font-size="14.00">    </text>
19
+ <text text-anchor="start" x="405.21" y="-361.6" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
20
+ <text text-anchor="start" x="81.76" y="-347.2" font-family="Arial" font-size="14.00" fill="#333333">activity의 input/output/supporting 산출물 요구를 관리한다.</text>
21
+ <polygon fill="none" stroke="black" points="46.2,-307 46.2,-337.8 450.35,-337.8 450.35,-307 46.2,-307"/>
22
+ <text text-anchor="start" x="53.2" y="-319.2" font-family="Arial" font-size="14.00">activity_artifact_requirement_id </text>
23
+ <text text-anchor="start" x="250.85" y="-319.2" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
24
+ <polygon fill="none" stroke="black" points="46.2,-276.2 46.2,-307 450.35,-307 450.35,-276.2 46.2,-276.2"/>
25
+ <text text-anchor="start" x="53.2" y="-288.4" font-family="Arial" font-size="14.00">activity_id </text>
26
+ <text text-anchor="start" x="118.56" y="-288.4" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
27
+ <polygon fill="none" stroke="black" stroke-width="3" points="44.7,-274.7 44.7,-385.3 451.85,-385.3 451.85,-274.7 44.7,-274.7"/>
28
+ </g>
29
+ <!-- methodology_activities -->
30
+ <g id="node2" class="node">
31
+ <title>methodology_activities</title>
32
+ <polygon fill="#efefef" stroke="none" points="122.16,-104.8 122.16,-150.8 374.39,-150.8 374.39,-104.8 122.16,-104.8"/>
33
+ <polygon fill="none" stroke="black" points="122.16,-104.8 122.16,-150.8 374.39,-150.8 374.39,-104.8 122.16,-104.8"/>
34
+ <text text-anchor="start" x="129.16" y="-128.6" font-family="Arial Bold" font-size="18.00">methodology_activities</text>
35
+ <text text-anchor="start" x="298.13" y="-128.6" font-family="Arial" font-size="14.00">    </text>
36
+ <text text-anchor="start" x="329.25" y="-128.6" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
37
+ <text text-anchor="start" x="130.41" y="-114.2" font-family="Arial" font-size="14.00" fill="#333333">process 내부의 기본 수행 활동을 관리한다.</text>
38
+ <polygon fill="none" stroke="black" points="122.16,-74 122.16,-104.8 374.39,-104.8 374.39,-74 122.16,-74"/>
39
+ <text text-anchor="start" x="129.16" y="-86.2" font-family="Arial" font-size="14.00">activity_id </text>
40
+ <text text-anchor="start" x="194.52" y="-86.2" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
41
+ <polygon fill="none" stroke="black" points="122.16,-43.2 122.16,-74 374.39,-74 374.39,-43.2 122.16,-43.2"/>
42
+ <text text-anchor="start" x="129.16" y="-55.4" font-family="Arial" font-size="14.00">process_id </text>
43
+ <text text-anchor="start" x="200.76" y="-55.4" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
44
+ </g>
45
+ <!-- methodology_activity_artifact_requirements&#45;&gt;methodology_activities -->
46
+ <g id="edge1" class="edge">
47
+ <title>methodology_activity_artifact_requirements:activity_id&#45;&gt;methodology_activities:activity_id</title>
48
+ <path fill="none" stroke="black" d="M249.15,-264.9C258.72,-213.17 344.01,-249.06 374.39,-194 396.85,-153.29 421.88,-89.4 375.39,-89.4"/>
49
+ <polygon fill="black" stroke="black" points="249.15,-264.9 243.82,-274.49 248.7,-270.22 248.33,-274.53 248.33,-274.53 248.33,-274.53 248.7,-270.22 252.79,-275.25 249.15,-264.9"/>
50
+ </g>
51
+ </g>
52
+ </svg>
@@ -0,0 +1,112 @@
1
+ # methodology_activity_criteria
2
+
3
+ ## Description
4
+
5
+ activity의 completion 판단 기준을 관리한다.
6
+
7
+ <details>
8
+ <summary><strong>Table Definition</strong></summary>
9
+
10
+ ```sql
11
+ CREATE TABLE methodology_activity_criteria (
12
+ -- activity criteria 식별자
13
+ activity_criteria_id CHAR(36) PRIMARY KEY
14
+ CHECK (length(activity_criteria_id) = 36),
15
+
16
+ -- 소속 activity 식별자
17
+ activity_id CHAR(36) NOT NULL
18
+ CHECK (length(activity_id) = 36),
19
+
20
+ -- criteria 유형 코드
21
+ criteria_type_code VARCHAR(32) NOT NULL DEFAULT 'completion'
22
+ CHECK (criteria_type_code = 'completion'),
23
+
24
+ -- criteria 이름
25
+ criteria_name VARCHAR(256) NOT NULL,
26
+
27
+ -- criteria 내용
28
+ criteria_text TEXT NOT NULL,
29
+
30
+ -- 필수 여부
31
+ is_required INTEGER NOT NULL DEFAULT 1
32
+ CHECK (is_required IN (0, 1)),
33
+
34
+ -- validation 필수 여부
35
+ validation_required INTEGER NOT NULL DEFAULT 0
36
+ CHECK (validation_required IN (0, 1)),
37
+
38
+ -- 심각도 코드
39
+ severity_code VARCHAR(32) NOT NULL DEFAULT 'error'
40
+ CHECK (severity_code IN ('info', 'warning', 'error', 'critical')),
41
+
42
+ -- activity criteria 정렬 순서
43
+ sort_order INTEGER NOT NULL DEFAULT 0,
44
+
45
+ -- 생성 시각
46
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
47
+
48
+ -- 수정 시각
49
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
50
+
51
+ -- 확장 메타데이터
52
+ metadata_json JSON
53
+ CHECK (metadata_json IS NULL OR json_valid(metadata_json)),
54
+
55
+ FOREIGN KEY (activity_id)
56
+ REFERENCES methodology_activities (activity_id)
57
+ ON DELETE CASCADE,
58
+
59
+ UNIQUE (activity_id, sort_order)
60
+ )
61
+ ```
62
+
63
+ </details>
64
+
65
+ ## Columns
66
+
67
+ | Name | Type | Default | Nullable | Parents |
68
+ | -------------------- | ------------ | ----------------- | -------- | --------------------------------------------------- |
69
+ | activity_criteria_id | CHAR(36) | | true | |
70
+ | activity_id | CHAR(36) | | false | [methodology_activities](methodology_activities.md) |
71
+ | criteria_type_code | VARCHAR(32) | 'completion' | false | |
72
+ | criteria_name | VARCHAR(256) | | false | |
73
+ | criteria_text | TEXT | | false | |
74
+ | is_required | INTEGER | 1 | false | |
75
+ | validation_required | INTEGER | 0 | false | |
76
+ | severity_code | VARCHAR(32) | 'error' | false | |
77
+ | sort_order | INTEGER | 0 | false | |
78
+ | created_at | DATETIME | CURRENT_TIMESTAMP | false | |
79
+ | updated_at | DATETIME | CURRENT_TIMESTAMP | false | |
80
+ | metadata_json | JSON | | true | |
81
+
82
+ ## Constraints
83
+
84
+ | Name | Type | Definition |
85
+ | ------------------------------------------------ | ----------- | -------------------------------------------------------------------------------------------------------------------------- |
86
+ | activity_criteria_id | PRIMARY KEY | PRIMARY KEY (activity_criteria_id) |
87
+ | - (Foreign key ID: 0) | FOREIGN KEY | FOREIGN KEY (activity_id) REFERENCES methodology_activities (activity_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE |
88
+ | sqlite_autoindex_methodology_activity_criteria_2 | UNIQUE | UNIQUE (activity_id, sort_order) |
89
+ | sqlite_autoindex_methodology_activity_criteria_1 | PRIMARY KEY | PRIMARY KEY (activity_criteria_id) |
90
+ | - | CHECK | CHECK (length(activity_criteria_id) = 36) |
91
+ | - | CHECK | CHECK (length(activity_id) = 36) |
92
+ | - | CHECK | CHECK (criteria_type_code = 'completion') |
93
+ | - | CHECK | CHECK (is_required IN (0, 1)) |
94
+ | - | CHECK | CHECK (validation_required IN (0, 1)) |
95
+ | - | CHECK | CHECK (severity_code IN ('info', 'warning', 'error', 'critical')) |
96
+ | - | CHECK | CHECK (metadata_json IS NULL OR json_valid(metadata_json)) |
97
+
98
+ ## Indexes
99
+
100
+ | Name | Definition |
101
+ | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------- |
102
+ | idx_methodology_activity_criteria_activity | CREATE INDEX idx_methodology_activity_criteria_activity<br /> ON methodology_activity_criteria (activity_id) |
103
+ | sqlite_autoindex_methodology_activity_criteria_2 | UNIQUE (activity_id, sort_order) |
104
+ | sqlite_autoindex_methodology_activity_criteria_1 | PRIMARY KEY (activity_criteria_id) |
105
+
106
+ ## Relations
107
+
108
+ ![er](methodology_activity_criteria.svg)
109
+
110
+ ---
111
+
112
+ > Generated by [tbls](https://github.com/k1LoW/tbls)