@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_activity_criteria Pages: 1 -->
7
+ <svg width="402pt" height="438pt"
8
+ viewBox="0.00 0.00 401.59 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_criteria</title>
11
+ <polygon fill="white" stroke="none" points="-4,4 -4,-434 397.59,-434 397.59,4 -4,4"/>
12
+ <!-- methodology_activity_criteria -->
13
+ <g id="node1" class="node">
14
+ <title>methodology_activity_criteria</title>
15
+ <polygon fill="#efefef" stroke="none" points="46.2,-337.8 46.2,-383.8 347.39,-383.8 347.39,-337.8 46.2,-337.8"/>
16
+ <polygon fill="none" stroke="black" points="46.2,-337.8 46.2,-383.8 347.39,-383.8 347.39,-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_criteria</text>
18
+ <text text-anchor="start" x="271.13" y="-361.6" font-family="Arial" font-size="14.00">    </text>
19
+ <text text-anchor="start" x="302.25" y="-361.6" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
20
+ <text text-anchor="start" x="73.48" y="-347.2" font-family="Arial" font-size="14.00" fill="#333333">activity의 completion 판단 기준을 관리한다.</text>
21
+ <polygon fill="none" stroke="black" points="46.2,-307 46.2,-337.8 347.39,-337.8 347.39,-307 46.2,-307"/>
22
+ <text text-anchor="start" x="53.2" y="-319.2" font-family="Arial" font-size="14.00">activity_criteria_id </text>
23
+ <text text-anchor="start" x="168.35" 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 347.39,-307 347.39,-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 348.89,-385.3 348.89,-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="70.68,-104.8 70.68,-150.8 322.91,-150.8 322.91,-104.8 70.68,-104.8"/>
33
+ <polygon fill="none" stroke="black" points="70.68,-104.8 70.68,-150.8 322.91,-150.8 322.91,-104.8 70.68,-104.8"/>
34
+ <text text-anchor="start" x="77.68" y="-128.6" font-family="Arial Bold" font-size="18.00">methodology_activities</text>
35
+ <text text-anchor="start" x="246.65" y="-128.6" font-family="Arial" font-size="14.00">    </text>
36
+ <text text-anchor="start" x="277.77" y="-128.6" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
37
+ <text text-anchor="start" x="78.93" y="-114.2" font-family="Arial" font-size="14.00" fill="#333333">process 내부의 기본 수행 활동을 관리한다.</text>
38
+ <polygon fill="none" stroke="black" points="70.68,-74 70.68,-104.8 322.91,-104.8 322.91,-74 70.68,-74"/>
39
+ <text text-anchor="start" x="77.68" y="-86.2" font-family="Arial" font-size="14.00">activity_id </text>
40
+ <text text-anchor="start" x="143.04" y="-86.2" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
41
+ <polygon fill="none" stroke="black" points="70.68,-43.2 70.68,-74 322.91,-74 322.91,-43.2 70.68,-43.2"/>
42
+ <text text-anchor="start" x="77.68" y="-55.4" font-family="Arial" font-size="14.00">process_id </text>
43
+ <text text-anchor="start" x="149.27" y="-55.4" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
44
+ </g>
45
+ <!-- methodology_activity_criteria&#45;&gt;methodology_activities -->
46
+ <g id="edge1" class="edge">
47
+ <title>methodology_activity_criteria:activity_id&#45;&gt;methodology_activities:activity_id</title>
48
+ <path fill="none" stroke="black" d="M197.67,-264.9C207.23,-213.17 292.53,-249.06 322.91,-194 345.36,-153.29 370.4,-89.4 323.91,-89.4"/>
49
+ <polygon fill="black" stroke="black" points="197.67,-264.9 192.34,-274.49 197.22,-270.22 196.85,-274.53 196.85,-274.53 196.85,-274.53 197.22,-270.22 201.31,-275.25 197.67,-264.9"/>
50
+ </g>
51
+ </g>
52
+ </svg>
@@ -0,0 +1,103 @@
1
+ # methodology_baseline_requirements
2
+
3
+ ## Description
4
+
5
+ baseline이 필요한 scope와 trigger를 관리한다.
6
+
7
+ <details>
8
+ <summary><strong>Table Definition</strong></summary>
9
+
10
+ ```sql
11
+ CREATE TABLE methodology_baseline_requirements (
12
+ -- baseline requirement 식별자
13
+ baseline_requirement_id CHAR(36) PRIMARY KEY
14
+ CHECK (length(baseline_requirement_id) = 36),
15
+
16
+ -- baseline scope 코드
17
+ baseline_scope_code VARCHAR(32) NOT NULL
18
+ CHECK (baseline_scope_code IN ('phase', 'process', 'stage', 'activity')),
19
+
20
+ -- baseline scope 참조 식별자
21
+ baseline_scope_ref_id CHAR(36) NOT NULL
22
+ CHECK (length(baseline_scope_ref_id) = 36),
23
+
24
+ -- baseline trigger 코드
25
+ baseline_trigger_code VARCHAR(32) NOT NULL
26
+ CHECK (baseline_trigger_code IN ('entry', 'exit', 'gate', 'handoff', 'approval', 'manual')),
27
+
28
+ -- baseline 이름
29
+ baseline_name VARCHAR(256) NOT NULL,
30
+
31
+ -- baseline 설명
32
+ baseline_description TEXT,
33
+
34
+ -- 필수 여부
35
+ is_required INTEGER NOT NULL DEFAULT 1
36
+ CHECK (is_required IN (0, 1)),
37
+
38
+ -- validation 필수 여부
39
+ validation_required INTEGER NOT NULL DEFAULT 0
40
+ CHECK (validation_required IN (0, 1)),
41
+
42
+ -- 정렬 순서
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
+ ```
56
+
57
+ </details>
58
+
59
+ ## Columns
60
+
61
+ | Name | Type | Default | Nullable |
62
+ | ----------------------- | ------------ | ----------------- | -------- |
63
+ | baseline_requirement_id | CHAR(36) | | true |
64
+ | baseline_scope_code | VARCHAR(32) | | false |
65
+ | baseline_scope_ref_id | CHAR(36) | | false |
66
+ | baseline_trigger_code | VARCHAR(32) | | false |
67
+ | baseline_name | VARCHAR(256) | | false |
68
+ | baseline_description | TEXT | | true |
69
+ | is_required | INTEGER | 1 | false |
70
+ | validation_required | INTEGER | 0 | 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
+ | baseline_requirement_id | PRIMARY KEY | PRIMARY KEY (baseline_requirement_id) |
81
+ | sqlite_autoindex_methodology_baseline_requirements_1 | PRIMARY KEY | PRIMARY KEY (baseline_requirement_id) |
82
+ | - | CHECK | CHECK (length(baseline_requirement_id) = 36) |
83
+ | - | CHECK | CHECK (baseline_scope_code IN ('phase', 'process', 'stage', 'activity')) |
84
+ | - | CHECK | CHECK (length(baseline_scope_ref_id) = 36) |
85
+ | - | CHECK | CHECK (baseline_trigger_code IN ('entry', 'exit', 'gate', 'handoff', 'approval', 'manual')) |
86
+ | - | CHECK | CHECK (is_required IN (0, 1)) |
87
+ | - | CHECK | CHECK (validation_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_baseline_requirements_scope | CREATE INDEX idx_methodology_baseline_requirements_scope<br /> ON methodology_baseline_requirements (baseline_scope_code, baseline_scope_ref_id) |
95
+ | sqlite_autoindex_methodology_baseline_requirements_1 | PRIMARY KEY (baseline_requirement_id) |
96
+
97
+ ## Relations
98
+
99
+ ![er](methodology_baseline_requirements.svg)
100
+
101
+ ---
102
+
103
+ > Generated by [tbls](https://github.com/k1LoW/tbls)
@@ -0,0 +1,27 @@
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_baseline_requirements Pages: 1 -->
7
+ <svg width="450pt" height="177pt"
8
+ viewBox="0.00 0.00 449.59 177.20" 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 173.2)">
10
+ <title>methodology_baseline_requirements</title>
11
+ <polygon fill="white" stroke="none" points="-4,4 -4,-173.2 445.59,-173.2 445.59,4 -4,4"/>
12
+ <!-- methodology_baseline_requirements -->
13
+ <g id="node1" class="node">
14
+ <title>methodology_baseline_requirements</title>
15
+ <polygon fill="#efefef" stroke="none" points="46.2,-77 46.2,-123 395.39,-123 395.39,-77 46.2,-77"/>
16
+ <polygon fill="none" stroke="black" points="46.2,-77 46.2,-123 395.39,-123 395.39,-77 46.2,-77"/>
17
+ <text text-anchor="start" x="53.2" y="-100.8" font-family="Arial Bold" font-size="18.00">methodology_baseline_requirements</text>
18
+ <text text-anchor="start" x="319.13" y="-100.8" font-family="Arial" font-size="14.00">    </text>
19
+ <text text-anchor="start" x="350.25" y="-100.8" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
20
+ <text text-anchor="start" x="88.13" y="-86.4" font-family="Arial" font-size="14.00" fill="#333333">baseline이 필요한 scope와 trigger를 관리한다.</text>
21
+ <polygon fill="none" stroke="black" points="46.2,-46.2 46.2,-77 395.39,-77 395.39,-46.2 46.2,-46.2"/>
22
+ <text text-anchor="start" x="53.2" y="-58.4" font-family="Arial" font-size="14.00">baseline_requirement_id </text>
23
+ <text text-anchor="start" x="210.41" y="-58.4" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
24
+ <polygon fill="none" stroke="black" stroke-width="3" points="44.7,-44.7 44.7,-124.5 396.89,-124.5 396.89,-44.7 44.7,-44.7"/>
25
+ </g>
26
+ </g>
27
+ </svg>
@@ -0,0 +1,70 @@
1
+ # methodology_code_groups
2
+
3
+ ## Description
4
+
5
+ 코드 그룹을 정의한다.
6
+
7
+ <details>
8
+ <summary><strong>Table Definition</strong></summary>
9
+
10
+ ```sql
11
+ CREATE TABLE methodology_code_groups (
12
+ -- 코드 그룹 식별자
13
+ code_group_code VARCHAR(64) PRIMARY KEY,
14
+
15
+ -- 코드 그룹 한글명
16
+ code_group_name VARCHAR(128) NOT NULL,
17
+
18
+ -- 코드 그룹 설명
19
+ description TEXT,
20
+
21
+ -- 표시 정렬 순서
22
+ sort_order INTEGER NOT NULL DEFAULT 0,
23
+
24
+ -- 활성 여부. 1은 활성, 0은 비활성
25
+ is_active INTEGER NOT NULL DEFAULT 1
26
+ CHECK (is_active IN (0, 1)),
27
+
28
+ -- 생성 시각
29
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
30
+
31
+ -- 수정 시각
32
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
33
+ )
34
+ ```
35
+
36
+ </details>
37
+
38
+ ## Columns
39
+
40
+ | Name | Type | Default | Nullable | Children |
41
+ | --------------- | ------------ | ----------------- | -------- | ----------------------------------------- |
42
+ | code_group_code | VARCHAR(64) | | true | [methodology_codes](methodology_codes.md) |
43
+ | code_group_name | VARCHAR(128) | | false | |
44
+ | description | TEXT | | true | |
45
+ | sort_order | INTEGER | 0 | false | |
46
+ | is_active | INTEGER | 1 | false | |
47
+ | created_at | DATETIME | CURRENT_TIMESTAMP | false | |
48
+ | updated_at | DATETIME | CURRENT_TIMESTAMP | false | |
49
+
50
+ ## Constraints
51
+
52
+ | Name | Type | Definition |
53
+ | ------------------------------------------ | ----------- | ----------------------------- |
54
+ | code_group_code | PRIMARY KEY | PRIMARY KEY (code_group_code) |
55
+ | sqlite_autoindex_methodology_code_groups_1 | PRIMARY KEY | PRIMARY KEY (code_group_code) |
56
+ | - | CHECK | CHECK (is_active IN (0, 1)) |
57
+
58
+ ## Indexes
59
+
60
+ | Name | Definition |
61
+ | ------------------------------------------ | ----------------------------- |
62
+ | sqlite_autoindex_methodology_code_groups_1 | PRIMARY KEY (code_group_code) |
63
+
64
+ ## Relations
65
+
66
+ ![er](methodology_code_groups.svg)
67
+
68
+ ---
69
+
70
+ > Generated by [tbls](https://github.com/k1LoW/tbls)
@@ -0,0 +1,49 @@
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_code_groups Pages: 1 -->
7
+ <svg width="394pt" height="415pt"
8
+ viewBox="0.00 0.00 394.08 415.24" 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 411.24)">
10
+ <title>methodology_code_groups</title>
11
+ <polygon fill="white" stroke="none" points="-4,4 -4,-411.24 390.08,-411.24 390.08,4 -4,4"/>
12
+ <!-- methodology_code_groups -->
13
+ <g id="node1" class="node">
14
+ <title>methodology_code_groups</title>
15
+ <polygon fill="#efefef" stroke="none" points="46.2,-85.04 46.2,-131.04 325.42,-131.04 325.42,-85.04 46.2,-85.04"/>
16
+ <polygon fill="none" stroke="black" points="46.2,-85.04 46.2,-131.04 325.42,-131.04 325.42,-85.04 46.2,-85.04"/>
17
+ <text text-anchor="start" x="53.2" y="-108.84" font-family="Arial Bold" font-size="18.00">methodology_code_groups</text>
18
+ <text text-anchor="start" x="249.17" y="-108.84" font-family="Arial" font-size="14.00">    </text>
19
+ <text text-anchor="start" x="280.29" y="-108.84" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
20
+ <text text-anchor="start" x="127.47" y="-94.44" font-family="Arial" font-size="14.00" fill="#333333">코드 그룹을 정의한다.</text>
21
+ <polygon fill="none" stroke="black" points="46.2,-54.24 46.2,-85.04 325.42,-85.04 325.42,-54.24 46.2,-54.24"/>
22
+ <text text-anchor="start" x="53.2" y="-66.44" font-family="Arial" font-size="14.00">code_group_code </text>
23
+ <text text-anchor="start" x="169.19" y="-66.44" font-family="Arial" font-size="14.00" fill="#666666">[VARCHAR(64)]</text>
24
+ <polygon fill="none" stroke="black" stroke-width="3" points="44.7,-52.74 44.7,-132.54 326.92,-132.54 326.92,-52.74 44.7,-52.74"/>
25
+ </g>
26
+ <!-- methodology_codes -->
27
+ <g id="node2" class="node">
28
+ <title>methodology_codes</title>
29
+ <polygon fill="#efefef" stroke="none" points="70.25,-318.04 70.25,-364.04 301.37,-364.04 301.37,-318.04 70.25,-318.04"/>
30
+ <polygon fill="none" stroke="black" points="70.25,-318.04 70.25,-364.04 301.37,-364.04 301.37,-318.04 70.25,-318.04"/>
31
+ <text text-anchor="start" x="78.7" y="-341.84" font-family="Arial Bold" font-size="18.00">methodology_codes</text>
32
+ <text text-anchor="start" x="223.67" y="-341.84" font-family="Arial" font-size="14.00">    </text>
33
+ <text text-anchor="start" x="254.79" y="-341.84" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
34
+ <text text-anchor="start" x="100.24" y="-327.44" font-family="Arial" font-size="14.00" fill="#333333">코드 그룹별 코드 값을 정의한다.</text>
35
+ <polygon fill="none" stroke="black" points="70.25,-287.24 70.25,-318.04 301.37,-318.04 301.37,-287.24 70.25,-287.24"/>
36
+ <text text-anchor="start" x="77.25" y="-299.44" font-family="Arial" font-size="14.00">code_group_code </text>
37
+ <text text-anchor="start" x="193.24" y="-299.44" font-family="Arial" font-size="14.00" fill="#666666">[VARCHAR(64)]</text>
38
+ <polygon fill="none" stroke="black" points="70.25,-256.44 70.25,-287.24 301.37,-287.24 301.37,-256.44 70.25,-256.44"/>
39
+ <text text-anchor="start" x="77.25" y="-268.64" font-family="Arial" font-size="14.00">code </text>
40
+ <text text-anchor="start" x="111.5" y="-268.64" font-family="Arial" font-size="14.00" fill="#666666">[VARCHAR(128)]</text>
41
+ </g>
42
+ <!-- methodology_codes&#45;&gt;methodology_code_groups -->
43
+ <g id="edge1" class="edge">
44
+ <title>methodology_codes:code_group_code&#45;&gt;methodology_code_groups:code_group_code</title>
45
+ <path fill="none" stroke="black" d="M312.37,-300.58C365.49,-278.87 409.67,-92.49 371.62,-54.24 313.39,4.31 185.81,29.34 185.81,-53.24"/>
46
+ <polygon fill="black" stroke="black" points="312.49,-300.55 301.79,-298.17 307.27,-301.63 303.03,-302.5 303.03,-302.5 303.03,-302.5 307.27,-301.63 303.61,-306.98 312.49,-300.55"/>
47
+ </g>
48
+ </g>
49
+ </svg>
@@ -0,0 +1,88 @@
1
+ # methodology_codes
2
+
3
+ ## Description
4
+
5
+ 코드 그룹별 코드 값을 정의한다.
6
+
7
+ <details>
8
+ <summary><strong>Table Definition</strong></summary>
9
+
10
+ ```sql
11
+ CREATE TABLE methodology_codes (
12
+ -- 코드 그룹 식별자
13
+ code_group_code VARCHAR(64) NOT NULL,
14
+
15
+ -- 코드 값. lower_snake_case를 사용한다.
16
+ code VARCHAR(128) NOT NULL,
17
+
18
+ -- 코드 한글명
19
+ code_name VARCHAR(128) NOT NULL,
20
+
21
+ -- 코드 설명
22
+ description TEXT,
23
+
24
+ -- 표시 정렬 순서
25
+ sort_order INTEGER NOT NULL DEFAULT 0,
26
+
27
+ -- 활성 여부. 1은 활성, 0은 비활성
28
+ is_active INTEGER NOT NULL DEFAULT 1
29
+ CHECK (is_active IN (0, 1)),
30
+
31
+ -- 확장 메타데이터
32
+ metadata_json JSON
33
+ CHECK (metadata_json IS NULL OR json_valid(metadata_json)),
34
+
35
+ -- 생성 시각
36
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
37
+
38
+ -- 수정 시각
39
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
40
+
41
+ PRIMARY KEY (code_group_code, code),
42
+
43
+ FOREIGN KEY (code_group_code)
44
+ REFERENCES methodology_code_groups (code_group_code)
45
+ ON DELETE CASCADE
46
+ )
47
+ ```
48
+
49
+ </details>
50
+
51
+ ## Columns
52
+
53
+ | Name | Type | Default | Nullable | Parents |
54
+ | --------------- | ------------ | ----------------- | -------- | ----------------------------------------------------- |
55
+ | code_group_code | VARCHAR(64) | | false | [methodology_code_groups](methodology_code_groups.md) |
56
+ | code | VARCHAR(128) | | false | |
57
+ | code_name | VARCHAR(128) | | false | |
58
+ | description | TEXT | | true | |
59
+ | sort_order | INTEGER | 0 | false | |
60
+ | is_active | INTEGER | 1 | false | |
61
+ | metadata_json | JSON | | true | |
62
+ | created_at | DATETIME | CURRENT_TIMESTAMP | false | |
63
+ | updated_at | DATETIME | CURRENT_TIMESTAMP | false | |
64
+
65
+ ## Constraints
66
+
67
+ | Name | Type | Definition |
68
+ | ------------------------------------ | ----------- | ----------------------------------------------------------------------------------------------------------------------------------- |
69
+ | code_group_code | PRIMARY KEY | PRIMARY KEY (code_group_code) |
70
+ | code | PRIMARY KEY | PRIMARY KEY (code) |
71
+ | - (Foreign key ID: 0) | FOREIGN KEY | FOREIGN KEY (code_group_code) REFERENCES methodology_code_groups (code_group_code) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE |
72
+ | sqlite_autoindex_methodology_codes_1 | PRIMARY KEY | PRIMARY KEY (code_group_code, code) |
73
+ | - | CHECK | CHECK (is_active IN (0, 1)) |
74
+ | - | CHECK | CHECK (metadata_json IS NULL OR json_valid(metadata_json)) |
75
+
76
+ ## Indexes
77
+
78
+ | Name | Definition |
79
+ | ------------------------------------ | ----------------------------------- |
80
+ | sqlite_autoindex_methodology_codes_1 | PRIMARY KEY (code_group_code, code) |
81
+
82
+ ## Relations
83
+
84
+ ![er](methodology_codes.svg)
85
+
86
+ ---
87
+
88
+ > Generated by [tbls](https://github.com/k1LoW/tbls)
@@ -0,0 +1,49 @@
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_codes Pages: 1 -->
7
+ <svg width="389pt" height="417pt"
8
+ viewBox="0.00 0.00 388.54 417.37" 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 413.37)">
10
+ <title>methodology_codes</title>
11
+ <polygon fill="white" stroke="none" points="-4,4 -4,-413.37 384.54,-413.37 384.54,4 -4,4"/>
12
+ <!-- methodology_codes -->
13
+ <g id="node1" class="node">
14
+ <title>methodology_codes</title>
15
+ <polygon fill="#efefef" stroke="none" points="67.25,-317.17 67.25,-363.17 298.37,-363.17 298.37,-317.17 67.25,-317.17"/>
16
+ <polygon fill="none" stroke="black" points="67.25,-317.17 67.25,-363.17 298.37,-363.17 298.37,-317.17 67.25,-317.17"/>
17
+ <text text-anchor="start" x="75.7" y="-340.97" font-family="Arial Bold" font-size="18.00">methodology_codes</text>
18
+ <text text-anchor="start" x="220.67" y="-340.97" font-family="Arial" font-size="14.00">    </text>
19
+ <text text-anchor="start" x="251.79" y="-340.97" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
20
+ <text text-anchor="start" x="97.24" y="-326.57" font-family="Arial" font-size="14.00" fill="#333333">코드 그룹별 코드 값을 정의한다.</text>
21
+ <polygon fill="none" stroke="black" points="67.25,-286.37 67.25,-317.17 298.37,-317.17 298.37,-286.37 67.25,-286.37"/>
22
+ <text text-anchor="start" x="74.25" y="-298.57" font-family="Arial" font-size="14.00">code_group_code </text>
23
+ <text text-anchor="start" x="190.24" y="-298.57" font-family="Arial" font-size="14.00" fill="#666666">[VARCHAR(64)]</text>
24
+ <polygon fill="none" stroke="black" points="67.25,-255.57 67.25,-286.37 298.37,-286.37 298.37,-255.57 67.25,-255.57"/>
25
+ <text text-anchor="start" x="74.25" y="-267.77" font-family="Arial" font-size="14.00">code </text>
26
+ <text text-anchor="start" x="108.5" y="-267.77" font-family="Arial" font-size="14.00" fill="#666666">[VARCHAR(128)]</text>
27
+ <polygon fill="none" stroke="black" stroke-width="3" points="65.75,-254.07 65.75,-364.67 299.87,-364.67 299.87,-254.07 65.75,-254.07"/>
28
+ </g>
29
+ <!-- methodology_code_groups -->
30
+ <g id="node2" class="node">
31
+ <title>methodology_code_groups</title>
32
+ <polygon fill="#efefef" stroke="none" points="43.2,-84.17 43.2,-130.17 322.42,-130.17 322.42,-84.17 43.2,-84.17"/>
33
+ <polygon fill="none" stroke="black" points="43.2,-84.17 43.2,-130.17 322.42,-130.17 322.42,-84.17 43.2,-84.17"/>
34
+ <text text-anchor="start" x="50.2" y="-107.97" font-family="Arial Bold" font-size="18.00">methodology_code_groups</text>
35
+ <text text-anchor="start" x="246.17" y="-107.97" font-family="Arial" font-size="14.00">    </text>
36
+ <text text-anchor="start" x="277.29" y="-107.97" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
37
+ <text text-anchor="start" x="124.47" y="-93.57" font-family="Arial" font-size="14.00" fill="#333333">코드 그룹을 정의한다.</text>
38
+ <polygon fill="none" stroke="black" points="43.2,-53.37 43.2,-84.17 322.42,-84.17 322.42,-53.37 43.2,-53.37"/>
39
+ <text text-anchor="start" x="50.2" y="-65.57" font-family="Arial" font-size="14.00">code_group_code </text>
40
+ <text text-anchor="start" x="166.19" y="-65.57" font-family="Arial" font-size="14.00" fill="#666666">[VARCHAR(64)]</text>
41
+ </g>
42
+ <!-- methodology_codes&#45;&gt;methodology_code_groups -->
43
+ <g id="edge1" class="edge">
44
+ <title>methodology_codes:code_group_code&#45;&gt;methodology_code_groups:code_group_code</title>
45
+ <path fill="none" stroke="black" d="M309.32,-299.71C361.98,-277.99 403.55,-91.51 365.62,-53.37 308.33,4.24 182.81,28.88 182.81,-52.37"/>
46
+ <polygon fill="black" stroke="black" points="309.49,-299.67 298.78,-297.3 304.27,-300.76 300.03,-301.64 300.03,-301.64 300.03,-301.64 304.27,-300.76 300.61,-306.11 309.49,-299.67"/>
47
+ </g>
48
+ </g>
49
+ </svg>
@@ -0,0 +1,104 @@
1
+ # methodology_common_blueprint_policies
2
+
3
+ ## Description
4
+
5
+ <details>
6
+ <summary><strong>Table Definition</strong></summary>
7
+
8
+ ```sql
9
+ CREATE TABLE methodology_common_blueprint_policies (
10
+ -- common blueprint policy 식별자
11
+ common_blueprint_policy_id CHAR(36) PRIMARY KEY
12
+ CHECK (length(common_blueprint_policy_id) = 36),
13
+
14
+ -- 소속 방법론 식별자
15
+ methodology_id CHAR(36) NOT NULL
16
+ CHECK (length(methodology_id) = 36),
17
+
18
+ -- policy 코드
19
+ policy_code VARCHAR(128) NOT NULL,
20
+
21
+ -- policy 이름
22
+ policy_name VARCHAR(256) NOT NULL,
23
+
24
+ -- 적용 대상 Artifact Standard 유형 코드. NULL이면 방법론 기본 공통 정책이다.
25
+ applies_to_standard_type_code VARCHAR(64),
26
+
27
+ -- 기본 policy 여부
28
+ is_default INTEGER NOT NULL DEFAULT 0
29
+ CHECK (is_default IN (0, 1)),
30
+
31
+ -- policy 상태 코드
32
+ status_code VARCHAR(32) NOT NULL DEFAULT 'DRAFT'
33
+ CHECK (status_code IN ('DRAFT', 'ACTIVE', 'DEPRECATED', 'ARCHIVED')),
34
+
35
+ -- 활성 여부
36
+ is_active INTEGER NOT NULL DEFAULT 1
37
+ CHECK (is_active IN (0, 1)),
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 (methodology_id)
50
+ REFERENCES methodology_methodologies (methodology_id)
51
+ ON DELETE CASCADE,
52
+
53
+ UNIQUE (methodology_id, policy_code)
54
+ )
55
+ ```
56
+
57
+ </details>
58
+
59
+ ## Columns
60
+
61
+ | Name | Type | Default | Nullable | Children | Parents |
62
+ | ----------------------------- | ------------ | ----------------- | -------- | ----------------------------------------------------------------------------------------- | --------------------------------------------------------- |
63
+ | common_blueprint_policy_id | CHAR(36) | | true | [methodology_common_blueprint_policy_nodes](methodology_common_blueprint_policy_nodes.md) | |
64
+ | methodology_id | CHAR(36) | | false | | [methodology_methodologies](methodology_methodologies.md) |
65
+ | policy_code | VARCHAR(128) | | false | | |
66
+ | policy_name | VARCHAR(256) | | false | | |
67
+ | applies_to_standard_type_code | VARCHAR(64) | | true | | |
68
+ | is_default | INTEGER | 0 | false | | |
69
+ | status_code | VARCHAR(32) | 'DRAFT' | false | | |
70
+ | is_active | INTEGER | 1 | false | | |
71
+ | created_at | DATETIME | CURRENT_TIMESTAMP | false | | |
72
+ | updated_at | DATETIME | CURRENT_TIMESTAMP | false | | |
73
+ | metadata_json | JSON | | true | | |
74
+
75
+ ## Constraints
76
+
77
+ | Name | Type | Definition |
78
+ | -------------------------------------------------------- | ----------- | ----------------------------------------------------------------------------------------------------------------------------------- |
79
+ | common_blueprint_policy_id | PRIMARY KEY | PRIMARY KEY (common_blueprint_policy_id) |
80
+ | - (Foreign key ID: 0) | FOREIGN KEY | FOREIGN KEY (methodology_id) REFERENCES methodology_methodologies (methodology_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE |
81
+ | sqlite_autoindex_methodology_common_blueprint_policies_2 | UNIQUE | UNIQUE (methodology_id, policy_code) |
82
+ | sqlite_autoindex_methodology_common_blueprint_policies_1 | PRIMARY KEY | PRIMARY KEY (common_blueprint_policy_id) |
83
+ | - | CHECK | CHECK (length(common_blueprint_policy_id) = 36) |
84
+ | - | CHECK | CHECK (length(methodology_id) = 36) |
85
+ | - | CHECK | CHECK (is_default IN (0, 1)) |
86
+ | - | CHECK | CHECK (status_code IN ('DRAFT', 'ACTIVE', 'DEPRECATED', 'ARCHIVED')) |
87
+ | - | CHECK | CHECK (is_active IN (0, 1)) |
88
+ | - | CHECK | CHECK (metadata_json IS NULL OR json_valid(metadata_json)) |
89
+
90
+ ## Indexes
91
+
92
+ | Name | Definition |
93
+ | -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
94
+ | ux_methodology_common_blueprint_policies_default | CREATE UNIQUE INDEX ux_methodology_common_blueprint_policies_default<br /> ON methodology_common_blueprint_policies (methodology_id)<br /> WHERE is_default = 1 |
95
+ | sqlite_autoindex_methodology_common_blueprint_policies_2 | UNIQUE (methodology_id, policy_code) |
96
+ | sqlite_autoindex_methodology_common_blueprint_policies_1 | PRIMARY KEY (common_blueprint_policy_id) |
97
+
98
+ ## Relations
99
+
100
+ ![er](methodology_common_blueprint_policies.svg)
101
+
102
+ ---
103
+
104
+ > Generated by [tbls](https://github.com/k1LoW/tbls)