@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,72 @@
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_common_blueprint_policies Pages: 1 -->
7
+ <svg width="547pt" height="663pt"
8
+ viewBox="0.00 0.00 547.11 662.89" 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 658.89)">
10
+ <title>methodology_common_blueprint_policies</title>
11
+ <polygon fill="white" stroke="none" points="-4,4 -4,-658.89 543.11,-658.89 543.11,4 -4,4"/>
12
+ <!-- methodology_common_blueprint_policies -->
13
+ <g id="node1" class="node">
14
+ <title>methodology_common_blueprint_policies</title>
15
+ <polygon fill="#efefef" stroke="none" points="63.2,-322.69 63.2,-358.29 452.41,-358.29 452.41,-322.69 63.2,-322.69"/>
16
+ <polygon fill="none" stroke="black" points="63.2,-322.69 63.2,-358.29 452.41,-358.29 452.41,-322.69 63.2,-322.69"/>
17
+ <text text-anchor="start" x="70.2" y="-336.09" font-family="Arial Bold" font-size="18.00">methodology_common_blueprint_policies</text>
18
+ <text text-anchor="start" x="376.16" y="-336.09" font-family="Arial" font-size="14.00">    </text>
19
+ <text text-anchor="start" x="407.27" y="-336.09" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
20
+ <polygon fill="none" stroke="black" points="63.2,-291.89 63.2,-322.69 452.41,-322.69 452.41,-291.89 63.2,-291.89"/>
21
+ <text text-anchor="start" x="70.2" y="-304.09" font-family="Arial" font-size="14.00">common_blueprint_policy_id </text>
22
+ <text text-anchor="start" x="251.52" y="-304.09" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
23
+ <polygon fill="none" stroke="black" points="63.2,-261.09 63.2,-291.89 452.41,-291.89 452.41,-261.09 63.2,-261.09"/>
24
+ <text text-anchor="start" x="70.2" y="-273.29" font-family="Arial" font-size="14.00">methodology_id </text>
25
+ <text text-anchor="start" x="172.94" y="-273.29" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
26
+ <polygon fill="none" stroke="black" stroke-width="3" points="61.7,-259.59 61.7,-359.79 453.91,-359.79 453.91,-259.59 61.7,-259.59"/>
27
+ </g>
28
+ <!-- methodology_methodologies -->
29
+ <g id="node3" class="node">
30
+ <title>methodology_methodologies</title>
31
+ <polygon fill="#efefef" stroke="none" points="99.08,-89.69 99.08,-135.69 416.53,-135.69 416.53,-89.69 99.08,-89.69"/>
32
+ <polygon fill="none" stroke="black" points="99.08,-89.69 99.08,-135.69 416.53,-135.69 416.53,-89.69 99.08,-89.69"/>
33
+ <text text-anchor="start" x="118.19" y="-113.49" font-family="Arial Bold" font-size="18.00">methodology_methodologies</text>
34
+ <text text-anchor="start" x="328.17" y="-113.49" font-family="Arial" font-size="14.00">    </text>
35
+ <text text-anchor="start" x="359.28" y="-113.49" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
36
+ <text text-anchor="start" x="106.08" y="-99.09" font-family="Arial" font-size="14.00" fill="#333333">방법론 정의의 최상위 versioned definition을 관리한다.</text>
37
+ <polygon fill="none" stroke="black" points="99.08,-58.89 99.08,-89.69 416.53,-89.69 416.53,-58.89 99.08,-58.89"/>
38
+ <text text-anchor="start" x="106.08" y="-71.09" font-family="Arial" font-size="14.00">methodology_id </text>
39
+ <text text-anchor="start" x="208.82" y="-71.09" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
40
+ </g>
41
+ <!-- methodology_common_blueprint_policies&#45;&gt;methodology_methodologies -->
42
+ <g id="edge2" class="edge">
43
+ <title>methodology_common_blueprint_policies:methodology_id&#45;&gt;methodology_methodologies:methodology_id</title>
44
+ <path fill="none" stroke="black" d="M258.4,-250.1C268.64,-170.22 407.58,-256.06 459.73,-178.89 489.59,-134.7 497.35,-96.7 459.73,-58.89 396.43,4.73 257.8,31.86 257.8,-57.89"/>
45
+ <polygon fill="black" stroke="black" points="258.42,-249.77 253.33,-259.49 258.1,-255.1 257.84,-259.42 257.84,-259.42 257.84,-259.42 258.1,-255.1 262.32,-260.02 258.42,-249.77"/>
46
+ </g>
47
+ <!-- methodology_common_blueprint_policy_nodes -->
48
+ <g id="node2" class="node">
49
+ <title>methodology_common_blueprint_policy_nodes</title>
50
+ <polygon fill="#efefef" stroke="none" points="43.2,-576.09 43.2,-611.69 472.41,-611.69 472.41,-576.09 43.2,-576.09"/>
51
+ <polygon fill="none" stroke="black" points="43.2,-576.09 43.2,-611.69 472.41,-611.69 472.41,-576.09 43.2,-576.09"/>
52
+ <text text-anchor="start" x="50.2" y="-589.49" font-family="Arial Bold" font-size="18.00">methodology_common_blueprint_policy_nodes</text>
53
+ <text text-anchor="start" x="396.16" y="-589.49" font-family="Arial" font-size="14.00">    </text>
54
+ <text text-anchor="start" x="427.27" y="-589.49" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
55
+ <polygon fill="none" stroke="black" points="43.2,-545.29 43.2,-576.09 472.41,-576.09 472.41,-545.29 43.2,-545.29"/>
56
+ <text text-anchor="start" x="50.2" y="-557.49" font-family="Arial" font-size="14.00">common_blueprint_policy_node_id </text>
57
+ <text text-anchor="start" x="270.45" y="-557.49" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
58
+ <polygon fill="none" stroke="black" points="43.2,-514.49 43.2,-545.29 472.41,-545.29 472.41,-514.49 43.2,-514.49"/>
59
+ <text text-anchor="start" x="50.2" y="-526.69" font-family="Arial" font-size="14.00">common_blueprint_policy_id </text>
60
+ <text text-anchor="start" x="231.52" y="-526.69" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
61
+ <polygon fill="none" stroke="black" points="43.2,-483.69 43.2,-514.49 472.41,-514.49 472.41,-483.69 43.2,-483.69"/>
62
+ <text text-anchor="start" x="50.2" y="-495.89" font-family="Arial" font-size="14.00">parent_policy_node_id </text>
63
+ <text text-anchor="start" x="194.98" y="-495.89" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
64
+ </g>
65
+ <!-- methodology_common_blueprint_policy_nodes&#45;&gt;methodology_common_blueprint_policies -->
66
+ <g id="edge1" class="edge">
67
+ <title>methodology_common_blueprint_policy_nodes:common_blueprint_policy_id&#45;&gt;methodology_common_blueprint_policies:common_blueprint_policy_id</title>
68
+ <path fill="none" stroke="black" d="M483.71,-529.04C571.19,-514.09 549.15,-307.29 453.41,-307.29"/>
69
+ <polygon fill="black" stroke="black" points="483.71,-529.04 473.37,-525.38 478.39,-529.48 474.08,-529.83 474.08,-529.83 474.08,-529.83 478.39,-529.48 474.11,-534.35 483.71,-529.04"/>
70
+ </g>
71
+ </g>
72
+ </svg>
@@ -0,0 +1,118 @@
1
+ # methodology_common_blueprint_policy_nodes
2
+
3
+ ## Description
4
+
5
+ <details>
6
+ <summary><strong>Table Definition</strong></summary>
7
+
8
+ ```sql
9
+ CREATE TABLE methodology_common_blueprint_policy_nodes (
10
+ -- common blueprint policy node 식별자
11
+ common_blueprint_policy_node_id CHAR(36) PRIMARY KEY
12
+ CHECK (length(common_blueprint_policy_node_id) = 36),
13
+
14
+ -- 소속 common blueprint policy 식별자
15
+ common_blueprint_policy_id CHAR(36) NOT NULL
16
+ CHECK (length(common_blueprint_policy_id) = 36),
17
+
18
+ -- 상위 common blueprint policy node 식별자
19
+ parent_policy_node_id CHAR(36)
20
+ CHECK (parent_policy_node_id IS NULL OR length(parent_policy_node_id) = 36),
21
+
22
+ -- node 코드
23
+ node_code VARCHAR(128) NOT NULL,
24
+
25
+ -- node 제목
26
+ node_title VARCHAR(256) NOT NULL,
27
+
28
+ -- node 유형 코드
29
+ node_type_code VARCHAR(32) NOT NULL
30
+ CHECK (node_type_code IN ('FRONT_MATTER', 'BACK_MATTER', 'BODY_POLICY')),
31
+
32
+ -- node level
33
+ node_level INTEGER NOT NULL
34
+ CHECK (node_level BETWEEN 1 AND 7),
35
+
36
+ -- 필수 여부
37
+ is_required INTEGER NOT NULL DEFAULT 0
38
+ CHECK (is_required IN (0, 1)),
39
+
40
+ -- 정렬 순서
41
+ sort_order INTEGER NOT NULL DEFAULT 0,
42
+
43
+ -- 생성 시각
44
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
45
+
46
+ -- 수정 시각
47
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
48
+
49
+ -- 확장 메타데이터
50
+ metadata_json JSON
51
+ CHECK (metadata_json IS NULL OR json_valid(metadata_json)),
52
+
53
+ FOREIGN KEY (common_blueprint_policy_id)
54
+ REFERENCES methodology_common_blueprint_policies (common_blueprint_policy_id)
55
+ ON DELETE CASCADE,
56
+
57
+ FOREIGN KEY (parent_policy_node_id)
58
+ REFERENCES methodology_common_blueprint_policy_nodes (common_blueprint_policy_node_id)
59
+ ON DELETE CASCADE,
60
+
61
+ UNIQUE (common_blueprint_policy_id, node_code),
62
+ UNIQUE (common_blueprint_policy_id, parent_policy_node_id, sort_order)
63
+ )
64
+ ```
65
+
66
+ </details>
67
+
68
+ ## Columns
69
+
70
+ | Name | Type | Default | Nullable | Children | Parents |
71
+ | ------------------------------- | ------------ | ----------------- | -------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
72
+ | common_blueprint_policy_node_id | CHAR(36) | | true | [methodology_common_blueprint_policy_nodes](methodology_common_blueprint_policy_nodes.md) | |
73
+ | common_blueprint_policy_id | CHAR(36) | | false | | [methodology_common_blueprint_policies](methodology_common_blueprint_policies.md) |
74
+ | parent_policy_node_id | CHAR(36) | | true | | [methodology_common_blueprint_policy_nodes](methodology_common_blueprint_policy_nodes.md) |
75
+ | node_code | VARCHAR(128) | | false | | |
76
+ | node_title | VARCHAR(256) | | false | | |
77
+ | node_type_code | VARCHAR(32) | | false | | |
78
+ | node_level | INTEGER | | false | | |
79
+ | is_required | INTEGER | 0 | false | | |
80
+ | sort_order | INTEGER | 0 | false | | |
81
+ | created_at | DATETIME | CURRENT_TIMESTAMP | false | | |
82
+ | updated_at | DATETIME | CURRENT_TIMESTAMP | false | | |
83
+ | metadata_json | JSON | | true | | |
84
+
85
+ ## Constraints
86
+
87
+ | Name | Type | Definition |
88
+ | ------------------------------------------------------------ | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
89
+ | common_blueprint_policy_node_id | PRIMARY KEY | PRIMARY KEY (common_blueprint_policy_node_id) |
90
+ | - (Foreign key ID: 0) | FOREIGN KEY | FOREIGN KEY (parent_policy_node_id) REFERENCES methodology_common_blueprint_policy_nodes (common_blueprint_policy_node_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE |
91
+ | - (Foreign key ID: 1) | FOREIGN KEY | FOREIGN KEY (common_blueprint_policy_id) REFERENCES methodology_common_blueprint_policies (common_blueprint_policy_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE |
92
+ | sqlite_autoindex_methodology_common_blueprint_policy_nodes_3 | UNIQUE | UNIQUE (common_blueprint_policy_id, parent_policy_node_id, sort_order) |
93
+ | sqlite_autoindex_methodology_common_blueprint_policy_nodes_2 | UNIQUE | UNIQUE (common_blueprint_policy_id, node_code) |
94
+ | sqlite_autoindex_methodology_common_blueprint_policy_nodes_1 | PRIMARY KEY | PRIMARY KEY (common_blueprint_policy_node_id) |
95
+ | - | CHECK | CHECK (length(common_blueprint_policy_node_id) = 36) |
96
+ | - | CHECK | CHECK (length(common_blueprint_policy_id) = 36) |
97
+ | - | CHECK | CHECK (parent_policy_node_id IS NULL OR length(parent_policy_node_id) = 36) |
98
+ | - | CHECK | CHECK (node_type_code IN ('FRONT_MATTER', 'BACK_MATTER', 'BODY_POLICY')) |
99
+ | - | CHECK | CHECK (node_level BETWEEN 1 AND 7) |
100
+ | - | CHECK | CHECK (is_required IN (0, 1)) |
101
+ | - | CHECK | CHECK (metadata_json IS NULL OR json_valid(metadata_json)) |
102
+
103
+ ## Indexes
104
+
105
+ | Name | Definition |
106
+ | ------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
107
+ | idx_methodology_common_blueprint_policy_nodes_policy_type | CREATE INDEX idx_methodology_common_blueprint_policy_nodes_policy_type<br /> ON methodology_common_blueprint_policy_nodes (common_blueprint_policy_id, node_type_code, sort_order) |
108
+ | sqlite_autoindex_methodology_common_blueprint_policy_nodes_3 | UNIQUE (common_blueprint_policy_id, parent_policy_node_id, sort_order) |
109
+ | sqlite_autoindex_methodology_common_blueprint_policy_nodes_2 | UNIQUE (common_blueprint_policy_id, node_code) |
110
+ | sqlite_autoindex_methodology_common_blueprint_policy_nodes_1 | PRIMARY KEY (common_blueprint_policy_node_id) |
111
+
112
+ ## Relations
113
+
114
+ ![er](methodology_common_blueprint_policy_nodes.svg)
115
+
116
+ ---
117
+
118
+ > Generated by [tbls](https://github.com/k1LoW/tbls)
@@ -0,0 +1,59 @@
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_common_blueprint_policy_nodes Pages: 1 -->
7
+ <svg width="550pt" height="567pt"
8
+ viewBox="0.00 0.00 550.11 567.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 563)">
10
+ <title>methodology_common_blueprint_policy_nodes</title>
11
+ <polygon fill="white" stroke="none" points="-4,4 -4,-563 546.11,-563 546.11,4 -4,4"/>
12
+ <!-- methodology_common_blueprint_policy_nodes -->
13
+ <g id="node1" class="node">
14
+ <title>methodology_common_blueprint_policy_nodes</title>
15
+ <polygon fill="#efefef" stroke="none" points="46.2,-358.2 46.2,-393.8 475.41,-393.8 475.41,-358.2 46.2,-358.2"/>
16
+ <polygon fill="none" stroke="black" points="46.2,-358.2 46.2,-393.8 475.41,-393.8 475.41,-358.2 46.2,-358.2"/>
17
+ <text text-anchor="start" x="53.2" y="-371.6" font-family="Arial Bold" font-size="18.00">methodology_common_blueprint_policy_nodes</text>
18
+ <text text-anchor="start" x="399.16" y="-371.6" font-family="Arial" font-size="14.00">    </text>
19
+ <text text-anchor="start" x="430.27" y="-371.6" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
20
+ <polygon fill="none" stroke="black" points="46.2,-327.4 46.2,-358.2 475.41,-358.2 475.41,-327.4 46.2,-327.4"/>
21
+ <text text-anchor="start" x="53.2" y="-339.6" font-family="Arial" font-size="14.00">common_blueprint_policy_node_id </text>
22
+ <text text-anchor="start" x="273.45" y="-339.6" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
23
+ <polygon fill="none" stroke="black" points="46.2,-296.6 46.2,-327.4 475.41,-327.4 475.41,-296.6 46.2,-296.6"/>
24
+ <text text-anchor="start" x="53.2" y="-308.8" font-family="Arial" font-size="14.00">common_blueprint_policy_id </text>
25
+ <text text-anchor="start" x="234.52" y="-308.8" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
26
+ <polygon fill="none" stroke="black" points="46.2,-265.8 46.2,-296.6 475.41,-296.6 475.41,-265.8 46.2,-265.8"/>
27
+ <text text-anchor="start" x="53.2" y="-278" font-family="Arial" font-size="14.00">parent_policy_node_id </text>
28
+ <text text-anchor="start" x="197.98" y="-278" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
29
+ <polygon fill="none" stroke="black" stroke-width="3" points="44.7,-264.3 44.7,-395.3 476.91,-395.3 476.91,-264.3 44.7,-264.3"/>
30
+ </g>
31
+ <!-- methodology_common_blueprint_policy_nodes&#45;&gt;methodology_common_blueprint_policy_nodes -->
32
+ <g id="edge1" class="edge">
33
+ <title>methodology_common_blueprint_policy_nodes:parent_policy_node_id&#45;&gt;methodology_common_blueprint_policy_nodes:common_blueprint_policy_node_id</title>
34
+ <path fill="none" stroke="black" d="M263.18,-306.73C269.72,-394.87 268.93,-559 260.8,-559 252.37,-559 251.84,-436.13 259.22,-357.82"/>
35
+ <polygon fill="black" stroke="black" points="263.17,-306.68 266.85,-296.35 262.74,-301.36 262.39,-297.05 262.39,-297.05 262.39,-297.05 262.74,-301.36 257.88,-297.07 263.17,-306.68"/>
36
+ </g>
37
+ <!-- methodology_common_blueprint_policies -->
38
+ <g id="node2" class="node">
39
+ <title>methodology_common_blueprint_policies</title>
40
+ <polygon fill="#efefef" stroke="none" points="66.2,-104.8 66.2,-140.4 455.41,-140.4 455.41,-104.8 66.2,-104.8"/>
41
+ <polygon fill="none" stroke="black" points="66.2,-104.8 66.2,-140.4 455.41,-140.4 455.41,-104.8 66.2,-104.8"/>
42
+ <text text-anchor="start" x="73.2" y="-118.2" font-family="Arial Bold" font-size="18.00">methodology_common_blueprint_policies</text>
43
+ <text text-anchor="start" x="379.16" y="-118.2" font-family="Arial" font-size="14.00">    </text>
44
+ <text text-anchor="start" x="410.27" y="-118.2" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
45
+ <polygon fill="none" stroke="black" points="66.2,-74 66.2,-104.8 455.41,-104.8 455.41,-74 66.2,-74"/>
46
+ <text text-anchor="start" x="73.2" y="-86.2" font-family="Arial" font-size="14.00">common_blueprint_policy_id </text>
47
+ <text text-anchor="start" x="254.52" y="-86.2" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
48
+ <polygon fill="none" stroke="black" points="66.2,-43.2 66.2,-74 455.41,-74 455.41,-43.2 66.2,-43.2"/>
49
+ <text text-anchor="start" x="73.2" y="-55.4" font-family="Arial" font-size="14.00">methodology_id </text>
50
+ <text text-anchor="start" x="175.94" y="-55.4" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
51
+ </g>
52
+ <!-- methodology_common_blueprint_policy_nodes&#45;&gt;methodology_common_blueprint_policies -->
53
+ <g id="edge2" class="edge">
54
+ <title>methodology_common_blueprint_policy_nodes:common_blueprint_policy_id&#45;&gt;methodology_common_blueprint_policies:common_blueprint_policy_id</title>
55
+ <path fill="none" stroke="black" d="M486.71,-311.15C574.19,-296.2 552.15,-89.4 456.41,-89.4"/>
56
+ <polygon fill="black" stroke="black" points="486.71,-311.15 476.37,-307.49 481.39,-311.59 477.08,-311.94 477.08,-311.94 477.08,-311.94 481.39,-311.59 477.11,-316.46 486.71,-311.15"/>
57
+ </g>
58
+ </g>
59
+ </svg>
@@ -0,0 +1,130 @@
1
+ # methodology_handoff_requirements
2
+
3
+ ## Description
4
+
5
+ phase, process, stage, activity 간 전달 요구를 관리한다.
6
+
7
+ <details>
8
+ <summary><strong>Table Definition</strong></summary>
9
+
10
+ ```sql
11
+ CREATE TABLE methodology_handoff_requirements (
12
+ -- handoff requirement 식별자
13
+ handoff_requirement_id CHAR(36) PRIMARY KEY
14
+ CHECK (length(handoff_requirement_id) = 36),
15
+
16
+ -- 전달 원천 scope 코드
17
+ source_scope_code VARCHAR(32) NOT NULL
18
+ CHECK (source_scope_code IN ('phase', 'process', 'stage', 'activity')),
19
+
20
+ -- 전달 원천 참조 식별자
21
+ source_ref_id CHAR(36) NOT NULL
22
+ CHECK (length(source_ref_id) = 36),
23
+
24
+ -- 전달 대상 scope 코드
25
+ target_scope_code VARCHAR(32) NOT NULL
26
+ CHECK (target_scope_code IN ('phase', 'process', 'stage', 'activity')),
27
+
28
+ -- 전달 대상 참조 식별자
29
+ target_ref_id CHAR(36) NOT NULL
30
+ CHECK (length(target_ref_id) = 36),
31
+
32
+ -- handoff 유형 코드
33
+ handoff_type_code VARCHAR(32) NOT NULL
34
+ CHECK (handoff_type_code IN ('artifact', 'issue', 'risk', 'decision', 'constraint', 'approval', 'context')),
35
+
36
+ -- handoff 항목명
37
+ handoff_item_name VARCHAR(256) NOT NULL,
38
+
39
+ -- handoff 설명
40
+ handoff_description TEXT,
41
+
42
+ -- artifact standard 코드. artifact 유형 handoff일 때 사용할 수 있다.
43
+ artifact_standard_code VARCHAR(128),
44
+
45
+ -- artifact standard 버전
46
+ artifact_standard_version VARCHAR(64),
47
+
48
+ -- 필수 여부
49
+ is_required INTEGER NOT NULL DEFAULT 1
50
+ CHECK (is_required IN (0, 1)),
51
+
52
+ -- validation 필수 여부
53
+ validation_required INTEGER NOT NULL DEFAULT 0
54
+ CHECK (validation_required IN (0, 1)),
55
+
56
+ -- 정렬 순서
57
+ sort_order INTEGER NOT NULL DEFAULT 0,
58
+
59
+ -- 생성 시각
60
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
61
+
62
+ -- 수정 시각
63
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
64
+
65
+ -- 확장 메타데이터
66
+ metadata_json JSON
67
+ CHECK (metadata_json IS NULL OR json_valid(metadata_json)),
68
+
69
+ CHECK (
70
+ (artifact_standard_code IS NULL AND artifact_standard_version IS NULL)
71
+ OR (artifact_standard_code IS NOT NULL AND artifact_standard_version IS NOT NULL)
72
+ )
73
+ )
74
+ ```
75
+
76
+ </details>
77
+
78
+ ## Columns
79
+
80
+ | Name | Type | Default | Nullable |
81
+ | ------------------------- | ------------ | ----------------- | -------- |
82
+ | handoff_requirement_id | CHAR(36) | | true |
83
+ | source_scope_code | VARCHAR(32) | | false |
84
+ | source_ref_id | CHAR(36) | | false |
85
+ | target_scope_code | VARCHAR(32) | | false |
86
+ | target_ref_id | CHAR(36) | | false |
87
+ | handoff_type_code | VARCHAR(32) | | false |
88
+ | handoff_item_name | VARCHAR(256) | | false |
89
+ | handoff_description | TEXT | | true |
90
+ | artifact_standard_code | VARCHAR(128) | | true |
91
+ | artifact_standard_version | VARCHAR(64) | | true |
92
+ | is_required | INTEGER | 1 | false |
93
+ | validation_required | INTEGER | 0 | false |
94
+ | sort_order | INTEGER | 0 | false |
95
+ | created_at | DATETIME | CURRENT_TIMESTAMP | false |
96
+ | updated_at | DATETIME | CURRENT_TIMESTAMP | false |
97
+ | metadata_json | JSON | | true |
98
+
99
+ ## Constraints
100
+
101
+ | Name | Type | Definition |
102
+ | --------------------------------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
103
+ | handoff_requirement_id | PRIMARY KEY | PRIMARY KEY (handoff_requirement_id) |
104
+ | sqlite_autoindex_methodology_handoff_requirements_1 | PRIMARY KEY | PRIMARY KEY (handoff_requirement_id) |
105
+ | - | CHECK | CHECK (length(handoff_requirement_id) = 36) |
106
+ | - | CHECK | CHECK (source_scope_code IN ('phase', 'process', 'stage', 'activity')) |
107
+ | - | CHECK | CHECK (length(source_ref_id) = 36) |
108
+ | - | CHECK | CHECK (target_scope_code IN ('phase', 'process', 'stage', 'activity')) |
109
+ | - | CHECK | CHECK (length(target_ref_id) = 36) |
110
+ | - | CHECK | CHECK (handoff_type_code IN ('artifact', 'issue', 'risk', 'decision', 'constraint', 'approval', 'context')) |
111
+ | - | CHECK | CHECK (is_required IN (0, 1)) |
112
+ | - | CHECK | CHECK (validation_required IN (0, 1)) |
113
+ | - | CHECK | CHECK (metadata_json IS NULL OR json_valid(metadata_json)) |
114
+ | - | CHECK | CHECK ( (artifact_standard_code IS NULL AND artifact_standard_version IS NULL) OR (artifact_standard_code IS NOT NULL AND artifact_standard_version IS NOT NULL) ) |
115
+
116
+ ## Indexes
117
+
118
+ | Name | Definition |
119
+ | --------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
120
+ | idx_methodology_handoff_requirements_target | CREATE INDEX idx_methodology_handoff_requirements_target<br /> ON methodology_handoff_requirements (target_scope_code, target_ref_id) |
121
+ | idx_methodology_handoff_requirements_source | CREATE INDEX idx_methodology_handoff_requirements_source<br /> ON methodology_handoff_requirements (source_scope_code, source_ref_id) |
122
+ | sqlite_autoindex_methodology_handoff_requirements_1 | PRIMARY KEY (handoff_requirement_id) |
123
+
124
+ ## Relations
125
+
126
+ ![er](methodology_handoff_requirements.svg)
127
+
128
+ ---
129
+
130
+ > 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_handoff_requirements Pages: 1 -->
7
+ <svg width="447pt" height="177pt"
8
+ viewBox="0.00 0.00 446.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_handoff_requirements</title>
11
+ <polygon fill="white" stroke="none" points="-4,4 -4,-173.2 442.59,-173.2 442.59,4 -4,4"/>
12
+ <!-- methodology_handoff_requirements -->
13
+ <g id="node1" class="node">
14
+ <title>methodology_handoff_requirements</title>
15
+ <polygon fill="#efefef" stroke="none" points="46.2,-77 46.2,-123 392.39,-123 392.39,-77 46.2,-77"/>
16
+ <polygon fill="none" stroke="black" points="46.2,-77 46.2,-123 392.39,-123 392.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_handoff_requirements</text>
18
+ <text text-anchor="start" x="316.13" y="-100.8" font-family="Arial" font-size="14.00">    </text>
19
+ <text text-anchor="start" x="347.25" y="-100.8" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
20
+ <text text-anchor="start" x="57.46" y="-86.4" font-family="Arial" font-size="14.00" fill="#333333">phase, process, stage, activity 간 전달 요구를 관리한다.</text>
21
+ <polygon fill="none" stroke="black" points="46.2,-46.2 46.2,-77 392.39,-77 392.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">handoff_requirement_id </text>
23
+ <text text-anchor="start" x="204.97" 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 393.89,-124.5 393.89,-44.7 44.7,-44.7"/>
25
+ </g>
26
+ </g>
27
+ </svg>
@@ -0,0 +1,105 @@
1
+ # methodology_lifecycles
2
+
3
+ ## Description
4
+
5
+ 방법론 생명주기 모델을 관리한다.
6
+
7
+ <details>
8
+ <summary><strong>Table Definition</strong></summary>
9
+
10
+ ```sql
11
+ CREATE TABLE methodology_lifecycles (
12
+ -- lifecycle 식별자
13
+ lifecycle_id CHAR(36) PRIMARY KEY
14
+ CHECK (length(lifecycle_id) = 36),
15
+
16
+ -- 소속 방법론 식별자
17
+ methodology_id CHAR(36) NOT NULL
18
+ CHECK (length(methodology_id) = 36),
19
+
20
+ -- lifecycle 코드
21
+ lifecycle_code VARCHAR(128) NOT NULL,
22
+
23
+ -- lifecycle 이름
24
+ lifecycle_name VARCHAR(256) NOT NULL,
25
+
26
+ -- lifecycle 유형 코드
27
+ lifecycle_type_code VARCHAR(64) NOT NULL DEFAULT 'default',
28
+
29
+ -- 설명
30
+ description TEXT,
31
+
32
+ -- 표시 정렬 순서
33
+ sort_order INTEGER NOT NULL DEFAULT 0,
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, lifecycle_code),
54
+ UNIQUE (methodology_id, sort_order)
55
+ )
56
+ ```
57
+
58
+ </details>
59
+
60
+ ## Columns
61
+
62
+ | Name | Type | Default | Nullable | Children | Parents |
63
+ | ------------------- | ------------ | ----------------- | -------- | ------------------------------------------- | --------------------------------------------------------- |
64
+ | lifecycle_id | CHAR(36) | | true | [methodology_phases](methodology_phases.md) | |
65
+ | methodology_id | CHAR(36) | | false | | [methodology_methodologies](methodology_methodologies.md) |
66
+ | lifecycle_code | VARCHAR(128) | | false | | |
67
+ | lifecycle_name | VARCHAR(256) | | false | | |
68
+ | lifecycle_type_code | VARCHAR(64) | 'default' | false | | |
69
+ | description | TEXT | | true | | |
70
+ | sort_order | INTEGER | 0 | false | | |
71
+ | is_active | INTEGER | 1 | 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
+ | lifecycle_id | PRIMARY KEY | PRIMARY KEY (lifecycle_id) |
81
+ | - (Foreign key ID: 0) | FOREIGN KEY | FOREIGN KEY (methodology_id) REFERENCES methodology_methodologies (methodology_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE |
82
+ | sqlite_autoindex_methodology_lifecycles_3 | UNIQUE | UNIQUE (methodology_id, sort_order) |
83
+ | sqlite_autoindex_methodology_lifecycles_2 | UNIQUE | UNIQUE (methodology_id, lifecycle_code) |
84
+ | sqlite_autoindex_methodology_lifecycles_1 | PRIMARY KEY | PRIMARY KEY (lifecycle_id) |
85
+ | - | CHECK | CHECK (length(lifecycle_id) = 36) |
86
+ | - | CHECK | CHECK (length(methodology_id) = 36) |
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
+ | idx_methodology_lifecycles_methodology | CREATE INDEX idx_methodology_lifecycles_methodology<br /> ON methodology_lifecycles (methodology_id) |
95
+ | sqlite_autoindex_methodology_lifecycles_3 | UNIQUE (methodology_id, sort_order) |
96
+ | sqlite_autoindex_methodology_lifecycles_2 | UNIQUE (methodology_id, lifecycle_code) |
97
+ | sqlite_autoindex_methodology_lifecycles_1 | PRIMARY KEY (lifecycle_id) |
98
+
99
+ ## Relations
100
+
101
+ ![er](methodology_lifecycles.svg)
102
+
103
+ ---
104
+
105
+ > Generated by [tbls](https://github.com/k1LoW/tbls)
@@ -0,0 +1,71 @@
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_lifecycles Pages: 1 -->
7
+ <svg width="425pt" height="653pt"
8
+ viewBox="0.00 0.00 424.74 652.89" 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 648.89)">
10
+ <title>methodology_lifecycles</title>
11
+ <polygon fill="white" stroke="none" points="-4,4 -4,-648.89 420.74,-648.89 420.74,4 -4,4"/>
12
+ <!-- methodology_lifecycles -->
13
+ <g id="node1" class="node">
14
+ <title>methodology_lifecycles</title>
15
+ <polygon fill="#efefef" stroke="none" points="73.82,-322.69 73.82,-368.69 330.03,-368.69 330.03,-322.69 73.82,-322.69"/>
16
+ <polygon fill="none" stroke="black" points="73.82,-322.69 73.82,-368.69 330.03,-368.69 330.03,-322.69 73.82,-322.69"/>
17
+ <text text-anchor="start" x="80.82" y="-346.49" font-family="Arial Bold" font-size="18.00">methodology_lifecycles</text>
18
+ <text text-anchor="start" x="253.77" y="-346.49" font-family="Arial" font-size="14.00">    </text>
19
+ <text text-anchor="start" x="284.89" y="-346.49" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
20
+ <text text-anchor="start" x="112.46" y="-332.09" font-family="Arial" font-size="14.00" fill="#333333">방법론 생명주기 모델을 관리한다.</text>
21
+ <polygon fill="none" stroke="black" points="73.82,-291.89 73.82,-322.69 330.03,-322.69 330.03,-291.89 73.82,-291.89"/>
22
+ <text text-anchor="start" x="80.82" y="-304.09" font-family="Arial" font-size="14.00">lifecycle_id </text>
23
+ <text text-anchor="start" x="153.19" y="-304.09" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
24
+ <polygon fill="none" stroke="black" points="73.82,-261.09 73.82,-291.89 330.03,-291.89 330.03,-261.09 73.82,-261.09"/>
25
+ <text text-anchor="start" x="80.82" y="-273.29" font-family="Arial" font-size="14.00">methodology_id </text>
26
+ <text text-anchor="start" x="183.56" 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="72.32,-259.59 72.32,-370.19 331.53,-370.19 331.53,-259.59 72.32,-259.59"/>
28
+ </g>
29
+ <!-- methodology_methodologies -->
30
+ <g id="node3" class="node">
31
+ <title>methodology_methodologies</title>
32
+ <polygon fill="#efefef" stroke="none" points="43.2,-89.69 43.2,-135.69 360.65,-135.69 360.65,-89.69 43.2,-89.69"/>
33
+ <polygon fill="none" stroke="black" points="43.2,-89.69 43.2,-135.69 360.65,-135.69 360.65,-89.69 43.2,-89.69"/>
34
+ <text text-anchor="start" x="62.31" y="-113.49" font-family="Arial Bold" font-size="18.00">methodology_methodologies</text>
35
+ <text text-anchor="start" x="272.29" y="-113.49" font-family="Arial" font-size="14.00">    </text>
36
+ <text text-anchor="start" x="303.4" y="-113.49" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
37
+ <text text-anchor="start" x="50.2" y="-99.09" font-family="Arial" font-size="14.00" fill="#333333">방법론 정의의 최상위 versioned definition을 관리한다.</text>
38
+ <polygon fill="none" stroke="black" points="43.2,-58.89 43.2,-89.69 360.65,-89.69 360.65,-58.89 43.2,-58.89"/>
39
+ <text text-anchor="start" x="50.2" y="-71.09" font-family="Arial" font-size="14.00">methodology_id </text>
40
+ <text text-anchor="start" x="152.94" y="-71.09" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
41
+ </g>
42
+ <!-- methodology_lifecycles&#45;&gt;methodology_methodologies -->
43
+ <g id="edge2" class="edge">
44
+ <title>methodology_lifecycles:methodology_id&#45;&gt;methodology_methodologies:methodology_id</title>
45
+ <path fill="none" stroke="black" d="M202.52,-250.1C212.76,-170.22 351.7,-256.06 403.85,-178.89 418.78,-156.79 422.66,-77.79 403.85,-58.89 340.55,4.73 201.92,31.86 201.92,-57.89"/>
46
+ <polygon fill="black" stroke="black" points="202.54,-249.77 197.45,-259.49 202.22,-255.1 201.96,-259.42 201.96,-259.42 201.96,-259.42 202.22,-255.1 206.44,-260.02 202.54,-249.77"/>
47
+ </g>
48
+ <!-- methodology_phases -->
49
+ <g id="node2" class="node">
50
+ <title>methodology_phases</title>
51
+ <polygon fill="#efefef" stroke="none" points="84.31,-555.69 84.31,-601.69 319.54,-601.69 319.54,-555.69 84.31,-555.69"/>
52
+ <polygon fill="none" stroke="black" points="84.31,-555.69 84.31,-601.69 319.54,-601.69 319.54,-555.69 84.31,-555.69"/>
53
+ <text text-anchor="start" x="91.31" y="-579.49" font-family="Arial Bold" font-size="18.00">methodology_phases</text>
54
+ <text text-anchor="start" x="243.29" y="-579.49" font-family="Arial" font-size="14.00">    </text>
55
+ <text text-anchor="start" x="274.4" y="-579.49" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
56
+ <text text-anchor="start" x="114.79" y="-565.09" font-family="Arial" font-size="14.00" fill="#333333">lifecycle 내 큰 구간을 관리한다.</text>
57
+ <polygon fill="none" stroke="black" points="84.31,-524.89 84.31,-555.69 319.54,-555.69 319.54,-524.89 84.31,-524.89"/>
58
+ <text text-anchor="start" x="91.31" y="-537.09" font-family="Arial" font-size="14.00">phase_id </text>
59
+ <text text-anchor="start" x="152.02" y="-537.09" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
60
+ <polygon fill="none" stroke="black" points="84.31,-494.09 84.31,-524.89 319.54,-524.89 319.54,-494.09 84.31,-494.09"/>
61
+ <text text-anchor="start" x="91.31" y="-506.29" font-family="Arial" font-size="14.00">lifecycle_id </text>
62
+ <text text-anchor="start" x="163.67" y="-506.29" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
63
+ </g>
64
+ <!-- methodology_phases&#45;&gt;methodology_lifecycles -->
65
+ <g id="edge1" class="edge">
66
+ <title>methodology_phases:lifecycle_id&#45;&gt;methodology_lifecycles:lifecycle_id</title>
67
+ <path fill="none" stroke="black" d="M202.81,-482.81C212.51,-431.32 298.98,-469.62 330.03,-414.89 353.62,-373.29 378.85,-307.29 331.03,-307.29"/>
68
+ <polygon fill="black" stroke="black" points="202.81,-482.79 197.47,-492.37 202.35,-488.11 201.98,-492.42 201.98,-492.42 201.98,-492.42 202.35,-488.11 206.44,-493.14 202.81,-482.79"/>
69
+ </g>
70
+ </g>
71
+ </svg>