@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,92 @@
1
+ # methodology_methodologies
2
+
3
+ ## Description
4
+
5
+ 방법론 정의의 최상위 versioned definition을 관리한다.
6
+
7
+ <details>
8
+ <summary><strong>Table Definition</strong></summary>
9
+
10
+ ```sql
11
+ CREATE TABLE methodology_methodologies (
12
+ -- 방법론 식별자
13
+ methodology_id CHAR(36) PRIMARY KEY
14
+ CHECK (length(methodology_id) = 36),
15
+
16
+ -- 방법론 코드
17
+ methodology_code VARCHAR(128) NOT NULL,
18
+
19
+ -- 방법론명
20
+ methodology_name VARCHAR(256) NOT NULL,
21
+
22
+ -- 방법론 정의 데이터 버전
23
+ methodology_version VARCHAR(64) NOT NULL,
24
+
25
+ -- 방법론 상태 코드
26
+ methodology_status_code VARCHAR(32) NOT NULL DEFAULT 'draft'
27
+ CHECK (methodology_status_code IN ('draft', 'active', 'deprecated', 'archived')),
28
+
29
+ -- 방법론 설명
30
+ description TEXT,
31
+
32
+ -- 활성 여부. 1은 활성, 0은 비활성
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
+ UNIQUE (methodology_code, methodology_version)
47
+ )
48
+ ```
49
+
50
+ </details>
51
+
52
+ ## Columns
53
+
54
+ | Name | Type | Default | Nullable | Children |
55
+ | ----------------------- | ------------ | ----------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
56
+ | methodology_id | CHAR(36) | | true | [methodology_common_blueprint_policies](methodology_common_blueprint_policies.md) [methodology_lifecycles](methodology_lifecycles.md) [methodology_processes](methodology_processes.md) |
57
+ | methodology_code | VARCHAR(128) | | false | |
58
+ | methodology_name | VARCHAR(256) | | false | |
59
+ | methodology_version | VARCHAR(64) | | false | |
60
+ | methodology_status_code | VARCHAR(32) | 'draft' | false | |
61
+ | description | TEXT | | true | |
62
+ | is_active | INTEGER | 1 | false | |
63
+ | created_at | DATETIME | CURRENT_TIMESTAMP | false | |
64
+ | updated_at | DATETIME | CURRENT_TIMESTAMP | false | |
65
+ | metadata_json | JSON | | true | |
66
+
67
+ ## Constraints
68
+
69
+ | Name | Type | Definition |
70
+ | -------------------------------------------- | ----------- | -------------------------------------------------------------------------------- |
71
+ | methodology_id | PRIMARY KEY | PRIMARY KEY (methodology_id) |
72
+ | sqlite_autoindex_methodology_methodologies_2 | UNIQUE | UNIQUE (methodology_code, methodology_version) |
73
+ | sqlite_autoindex_methodology_methodologies_1 | PRIMARY KEY | PRIMARY KEY (methodology_id) |
74
+ | - | CHECK | CHECK (length(methodology_id) = 36) |
75
+ | - | CHECK | CHECK (methodology_status_code IN ('draft', 'active', 'deprecated', 'archived')) |
76
+ | - | CHECK | CHECK (is_active IN (0, 1)) |
77
+ | - | CHECK | CHECK (metadata_json IS NULL OR json_valid(metadata_json)) |
78
+
79
+ ## Indexes
80
+
81
+ | Name | Definition |
82
+ | -------------------------------------------- | ---------------------------------------------- |
83
+ | sqlite_autoindex_methodology_methodologies_2 | UNIQUE (methodology_code, methodology_version) |
84
+ | sqlite_autoindex_methodology_methodologies_1 | PRIMARY KEY (methodology_id) |
85
+
86
+ ## Relations
87
+
88
+ ![er](methodology_methodologies.svg)
89
+
90
+ ---
91
+
92
+ > Generated by [tbls](https://github.com/k1LoW/tbls)
@@ -0,0 +1,92 @@
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_methodologies Pages: 1 -->
7
+ <svg width="1205pt" height="421pt"
8
+ viewBox="0.00 0.00 1205.12 420.76" 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 416.76)">
10
+ <title>methodology_methodologies</title>
11
+ <polygon fill="white" stroke="none" points="-4,4 -4,-416.76 1201.12,-416.76 1201.12,4 -4,4"/>
12
+ <!-- methodology_methodologies -->
13
+ <g id="node1" class="node">
14
+ <title>methodology_methodologies</title>
15
+ <polygon fill="#efefef" stroke="none" points="506.08,-90.56 506.08,-136.56 823.53,-136.56 823.53,-90.56 506.08,-90.56"/>
16
+ <polygon fill="none" stroke="black" points="506.08,-90.56 506.08,-136.56 823.53,-136.56 823.53,-90.56 506.08,-90.56"/>
17
+ <text text-anchor="start" x="525.19" y="-114.36" font-family="Arial Bold" font-size="18.00">methodology_methodologies</text>
18
+ <text text-anchor="start" x="735.17" y="-114.36" font-family="Arial" font-size="14.00">    </text>
19
+ <text text-anchor="start" x="766.28" y="-114.36" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
20
+ <text text-anchor="start" x="513.08" y="-99.96" font-family="Arial" font-size="14.00" fill="#333333">방법론 정의의 최상위 versioned definition을 관리한다.</text>
21
+ <polygon fill="none" stroke="black" points="506.08,-59.76 506.08,-90.56 823.53,-90.56 823.53,-59.76 506.08,-59.76"/>
22
+ <text text-anchor="start" x="513.08" y="-71.96" font-family="Arial" font-size="14.00">methodology_id </text>
23
+ <text text-anchor="start" x="615.82" y="-71.96" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
24
+ <polygon fill="none" stroke="black" stroke-width="3" points="504.58,-58.26 504.58,-138.06 825.03,-138.06 825.03,-58.26 504.58,-58.26"/>
25
+ </g>
26
+ <!-- methodology_common_blueprint_policies -->
27
+ <g id="node2" class="node">
28
+ <title>methodology_common_blueprint_policies</title>
29
+ <polygon fill="#efefef" stroke="none" points="43.2,-328.76 43.2,-364.36 432.41,-364.36 432.41,-328.76 43.2,-328.76"/>
30
+ <polygon fill="none" stroke="black" points="43.2,-328.76 43.2,-364.36 432.41,-364.36 432.41,-328.76 43.2,-328.76"/>
31
+ <text text-anchor="start" x="50.2" y="-342.16" font-family="Arial Bold" font-size="18.00">methodology_common_blueprint_policies</text>
32
+ <text text-anchor="start" x="356.16" y="-342.16" font-family="Arial" font-size="14.00">    </text>
33
+ <text text-anchor="start" x="387.27" y="-342.16" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
34
+ <polygon fill="none" stroke="black" points="43.2,-297.96 43.2,-328.76 432.41,-328.76 432.41,-297.96 43.2,-297.96"/>
35
+ <text text-anchor="start" x="50.2" y="-310.16" font-family="Arial" font-size="14.00">common_blueprint_policy_id </text>
36
+ <text text-anchor="start" x="231.52" y="-310.16" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
37
+ <polygon fill="none" stroke="black" points="43.2,-267.16 43.2,-297.96 432.41,-297.96 432.41,-267.16 43.2,-267.16"/>
38
+ <text text-anchor="start" x="50.2" y="-279.36" font-family="Arial" font-size="14.00">methodology_id </text>
39
+ <text text-anchor="start" x="152.94" y="-279.36" 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="edge1" class="edge">
43
+ <title>methodology_common_blueprint_policies:methodology_id&#45;&gt;methodology_methodologies:methodology_id</title>
44
+ <path fill="none" stroke="black" d="M443.38,-281.72C522.08,-267.45 411.17,-75.16 505.08,-75.16"/>
45
+ <polygon fill="black" stroke="black" points="443.71,-281.69 433.37,-278.04 438.39,-282.14 434.08,-282.5 434.08,-282.5 434.08,-282.5 438.39,-282.14 434.12,-287.01 443.71,-281.69"/>
46
+ </g>
47
+ <!-- methodology_lifecycles -->
48
+ <g id="node3" class="node">
49
+ <title>methodology_lifecycles</title>
50
+ <polygon fill="#efefef" stroke="none" points="536.7,-323.56 536.7,-369.56 792.91,-369.56 792.91,-323.56 536.7,-323.56"/>
51
+ <polygon fill="none" stroke="black" points="536.7,-323.56 536.7,-369.56 792.91,-369.56 792.91,-323.56 536.7,-323.56"/>
52
+ <text text-anchor="start" x="543.7" y="-347.36" font-family="Arial Bold" font-size="18.00">methodology_lifecycles</text>
53
+ <text text-anchor="start" x="716.65" y="-347.36" font-family="Arial" font-size="14.00">    </text>
54
+ <text text-anchor="start" x="747.77" y="-347.36" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
55
+ <text text-anchor="start" x="575.34" y="-332.96" font-family="Arial" font-size="14.00" fill="#333333">방법론 생명주기 모델을 관리한다.</text>
56
+ <polygon fill="none" stroke="black" points="536.7,-292.76 536.7,-323.56 792.91,-323.56 792.91,-292.76 536.7,-292.76"/>
57
+ <text text-anchor="start" x="543.7" y="-304.96" font-family="Arial" font-size="14.00">lifecycle_id </text>
58
+ <text text-anchor="start" x="616.07" y="-304.96" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
59
+ <polygon fill="none" stroke="black" points="536.7,-261.96 536.7,-292.76 792.91,-292.76 792.91,-261.96 536.7,-261.96"/>
60
+ <text text-anchor="start" x="543.7" y="-274.16" font-family="Arial" font-size="14.00">methodology_id </text>
61
+ <text text-anchor="start" x="646.44" y="-274.16" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
62
+ </g>
63
+ <!-- methodology_lifecycles&#45;&gt;methodology_methodologies -->
64
+ <g id="edge2" class="edge">
65
+ <title>methodology_lifecycles:methodology_id&#45;&gt;methodology_methodologies:methodology_id</title>
66
+ <path fill="none" stroke="black" d="M665.41,-250.9C675.78,-170.61 816.49,-260.06 869.73,-182.76 900.74,-137.73 908.29,-98.5 869.73,-59.76 805.48,4.8 664.81,32.32 664.81,-58.76"/>
67
+ <polygon fill="black" stroke="black" points="665.43,-250.64 660.33,-260.35 665.11,-255.96 664.85,-260.29 664.85,-260.29 664.85,-260.29 665.11,-255.96 669.32,-260.89 665.43,-250.64"/>
68
+ </g>
69
+ <!-- methodology_processes -->
70
+ <g id="node4" class="node">
71
+ <title>methodology_processes</title>
72
+ <polygon fill="#efefef" stroke="none" points="897.69,-323.56 897.69,-369.56 1153.92,-369.56 1153.92,-323.56 897.69,-323.56"/>
73
+ <polygon fill="none" stroke="black" points="897.69,-323.56 897.69,-369.56 1153.92,-369.56 1153.92,-323.56 897.69,-323.56"/>
74
+ <text text-anchor="start" x="904.69" y="-347.36" font-family="Arial Bold" font-size="18.00">methodology_processes</text>
75
+ <text text-anchor="start" x="1077.66" y="-347.36" font-family="Arial" font-size="14.00">    </text>
76
+ <text text-anchor="start" x="1108.78" y="-347.36" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
77
+ <text text-anchor="start" x="928.56" y="-332.96" font-family="Arial" font-size="14.00" fill="#333333">재사용 가능한 수행 절차를 관리한다.</text>
78
+ <polygon fill="none" stroke="black" points="897.69,-292.76 897.69,-323.56 1153.92,-323.56 1153.92,-292.76 897.69,-292.76"/>
79
+ <text text-anchor="start" x="904.69" y="-304.96" font-family="Arial" font-size="14.00">process_id </text>
80
+ <text text-anchor="start" x="976.29" y="-304.96" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
81
+ <polygon fill="none" stroke="black" points="897.69,-261.96 897.69,-292.76 1153.92,-292.76 1153.92,-261.96 897.69,-261.96"/>
82
+ <text text-anchor="start" x="904.69" y="-274.16" font-family="Arial" font-size="14.00">methodology_id </text>
83
+ <text text-anchor="start" x="1007.43" y="-274.16" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
84
+ </g>
85
+ <!-- methodology_processes&#45;&gt;methodology_methodologies -->
86
+ <g id="edge3" class="edge">
87
+ <title>methodology_processes:methodology_id&#45;&gt;methodology_methodologies:methodology_id</title>
88
+ <path fill="none" stroke="black" d="M886.47,-276.45C810.22,-261.87 916.22,-75.16 824.53,-75.16"/>
89
+ <polygon fill="black" stroke="black" points="886.4,-276.45 895.97,-281.81 891.71,-276.92 896.03,-277.3 896.03,-277.3 896.03,-277.3 891.71,-276.92 896.76,-272.84 886.4,-276.45"/>
90
+ </g>
91
+ </g>
92
+ </svg>
@@ -0,0 +1,106 @@
1
+ # methodology_phase_processes
2
+
3
+ ## Description
4
+
5
+ phase에서 어떤 process를 어떤 순서로 사용할지 관리한다.
6
+
7
+ <details>
8
+ <summary><strong>Table Definition</strong></summary>
9
+
10
+ ```sql
11
+ CREATE TABLE methodology_phase_processes (
12
+ -- phase process 배치 식별자
13
+ phase_process_id CHAR(36) PRIMARY KEY
14
+ CHECK (length(phase_process_id) = 36),
15
+
16
+ -- 대상 phase 식별자
17
+ phase_id CHAR(36) NOT NULL
18
+ CHECK (length(phase_id) = 36),
19
+
20
+ -- 배치할 process 식별자
21
+ process_id CHAR(36) NOT NULL
22
+ CHECK (length(process_id) = 36),
23
+
24
+ -- phase 내 process 순서
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 (phase_id)
46
+ REFERENCES methodology_phases (phase_id)
47
+ ON DELETE CASCADE,
48
+
49
+ FOREIGN KEY (process_id)
50
+ REFERENCES methodology_processes (process_id)
51
+ ON DELETE CASCADE,
52
+
53
+ UNIQUE (phase_id, process_id),
54
+ UNIQUE (phase_id, sort_order)
55
+ )
56
+ ```
57
+
58
+ </details>
59
+
60
+ ## Columns
61
+
62
+ | Name | Type | Default | Nullable | Parents |
63
+ | ----------------- | -------- | ----------------- | -------- | ------------------------------------------------- |
64
+ | phase_process_id | CHAR(36) | | true | |
65
+ | phase_id | CHAR(36) | | false | [methodology_phases](methodology_phases.md) |
66
+ | process_id | CHAR(36) | | false | [methodology_processes](methodology_processes.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
+ | phase_process_id | PRIMARY KEY | PRIMARY KEY (phase_process_id) |
79
+ | - (Foreign key ID: 0) | FOREIGN KEY | FOREIGN KEY (process_id) REFERENCES methodology_processes (process_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE |
80
+ | - (Foreign key ID: 1) | FOREIGN KEY | FOREIGN KEY (phase_id) REFERENCES methodology_phases (phase_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE |
81
+ | sqlite_autoindex_methodology_phase_processes_3 | UNIQUE | UNIQUE (phase_id, sort_order) |
82
+ | sqlite_autoindex_methodology_phase_processes_2 | UNIQUE | UNIQUE (phase_id, process_id) |
83
+ | sqlite_autoindex_methodology_phase_processes_1 | PRIMARY KEY | PRIMARY KEY (phase_process_id) |
84
+ | - | CHECK | CHECK (length(phase_process_id) = 36) |
85
+ | - | CHECK | CHECK (length(phase_id) = 36) |
86
+ | - | CHECK | CHECK (length(process_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_phase_processes_process | CREATE INDEX idx_methodology_phase_processes_process<br /> ON methodology_phase_processes (process_id) |
96
+ | sqlite_autoindex_methodology_phase_processes_3 | UNIQUE (phase_id, sort_order) |
97
+ | sqlite_autoindex_methodology_phase_processes_2 | UNIQUE (phase_id, process_id) |
98
+ | sqlite_autoindex_methodology_phase_processes_1 | PRIMARY KEY (phase_process_id) |
99
+
100
+ ## Relations
101
+
102
+ ![er](methodology_phase_processes.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_phase_processes Pages: 1 -->
7
+ <svg width="690pt" height="469pt"
8
+ viewBox="0.00 0.00 690.13 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_phase_processes</title>
11
+ <polygon fill="white" stroke="none" points="-4,4 -4,-464.8 686.13,-464.8 686.13,4 -4,4"/>
12
+ <!-- methodology_phase_processes -->
13
+ <g id="node1" class="node">
14
+ <title>methodology_phase_processes</title>
15
+ <polygon fill="#efefef" stroke="none" points="166.6,-368.6 166.6,-414.6 505.03,-414.6 505.03,-368.6 166.6,-368.6"/>
16
+ <polygon fill="none" stroke="black" points="166.6,-368.6 166.6,-414.6 505.03,-414.6 505.03,-368.6 166.6,-368.6"/>
17
+ <text text-anchor="start" x="189.71" y="-392.4" font-family="Arial Bold" font-size="18.00">methodology_phase_processes</text>
18
+ <text text-anchor="start" x="412.67" y="-392.4" font-family="Arial" font-size="14.00">    </text>
19
+ <text text-anchor="start" x="443.78" y="-392.4" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
20
+ <text text-anchor="start" x="173.6" y="-378" font-family="Arial" font-size="14.00" fill="#333333">phase에서 어떤 process를 어떤 순서로 사용할지 관리한다.</text>
21
+ <polygon fill="none" stroke="black" points="166.6,-337.8 166.6,-368.6 505.03,-368.6 505.03,-337.8 166.6,-337.8"/>
22
+ <text text-anchor="start" x="173.6" y="-350" font-family="Arial" font-size="14.00">phase_process_id </text>
23
+ <text text-anchor="start" x="291.12" y="-350" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
24
+ <polygon fill="none" stroke="black" points="166.6,-307 166.6,-337.8 505.03,-337.8 505.03,-307 166.6,-307"/>
25
+ <text text-anchor="start" x="173.6" y="-319.2" font-family="Arial" font-size="14.00">phase_id </text>
26
+ <text text-anchor="start" x="234.32" y="-319.2" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
27
+ <polygon fill="none" stroke="black" points="166.6,-276.2 166.6,-307 505.03,-307 505.03,-276.2 166.6,-276.2"/>
28
+ <text text-anchor="start" x="173.6" y="-288.4" font-family="Arial" font-size="14.00">process_id </text>
29
+ <text text-anchor="start" x="245.19" 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="165.1,-274.7 165.1,-416.1 506.53,-416.1 506.53,-274.7 165.1,-274.7"/>
31
+ </g>
32
+ <!-- methodology_phases -->
33
+ <g id="node2" class="node">
34
+ <title>methodology_phases</title>
35
+ <polygon fill="#efefef" stroke="none" points="43.2,-104.8 43.2,-150.8 278.44,-150.8 278.44,-104.8 43.2,-104.8"/>
36
+ <polygon fill="none" stroke="black" points="43.2,-104.8 43.2,-150.8 278.44,-150.8 278.44,-104.8 43.2,-104.8"/>
37
+ <text text-anchor="start" x="50.2" y="-128.6" font-family="Arial Bold" font-size="18.00">methodology_phases</text>
38
+ <text text-anchor="start" x="202.18" y="-128.6" font-family="Arial" font-size="14.00">    </text>
39
+ <text text-anchor="start" x="233.3" y="-128.6" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
40
+ <text text-anchor="start" x="73.69" y="-114.2" font-family="Arial" font-size="14.00" fill="#333333">lifecycle 내 큰 구간을 관리한다.</text>
41
+ <polygon fill="none" stroke="black" points="43.2,-74 43.2,-104.8 278.44,-104.8 278.44,-74 43.2,-74"/>
42
+ <text text-anchor="start" x="50.2" y="-86.2" font-family="Arial" font-size="14.00">phase_id </text>
43
+ <text text-anchor="start" x="110.92" 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 278.44,-74 278.44,-43.2 43.2,-43.2"/>
45
+ <text text-anchor="start" x="50.2" y="-55.4" font-family="Arial" font-size="14.00">lifecycle_id </text>
46
+ <text text-anchor="start" x="122.57" y="-55.4" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
47
+ </g>
48
+ <!-- methodology_phase_processes&#45;&gt;methodology_phases -->
49
+ <g id="edge1" class="edge">
50
+ <title>methodology_phase_processes:phase_id&#45;&gt;methodology_phases:phase_id</title>
51
+ <path fill="none" stroke="black" d="M155.56,-320.91C127.91,-311.5 144.52,-259.96 166.6,-230 197.58,-187.97 247.48,-236.05 278.44,-194 305.99,-156.56 325.93,-89.4 279.44,-89.4"/>
52
+ <polygon fill="black" stroke="black" points="155.38,-320.88 164.61,-326.8 160.66,-321.66 164.94,-322.3 164.94,-322.3 164.94,-322.3 160.66,-321.66 165.93,-317.9 155.38,-320.88"/>
53
+ </g>
54
+ <!-- methodology_processes -->
55
+ <g id="node3" class="node">
56
+ <title>methodology_processes</title>
57
+ <polygon fill="#efefef" stroke="none" points="382.71,-104.8 382.71,-150.8 638.93,-150.8 638.93,-104.8 382.71,-104.8"/>
58
+ <polygon fill="none" stroke="black" points="382.71,-104.8 382.71,-150.8 638.93,-150.8 638.93,-104.8 382.71,-104.8"/>
59
+ <text text-anchor="start" x="389.71" y="-128.6" font-family="Arial Bold" font-size="18.00">methodology_processes</text>
60
+ <text text-anchor="start" x="562.67" y="-128.6" font-family="Arial" font-size="14.00">    </text>
61
+ <text text-anchor="start" x="593.79" y="-128.6" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
62
+ <text text-anchor="start" x="413.58" y="-114.2" font-family="Arial" font-size="14.00" fill="#333333">재사용 가능한 수행 절차를 관리한다.</text>
63
+ <polygon fill="none" stroke="black" points="382.71,-74 382.71,-104.8 638.93,-104.8 638.93,-74 382.71,-74"/>
64
+ <text text-anchor="start" x="389.71" y="-86.2" font-family="Arial" font-size="14.00">process_id </text>
65
+ <text text-anchor="start" x="461.3" y="-86.2" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
66
+ <polygon fill="none" stroke="black" points="382.71,-43.2 382.71,-74 638.93,-74 638.93,-43.2 382.71,-43.2"/>
67
+ <text text-anchor="start" x="389.71" y="-55.4" font-family="Arial" font-size="14.00">methodology_id </text>
68
+ <text text-anchor="start" x="492.44" y="-55.4" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
69
+ </g>
70
+ <!-- methodology_phase_processes&#45;&gt;methodology_processes -->
71
+ <g id="edge2" class="edge">
72
+ <title>methodology_phase_processes:process_id&#45;&gt;methodology_processes:process_id</title>
73
+ <path fill="none" stroke="black" d="M515.75,-289.16C529.81,-280.18 519.15,-248.56 505.03,-230 470.72,-184.9 416.87,-239.22 382.71,-194 354.68,-156.91 335.21,-89.4 381.71,-89.4"/>
74
+ <polygon fill="black" stroke="black" points="516.06,-289.08 505.26,-287.15 510.88,-290.38 506.68,-291.44 506.68,-291.44 506.68,-291.44 510.88,-290.38 507.46,-295.88 516.06,-289.08"/>
75
+ </g>
76
+ </g>
77
+ </svg>
@@ -0,0 +1,107 @@
1
+ # methodology_phases
2
+
3
+ ## Description
4
+
5
+ lifecycle 내 큰 구간을 관리한다.
6
+
7
+ <details>
8
+ <summary><strong>Table Definition</strong></summary>
9
+
10
+ ```sql
11
+ CREATE TABLE methodology_phases (
12
+ -- phase 식별자
13
+ phase_id CHAR(36) PRIMARY KEY
14
+ CHECK (length(phase_id) = 36),
15
+
16
+ -- 소속 lifecycle 식별자
17
+ lifecycle_id CHAR(36) NOT NULL
18
+ CHECK (length(lifecycle_id) = 36),
19
+
20
+ -- phase 코드
21
+ phase_code VARCHAR(128) NOT NULL,
22
+
23
+ -- phase 이름
24
+ phase_name VARCHAR(256) NOT NULL,
25
+
26
+ -- phase 목적
27
+ phase_purpose TEXT,
28
+
29
+ -- 표시 정렬 순서
30
+ sort_order INTEGER NOT NULL DEFAULT 0,
31
+
32
+ -- 필수 여부
33
+ is_required INTEGER NOT NULL DEFAULT 1
34
+ CHECK (is_required IN (0, 1)),
35
+
36
+ -- 활성 여부
37
+ is_active INTEGER NOT NULL DEFAULT 1
38
+ CHECK (is_active IN (0, 1)),
39
+
40
+ -- 생성 시각
41
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
42
+
43
+ -- 수정 시각
44
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
45
+
46
+ -- 확장 메타데이터
47
+ metadata_json JSON
48
+ CHECK (metadata_json IS NULL OR json_valid(metadata_json)),
49
+
50
+ FOREIGN KEY (lifecycle_id)
51
+ REFERENCES methodology_lifecycles (lifecycle_id)
52
+ ON DELETE CASCADE,
53
+
54
+ UNIQUE (lifecycle_id, phase_code),
55
+ UNIQUE (lifecycle_id, sort_order)
56
+ )
57
+ ```
58
+
59
+ </details>
60
+
61
+ ## Columns
62
+
63
+ | Name | Type | Default | Nullable | Children | Parents |
64
+ | ------------- | ------------ | ----------------- | -------- | ------------------------------------------------------------- | --------------------------------------------------- |
65
+ | phase_id | CHAR(36) | | true | [methodology_phase_processes](methodology_phase_processes.md) | |
66
+ | lifecycle_id | CHAR(36) | | false | | [methodology_lifecycles](methodology_lifecycles.md) |
67
+ | phase_code | VARCHAR(128) | | false | | |
68
+ | phase_name | VARCHAR(256) | | false | | |
69
+ | phase_purpose | TEXT | | true | | |
70
+ | sort_order | INTEGER | 0 | false | | |
71
+ | is_required | INTEGER | 1 | false | | |
72
+ | is_active | INTEGER | 1 | false | | |
73
+ | created_at | DATETIME | CURRENT_TIMESTAMP | false | | |
74
+ | updated_at | DATETIME | CURRENT_TIMESTAMP | false | | |
75
+ | metadata_json | JSON | | true | | |
76
+
77
+ ## Constraints
78
+
79
+ | Name | Type | Definition |
80
+ | ------------------------------------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------- |
81
+ | phase_id | PRIMARY KEY | PRIMARY KEY (phase_id) |
82
+ | - (Foreign key ID: 0) | FOREIGN KEY | FOREIGN KEY (lifecycle_id) REFERENCES methodology_lifecycles (lifecycle_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE |
83
+ | sqlite_autoindex_methodology_phases_3 | UNIQUE | UNIQUE (lifecycle_id, sort_order) |
84
+ | sqlite_autoindex_methodology_phases_2 | UNIQUE | UNIQUE (lifecycle_id, phase_code) |
85
+ | sqlite_autoindex_methodology_phases_1 | PRIMARY KEY | PRIMARY KEY (phase_id) |
86
+ | - | CHECK | CHECK (length(phase_id) = 36) |
87
+ | - | CHECK | CHECK (length(lifecycle_id) = 36) |
88
+ | - | CHECK | CHECK (is_required IN (0, 1)) |
89
+ | - | CHECK | CHECK (is_active IN (0, 1)) |
90
+ | - | CHECK | CHECK (metadata_json IS NULL OR json_valid(metadata_json)) |
91
+
92
+ ## Indexes
93
+
94
+ | Name | Definition |
95
+ | -------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
96
+ | idx_methodology_phases_lifecycle_order | CREATE INDEX idx_methodology_phases_lifecycle_order<br /> ON methodology_phases (lifecycle_id, sort_order) |
97
+ | sqlite_autoindex_methodology_phases_3 | UNIQUE (lifecycle_id, sort_order) |
98
+ | sqlite_autoindex_methodology_phases_2 | UNIQUE (lifecycle_id, phase_code) |
99
+ | sqlite_autoindex_methodology_phases_1 | PRIMARY KEY (phase_id) |
100
+
101
+ ## Relations
102
+
103
+ ![er](methodology_phases.svg)
104
+
105
+ ---
106
+
107
+ > 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_phases Pages: 1 -->
7
+ <svg width="449pt" height="699pt"
8
+ viewBox="0.00 0.00 449.20 698.80" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
9
+ <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 694.8)">
10
+ <title>methodology_phases</title>
11
+ <polygon fill="white" stroke="none" points="-4,4 -4,-694.8 445.2,-694.8 445.2,4 -4,4"/>
12
+ <!-- methodology_phases -->
13
+ <g id="node1" class="node">
14
+ <title>methodology_phases</title>
15
+ <polygon fill="#efefef" stroke="none" points="94.8,-337.8 94.8,-383.8 330.03,-383.8 330.03,-337.8 94.8,-337.8"/>
16
+ <polygon fill="none" stroke="black" points="94.8,-337.8 94.8,-383.8 330.03,-383.8 330.03,-337.8 94.8,-337.8"/>
17
+ <text text-anchor="start" x="101.8" y="-361.6" font-family="Arial Bold" font-size="18.00">methodology_phases</text>
18
+ <text text-anchor="start" x="253.78" y="-361.6" font-family="Arial" font-size="14.00">    </text>
19
+ <text text-anchor="start" x="284.9" y="-361.6" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
20
+ <text text-anchor="start" x="125.29" y="-347.2" font-family="Arial" font-size="14.00" fill="#333333">lifecycle 내 큰 구간을 관리한다.</text>
21
+ <polygon fill="none" stroke="black" points="94.8,-307 94.8,-337.8 330.03,-337.8 330.03,-307 94.8,-307"/>
22
+ <text text-anchor="start" x="101.8" y="-319.2" font-family="Arial" font-size="14.00">phase_id </text>
23
+ <text text-anchor="start" x="162.52" y="-319.2" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
24
+ <polygon fill="none" stroke="black" points="94.8,-276.2 94.8,-307 330.03,-307 330.03,-276.2 94.8,-276.2"/>
25
+ <text text-anchor="start" x="101.8" y="-288.4" font-family="Arial" font-size="14.00">lifecycle_id </text>
26
+ <text text-anchor="start" x="174.16" 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="93.3,-274.7 93.3,-385.3 331.53,-385.3 331.53,-274.7 93.3,-274.7"/>
28
+ </g>
29
+ <!-- methodology_lifecycles -->
30
+ <g id="node3" class="node">
31
+ <title>methodology_lifecycles</title>
32
+ <polygon fill="#efefef" stroke="none" points="84.31,-104.8 84.31,-150.8 340.52,-150.8 340.52,-104.8 84.31,-104.8"/>
33
+ <polygon fill="none" stroke="black" points="84.31,-104.8 84.31,-150.8 340.52,-150.8 340.52,-104.8 84.31,-104.8"/>
34
+ <text text-anchor="start" x="91.31" y="-128.6" font-family="Arial Bold" font-size="18.00">methodology_lifecycles</text>
35
+ <text text-anchor="start" x="264.26" y="-128.6" font-family="Arial" font-size="14.00">    </text>
36
+ <text text-anchor="start" x="295.38" y="-128.6" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
37
+ <text text-anchor="start" x="122.95" y="-114.2" font-family="Arial" font-size="14.00" fill="#333333">방법론 생명주기 모델을 관리한다.</text>
38
+ <polygon fill="none" stroke="black" points="84.31,-74 84.31,-104.8 340.52,-104.8 340.52,-74 84.31,-74"/>
39
+ <text text-anchor="start" x="91.31" y="-86.2" font-family="Arial" font-size="14.00">lifecycle_id </text>
40
+ <text text-anchor="start" x="163.68" y="-86.2" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
41
+ <polygon fill="none" stroke="black" points="84.31,-43.2 84.31,-74 340.52,-74 340.52,-43.2 84.31,-43.2"/>
42
+ <text text-anchor="start" x="91.31" y="-55.4" font-family="Arial" font-size="14.00">methodology_id </text>
43
+ <text text-anchor="start" x="194.05" y="-55.4" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
44
+ </g>
45
+ <!-- methodology_phases&#45;&gt;methodology_lifecycles -->
46
+ <g id="edge2" class="edge">
47
+ <title>methodology_phases:lifecycle_id&#45;&gt;methodology_lifecycles:lifecycle_id</title>
48
+ <path fill="none" stroke="black" d="M213.25,-265.11C222.66,-212.41 309.54,-249.68 340.52,-194 363.12,-153.37 388.01,-89.4 341.52,-89.4"/>
49
+ <polygon fill="black" stroke="black" points="213.26,-264.9 207.96,-274.5 212.83,-270.22 212.47,-274.53 212.47,-274.53 212.47,-274.53 212.83,-270.22 216.93,-275.24 213.26,-264.9"/>
50
+ </g>
51
+ <!-- methodology_phase_processes -->
52
+ <g id="node2" class="node">
53
+ <title>methodology_phase_processes</title>
54
+ <polygon fill="#efefef" stroke="none" points="43.2,-601.6 43.2,-647.6 381.63,-647.6 381.63,-601.6 43.2,-601.6"/>
55
+ <polygon fill="none" stroke="black" points="43.2,-601.6 43.2,-647.6 381.63,-647.6 381.63,-601.6 43.2,-601.6"/>
56
+ <text text-anchor="start" x="66.31" y="-625.4" font-family="Arial Bold" font-size="18.00">methodology_phase_processes</text>
57
+ <text text-anchor="start" x="289.27" y="-625.4" font-family="Arial" font-size="14.00">    </text>
58
+ <text text-anchor="start" x="320.38" y="-625.4" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
59
+ <text text-anchor="start" x="50.2" y="-611" font-family="Arial" font-size="14.00" fill="#333333">phase에서 어떤 process를 어떤 순서로 사용할지 관리한다.</text>
60
+ <polygon fill="none" stroke="black" points="43.2,-570.8 43.2,-601.6 381.63,-601.6 381.63,-570.8 43.2,-570.8"/>
61
+ <text text-anchor="start" x="50.2" y="-583" font-family="Arial" font-size="14.00">phase_process_id </text>
62
+ <text text-anchor="start" x="167.72" y="-583" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
63
+ <polygon fill="none" stroke="black" points="43.2,-540 43.2,-570.8 381.63,-570.8 381.63,-540 43.2,-540"/>
64
+ <text text-anchor="start" x="50.2" y="-552.2" font-family="Arial" font-size="14.00">phase_id </text>
65
+ <text text-anchor="start" x="110.92" y="-552.2" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
66
+ <polygon fill="none" stroke="black" points="43.2,-509.2 43.2,-540 381.63,-540 381.63,-509.2 43.2,-509.2"/>
67
+ <text text-anchor="start" x="50.2" y="-521.4" font-family="Arial" font-size="14.00">process_id </text>
68
+ <text text-anchor="start" x="121.79" y="-521.4" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
69
+ </g>
70
+ <!-- methodology_phase_processes&#45;&gt;methodology_phases -->
71
+ <g id="edge1" class="edge">
72
+ <title>methodology_phase_processes:phase_id&#45;&gt;methodology_phases:phase_id</title>
73
+ <path fill="none" stroke="black" d="M392.96,-554.6C485.11,-539.74 433.47,-322.4 331.03,-322.4"/>
74
+ <polygon fill="black" stroke="black" points="392.94,-554.6 382.62,-550.89 387.62,-555.01 383.3,-555.35 383.3,-555.35 383.3,-555.35 387.62,-555.01 383.31,-559.86 392.94,-554.6"/>
75
+ </g>
76
+ </g>
77
+ </svg>