@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,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_stage_artifact_requirements Pages: 1 -->
7
+ <svg width="566pt" height="438pt"
8
+ viewBox="0.00 0.00 565.73 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_stage_artifact_requirements</title>
11
+ <polygon fill="white" stroke="none" points="-4,4 -4,-434 561.73,-434 561.73,4 -4,4"/>
12
+ <!-- methodology_stage_artifact_requirements -->
13
+ <g id="node1" class="node">
14
+ <title>methodology_stage_artifact_requirements</title>
15
+ <polygon fill="#efefef" stroke="none" points="46.2,-337.8 46.2,-383.8 511.53,-383.8 511.53,-337.8 46.2,-337.8"/>
16
+ <polygon fill="none" stroke="black" points="46.2,-337.8 46.2,-383.8 511.53,-383.8 511.53,-337.8 46.2,-337.8"/>
17
+ <text text-anchor="start" x="92.29" y="-361.6" font-family="Arial Bold" font-size="18.00">methodology_stage_artifact_requirements</text>
18
+ <text text-anchor="start" x="396.19" y="-361.6" font-family="Arial" font-size="14.00">    </text>
19
+ <text text-anchor="start" x="427.3" y="-361.6" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
20
+ <text text-anchor="start" x="53.2" y="-347.2" font-family="Arial" font-size="14.00" fill="#333333">stage gate, baseline, handoff, approval에 필요한 추가 산출물 요구를 관리한다.</text>
21
+ <polygon fill="none" stroke="black" points="46.2,-307 46.2,-337.8 511.53,-337.8 511.53,-307 46.2,-307"/>
22
+ <text text-anchor="start" x="53.2" y="-319.2" font-family="Arial" font-size="14.00">stage_artifact_requirement_id </text>
23
+ <text text-anchor="start" x="242.31" 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 511.53,-307 511.53,-276.2 46.2,-276.2"/>
25
+ <text text-anchor="start" x="53.2" y="-288.4" font-family="Arial" font-size="14.00">stage_id </text>
26
+ <text text-anchor="start" x="110.02" 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 513.03,-385.3 513.03,-274.7 44.7,-274.7"/>
28
+ </g>
29
+ <!-- methodology_stages -->
30
+ <g id="node2" class="node">
31
+ <title>methodology_stages</title>
32
+ <polygon fill="#efefef" stroke="none" points="80.07,-104.8 80.07,-150.8 477.66,-150.8 477.66,-104.8 80.07,-104.8"/>
33
+ <polygon fill="none" stroke="black" points="80.07,-104.8 80.07,-150.8 477.66,-150.8 477.66,-104.8 80.07,-104.8"/>
34
+ <text text-anchor="start" x="170.25" y="-128.6" font-family="Arial Bold" font-size="18.00">methodology_stages</text>
35
+ <text text-anchor="start" x="318.23" y="-128.6" font-family="Arial" font-size="14.00">    </text>
36
+ <text text-anchor="start" x="349.35" y="-128.6" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
37
+ <text text-anchor="start" x="87.07" y="-114.2" font-family="Arial" font-size="14.00" fill="#333333">process 내부 activity grouping, gate, 기준선, 전환 구간을 관리한다.</text>
38
+ <polygon fill="none" stroke="black" points="80.07,-74 80.07,-104.8 477.66,-104.8 477.66,-74 80.07,-74"/>
39
+ <text text-anchor="start" x="87.07" y="-86.2" font-family="Arial" font-size="14.00">stage_id </text>
40
+ <text text-anchor="start" x="143.89" y="-86.2" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
41
+ <polygon fill="none" stroke="black" points="80.07,-43.2 80.07,-74 477.66,-74 477.66,-43.2 80.07,-43.2"/>
42
+ <text text-anchor="start" x="87.07" y="-55.4" font-family="Arial" font-size="14.00">process_id </text>
43
+ <text text-anchor="start" x="158.66" y="-55.4" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
44
+ </g>
45
+ <!-- methodology_stage_artifact_requirements&#45;&gt;methodology_stages -->
46
+ <g id="edge1" class="edge">
47
+ <title>methodology_stage_artifact_requirements:stage_id&#45;&gt;methodology_stages:stage_id</title>
48
+ <path fill="none" stroke="black" d="M279.52,-264.86C290.07,-186.78 426.15,-269.88 477.66,-194 503.77,-155.53 525.15,-89.4 478.66,-89.4"/>
49
+ <polygon fill="black" stroke="black" points="279.51,-264.89 274.39,-274.58 279.18,-270.21 278.91,-274.53 278.91,-274.53 278.91,-274.53 279.18,-270.21 283.38,-275.15 279.51,-264.89"/>
50
+ </g>
51
+ </g>
52
+ </svg>
@@ -0,0 +1,112 @@
1
+ # methodology_stage_criteria
2
+
3
+ ## Description
4
+
5
+ stage의 entry, exit, gate 판단 기준을 관리한다.
6
+
7
+ <details>
8
+ <summary><strong>Table Definition</strong></summary>
9
+
10
+ ```sql
11
+ CREATE TABLE methodology_stage_criteria (
12
+ -- stage criteria 식별자
13
+ stage_criteria_id CHAR(36) PRIMARY KEY
14
+ CHECK (length(stage_criteria_id) = 36),
15
+
16
+ -- 소속 stage 식별자
17
+ stage_id CHAR(36) NOT NULL
18
+ CHECK (length(stage_id) = 36),
19
+
20
+ -- criteria 유형 코드
21
+ criteria_type_code VARCHAR(32) NOT NULL
22
+ CHECK (criteria_type_code IN ('entry', 'exit', 'gate')),
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
+ -- stage 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 (stage_id)
56
+ REFERENCES methodology_stages (stage_id)
57
+ ON DELETE CASCADE,
58
+
59
+ UNIQUE (stage_id, criteria_type_code, sort_order)
60
+ )
61
+ ```
62
+
63
+ </details>
64
+
65
+ ## Columns
66
+
67
+ | Name | Type | Default | Nullable | Parents |
68
+ | ------------------- | ------------ | ----------------- | -------- | ------------------------------------------- |
69
+ | stage_criteria_id | CHAR(36) | | true | |
70
+ | stage_id | CHAR(36) | | false | [methodology_stages](methodology_stages.md) |
71
+ | criteria_type_code | VARCHAR(32) | | 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
+ | stage_criteria_id | PRIMARY KEY | PRIMARY KEY (stage_criteria_id) |
87
+ | - (Foreign key ID: 0) | FOREIGN KEY | FOREIGN KEY (stage_id) REFERENCES methodology_stages (stage_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE |
88
+ | sqlite_autoindex_methodology_stage_criteria_2 | UNIQUE | UNIQUE (stage_id, criteria_type_code, sort_order) |
89
+ | sqlite_autoindex_methodology_stage_criteria_1 | PRIMARY KEY | PRIMARY KEY (stage_criteria_id) |
90
+ | - | CHECK | CHECK (length(stage_criteria_id) = 36) |
91
+ | - | CHECK | CHECK (length(stage_id) = 36) |
92
+ | - | CHECK | CHECK (criteria_type_code IN ('entry', 'exit', 'gate')) |
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_stage_criteria_stage_type | CREATE INDEX idx_methodology_stage_criteria_stage_type<br /> ON methodology_stage_criteria (stage_id, criteria_type_code) |
103
+ | sqlite_autoindex_methodology_stage_criteria_2 | UNIQUE (stage_id, criteria_type_code, sort_order) |
104
+ | sqlite_autoindex_methodology_stage_criteria_1 | PRIMARY KEY (stage_criteria_id) |
105
+
106
+ ## Relations
107
+
108
+ ![er](methodology_stage_criteria.svg)
109
+
110
+ ---
111
+
112
+ > 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_stage_criteria Pages: 1 -->
7
+ <svg width="492pt" height="438pt"
8
+ viewBox="0.00 0.00 491.98 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_stage_criteria</title>
11
+ <polygon fill="white" stroke="none" points="-4,4 -4,-434 487.98,-434 487.98,4 -4,4"/>
12
+ <!-- methodology_stage_criteria -->
13
+ <g id="node1" class="node">
14
+ <title>methodology_stage_criteria</title>
15
+ <polygon fill="#efefef" stroke="none" points="99.9,-337.8 99.9,-383.8 384.09,-383.8 384.09,-337.8 99.9,-337.8"/>
16
+ <polygon fill="none" stroke="black" points="99.9,-337.8 99.9,-383.8 384.09,-383.8 384.09,-337.8 99.9,-337.8"/>
17
+ <text text-anchor="start" x="106.9" y="-361.6" font-family="Arial Bold" font-size="18.00">methodology_stage_criteria</text>
18
+ <text text-anchor="start" x="307.83" y="-361.6" font-family="Arial" font-size="14.00">    </text>
19
+ <text text-anchor="start" x="338.95" y="-361.6" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
20
+ <text text-anchor="start" x="108.94" y="-347.2" font-family="Arial" font-size="14.00" fill="#333333">stage의 entry, exit, gate 판단 기준을 관리한다.</text>
21
+ <polygon fill="none" stroke="black" points="99.9,-307 99.9,-337.8 384.09,-337.8 384.09,-307 99.9,-307"/>
22
+ <text text-anchor="start" x="106.9" y="-319.2" font-family="Arial" font-size="14.00">stage_criteria_id </text>
23
+ <text text-anchor="start" x="213.51" y="-319.2" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
24
+ <polygon fill="none" stroke="black" points="99.9,-276.2 99.9,-307 384.09,-307 384.09,-276.2 99.9,-276.2"/>
25
+ <text text-anchor="start" x="106.9" y="-288.4" font-family="Arial" font-size="14.00">stage_id </text>
26
+ <text text-anchor="start" x="163.72" 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="98.4,-274.7 98.4,-385.3 385.59,-385.3 385.59,-274.7 98.4,-274.7"/>
28
+ </g>
29
+ <!-- methodology_stages -->
30
+ <g id="node2" class="node">
31
+ <title>methodology_stages</title>
32
+ <polygon fill="#efefef" stroke="none" points="43.2,-104.8 43.2,-150.8 440.78,-150.8 440.78,-104.8 43.2,-104.8"/>
33
+ <polygon fill="none" stroke="black" points="43.2,-104.8 43.2,-150.8 440.78,-150.8 440.78,-104.8 43.2,-104.8"/>
34
+ <text text-anchor="start" x="133.37" y="-128.6" font-family="Arial Bold" font-size="18.00">methodology_stages</text>
35
+ <text text-anchor="start" x="281.36" y="-128.6" font-family="Arial" font-size="14.00">    </text>
36
+ <text text-anchor="start" x="312.47" y="-128.6" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
37
+ <text text-anchor="start" x="50.2" y="-114.2" font-family="Arial" font-size="14.00" fill="#333333">process 내부 activity grouping, gate, 기준선, 전환 구간을 관리한다.</text>
38
+ <polygon fill="none" stroke="black" points="43.2,-74 43.2,-104.8 440.78,-104.8 440.78,-74 43.2,-74"/>
39
+ <text text-anchor="start" x="50.2" y="-86.2" font-family="Arial" font-size="14.00">stage_id </text>
40
+ <text text-anchor="start" x="107.02" y="-86.2" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
41
+ <polygon fill="none" stroke="black" points="43.2,-43.2 43.2,-74 440.78,-74 440.78,-43.2 43.2,-43.2"/>
42
+ <text text-anchor="start" x="50.2" y="-55.4" font-family="Arial" font-size="14.00">process_id </text>
43
+ <text text-anchor="start" x="121.79" y="-55.4" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
44
+ </g>
45
+ <!-- methodology_stage_criteria&#45;&gt;methodology_stages -->
46
+ <g id="edge1" class="edge">
47
+ <title>methodology_stage_criteria:stage_id&#45;&gt;methodology_stages:stage_id</title>
48
+ <path fill="none" stroke="black" d="M242.64,-264.86C253.2,-186.78 389.28,-269.88 440.78,-194 466.89,-155.53 488.28,-89.4 441.78,-89.4"/>
49
+ <polygon fill="black" stroke="black" points="242.64,-264.89 237.52,-274.58 242.31,-270.21 242.03,-274.53 242.03,-274.53 242.03,-274.53 242.31,-270.21 246.5,-275.15 242.64,-264.89"/>
50
+ </g>
51
+ </g>
52
+ </svg>
@@ -0,0 +1,117 @@
1
+ # methodology_stages
2
+
3
+ ## Description
4
+
5
+ process 내부 activity grouping, gate, 기준선, 전환 구간을 관리한다.
6
+
7
+ <details>
8
+ <summary><strong>Table Definition</strong></summary>
9
+
10
+ ```sql
11
+ CREATE TABLE methodology_stages (
12
+ -- stage 식별자
13
+ stage_id CHAR(36) PRIMARY KEY
14
+ CHECK (length(stage_id) = 36),
15
+
16
+ -- 소속 process 식별자
17
+ process_id CHAR(36) NOT NULL
18
+ CHECK (length(process_id) = 36),
19
+
20
+ -- stage 코드
21
+ stage_code VARCHAR(128) NOT NULL,
22
+
23
+ -- stage 이름
24
+ stage_name VARCHAR(256) NOT NULL,
25
+
26
+ -- stage 목표
27
+ stage_objective TEXT,
28
+
29
+ -- stage 유형 코드
30
+ stage_type_code VARCHAR(64) NOT NULL DEFAULT 'default',
31
+
32
+ -- process 내 stage 순서
33
+ sort_order INTEGER NOT NULL DEFAULT 0,
34
+
35
+ -- 필수 여부
36
+ is_required INTEGER NOT NULL DEFAULT 1
37
+ CHECK (is_required IN (0, 1)),
38
+
39
+ -- tailoring 허용 여부
40
+ tailoring_allowed INTEGER NOT NULL DEFAULT 0
41
+ CHECK (tailoring_allowed IN (0, 1)),
42
+
43
+ -- 활성 여부
44
+ is_active INTEGER NOT NULL DEFAULT 1
45
+ CHECK (is_active IN (0, 1)),
46
+
47
+ -- 생성 시각
48
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
49
+
50
+ -- 수정 시각
51
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
52
+
53
+ -- 확장 메타데이터
54
+ metadata_json JSON
55
+ CHECK (metadata_json IS NULL OR json_valid(metadata_json)),
56
+
57
+ FOREIGN KEY (process_id)
58
+ REFERENCES methodology_processes (process_id)
59
+ ON DELETE CASCADE,
60
+
61
+ UNIQUE (process_id, stage_code),
62
+ UNIQUE (process_id, sort_order)
63
+ )
64
+ ```
65
+
66
+ </details>
67
+
68
+ ## Columns
69
+
70
+ | Name | Type | Default | Nullable | Children | Parents |
71
+ | ----------------- | ------------ | ----------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- |
72
+ | stage_id | CHAR(36) | | true | [methodology_stage_activities](methodology_stage_activities.md) [methodology_stage_artifact_requirements](methodology_stage_artifact_requirements.md) [methodology_stage_criteria](methodology_stage_criteria.md) | |
73
+ | process_id | CHAR(36) | | false | | [methodology_processes](methodology_processes.md) |
74
+ | stage_code | VARCHAR(128) | | false | | |
75
+ | stage_name | VARCHAR(256) | | false | | |
76
+ | stage_objective | TEXT | | true | | |
77
+ | stage_type_code | VARCHAR(64) | 'default' | false | | |
78
+ | sort_order | INTEGER | 0 | false | | |
79
+ | is_required | INTEGER | 1 | false | | |
80
+ | tailoring_allowed | INTEGER | 0 | false | | |
81
+ | is_active | INTEGER | 1 | false | | |
82
+ | created_at | DATETIME | CURRENT_TIMESTAMP | false | | |
83
+ | updated_at | DATETIME | CURRENT_TIMESTAMP | false | | |
84
+ | metadata_json | JSON | | true | | |
85
+
86
+ ## Constraints
87
+
88
+ | Name | Type | Definition |
89
+ | ------------------------------------- | ----------- | ----------------------------------------------------------------------------------------------------------------------- |
90
+ | stage_id | PRIMARY KEY | PRIMARY KEY (stage_id) |
91
+ | - (Foreign key ID: 0) | FOREIGN KEY | FOREIGN KEY (process_id) REFERENCES methodology_processes (process_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE |
92
+ | sqlite_autoindex_methodology_stages_3 | UNIQUE | UNIQUE (process_id, sort_order) |
93
+ | sqlite_autoindex_methodology_stages_2 | UNIQUE | UNIQUE (process_id, stage_code) |
94
+ | sqlite_autoindex_methodology_stages_1 | PRIMARY KEY | PRIMARY KEY (stage_id) |
95
+ | - | CHECK | CHECK (length(stage_id) = 36) |
96
+ | - | CHECK | CHECK (length(process_id) = 36) |
97
+ | - | CHECK | CHECK (is_required IN (0, 1)) |
98
+ | - | CHECK | CHECK (tailoring_allowed IN (0, 1)) |
99
+ | - | CHECK | CHECK (is_active IN (0, 1)) |
100
+ | - | CHECK | CHECK (metadata_json IS NULL OR json_valid(metadata_json)) |
101
+
102
+ ## Indexes
103
+
104
+ | Name | Definition |
105
+ | ------------------------------------- | ------------------------------------------------------------------------------------------------------- |
106
+ | idx_methodology_stages_process_order | CREATE INDEX idx_methodology_stages_process_order<br /> ON methodology_stages (process_id, sort_order) |
107
+ | sqlite_autoindex_methodology_stages_3 | UNIQUE (process_id, sort_order) |
108
+ | sqlite_autoindex_methodology_stages_2 | UNIQUE (process_id, stage_code) |
109
+ | sqlite_autoindex_methodology_stages_1 | PRIMARY KEY (stage_id) |
110
+
111
+ ## Relations
112
+
113
+ ![er](methodology_stages.svg)
114
+
115
+ ---
116
+
117
+ > Generated by [tbls](https://github.com/k1LoW/tbls)
@@ -0,0 +1,121 @@
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_stages Pages: 1 -->
7
+ <svg width="1351pt" height="699pt"
8
+ viewBox="0.00 0.00 1350.60 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_stages</title>
11
+ <polygon fill="white" stroke="none" points="-4,4 -4,-694.8 1346.6,-694.8 1346.6,4 -4,4"/>
12
+ <!-- methodology_stages -->
13
+ <g id="node1" class="node">
14
+ <title>methodology_stages</title>
15
+ <polygon fill="#efefef" stroke="none" points="479.51,-337.8 479.51,-383.8 877.1,-383.8 877.1,-337.8 479.51,-337.8"/>
16
+ <polygon fill="none" stroke="black" points="479.51,-337.8 479.51,-383.8 877.1,-383.8 877.1,-337.8 479.51,-337.8"/>
17
+ <text text-anchor="start" x="569.69" y="-361.6" font-family="Arial Bold" font-size="18.00">methodology_stages</text>
18
+ <text text-anchor="start" x="717.67" y="-361.6" font-family="Arial" font-size="14.00">    </text>
19
+ <text text-anchor="start" x="748.78" y="-361.6" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
20
+ <text text-anchor="start" x="486.51" y="-347.2" font-family="Arial" font-size="14.00" fill="#333333">process 내부 activity grouping, gate, 기준선, 전환 구간을 관리한다.</text>
21
+ <polygon fill="none" stroke="black" points="479.51,-307 479.51,-337.8 877.1,-337.8 877.1,-307 479.51,-307"/>
22
+ <text text-anchor="start" x="486.51" y="-319.2" font-family="Arial" font-size="14.00">stage_id </text>
23
+ <text text-anchor="start" x="543.33" y="-319.2" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
24
+ <polygon fill="none" stroke="black" points="479.51,-276.2 479.51,-307 877.1,-307 877.1,-276.2 479.51,-276.2"/>
25
+ <text text-anchor="start" x="486.51" y="-288.4" font-family="Arial" font-size="14.00">process_id </text>
26
+ <text text-anchor="start" x="558.1" 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="478.01,-274.7 478.01,-385.3 878.6,-385.3 878.6,-274.7 478.01,-274.7"/>
28
+ </g>
29
+ <!-- methodology_processes -->
30
+ <g id="node5" class="node">
31
+ <title>methodology_processes</title>
32
+ <polygon fill="#efefef" stroke="none" points="550.19,-104.8 550.19,-150.8 806.42,-150.8 806.42,-104.8 550.19,-104.8"/>
33
+ <polygon fill="none" stroke="black" points="550.19,-104.8 550.19,-150.8 806.42,-150.8 806.42,-104.8 550.19,-104.8"/>
34
+ <text text-anchor="start" x="557.19" y="-128.6" font-family="Arial Bold" font-size="18.00">methodology_processes</text>
35
+ <text text-anchor="start" x="730.16" y="-128.6" font-family="Arial" font-size="14.00">    </text>
36
+ <text text-anchor="start" x="761.28" y="-128.6" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
37
+ <text text-anchor="start" x="581.06" y="-114.2" font-family="Arial" font-size="14.00" fill="#333333">재사용 가능한 수행 절차를 관리한다.</text>
38
+ <polygon fill="none" stroke="black" points="550.19,-74 550.19,-104.8 806.42,-104.8 806.42,-74 550.19,-74"/>
39
+ <text text-anchor="start" x="557.19" y="-86.2" font-family="Arial" font-size="14.00">process_id </text>
40
+ <text text-anchor="start" x="628.79" y="-86.2" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
41
+ <polygon fill="none" stroke="black" points="550.19,-43.2 550.19,-74 806.42,-74 806.42,-43.2 550.19,-43.2"/>
42
+ <text text-anchor="start" x="557.19" y="-55.4" font-family="Arial" font-size="14.00">methodology_id </text>
43
+ <text text-anchor="start" x="659.93" y="-55.4" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
44
+ </g>
45
+ <!-- methodology_stages&#45;&gt;methodology_processes -->
46
+ <g id="edge4" class="edge">
47
+ <title>methodology_stages:process_id&#45;&gt;methodology_processes:process_id</title>
48
+ <path fill="none" stroke="black" d="M679.13,-265.11C688.54,-212.41 775.43,-249.69 806.42,-194 829.02,-153.37 853.91,-89.4 807.42,-89.4"/>
49
+ <polygon fill="black" stroke="black" points="679.15,-264.9 673.85,-274.5 678.71,-270.22 678.36,-274.53 678.36,-274.53 678.36,-274.53 678.71,-270.22 682.82,-275.24 679.15,-264.9"/>
50
+ </g>
51
+ <!-- methodology_stage_activities -->
52
+ <g id="node2" class="node">
53
+ <title>methodology_stage_activities</title>
54
+ <polygon fill="#efefef" stroke="none" points="43.2,-601.6 43.2,-647.6 341.41,-647.6 341.41,-601.6 43.2,-601.6"/>
55
+ <polygon fill="none" stroke="black" points="43.2,-601.6 43.2,-647.6 341.41,-647.6 341.41,-601.6 43.2,-601.6"/>
56
+ <text text-anchor="start" x="50.2" y="-625.4" font-family="Arial Bold" font-size="18.00">methodology_stage_activities</text>
57
+ <text text-anchor="start" x="265.15" y="-625.4" font-family="Arial" font-size="14.00">    </text>
58
+ <text text-anchor="start" x="296.27" y="-625.4" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
59
+ <text text-anchor="start" x="79.88" y="-611" font-family="Arial" font-size="14.00" fill="#333333">stage와 activity의 포함 관계를 관리한다.</text>
60
+ <polygon fill="none" stroke="black" points="43.2,-570.8 43.2,-601.6 341.41,-601.6 341.41,-570.8 43.2,-570.8"/>
61
+ <text text-anchor="start" x="50.2" y="-583" font-family="Arial" font-size="14.00">stage_activity_id </text>
62
+ <text text-anchor="start" x="157.59" y="-583" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
63
+ <polygon fill="none" stroke="black" points="43.2,-540 43.2,-570.8 341.41,-570.8 341.41,-540 43.2,-540"/>
64
+ <text text-anchor="start" x="50.2" y="-552.2" font-family="Arial" font-size="14.00">stage_id </text>
65
+ <text text-anchor="start" x="107.02" y="-552.2" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
66
+ <polygon fill="none" stroke="black" points="43.2,-509.2 43.2,-540 341.41,-540 341.41,-509.2 43.2,-509.2"/>
67
+ <text text-anchor="start" x="50.2" y="-521.4" font-family="Arial" font-size="14.00">activity_id </text>
68
+ <text text-anchor="start" x="115.56" y="-521.4" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
69
+ </g>
70
+ <!-- methodology_stage_activities&#45;&gt;methodology_stages -->
71
+ <g id="edge1" class="edge">
72
+ <title>methodology_stage_activities:stage_id&#45;&gt;methodology_stages:stage_id</title>
73
+ <path fill="none" stroke="black" d="M352.44,-554.43C385.48,-547.29 372.21,-502.29 393.3,-466 430.6,-401.84 404.3,-322.4 478.51,-322.4"/>
74
+ <polygon fill="black" stroke="black" points="352.7,-554.4 342.31,-550.89 347.39,-554.92 343.07,-555.34 343.07,-555.34 343.07,-555.34 347.39,-554.92 343.18,-559.85 352.7,-554.4"/>
75
+ </g>
76
+ <!-- methodology_stage_artifact_requirements -->
77
+ <g id="node3" class="node">
78
+ <title>methodology_stage_artifact_requirements</title>
79
+ <polygon fill="#efefef" stroke="none" points="445.64,-586.2 445.64,-632.2 910.97,-632.2 910.97,-586.2 445.64,-586.2"/>
80
+ <polygon fill="none" stroke="black" points="445.64,-586.2 445.64,-632.2 910.97,-632.2 910.97,-586.2 445.64,-586.2"/>
81
+ <text text-anchor="start" x="491.73" y="-610" font-family="Arial Bold" font-size="18.00">methodology_stage_artifact_requirements</text>
82
+ <text text-anchor="start" x="795.63" y="-610" font-family="Arial" font-size="14.00">    </text>
83
+ <text text-anchor="start" x="826.74" y="-610" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
84
+ <text text-anchor="start" x="452.64" y="-595.6" font-family="Arial" font-size="14.00" fill="#333333">stage gate, baseline, handoff, approval에 필요한 추가 산출물 요구를 관리한다.</text>
85
+ <polygon fill="none" stroke="black" points="445.64,-555.4 445.64,-586.2 910.97,-586.2 910.97,-555.4 445.64,-555.4"/>
86
+ <text text-anchor="start" x="452.64" y="-567.6" font-family="Arial" font-size="14.00">stage_artifact_requirement_id </text>
87
+ <text text-anchor="start" x="641.75" y="-567.6" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
88
+ <polygon fill="none" stroke="black" points="445.64,-524.6 445.64,-555.4 910.97,-555.4 910.97,-524.6 445.64,-524.6"/>
89
+ <text text-anchor="start" x="452.64" y="-536.8" font-family="Arial" font-size="14.00">stage_id </text>
90
+ <text text-anchor="start" x="509.46" y="-536.8" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
91
+ </g>
92
+ <!-- methodology_stage_artifact_requirements&#45;&gt;methodology_stages -->
93
+ <g id="edge2" class="edge">
94
+ <title>methodology_stage_artifact_requirements:stage_id&#45;&gt;methodology_stages:stage_id</title>
95
+ <path fill="none" stroke="black" d="M678.9,-513.47C689.02,-432.12 826.35,-509.16 877.1,-430 902.91,-389.74 925.92,-322.4 878.1,-322.4"/>
96
+ <polygon fill="black" stroke="black" points="678.91,-513.28 673.83,-523 678.6,-518.61 678.34,-522.93 678.34,-522.93 678.34,-522.93 678.6,-518.61 682.82,-523.53 678.91,-513.28"/>
97
+ </g>
98
+ <!-- methodology_stage_criteria -->
99
+ <g id="node4" class="node">
100
+ <title>methodology_stage_criteria</title>
101
+ <polygon fill="#efefef" stroke="none" points="1015.21,-586.2 1015.21,-632.2 1299.4,-632.2 1299.4,-586.2 1015.21,-586.2"/>
102
+ <polygon fill="none" stroke="black" points="1015.21,-586.2 1015.21,-632.2 1299.4,-632.2 1299.4,-586.2 1015.21,-586.2"/>
103
+ <text text-anchor="start" x="1022.21" y="-610" font-family="Arial Bold" font-size="18.00">methodology_stage_criteria</text>
104
+ <text text-anchor="start" x="1223.14" y="-610" font-family="Arial" font-size="14.00">    </text>
105
+ <text text-anchor="start" x="1254.26" y="-610" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
106
+ <text text-anchor="start" x="1024.25" y="-595.6" font-family="Arial" font-size="14.00" fill="#333333">stage의 entry, exit, gate 판단 기준을 관리한다.</text>
107
+ <polygon fill="none" stroke="black" points="1015.21,-555.4 1015.21,-586.2 1299.4,-586.2 1299.4,-555.4 1015.21,-555.4"/>
108
+ <text text-anchor="start" x="1022.21" y="-567.6" font-family="Arial" font-size="14.00">stage_criteria_id </text>
109
+ <text text-anchor="start" x="1128.82" y="-567.6" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
110
+ <polygon fill="none" stroke="black" points="1015.21,-524.6 1015.21,-555.4 1299.4,-555.4 1299.4,-524.6 1015.21,-524.6"/>
111
+ <text text-anchor="start" x="1022.21" y="-536.8" font-family="Arial" font-size="14.00">stage_id </text>
112
+ <text text-anchor="start" x="1079.03" y="-536.8" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
113
+ </g>
114
+ <!-- methodology_stage_criteria&#45;&gt;methodology_stages -->
115
+ <g id="edge3" class="edge">
116
+ <title>methodology_stage_criteria:stage_id&#45;&gt;methodology_stages:stage_id</title>
117
+ <path fill="none" stroke="black" d="M1005.37,-535.05C971.89,-502.66 904.05,-322.4 878.1,-322.4"/>
118
+ <polygon fill="black" stroke="black" points="1005.19,-534.95 1011.72,-543.76 1009.85,-537.56 1013.63,-539.67 1013.63,-539.67 1013.63,-539.67 1009.85,-537.56 1016.12,-535.91 1005.19,-534.95"/>
119
+ </g>
120
+ </g>
121
+ </svg>
@@ -0,0 +1,105 @@
1
+ # methodology_steps
2
+
3
+ ## Description
4
+
5
+ activity 하위 순차 절차를 관리한다.
6
+
7
+ <details>
8
+ <summary><strong>Table Definition</strong></summary>
9
+
10
+ ```sql
11
+ CREATE TABLE methodology_steps (
12
+ -- step 식별자
13
+ step_id CHAR(36) PRIMARY KEY
14
+ CHECK (length(step_id) = 36),
15
+
16
+ -- 소속 activity 식별자
17
+ activity_id CHAR(36) NOT NULL
18
+ CHECK (length(activity_id) = 36),
19
+
20
+ -- step 코드
21
+ step_code VARCHAR(128) NOT NULL,
22
+
23
+ -- step 이름
24
+ step_name VARCHAR(256) NOT NULL,
25
+
26
+ -- 수행 절차 설명
27
+ step_instruction TEXT,
28
+
29
+ -- step 유형 코드
30
+ step_type_code VARCHAR(64) NOT NULL DEFAULT 'default',
31
+
32
+ -- 필수 여부
33
+ is_required INTEGER NOT NULL DEFAULT 1
34
+ CHECK (is_required IN (0, 1)),
35
+
36
+ -- activity 내 step 순서
37
+ sort_order INTEGER NOT NULL DEFAULT 0,
38
+
39
+ -- 생성 시각
40
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
41
+
42
+ -- 수정 시각
43
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
44
+
45
+ -- 확장 메타데이터
46
+ metadata_json JSON
47
+ CHECK (metadata_json IS NULL OR json_valid(metadata_json)),
48
+
49
+ FOREIGN KEY (activity_id)
50
+ REFERENCES methodology_activities (activity_id)
51
+ ON DELETE CASCADE,
52
+
53
+ UNIQUE (activity_id, step_code),
54
+ UNIQUE (activity_id, sort_order)
55
+ )
56
+ ```
57
+
58
+ </details>
59
+
60
+ ## Columns
61
+
62
+ | Name | Type | Default | Nullable | Parents |
63
+ | ---------------- | ------------ | ----------------- | -------- | --------------------------------------------------- |
64
+ | step_id | CHAR(36) | | true | |
65
+ | activity_id | CHAR(36) | | false | [methodology_activities](methodology_activities.md) |
66
+ | step_code | VARCHAR(128) | | false | |
67
+ | step_name | VARCHAR(256) | | false | |
68
+ | step_instruction | TEXT | | true | |
69
+ | step_type_code | VARCHAR(64) | 'default' | false | |
70
+ | is_required | INTEGER | 1 | false | |
71
+ | sort_order | INTEGER | 0 | false | |
72
+ | created_at | DATETIME | CURRENT_TIMESTAMP | false | |
73
+ | updated_at | DATETIME | CURRENT_TIMESTAMP | false | |
74
+ | metadata_json | JSON | | true | |
75
+
76
+ ## Constraints
77
+
78
+ | Name | Type | Definition |
79
+ | ------------------------------------ | ----------- | -------------------------------------------------------------------------------------------------------------------------- |
80
+ | step_id | PRIMARY KEY | PRIMARY KEY (step_id) |
81
+ | - (Foreign key ID: 0) | FOREIGN KEY | FOREIGN KEY (activity_id) REFERENCES methodology_activities (activity_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE |
82
+ | sqlite_autoindex_methodology_steps_3 | UNIQUE | UNIQUE (activity_id, sort_order) |
83
+ | sqlite_autoindex_methodology_steps_2 | UNIQUE | UNIQUE (activity_id, step_code) |
84
+ | sqlite_autoindex_methodology_steps_1 | PRIMARY KEY | PRIMARY KEY (step_id) |
85
+ | - | CHECK | CHECK (length(step_id) = 36) |
86
+ | - | CHECK | CHECK (length(activity_id) = 36) |
87
+ | - | CHECK | CHECK (is_required IN (0, 1)) |
88
+ | - | CHECK | CHECK (metadata_json IS NULL OR json_valid(metadata_json)) |
89
+
90
+ ## Indexes
91
+
92
+ | Name | Definition |
93
+ | ------------------------------------ | ------------------------------------------------------------------------------------------------------- |
94
+ | idx_methodology_steps_activity_order | CREATE INDEX idx_methodology_steps_activity_order<br /> ON methodology_steps (activity_id, sort_order) |
95
+ | sqlite_autoindex_methodology_steps_3 | UNIQUE (activity_id, sort_order) |
96
+ | sqlite_autoindex_methodology_steps_2 | UNIQUE (activity_id, step_code) |
97
+ | sqlite_autoindex_methodology_steps_1 | PRIMARY KEY (step_id) |
98
+
99
+ ## Relations
100
+
101
+ ![er](methodology_steps.svg)
102
+
103
+ ---
104
+
105
+ > Generated by [tbls](https://github.com/k1LoW/tbls)