@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,98 @@
1
+ # methodology_processes
2
+
3
+ ## Description
4
+
5
+ 재사용 가능한 수행 절차를 관리한다.
6
+
7
+ <details>
8
+ <summary><strong>Table Definition</strong></summary>
9
+
10
+ ```sql
11
+ CREATE TABLE methodology_processes (
12
+ -- process 식별자
13
+ process_id CHAR(36) PRIMARY KEY
14
+ CHECK (length(process_id) = 36),
15
+
16
+ -- 소속 방법론 식별자
17
+ methodology_id CHAR(36) NOT NULL
18
+ CHECK (length(methodology_id) = 36),
19
+
20
+ -- process 코드
21
+ process_code VARCHAR(128) NOT NULL,
22
+
23
+ -- process 이름
24
+ process_name VARCHAR(256) NOT NULL,
25
+
26
+ -- process 목적
27
+ process_purpose TEXT,
28
+
29
+ -- process 유형 코드
30
+ process_type_code VARCHAR(64) NOT NULL DEFAULT 'default',
31
+
32
+ -- 활성 여부
33
+ is_active INTEGER NOT NULL DEFAULT 1
34
+ CHECK (is_active IN (0, 1)),
35
+
36
+ -- 생성 시각
37
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
38
+
39
+ -- 수정 시각
40
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
41
+
42
+ -- 확장 메타데이터
43
+ metadata_json JSON
44
+ CHECK (metadata_json IS NULL OR json_valid(metadata_json)),
45
+
46
+ FOREIGN KEY (methodology_id)
47
+ REFERENCES methodology_methodologies (methodology_id)
48
+ ON DELETE CASCADE,
49
+
50
+ UNIQUE (methodology_id, process_code)
51
+ )
52
+ ```
53
+
54
+ </details>
55
+
56
+ ## Columns
57
+
58
+ | Name | Type | Default | Nullable | Children | Parents |
59
+ | ----------------- | ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------- |
60
+ | process_id | CHAR(36) | | true | [methodology_phase_processes](methodology_phase_processes.md) [methodology_activities](methodology_activities.md) [methodology_stages](methodology_stages.md) | |
61
+ | methodology_id | CHAR(36) | | false | | [methodology_methodologies](methodology_methodologies.md) |
62
+ | process_code | VARCHAR(128) | | false | | |
63
+ | process_name | VARCHAR(256) | | false | | |
64
+ | process_purpose | TEXT | | true | | |
65
+ | process_type_code | VARCHAR(64) | 'default' | false | | |
66
+ | is_active | INTEGER | 1 | false | | |
67
+ | created_at | DATETIME | CURRENT_TIMESTAMP | false | | |
68
+ | updated_at | DATETIME | CURRENT_TIMESTAMP | false | | |
69
+ | metadata_json | JSON | | true | | |
70
+
71
+ ## Constraints
72
+
73
+ | Name | Type | Definition |
74
+ | ---------------------------------------- | ----------- | ----------------------------------------------------------------------------------------------------------------------------------- |
75
+ | process_id | PRIMARY KEY | PRIMARY KEY (process_id) |
76
+ | - (Foreign key ID: 0) | FOREIGN KEY | FOREIGN KEY (methodology_id) REFERENCES methodology_methodologies (methodology_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE |
77
+ | sqlite_autoindex_methodology_processes_2 | UNIQUE | UNIQUE (methodology_id, process_code) |
78
+ | sqlite_autoindex_methodology_processes_1 | PRIMARY KEY | PRIMARY KEY (process_id) |
79
+ | - | CHECK | CHECK (length(process_id) = 36) |
80
+ | - | CHECK | CHECK (length(methodology_id) = 36) |
81
+ | - | CHECK | CHECK (is_active IN (0, 1)) |
82
+ | - | CHECK | CHECK (metadata_json IS NULL OR json_valid(metadata_json)) |
83
+
84
+ ## Indexes
85
+
86
+ | Name | Definition |
87
+ | ---------------------------------------- | --------------------------------------------------------------------------------------------------- |
88
+ | idx_methodology_processes_methodology | CREATE INDEX idx_methodology_processes_methodology<br /> ON methodology_processes (methodology_id) |
89
+ | sqlite_autoindex_methodology_processes_2 | UNIQUE (methodology_id, process_code) |
90
+ | sqlite_autoindex_methodology_processes_1 | PRIMARY KEY (process_id) |
91
+
92
+ ## Relations
93
+
94
+ ![er](methodology_processes.svg)
95
+
96
+ ---
97
+
98
+ > Generated by [tbls](https://github.com/k1LoW/tbls)
@@ -0,0 +1,118 @@
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_processes Pages: 1 -->
7
+ <svg width="1291pt" height="684pt"
8
+ viewBox="0.00 0.00 1291.41 683.69" 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 679.69)">
10
+ <title>methodology_processes</title>
11
+ <polygon fill="white" stroke="none" points="-4,4 -4,-679.69 1287.41,-679.69 1287.41,4 -4,4"/>
12
+ <!-- methodology_processes -->
13
+ <g id="node1" class="node">
14
+ <title>methodology_processes</title>
15
+ <polygon fill="#efefef" stroke="none" points="484.3,-322.69 484.3,-368.69 740.53,-368.69 740.53,-322.69 484.3,-322.69"/>
16
+ <polygon fill="none" stroke="black" points="484.3,-322.69 484.3,-368.69 740.53,-368.69 740.53,-322.69 484.3,-322.69"/>
17
+ <text text-anchor="start" x="491.3" y="-346.49" font-family="Arial Bold" font-size="18.00">methodology_processes</text>
18
+ <text text-anchor="start" x="664.27" y="-346.49" font-family="Arial" font-size="14.00">    </text>
19
+ <text text-anchor="start" x="695.39" y="-346.49" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
20
+ <text text-anchor="start" x="515.18" y="-332.09" font-family="Arial" font-size="14.00" fill="#333333">재사용 가능한 수행 절차를 관리한다.</text>
21
+ <polygon fill="none" stroke="black" points="484.3,-291.89 484.3,-322.69 740.53,-322.69 740.53,-291.89 484.3,-291.89"/>
22
+ <text text-anchor="start" x="491.3" y="-304.09" font-family="Arial" font-size="14.00">process_id </text>
23
+ <text text-anchor="start" x="562.9" y="-304.09" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
24
+ <polygon fill="none" stroke="black" points="484.3,-261.09 484.3,-291.89 740.53,-291.89 740.53,-261.09 484.3,-261.09"/>
25
+ <text text-anchor="start" x="491.3" y="-273.29" font-family="Arial" font-size="14.00">methodology_id </text>
26
+ <text text-anchor="start" x="594.04" y="-273.29" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
27
+ <polygon fill="none" stroke="black" stroke-width="3" points="482.8,-259.59 482.8,-370.19 742.03,-370.19 742.03,-259.59 482.8,-259.59"/>
28
+ </g>
29
+ <!-- methodology_methodologies -->
30
+ <g id="node5" class="node">
31
+ <title>methodology_methodologies</title>
32
+ <polygon fill="#efefef" stroke="none" points="453.69,-89.69 453.69,-135.69 771.14,-135.69 771.14,-89.69 453.69,-89.69"/>
33
+ <polygon fill="none" stroke="black" points="453.69,-89.69 453.69,-135.69 771.14,-135.69 771.14,-89.69 453.69,-89.69"/>
34
+ <text text-anchor="start" x="472.8" y="-113.49" font-family="Arial Bold" font-size="18.00">methodology_methodologies</text>
35
+ <text text-anchor="start" x="682.78" y="-113.49" font-family="Arial" font-size="14.00">    </text>
36
+ <text text-anchor="start" x="713.9" y="-113.49" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
37
+ <text text-anchor="start" x="460.69" y="-99.09" font-family="Arial" font-size="14.00" fill="#333333">방법론 정의의 최상위 versioned definition을 관리한다.</text>
38
+ <polygon fill="none" stroke="black" points="453.69,-58.89 453.69,-89.69 771.14,-89.69 771.14,-58.89 453.69,-58.89"/>
39
+ <text text-anchor="start" x="460.69" y="-71.09" font-family="Arial" font-size="14.00">methodology_id </text>
40
+ <text text-anchor="start" x="563.43" y="-71.09" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
41
+ </g>
42
+ <!-- methodology_processes&#45;&gt;methodology_methodologies -->
43
+ <g id="edge4" class="edge">
44
+ <title>methodology_processes:methodology_id&#45;&gt;methodology_methodologies:methodology_id</title>
45
+ <path fill="none" stroke="black" d="M613.01,-250.1C623.26,-170.22 762.2,-256.06 814.34,-178.89 844.2,-134.7 851.96,-96.7 814.34,-58.89 751.04,4.73 612.42,31.86 612.42,-57.89"/>
46
+ <polygon fill="black" stroke="black" points="613.03,-249.77 607.94,-259.49 612.72,-255.1 612.46,-259.42 612.46,-259.42 612.46,-259.42 612.72,-255.1 616.93,-260.02 613.03,-249.77"/>
47
+ </g>
48
+ <!-- methodology_phase_processes -->
49
+ <g id="node2" class="node">
50
+ <title>methodology_phase_processes</title>
51
+ <polygon fill="#efefef" stroke="none" points="43.2,-586.49 43.2,-632.49 381.63,-632.49 381.63,-586.49 43.2,-586.49"/>
52
+ <polygon fill="none" stroke="black" points="43.2,-586.49 43.2,-632.49 381.63,-632.49 381.63,-586.49 43.2,-586.49"/>
53
+ <text text-anchor="start" x="66.31" y="-610.29" font-family="Arial Bold" font-size="18.00">methodology_phase_processes</text>
54
+ <text text-anchor="start" x="289.27" y="-610.29" font-family="Arial" font-size="14.00">    </text>
55
+ <text text-anchor="start" x="320.38" y="-610.29" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
56
+ <text text-anchor="start" x="50.2" y="-595.89" font-family="Arial" font-size="14.00" fill="#333333">phase에서 어떤 process를 어떤 순서로 사용할지 관리한다.</text>
57
+ <polygon fill="none" stroke="black" points="43.2,-555.69 43.2,-586.49 381.63,-586.49 381.63,-555.69 43.2,-555.69"/>
58
+ <text text-anchor="start" x="50.2" y="-567.89" font-family="Arial" font-size="14.00">phase_process_id </text>
59
+ <text text-anchor="start" x="167.72" y="-567.89" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
60
+ <polygon fill="none" stroke="black" points="43.2,-524.89 43.2,-555.69 381.63,-555.69 381.63,-524.89 43.2,-524.89"/>
61
+ <text text-anchor="start" x="50.2" y="-537.09" font-family="Arial" font-size="14.00">phase_id </text>
62
+ <text text-anchor="start" x="110.92" y="-537.09" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
63
+ <polygon fill="none" stroke="black" points="43.2,-494.09 43.2,-524.89 381.63,-524.89 381.63,-494.09 43.2,-494.09"/>
64
+ <text text-anchor="start" x="50.2" y="-506.29" font-family="Arial" font-size="14.00">process_id </text>
65
+ <text text-anchor="start" x="121.79" y="-506.29" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
66
+ </g>
67
+ <!-- methodology_phase_processes&#45;&gt;methodology_processes -->
68
+ <g id="edge1" class="edge">
69
+ <title>methodology_phase_processes:process_id&#45;&gt;methodology_processes:process_id</title>
70
+ <path fill="none" stroke="black" d="M393,-508.67C475.87,-494.76 386.64,-307.29 483.3,-307.29"/>
71
+ <polygon fill="black" stroke="black" points="392.94,-508.68 382.61,-504.98 387.62,-509.1 383.3,-509.44 383.3,-509.44 383.3,-509.44 387.62,-509.1 383.32,-513.95 392.94,-508.68"/>
72
+ </g>
73
+ <!-- methodology_activities -->
74
+ <g id="node3" class="node">
75
+ <title>methodology_activities</title>
76
+ <polygon fill="#efefef" stroke="none" points="486.3,-571.09 486.3,-617.09 738.53,-617.09 738.53,-571.09 486.3,-571.09"/>
77
+ <polygon fill="none" stroke="black" points="486.3,-571.09 486.3,-617.09 738.53,-617.09 738.53,-571.09 486.3,-571.09"/>
78
+ <text text-anchor="start" x="493.3" y="-594.89" font-family="Arial Bold" font-size="18.00">methodology_activities</text>
79
+ <text text-anchor="start" x="662.27" y="-594.89" font-family="Arial" font-size="14.00">    </text>
80
+ <text text-anchor="start" x="693.39" y="-594.89" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
81
+ <text text-anchor="start" x="494.55" y="-580.49" font-family="Arial" font-size="14.00" fill="#333333">process 내부의 기본 수행 활동을 관리한다.</text>
82
+ <polygon fill="none" stroke="black" points="486.3,-540.29 486.3,-571.09 738.53,-571.09 738.53,-540.29 486.3,-540.29"/>
83
+ <text text-anchor="start" x="493.3" y="-552.49" font-family="Arial" font-size="14.00">activity_id </text>
84
+ <text text-anchor="start" x="558.66" y="-552.49" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
85
+ <polygon fill="none" stroke="black" points="486.3,-509.49 486.3,-540.29 738.53,-540.29 738.53,-509.49 486.3,-509.49"/>
86
+ <text text-anchor="start" x="493.3" y="-521.69" font-family="Arial" font-size="14.00">process_id </text>
87
+ <text text-anchor="start" x="564.9" y="-521.69" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
88
+ </g>
89
+ <!-- methodology_activities&#45;&gt;methodology_processes -->
90
+ <g id="edge2" class="edge">
91
+ <title>methodology_activities:process_id&#45;&gt;methodology_processes:process_id</title>
92
+ <path fill="none" stroke="black" d="M613.19,-498.22C622.35,-441.87 710.01,-474.31 740.53,-414.89 762.38,-372.35 789.35,-307.29 741.53,-307.29"/>
93
+ <polygon fill="black" stroke="black" points="613.2,-498.18 607.95,-507.82 612.79,-503.5 612.47,-507.82 612.47,-507.82 612.47,-507.82 612.79,-503.5 616.93,-508.5 613.2,-498.18"/>
94
+ </g>
95
+ <!-- methodology_stages -->
96
+ <g id="node4" class="node">
97
+ <title>methodology_stages</title>
98
+ <polygon fill="#efefef" stroke="none" points="842.62,-571.09 842.62,-617.09 1240.21,-617.09 1240.21,-571.09 842.62,-571.09"/>
99
+ <polygon fill="none" stroke="black" points="842.62,-571.09 842.62,-617.09 1240.21,-617.09 1240.21,-571.09 842.62,-571.09"/>
100
+ <text text-anchor="start" x="932.8" y="-594.89" font-family="Arial Bold" font-size="18.00">methodology_stages</text>
101
+ <text text-anchor="start" x="1080.78" y="-594.89" font-family="Arial" font-size="14.00">    </text>
102
+ <text text-anchor="start" x="1111.9" y="-594.89" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
103
+ <text text-anchor="start" x="849.62" y="-580.49" font-family="Arial" font-size="14.00" fill="#333333">process 내부 activity grouping, gate, 기준선, 전환 구간을 관리한다.</text>
104
+ <polygon fill="none" stroke="black" points="842.62,-540.29 842.62,-571.09 1240.21,-571.09 1240.21,-540.29 842.62,-540.29"/>
105
+ <text text-anchor="start" x="849.62" y="-552.49" font-family="Arial" font-size="14.00">stage_id </text>
106
+ <text text-anchor="start" x="906.44" y="-552.49" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
107
+ <polygon fill="none" stroke="black" points="842.62,-509.49 842.62,-540.29 1240.21,-540.29 1240.21,-509.49 842.62,-509.49"/>
108
+ <text text-anchor="start" x="849.62" y="-521.69" font-family="Arial" font-size="14.00">process_id </text>
109
+ <text text-anchor="start" x="921.22" y="-521.69" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
110
+ </g>
111
+ <!-- methodology_stages&#45;&gt;methodology_processes -->
112
+ <g id="edge3" class="edge">
113
+ <title>methodology_stages:process_id&#45;&gt;methodology_processes:process_id</title>
114
+ <path fill="none" stroke="black" d="M831.46,-524.14C742.63,-510.27 844.34,-307.29 741.53,-307.29"/>
115
+ <polygon fill="black" stroke="black" points="831.32,-524.13 840.96,-529.35 836.64,-524.52 840.96,-524.84 840.96,-524.84 840.96,-524.84 836.64,-524.52 841.62,-520.38 831.32,-524.13"/>
116
+ </g>
117
+ </g>
118
+ </svg>
@@ -0,0 +1,52 @@
1
+ # methodology_schema_migrations
2
+
3
+ ## Description
4
+
5
+ methodology 패키지의 migration 적용 이력을 관리한다.
6
+
7
+ <details>
8
+ <summary><strong>Table Definition</strong></summary>
9
+
10
+ ```sql
11
+ CREATE TABLE methodology_schema_migrations (
12
+ -- migration 식별자
13
+ migration_id VARCHAR(128) PRIMARY KEY,
14
+
15
+ -- migration 이름
16
+ migration_name VARCHAR(256) NOT NULL,
17
+
18
+ -- 적용 시각
19
+ applied_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
20
+ )
21
+ ```
22
+
23
+ </details>
24
+
25
+ ## Columns
26
+
27
+ | Name | Type | Default | Nullable |
28
+ | -------------- | ------------ | ----------------- | -------- |
29
+ | migration_id | VARCHAR(128) | | true |
30
+ | migration_name | VARCHAR(256) | | false |
31
+ | applied_at | DATETIME | CURRENT_TIMESTAMP | false |
32
+
33
+ ## Constraints
34
+
35
+ | Name | Type | Definition |
36
+ | ------------------------------------------------ | ----------- | -------------------------- |
37
+ | migration_id | PRIMARY KEY | PRIMARY KEY (migration_id) |
38
+ | sqlite_autoindex_methodology_schema_migrations_1 | PRIMARY KEY | PRIMARY KEY (migration_id) |
39
+
40
+ ## Indexes
41
+
42
+ | Name | Definition |
43
+ | ------------------------------------------------ | -------------------------- |
44
+ | sqlite_autoindex_methodology_schema_migrations_1 | PRIMARY KEY (migration_id) |
45
+
46
+ ## Relations
47
+
48
+ ![er](methodology_schema_migrations.svg)
49
+
50
+ ---
51
+
52
+ > 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_schema_migrations Pages: 1 -->
7
+ <svg width="428pt" height="177pt"
8
+ viewBox="0.00 0.00 427.61 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_schema_migrations</title>
11
+ <polygon fill="white" stroke="none" points="-4,4 -4,-173.2 423.61,-173.2 423.61,4 -4,4"/>
12
+ <!-- methodology_schema_migrations -->
13
+ <g id="node1" class="node">
14
+ <title>methodology_schema_migrations</title>
15
+ <polygon fill="#efefef" stroke="none" points="46.2,-77 46.2,-123 373.41,-123 373.41,-77 46.2,-77"/>
16
+ <polygon fill="none" stroke="black" points="46.2,-77 46.2,-123 373.41,-123 373.41,-77 46.2,-77"/>
17
+ <text text-anchor="start" x="53.2" y="-100.8" font-family="Arial Bold" font-size="18.00">methodology_schema_migrations</text>
18
+ <text text-anchor="start" x="297.16" y="-100.8" font-family="Arial" font-size="14.00">    </text>
19
+ <text text-anchor="start" x="328.28" y="-100.8" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
20
+ <text text-anchor="start" x="53.42" y="-86.4" font-family="Arial" font-size="14.00" fill="#333333">methodology 패키지의 migration 적용 이력을 관리한다.</text>
21
+ <polygon fill="none" stroke="black" points="46.2,-46.2 46.2,-77 373.41,-77 373.41,-46.2 46.2,-46.2"/>
22
+ <text text-anchor="start" x="53.2" y="-58.4" font-family="Arial" font-size="14.00">migration_id </text>
23
+ <text text-anchor="start" x="133.35" y="-58.4" font-family="Arial" font-size="14.00" fill="#666666">[VARCHAR(128)]</text>
24
+ <polygon fill="none" stroke="black" stroke-width="3" points="44.7,-44.7 44.7,-124.5 374.91,-124.5 374.91,-44.7 44.7,-44.7"/>
25
+ </g>
26
+ </g>
27
+ </svg>
@@ -0,0 +1,106 @@
1
+ # methodology_stage_activities
2
+
3
+ ## Description
4
+
5
+ stage와 activity의 포함 관계를 관리한다.
6
+
7
+ <details>
8
+ <summary><strong>Table Definition</strong></summary>
9
+
10
+ ```sql
11
+ CREATE TABLE methodology_stage_activities (
12
+ -- stage activity 배치 식별자
13
+ stage_activity_id CHAR(36) PRIMARY KEY
14
+ CHECK (length(stage_activity_id) = 36),
15
+
16
+ -- stage 식별자
17
+ stage_id CHAR(36) NOT NULL
18
+ CHECK (length(stage_id) = 36),
19
+
20
+ -- activity 식별자
21
+ activity_id CHAR(36) NOT NULL
22
+ CHECK (length(activity_id) = 36),
23
+
24
+ -- stage 내 activity 순서
25
+ sort_order INTEGER NOT NULL DEFAULT 0,
26
+
27
+ -- 필수 여부
28
+ is_required INTEGER NOT NULL DEFAULT 1
29
+ CHECK (is_required IN (0, 1)),
30
+
31
+ -- tailoring 허용 여부
32
+ tailoring_allowed INTEGER NOT NULL DEFAULT 0
33
+ CHECK (tailoring_allowed IN (0, 1)),
34
+
35
+ -- 생성 시각
36
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
37
+
38
+ -- 수정 시각
39
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
40
+
41
+ -- 확장 메타데이터
42
+ metadata_json JSON
43
+ CHECK (metadata_json IS NULL OR json_valid(metadata_json)),
44
+
45
+ FOREIGN KEY (stage_id)
46
+ REFERENCES methodology_stages (stage_id)
47
+ ON DELETE CASCADE,
48
+
49
+ FOREIGN KEY (activity_id)
50
+ REFERENCES methodology_activities (activity_id)
51
+ ON DELETE CASCADE,
52
+
53
+ UNIQUE (stage_id, activity_id),
54
+ UNIQUE (stage_id, sort_order)
55
+ )
56
+ ```
57
+
58
+ </details>
59
+
60
+ ## Columns
61
+
62
+ | Name | Type | Default | Nullable | Parents |
63
+ | ----------------- | -------- | ----------------- | -------- | --------------------------------------------------- |
64
+ | stage_activity_id | CHAR(36) | | true | |
65
+ | stage_id | CHAR(36) | | false | [methodology_stages](methodology_stages.md) |
66
+ | activity_id | CHAR(36) | | false | [methodology_activities](methodology_activities.md) |
67
+ | sort_order | INTEGER | 0 | false | |
68
+ | is_required | INTEGER | 1 | false | |
69
+ | tailoring_allowed | INTEGER | 0 | false | |
70
+ | created_at | DATETIME | CURRENT_TIMESTAMP | false | |
71
+ | updated_at | DATETIME | CURRENT_TIMESTAMP | false | |
72
+ | metadata_json | JSON | | true | |
73
+
74
+ ## Constraints
75
+
76
+ | Name | Type | Definition |
77
+ | ----------------------------------------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------- |
78
+ | stage_activity_id | PRIMARY KEY | PRIMARY KEY (stage_activity_id) |
79
+ | - (Foreign key ID: 0) | FOREIGN KEY | FOREIGN KEY (activity_id) REFERENCES methodology_activities (activity_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE |
80
+ | - (Foreign key ID: 1) | FOREIGN KEY | FOREIGN KEY (stage_id) REFERENCES methodology_stages (stage_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE |
81
+ | sqlite_autoindex_methodology_stage_activities_3 | UNIQUE | UNIQUE (stage_id, sort_order) |
82
+ | sqlite_autoindex_methodology_stage_activities_2 | UNIQUE | UNIQUE (stage_id, activity_id) |
83
+ | sqlite_autoindex_methodology_stage_activities_1 | PRIMARY KEY | PRIMARY KEY (stage_activity_id) |
84
+ | - | CHECK | CHECK (length(stage_activity_id) = 36) |
85
+ | - | CHECK | CHECK (length(stage_id) = 36) |
86
+ | - | CHECK | CHECK (length(activity_id) = 36) |
87
+ | - | CHECK | CHECK (is_required IN (0, 1)) |
88
+ | - | CHECK | CHECK (tailoring_allowed IN (0, 1)) |
89
+ | - | CHECK | CHECK (metadata_json IS NULL OR json_valid(metadata_json)) |
90
+
91
+ ## Indexes
92
+
93
+ | Name | Definition |
94
+ | ----------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
95
+ | idx_methodology_stage_activities_activity | CREATE INDEX idx_methodology_stage_activities_activity<br /> ON methodology_stage_activities (activity_id) |
96
+ | sqlite_autoindex_methodology_stage_activities_3 | UNIQUE (stage_id, sort_order) |
97
+ | sqlite_autoindex_methodology_stage_activities_2 | UNIQUE (stage_id, activity_id) |
98
+ | sqlite_autoindex_methodology_stage_activities_1 | PRIMARY KEY (stage_activity_id) |
99
+
100
+ ## Relations
101
+
102
+ ![er](methodology_stage_activities.svg)
103
+
104
+ ---
105
+
106
+ > Generated by [tbls](https://github.com/k1LoW/tbls)
@@ -0,0 +1,77 @@
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_activities Pages: 1 -->
7
+ <svg width="848pt" height="469pt"
8
+ viewBox="0.00 0.00 848.30 468.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 464.8)">
10
+ <title>methodology_stage_activities</title>
11
+ <polygon fill="white" stroke="none" points="-4,4 -4,-464.8 844.3,-464.8 844.3,4 -4,4"/>
12
+ <!-- methodology_stage_activities -->
13
+ <g id="node1" class="node">
14
+ <title>methodology_stage_activities</title>
15
+ <polygon fill="#efefef" stroke="none" points="306.89,-368.6 306.89,-414.6 605.1,-414.6 605.1,-368.6 306.89,-368.6"/>
16
+ <polygon fill="none" stroke="black" points="306.89,-368.6 306.89,-414.6 605.1,-414.6 605.1,-368.6 306.89,-368.6"/>
17
+ <text text-anchor="start" x="313.89" y="-392.4" font-family="Arial Bold" font-size="18.00">methodology_stage_activities</text>
18
+ <text text-anchor="start" x="528.84" y="-392.4" font-family="Arial" font-size="14.00">    </text>
19
+ <text text-anchor="start" x="559.96" y="-392.4" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
20
+ <text text-anchor="start" x="343.57" y="-378" font-family="Arial" font-size="14.00" fill="#333333">stage와 activity의 포함 관계를 관리한다.</text>
21
+ <polygon fill="none" stroke="black" points="306.89,-337.8 306.89,-368.6 605.1,-368.6 605.1,-337.8 306.89,-337.8"/>
22
+ <text text-anchor="start" x="313.89" y="-350" font-family="Arial" font-size="14.00">stage_activity_id </text>
23
+ <text text-anchor="start" x="421.28" y="-350" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
24
+ <polygon fill="none" stroke="black" points="306.89,-307 306.89,-337.8 605.1,-337.8 605.1,-307 306.89,-307"/>
25
+ <text text-anchor="start" x="313.89" y="-319.2" font-family="Arial" font-size="14.00">stage_id </text>
26
+ <text text-anchor="start" x="370.71" y="-319.2" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
27
+ <polygon fill="none" stroke="black" points="306.89,-276.2 306.89,-307 605.1,-307 605.1,-276.2 306.89,-276.2"/>
28
+ <text text-anchor="start" x="313.89" y="-288.4" font-family="Arial" font-size="14.00">activity_id </text>
29
+ <text text-anchor="start" x="379.25" y="-288.4" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
30
+ <polygon fill="none" stroke="black" stroke-width="3" points="305.39,-274.7 305.39,-416.1 606.6,-416.1 606.6,-274.7 305.39,-274.7"/>
31
+ </g>
32
+ <!-- methodology_stages -->
33
+ <g id="node2" class="node">
34
+ <title>methodology_stages</title>
35
+ <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"/>
36
+ <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"/>
37
+ <text text-anchor="start" x="133.37" y="-128.6" font-family="Arial Bold" font-size="18.00">methodology_stages</text>
38
+ <text text-anchor="start" x="281.36" y="-128.6" font-family="Arial" font-size="14.00">    </text>
39
+ <text text-anchor="start" x="312.47" y="-128.6" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
40
+ <text text-anchor="start" x="50.2" y="-114.2" font-family="Arial" font-size="14.00" fill="#333333">process 내부 activity grouping, gate, 기준선, 전환 구간을 관리한다.</text>
41
+ <polygon fill="none" stroke="black" points="43.2,-74 43.2,-104.8 440.78,-104.8 440.78,-74 43.2,-74"/>
42
+ <text text-anchor="start" x="50.2" y="-86.2" font-family="Arial" font-size="14.00">stage_id </text>
43
+ <text text-anchor="start" x="107.02" y="-86.2" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
44
+ <polygon fill="none" stroke="black" points="43.2,-43.2 43.2,-74 440.78,-74 440.78,-43.2 43.2,-43.2"/>
45
+ <text text-anchor="start" x="50.2" y="-55.4" font-family="Arial" font-size="14.00">process_id </text>
46
+ <text text-anchor="start" x="121.79" y="-55.4" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
47
+ </g>
48
+ <!-- methodology_stage_activities&#45;&gt;methodology_stages -->
49
+ <g id="edge1" class="edge">
50
+ <title>methodology_stage_activities:stage_id&#45;&gt;methodology_stages:stage_id</title>
51
+ <path fill="none" stroke="black" d="M295.82,-320.89C268.06,-311.4 284.08,-259.41 306.89,-230 344.65,-181.3 403.06,-242.73 440.78,-194 469.25,-157.24 488.28,-89.4 441.78,-89.4"/>
52
+ <polygon fill="black" stroke="black" points="295.67,-320.87 304.89,-326.8 300.94,-321.66 305.23,-322.3 305.23,-322.3 305.23,-322.3 300.94,-321.66 306.22,-317.9 295.67,-320.87"/>
53
+ </g>
54
+ <!-- methodology_activities -->
55
+ <g id="node3" class="node">
56
+ <title>methodology_activities</title>
57
+ <polygon fill="#efefef" stroke="none" points="544.88,-104.8 544.88,-150.8 797.1,-150.8 797.1,-104.8 544.88,-104.8"/>
58
+ <polygon fill="none" stroke="black" points="544.88,-104.8 544.88,-150.8 797.1,-150.8 797.1,-104.8 544.88,-104.8"/>
59
+ <text text-anchor="start" x="551.88" y="-128.6" font-family="Arial Bold" font-size="18.00">methodology_activities</text>
60
+ <text text-anchor="start" x="720.85" y="-128.6" font-family="Arial" font-size="14.00">    </text>
61
+ <text text-anchor="start" x="751.97" y="-128.6" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
62
+ <text text-anchor="start" x="553.13" y="-114.2" font-family="Arial" font-size="14.00" fill="#333333">process 내부의 기본 수행 활동을 관리한다.</text>
63
+ <polygon fill="none" stroke="black" points="544.88,-74 544.88,-104.8 797.1,-104.8 797.1,-74 544.88,-74"/>
64
+ <text text-anchor="start" x="551.88" y="-86.2" font-family="Arial" font-size="14.00">activity_id </text>
65
+ <text text-anchor="start" x="617.24" y="-86.2" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
66
+ <polygon fill="none" stroke="black" points="544.88,-43.2 544.88,-74 797.1,-74 797.1,-43.2 544.88,-43.2"/>
67
+ <text text-anchor="start" x="551.88" y="-55.4" font-family="Arial" font-size="14.00">process_id </text>
68
+ <text text-anchor="start" x="623.47" y="-55.4" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
69
+ </g>
70
+ <!-- methodology_stage_activities&#45;&gt;methodology_activities -->
71
+ <g id="edge2" class="edge">
72
+ <title>methodology_stage_activities:activity_id&#45;&gt;methodology_activities:activity_id</title>
73
+ <path fill="none" stroke="black" d="M616.02,-289.02C628.92,-280.1 616.66,-250 605.1,-230 589.49,-203 560.39,-221.05 544.88,-194 521.75,-153.67 497.39,-89.4 543.88,-89.4"/>
74
+ <polygon fill="black" stroke="black" points="616.1,-289 605.29,-287.16 610.94,-290.34 606.74,-291.43 606.74,-291.43 606.74,-291.43 610.94,-290.34 607.55,-295.87 616.1,-289"/>
75
+ </g>
76
+ </g>
77
+ </svg>
@@ -0,0 +1,109 @@
1
+ # methodology_stage_artifact_requirements
2
+
3
+ ## Description
4
+
5
+ stage gate, baseline, handoff, approval에 필요한 추가 산출물 요구를 관리한다.
6
+
7
+ <details>
8
+ <summary><strong>Table Definition</strong></summary>
9
+
10
+ ```sql
11
+ CREATE TABLE methodology_stage_artifact_requirements (
12
+ -- stage artifact requirement 식별자
13
+ stage_artifact_requirement_id CHAR(36) PRIMARY KEY
14
+ CHECK (length(stage_artifact_requirement_id) = 36),
15
+
16
+ -- 소속 stage 식별자
17
+ stage_id CHAR(36) NOT NULL
18
+ CHECK (length(stage_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
+ -- stage 산출물 요구 역할 코드
27
+ requirement_role_code VARCHAR(32) NOT NULL
28
+ CHECK (requirement_role_code IN ('required', 'supporting')),
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
+ -- stage 내 정렬 순서
39
+ sort_order INTEGER NOT NULL DEFAULT 0,
40
+
41
+ -- 생성 시각
42
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
43
+
44
+ -- 수정 시각
45
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
46
+
47
+ -- 확장 메타데이터
48
+ metadata_json JSON
49
+ CHECK (metadata_json IS NULL OR json_valid(metadata_json)),
50
+
51
+ FOREIGN KEY (stage_id)
52
+ REFERENCES methodology_stages (stage_id)
53
+ ON DELETE CASCADE,
54
+
55
+ UNIQUE (stage_id, artifact_standard_code, artifact_standard_version, requirement_role_code),
56
+ UNIQUE (stage_id, sort_order)
57
+ )
58
+ ```
59
+
60
+ </details>
61
+
62
+ ## Columns
63
+
64
+ | Name | Type | Default | Nullable | Parents |
65
+ | ----------------------------- | ------------ | ----------------- | -------- | ------------------------------------------- |
66
+ | stage_artifact_requirement_id | CHAR(36) | | true | |
67
+ | stage_id | CHAR(36) | | false | [methodology_stages](methodology_stages.md) |
68
+ | artifact_standard_code | VARCHAR(128) | | false | |
69
+ | artifact_standard_version | VARCHAR(64) | | false | |
70
+ | requirement_role_code | VARCHAR(32) | | false | |
71
+ | is_required | INTEGER | 1 | false | |
72
+ | validation_required | INTEGER | 0 | false | |
73
+ | sort_order | INTEGER | 0 | false | |
74
+ | created_at | DATETIME | CURRENT_TIMESTAMP | false | |
75
+ | updated_at | DATETIME | CURRENT_TIMESTAMP | false | |
76
+ | metadata_json | JSON | | true | |
77
+
78
+ ## Constraints
79
+
80
+ | Name | Type | Definition |
81
+ | ---------------------------------------------------------- | ----------- | ---------------------------------------------------------------------------------------------------------------- |
82
+ | stage_artifact_requirement_id | PRIMARY KEY | PRIMARY KEY (stage_artifact_requirement_id) |
83
+ | - (Foreign key ID: 0) | FOREIGN KEY | FOREIGN KEY (stage_id) REFERENCES methodology_stages (stage_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE |
84
+ | sqlite_autoindex_methodology_stage_artifact_requirements_3 | UNIQUE | UNIQUE (stage_id, sort_order) |
85
+ | sqlite_autoindex_methodology_stage_artifact_requirements_2 | UNIQUE | UNIQUE (stage_id, artifact_standard_code, artifact_standard_version, requirement_role_code) |
86
+ | sqlite_autoindex_methodology_stage_artifact_requirements_1 | PRIMARY KEY | PRIMARY KEY (stage_artifact_requirement_id) |
87
+ | - | CHECK | CHECK (length(stage_artifact_requirement_id) = 36) |
88
+ | - | CHECK | CHECK (length(stage_id) = 36) |
89
+ | - | CHECK | CHECK (requirement_role_code IN ('required', 'supporting')) |
90
+ | - | CHECK | CHECK (is_required IN (0, 1)) |
91
+ | - | CHECK | CHECK (validation_required IN (0, 1)) |
92
+ | - | CHECK | CHECK (metadata_json IS NULL OR json_valid(metadata_json)) |
93
+
94
+ ## Indexes
95
+
96
+ | Name | Definition |
97
+ | ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
98
+ | idx_methodology_stage_artifact_requirements_stage_role | CREATE INDEX idx_methodology_stage_artifact_requirements_stage_role<br /> ON methodology_stage_artifact_requirements (stage_id, requirement_role_code) |
99
+ | sqlite_autoindex_methodology_stage_artifact_requirements_3 | UNIQUE (stage_id, sort_order) |
100
+ | sqlite_autoindex_methodology_stage_artifact_requirements_2 | UNIQUE (stage_id, artifact_standard_code, artifact_standard_version, requirement_role_code) |
101
+ | sqlite_autoindex_methodology_stage_artifact_requirements_1 | PRIMARY KEY (stage_artifact_requirement_id) |
102
+
103
+ ## Relations
104
+
105
+ ![er](methodology_stage_artifact_requirements.svg)
106
+
107
+ ---
108
+
109
+ > Generated by [tbls](https://github.com/k1LoW/tbls)