@soddong/agentic-domain-artifact 0.7.0

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 (63) hide show
  1. package/.tbls.yml +46 -0
  2. package/CHANGELOG.md +53 -0
  3. package/README.md +254 -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 +7 -0
  9. package/dist/fixtures.d.ts.map +1 -0
  10. package/dist/fixtures.js +88 -0
  11. package/dist/fixtures.js.map +1 -0
  12. package/dist/index.d.ts +26 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js +18 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/repositories.d.ts +29 -0
  17. package/dist/repositories.d.ts.map +1 -0
  18. package/dist/repositories.js +305 -0
  19. package/dist/repositories.js.map +1 -0
  20. package/dist/seed-apply.d.ts +22 -0
  21. package/dist/seed-apply.d.ts.map +1 -0
  22. package/dist/seed-apply.js +150 -0
  23. package/dist/seed-apply.js.map +1 -0
  24. package/dist/service.d.ts +32 -0
  25. package/dist/service.d.ts.map +1 -0
  26. package/dist/service.js +282 -0
  27. package/dist/service.js.map +1 -0
  28. package/dist/types.d.ts +264 -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/docs/build.md +19 -0
  33. package/docs/configuration.md +27 -0
  34. package/docs/delivery.md +22 -0
  35. package/docs/operations.md +27 -0
  36. package/docs/publishing.md +29 -0
  37. package/docs/schema/generated/README.md +28 -0
  38. package/docs/schema/generated/artifact_code_groups.md +57 -0
  39. package/docs/schema/generated/artifact_code_groups.svg +49 -0
  40. package/docs/schema/generated/artifact_codes.md +71 -0
  41. package/docs/schema/generated/artifact_codes.svg +49 -0
  42. package/docs/schema/generated/artifact_component_instances.md +79 -0
  43. package/docs/schema/generated/artifact_component_instances.svg +177 -0
  44. package/docs/schema/generated/artifact_instances.md +79 -0
  45. package/docs/schema/generated/artifact_instances.svg +177 -0
  46. package/docs/schema/generated/artifact_resource_links.md +89 -0
  47. package/docs/schema/generated/artifact_resource_links.svg +74 -0
  48. package/docs/schema/generated/artifact_review_decision_refs.md +89 -0
  49. package/docs/schema/generated/artifact_review_decision_refs.svg +102 -0
  50. package/docs/schema/generated/artifact_schema_migrations.md +47 -0
  51. package/docs/schema/generated/artifact_schema_migrations.svg +27 -0
  52. package/docs/schema/generated/artifact_status_events.md +96 -0
  53. package/docs/schema/generated/artifact_status_events.svg +102 -0
  54. package/docs/schema/generated/artifact_trace_links.md +93 -0
  55. package/docs/schema/generated/artifact_trace_links.svg +74 -0
  56. package/docs/schema/generated/artifact_validation_result_refs.md +82 -0
  57. package/docs/schema/generated/artifact_validation_result_refs.svg +74 -0
  58. package/docs/schema/generated/schema.json +1799 -0
  59. package/docs/schema/generated/schema.mmd +132 -0
  60. package/docs/schema/generated/schema.svg +260 -0
  61. package/docs/usage.md +190 -0
  62. package/package.json +28 -0
  63. package/src/database/migrations/0001_artifact_base.sql +345 -0
@@ -0,0 +1,102 @@
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: artifact_review_decision_refs Pages: 1 -->
7
+ <svg width="782pt" height="760pt"
8
+ viewBox="0.00 0.00 782.17 760.40" 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 756.4)">
10
+ <title>artifact_review_decision_refs</title>
11
+ <polygon fill="white" stroke="none" points="-4,4 -4,-756.4 778.17,-756.4 778.17,4 -4,4"/>
12
+ <!-- artifact_review_decision_refs -->
13
+ <g id="node1" class="node">
14
+ <title>artifact_review_decision_refs</title>
15
+ <polygon fill="#efefef" stroke="none" points="136.95,-368.6 136.95,-414.6 556.31,-414.6 556.31,-368.6 136.95,-368.6"/>
16
+ <polygon fill="none" stroke="black" points="136.95,-368.6 136.95,-414.6 556.31,-414.6 556.31,-368.6 136.95,-368.6"/>
17
+ <text text-anchor="start" x="205.05" y="-392.4" font-family="Arial Bold" font-size="18.00">artifact_review_decision_refs</text>
18
+ <text text-anchor="start" x="418.95" y="-392.4" font-family="Arial" font-size="14.00">    </text>
19
+ <text text-anchor="start" x="450.07" y="-392.4" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
20
+ <text text-anchor="start" x="143.95" y="-378" font-family="Arial" font-size="14.00" fill="#333333">산출물 instance 또는 component에 대한 검토 결정 외부 참조를 관리한다.</text>
21
+ <polygon fill="none" stroke="black" points="136.95,-337.8 136.95,-368.6 556.31,-368.6 556.31,-337.8 136.95,-337.8"/>
22
+ <text text-anchor="start" x="143.95" y="-350" font-family="Arial" font-size="14.00">artifact_review_decision_ref_id </text>
23
+ <text text-anchor="start" x="340.05" y="-350" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
24
+ <polygon fill="none" stroke="black" points="136.95,-307 136.95,-337.8 556.31,-337.8 556.31,-307 136.95,-307"/>
25
+ <text text-anchor="start" x="143.95" y="-319.2" font-family="Arial" font-size="14.00">artifact_instance_id </text>
26
+ <text text-anchor="start" x="268.47" y="-319.2" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
27
+ <polygon fill="none" stroke="black" points="136.95,-276.2 136.95,-307 556.31,-307 556.31,-276.2 136.95,-276.2"/>
28
+ <text text-anchor="start" x="143.95" y="-288.4" font-family="Arial" font-size="14.00">artifact_component_instance_id </text>
29
+ <text text-anchor="start" x="345.52" 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="135.45,-274.7 135.45,-416.1 557.81,-416.1 557.81,-274.7 135.45,-274.7"/>
31
+ </g>
32
+ <!-- artifact_instances -->
33
+ <g id="node3" class="node">
34
+ <title>artifact_instances</title>
35
+ <polygon fill="#efefef" stroke="none" points="43.2,-89.4 43.2,-135.4 254.06,-135.4 254.06,-89.4 43.2,-89.4"/>
36
+ <polygon fill="none" stroke="black" points="43.2,-89.4 43.2,-135.4 254.06,-135.4 254.06,-89.4 43.2,-89.4"/>
37
+ <text text-anchor="start" x="51.03" y="-113.2" font-family="Arial Bold" font-size="18.00">artifact_instances</text>
38
+ <text text-anchor="start" x="176.97" y="-113.2" font-family="Arial" font-size="14.00">    </text>
39
+ <text text-anchor="start" x="208.09" y="-113.2" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
40
+ <text text-anchor="start" x="56.43" y="-98.8" font-family="Arial" font-size="14.00" fill="#333333">실제 산출물 instance를 관리한다.</text>
41
+ <polygon fill="none" stroke="black" points="43.2,-58.6 43.2,-89.4 254.06,-89.4 254.06,-58.6 43.2,-58.6"/>
42
+ <text text-anchor="start" x="50.2" y="-70.8" font-family="Arial" font-size="14.00">artifact_instance_id </text>
43
+ <text text-anchor="start" x="174.72" y="-70.8" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
44
+ </g>
45
+ <!-- artifact_review_decision_refs&#45;&gt;artifact_instances -->
46
+ <g id="edge2" class="edge">
47
+ <title>artifact_review_decision_refs:artifact_instance_id&#45;&gt;artifact_instances:artifact_instance_id</title>
48
+ <path fill="none" stroke="black" d="M125.95,-320.93C98.55,-311.71 116.43,-261.05 136.95,-230 168.29,-182.58 222.75,-226.04 254.06,-178.6 279.67,-139.8 301.55,-74 255.06,-74"/>
49
+ <polygon fill="black" stroke="black" points="125.73,-320.9 134.97,-326.8 131,-321.68 135.29,-322.3 135.29,-322.3 135.29,-322.3 131,-321.68 136.27,-317.9 125.73,-320.9"/>
50
+ </g>
51
+ <!-- artifact_component_instances -->
52
+ <g id="node4" class="node">
53
+ <title>artifact_component_instances</title>
54
+ <polygon fill="#efefef" stroke="none" points="358.29,-104.8 358.29,-150.8 730.97,-150.8 730.97,-104.8 358.29,-104.8"/>
55
+ <polygon fill="none" stroke="black" points="358.29,-104.8 358.29,-150.8 730.97,-150.8 730.97,-104.8 358.29,-104.8"/>
56
+ <text text-anchor="start" x="402.54" y="-128.6" font-family="Arial Bold" font-size="18.00">artifact_component_instances</text>
57
+ <text text-anchor="start" x="617.46" y="-128.6" font-family="Arial" font-size="14.00">    </text>
58
+ <text text-anchor="start" x="648.58" y="-128.6" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
59
+ <text text-anchor="start" x="365.29" y="-114.2" font-family="Arial" font-size="14.00" fill="#333333">실제 산출물 안의 본문, 부록 등 component instance를 관리한다.</text>
60
+ <polygon fill="none" stroke="black" points="358.29,-74 358.29,-104.8 730.97,-104.8 730.97,-74 358.29,-74"/>
61
+ <text text-anchor="start" x="365.29" y="-86.2" font-family="Arial" font-size="14.00">artifact_component_instance_id </text>
62
+ <text text-anchor="start" x="566.86" y="-86.2" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
63
+ <polygon fill="none" stroke="black" points="358.29,-43.2 358.29,-74 730.97,-74 730.97,-43.2 358.29,-43.2"/>
64
+ <text text-anchor="start" x="365.29" y="-55.4" font-family="Arial" font-size="14.00">artifact_instance_id </text>
65
+ <text text-anchor="start" x="489.81" y="-55.4" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
66
+ </g>
67
+ <!-- artifact_review_decision_refs&#45;&gt;artifact_component_instances -->
68
+ <g id="edge3" class="edge">
69
+ <title>artifact_review_decision_refs:artifact_component_instance_id&#45;&gt;artifact_component_instances:artifact_component_instance_id</title>
70
+ <path fill="none" stroke="black" d="M567.09,-289.11C581.37,-279.95 571.39,-247.78 556.31,-230 498.44,-161.79 415.93,-262.4 358.29,-194 328.33,-158.45 310.8,-89.4 357.29,-89.4"/>
71
+ <polygon fill="black" stroke="black" points="567.32,-289.05 556.52,-287.16 562.15,-290.36 557.96,-291.43 557.96,-291.43 557.96,-291.43 562.15,-290.36 558.75,-295.88 567.32,-289.05"/>
72
+ </g>
73
+ <!-- artifact_status_events -->
74
+ <g id="node2" class="node">
75
+ <title>artifact_status_events</title>
76
+ <polygon fill="#efefef" stroke="none" points="164.18,-663.2 164.18,-709.2 529.08,-709.2 529.08,-663.2 164.18,-663.2"/>
77
+ <polygon fill="none" stroke="black" points="164.18,-663.2 164.18,-709.2 529.08,-709.2 529.08,-663.2 164.18,-663.2"/>
78
+ <text text-anchor="start" x="234.03" y="-687" font-family="Arial Bold" font-size="18.00">artifact_status_events</text>
79
+ <text text-anchor="start" x="389.98" y="-687" font-family="Arial" font-size="14.00">    </text>
80
+ <text text-anchor="start" x="421.09" y="-687" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
81
+ <text text-anchor="start" x="171.18" y="-672.6" font-family="Arial" font-size="14.00" fill="#333333">산출물 instance 또는 component의 상태 전이 이력을 관리한다.</text>
82
+ <polygon fill="none" stroke="black" points="164.18,-632.4 164.18,-663.2 529.08,-663.2 529.08,-632.4 164.18,-632.4"/>
83
+ <text text-anchor="start" x="171.18" y="-644.6" font-family="Arial" font-size="14.00">artifact_status_event_id </text>
84
+ <text text-anchor="start" x="322.94" y="-644.6" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
85
+ <polygon fill="none" stroke="black" points="164.18,-601.6 164.18,-632.4 529.08,-632.4 529.08,-601.6 164.18,-601.6"/>
86
+ <text text-anchor="start" x="171.18" y="-613.8" font-family="Arial" font-size="14.00">artifact_instance_id </text>
87
+ <text text-anchor="start" x="295.7" y="-613.8" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
88
+ <polygon fill="none" stroke="black" points="164.18,-570.8 164.18,-601.6 529.08,-601.6 529.08,-570.8 164.18,-570.8"/>
89
+ <text text-anchor="start" x="171.18" y="-583" font-family="Arial" font-size="14.00">artifact_component_instance_id </text>
90
+ <text text-anchor="start" x="372.75" y="-583" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
91
+ <polygon fill="none" stroke="black" points="164.18,-540 164.18,-570.8 529.08,-570.8 529.08,-540 164.18,-540"/>
92
+ <text text-anchor="start" x="171.18" y="-552.2" font-family="Arial" font-size="14.00">artifact_review_decision_ref_id </text>
93
+ <text text-anchor="start" x="367.28" y="-552.2" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
94
+ </g>
95
+ <!-- artifact_status_events&#45;&gt;artifact_review_decision_refs -->
96
+ <g id="edge1" class="edge">
97
+ <title>artifact_status_events:artifact_review_decision_ref_id&#45;&gt;artifact_review_decision_refs:artifact_review_decision_ref_id</title>
98
+ <path fill="none" stroke="black" d="M347.25,-528.74C357.82,-446.91 501.32,-539.21 556.31,-460.8 583.77,-421.64 605.13,-353.2 557.31,-353.2"/>
99
+ <polygon fill="black" stroke="black" points="347.25,-528.68 342.16,-538.4 346.93,-534.01 346.67,-538.33 346.67,-538.33 346.67,-538.33 346.93,-534.01 351.14,-538.94 347.25,-528.68"/>
100
+ </g>
101
+ </g>
102
+ </svg>
@@ -0,0 +1,47 @@
1
+ # artifact_schema_migrations
2
+
3
+ ## Description
4
+
5
+ artifact 패키지의 migration 적용 이력을 관리한다.
6
+
7
+ <details>
8
+ <summary><strong>Table Definition</strong></summary>
9
+
10
+ ```sql
11
+ CREATE TABLE artifact_schema_migrations (
12
+ migration_id VARCHAR(128) PRIMARY KEY,
13
+ migration_name VARCHAR(256) NOT NULL,
14
+ applied_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
15
+ )
16
+ ```
17
+
18
+ </details>
19
+
20
+ ## Columns
21
+
22
+ | Name | Type | Default | Nullable |
23
+ | -------------- | ------------ | ----------------- | -------- |
24
+ | migration_id | VARCHAR(128) | | true |
25
+ | migration_name | VARCHAR(256) | | false |
26
+ | applied_at | DATETIME | CURRENT_TIMESTAMP | false |
27
+
28
+ ## Constraints
29
+
30
+ | Name | Type | Definition |
31
+ | --------------------------------------------- | ----------- | -------------------------- |
32
+ | migration_id | PRIMARY KEY | PRIMARY KEY (migration_id) |
33
+ | sqlite_autoindex_artifact_schema_migrations_1 | PRIMARY KEY | PRIMARY KEY (migration_id) |
34
+
35
+ ## Indexes
36
+
37
+ | Name | Definition |
38
+ | --------------------------------------------- | -------------------------- |
39
+ | sqlite_autoindex_artifact_schema_migrations_1 | PRIMARY KEY (migration_id) |
40
+
41
+ ## Relations
42
+
43
+ ![er](artifact_schema_migrations.svg)
44
+
45
+ ---
46
+
47
+ > 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: artifact_schema_migrations Pages: 1 -->
7
+ <svg width="389pt" height="177pt"
8
+ viewBox="0.00 0.00 389.03 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>artifact_schema_migrations</title>
11
+ <polygon fill="white" stroke="none" points="-4,4 -4,-173.2 385.03,-173.2 385.03,4 -4,4"/>
12
+ <!-- artifact_schema_migrations -->
13
+ <g id="node1" class="node">
14
+ <title>artifact_schema_migrations</title>
15
+ <polygon fill="#efefef" stroke="none" points="46.2,-77 46.2,-123 334.83,-123 334.83,-77 46.2,-77"/>
16
+ <polygon fill="none" stroke="black" points="46.2,-77 46.2,-123 334.83,-123 334.83,-77 46.2,-77"/>
17
+ <text text-anchor="start" x="55.92" y="-100.8" font-family="Arial Bold" font-size="18.00">artifact_schema_migrations</text>
18
+ <text text-anchor="start" x="255.85" y="-100.8" font-family="Arial" font-size="14.00">    </text>
19
+ <text text-anchor="start" x="286.97" y="-100.8" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
20
+ <text text-anchor="start" x="53.2" y="-86.4" font-family="Arial" font-size="14.00" fill="#333333">artifact 패키지의 migration 적용 이력을 관리한다.</text>
21
+ <polygon fill="none" stroke="black" points="46.2,-46.2 46.2,-77 334.83,-77 334.83,-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 336.33,-124.5 336.33,-44.7 44.7,-44.7"/>
25
+ </g>
26
+ </g>
27
+ </svg>
@@ -0,0 +1,96 @@
1
+ # artifact_status_events
2
+
3
+ ## Description
4
+
5
+ 산출물 instance 또는 component의 상태 전이 이력을 관리한다.
6
+
7
+ <details>
8
+ <summary><strong>Table Definition</strong></summary>
9
+
10
+ ```sql
11
+ CREATE TABLE artifact_status_events (
12
+ artifact_status_event_id CHAR(36) PRIMARY KEY
13
+ CHECK (length(artifact_status_event_id) = 36),
14
+ artifact_instance_id CHAR(36) NOT NULL
15
+ CHECK (length(artifact_instance_id) = 36),
16
+ artifact_component_instance_id CHAR(36)
17
+ CHECK (artifact_component_instance_id IS NULL OR length(artifact_component_instance_id) = 36),
18
+ status_scope_code VARCHAR(64) NOT NULL
19
+ CHECK (status_scope_code IN ('artifact_instance', 'artifact_component')),
20
+ from_status_code VARCHAR(64) NOT NULL
21
+ CHECK (from_status_code IN ('draft', 'in_review', 'approved', 'published', 'archived', 'deprecated')),
22
+ to_status_code VARCHAR(64) NOT NULL
23
+ CHECK (to_status_code IN ('draft', 'in_review', 'approved', 'published', 'archived', 'deprecated')),
24
+ transition_reason TEXT,
25
+ actor_ref VARCHAR(256),
26
+ artifact_review_decision_ref_id CHAR(36)
27
+ CHECK (artifact_review_decision_ref_id IS NULL OR length(artifact_review_decision_ref_id) = 36),
28
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
29
+ metadata_json JSON
30
+ CHECK (metadata_json IS NULL OR json_valid(metadata_json)),
31
+
32
+ FOREIGN KEY (artifact_instance_id)
33
+ REFERENCES artifact_instances (artifact_instance_id)
34
+ ON DELETE CASCADE,
35
+
36
+ FOREIGN KEY (artifact_component_instance_id)
37
+ REFERENCES artifact_component_instances (artifact_component_instance_id)
38
+ ON DELETE CASCADE,
39
+
40
+ FOREIGN KEY (artifact_review_decision_ref_id)
41
+ REFERENCES artifact_review_decision_refs (artifact_review_decision_ref_id)
42
+ ON DELETE SET NULL
43
+ )
44
+ ```
45
+
46
+ </details>
47
+
48
+ ## Columns
49
+
50
+ | Name | Type | Default | Nullable | Parents |
51
+ | ------------------------------- | ------------ | ----------------- | -------- | ----------------------------------------------------------------- |
52
+ | artifact_status_event_id | CHAR(36) | | true | |
53
+ | artifact_instance_id | CHAR(36) | | false | [artifact_instances](artifact_instances.md) |
54
+ | artifact_component_instance_id | CHAR(36) | | true | [artifact_component_instances](artifact_component_instances.md) |
55
+ | status_scope_code | VARCHAR(64) | | false | |
56
+ | from_status_code | VARCHAR(64) | | false | |
57
+ | to_status_code | VARCHAR(64) | | false | |
58
+ | transition_reason | TEXT | | true | |
59
+ | actor_ref | VARCHAR(256) | | true | |
60
+ | artifact_review_decision_ref_id | CHAR(36) | | true | [artifact_review_decision_refs](artifact_review_decision_refs.md) |
61
+ | created_at | DATETIME | CURRENT_TIMESTAMP | false | |
62
+ | metadata_json | JSON | | true | |
63
+
64
+ ## Constraints
65
+
66
+ | Name | Type | Definition |
67
+ | ----------------------------------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
68
+ | artifact_status_event_id | PRIMARY KEY | PRIMARY KEY (artifact_status_event_id) |
69
+ | - (Foreign key ID: 0) | FOREIGN KEY | FOREIGN KEY (artifact_review_decision_ref_id) REFERENCES artifact_review_decision_refs (artifact_review_decision_ref_id) ON UPDATE NO ACTION ON DELETE SET NULL MATCH NONE |
70
+ | - (Foreign key ID: 1) | FOREIGN KEY | FOREIGN KEY (artifact_component_instance_id) REFERENCES artifact_component_instances (artifact_component_instance_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE |
71
+ | - (Foreign key ID: 2) | FOREIGN KEY | FOREIGN KEY (artifact_instance_id) REFERENCES artifact_instances (artifact_instance_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE |
72
+ | sqlite_autoindex_artifact_status_events_1 | PRIMARY KEY | PRIMARY KEY (artifact_status_event_id) |
73
+ | - | CHECK | CHECK (length(artifact_status_event_id) = 36) |
74
+ | - | CHECK | CHECK (length(artifact_instance_id) = 36) |
75
+ | - | CHECK | CHECK (artifact_component_instance_id IS NULL OR length(artifact_component_instance_id) = 36) |
76
+ | - | CHECK | CHECK (status_scope_code IN ('artifact_instance', 'artifact_component')) |
77
+ | - | CHECK | CHECK (from_status_code IN ('draft', 'in_review', 'approved', 'published', 'archived', 'deprecated')) |
78
+ | - | CHECK | CHECK (to_status_code IN ('draft', 'in_review', 'approved', 'published', 'archived', 'deprecated')) |
79
+ | - | CHECK | CHECK (artifact_review_decision_ref_id IS NULL OR length(artifact_review_decision_ref_id) = 36) |
80
+ | - | CHECK | CHECK (metadata_json IS NULL OR json_valid(metadata_json)) |
81
+
82
+ ## Indexes
83
+
84
+ | Name | Definition |
85
+ | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
86
+ | idx_artifact_status_events_component | CREATE INDEX idx_artifact_status_events_component<br /> ON artifact_status_events (artifact_component_instance_id, created_at) |
87
+ | idx_artifact_status_events_artifact | CREATE INDEX idx_artifact_status_events_artifact<br /> ON artifact_status_events (artifact_instance_id, created_at) |
88
+ | sqlite_autoindex_artifact_status_events_1 | PRIMARY KEY (artifact_status_event_id) |
89
+
90
+ ## Relations
91
+
92
+ ![er](artifact_status_events.svg)
93
+
94
+ ---
95
+
96
+ > Generated by [tbls](https://github.com/k1LoW/tbls)
@@ -0,0 +1,102 @@
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: artifact_status_events Pages: 1 -->
7
+ <svg width="1306pt" height="530pt"
8
+ viewBox="0.00 0.00 1305.51 530.40" 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 526.4)">
10
+ <title>artifact_status_events</title>
11
+ <polygon fill="white" stroke="none" points="-4,4 -4,-526.4 1301.51,-526.4 1301.51,4 -4,4"/>
12
+ <!-- artifact_status_events -->
13
+ <g id="node1" class="node">
14
+ <title>artifact_status_events</title>
15
+ <polygon fill="#efefef" stroke="none" points="362.18,-430.2 362.18,-476.2 727.08,-476.2 727.08,-430.2 362.18,-430.2"/>
16
+ <polygon fill="none" stroke="black" points="362.18,-430.2 362.18,-476.2 727.08,-476.2 727.08,-430.2 362.18,-430.2"/>
17
+ <text text-anchor="start" x="432.03" y="-454" font-family="Arial Bold" font-size="18.00">artifact_status_events</text>
18
+ <text text-anchor="start" x="587.98" y="-454" font-family="Arial" font-size="14.00">    </text>
19
+ <text text-anchor="start" x="619.09" y="-454" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
20
+ <text text-anchor="start" x="369.18" y="-439.6" font-family="Arial" font-size="14.00" fill="#333333">산출물 instance 또는 component의 상태 전이 이력을 관리한다.</text>
21
+ <polygon fill="none" stroke="black" points="362.18,-399.4 362.18,-430.2 727.08,-430.2 727.08,-399.4 362.18,-399.4"/>
22
+ <text text-anchor="start" x="369.18" y="-411.6" font-family="Arial" font-size="14.00">artifact_status_event_id </text>
23
+ <text text-anchor="start" x="520.94" y="-411.6" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
24
+ <polygon fill="none" stroke="black" points="362.18,-368.6 362.18,-399.4 727.08,-399.4 727.08,-368.6 362.18,-368.6"/>
25
+ <text text-anchor="start" x="369.18" y="-380.8" font-family="Arial" font-size="14.00">artifact_instance_id </text>
26
+ <text text-anchor="start" x="493.7" y="-380.8" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
27
+ <polygon fill="none" stroke="black" points="362.18,-337.8 362.18,-368.6 727.08,-368.6 727.08,-337.8 362.18,-337.8"/>
28
+ <text text-anchor="start" x="369.18" y="-350" font-family="Arial" font-size="14.00">artifact_component_instance_id </text>
29
+ <text text-anchor="start" x="570.75" y="-350" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
30
+ <polygon fill="none" stroke="black" points="362.18,-307 362.18,-337.8 727.08,-337.8 727.08,-307 362.18,-307"/>
31
+ <text text-anchor="start" x="369.18" y="-319.2" font-family="Arial" font-size="14.00">artifact_review_decision_ref_id </text>
32
+ <text text-anchor="start" x="565.28" y="-319.2" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
33
+ <polygon fill="none" stroke="black" stroke-width="3" points="360.68,-305.5 360.68,-477.7 728.58,-477.7 728.58,-305.5 360.68,-305.5"/>
34
+ </g>
35
+ <!-- artifact_instances -->
36
+ <g id="node2" class="node">
37
+ <title>artifact_instances</title>
38
+ <polygon fill="#efefef" stroke="none" points="43.2,-104.8 43.2,-150.8 254.06,-150.8 254.06,-104.8 43.2,-104.8"/>
39
+ <polygon fill="none" stroke="black" points="43.2,-104.8 43.2,-150.8 254.06,-150.8 254.06,-104.8 43.2,-104.8"/>
40
+ <text text-anchor="start" x="51.03" y="-128.6" font-family="Arial Bold" font-size="18.00">artifact_instances</text>
41
+ <text text-anchor="start" x="176.97" y="-128.6" font-family="Arial" font-size="14.00">    </text>
42
+ <text text-anchor="start" x="208.09" y="-128.6" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
43
+ <text text-anchor="start" x="56.43" y="-114.2" font-family="Arial" font-size="14.00" fill="#333333">실제 산출물 instance를 관리한다.</text>
44
+ <polygon fill="none" stroke="black" points="43.2,-74 43.2,-104.8 254.06,-104.8 254.06,-74 43.2,-74"/>
45
+ <text text-anchor="start" x="50.2" y="-86.2" font-family="Arial" font-size="14.00">artifact_instance_id </text>
46
+ <text text-anchor="start" x="174.72" y="-86.2" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
47
+ </g>
48
+ <!-- artifact_status_events&#45;&gt;artifact_instances -->
49
+ <g id="edge1" class="edge">
50
+ <title>artifact_status_events:artifact_instance_id&#45;&gt;artifact_instances:artifact_instance_id</title>
51
+ <path fill="none" stroke="black" d="M352.58,-378.38C320.41,-337.65 287,-89.4 255.06,-89.4"/>
52
+ <polygon fill="black" stroke="black" points="352.53,-378.34 358.44,-387.58 357,-381.26 360.62,-383.63 360.62,-383.63 360.62,-383.63 357,-381.26 363.36,-380.05 352.53,-378.34"/>
53
+ </g>
54
+ <!-- artifact_component_instances -->
55
+ <g id="node3" class="node">
56
+ <title>artifact_component_instances</title>
57
+ <polygon fill="#efefef" stroke="none" points="358.29,-120.2 358.29,-166.2 730.97,-166.2 730.97,-120.2 358.29,-120.2"/>
58
+ <polygon fill="none" stroke="black" points="358.29,-120.2 358.29,-166.2 730.97,-166.2 730.97,-120.2 358.29,-120.2"/>
59
+ <text text-anchor="start" x="402.54" y="-144" font-family="Arial Bold" font-size="18.00">artifact_component_instances</text>
60
+ <text text-anchor="start" x="617.46" y="-144" font-family="Arial" font-size="14.00">    </text>
61
+ <text text-anchor="start" x="648.58" y="-144" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
62
+ <text text-anchor="start" x="365.29" y="-129.6" font-family="Arial" font-size="14.00" fill="#333333">실제 산출물 안의 본문, 부록 등 component instance를 관리한다.</text>
63
+ <polygon fill="none" stroke="black" points="358.29,-89.4 358.29,-120.2 730.97,-120.2 730.97,-89.4 358.29,-89.4"/>
64
+ <text text-anchor="start" x="365.29" y="-101.6" font-family="Arial" font-size="14.00">artifact_component_instance_id </text>
65
+ <text text-anchor="start" x="566.86" y="-101.6" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
66
+ <polygon fill="none" stroke="black" points="358.29,-58.6 358.29,-89.4 730.97,-89.4 730.97,-58.6 358.29,-58.6"/>
67
+ <text text-anchor="start" x="365.29" y="-70.8" font-family="Arial" font-size="14.00">artifact_instance_id </text>
68
+ <text text-anchor="start" x="489.81" y="-70.8" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
69
+ </g>
70
+ <!-- artifact_status_events&#45;&gt;artifact_component_instances -->
71
+ <g id="edge2" class="edge">
72
+ <title>artifact_status_events:artifact_component_instance_id&#45;&gt;artifact_component_instances:artifact_component_instance_id</title>
73
+ <path fill="none" stroke="black" d="M737.83,-350.41C783.54,-323.12 783.73,-104.8 731.97,-104.8"/>
74
+ <polygon fill="black" stroke="black" points="738.02,-350.36 727.17,-348.78 732.89,-351.82 728.72,-353.02 728.72,-353.02 728.72,-353.02 732.89,-351.82 729.64,-357.43 738.02,-350.36"/>
75
+ </g>
76
+ <!-- artifact_review_decision_refs -->
77
+ <g id="node4" class="node">
78
+ <title>artifact_review_decision_refs</title>
79
+ <polygon fill="#efefef" stroke="none" points="834.95,-135.6 834.95,-181.6 1254.31,-181.6 1254.31,-135.6 834.95,-135.6"/>
80
+ <polygon fill="none" stroke="black" points="834.95,-135.6 834.95,-181.6 1254.31,-181.6 1254.31,-135.6 834.95,-135.6"/>
81
+ <text text-anchor="start" x="903.05" y="-159.4" font-family="Arial Bold" font-size="18.00">artifact_review_decision_refs</text>
82
+ <text text-anchor="start" x="1116.95" y="-159.4" font-family="Arial" font-size="14.00">    </text>
83
+ <text text-anchor="start" x="1148.07" y="-159.4" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
84
+ <text text-anchor="start" x="841.95" y="-145" font-family="Arial" font-size="14.00" fill="#333333">산출물 instance 또는 component에 대한 검토 결정 외부 참조를 관리한다.</text>
85
+ <polygon fill="none" stroke="black" points="834.95,-104.8 834.95,-135.6 1254.31,-135.6 1254.31,-104.8 834.95,-104.8"/>
86
+ <text text-anchor="start" x="841.95" y="-117" font-family="Arial" font-size="14.00">artifact_review_decision_ref_id </text>
87
+ <text text-anchor="start" x="1038.05" y="-117" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
88
+ <polygon fill="none" stroke="black" points="834.95,-74 834.95,-104.8 1254.31,-104.8 1254.31,-74 834.95,-74"/>
89
+ <text text-anchor="start" x="841.95" y="-86.2" font-family="Arial" font-size="14.00">artifact_instance_id </text>
90
+ <text text-anchor="start" x="966.47" y="-86.2" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
91
+ <polygon fill="none" stroke="black" points="834.95,-43.2 834.95,-74 1254.31,-74 1254.31,-43.2 834.95,-43.2"/>
92
+ <text text-anchor="start" x="841.95" y="-55.4" font-family="Arial" font-size="14.00">artifact_component_instance_id </text>
93
+ <text text-anchor="start" x="1043.52" y="-55.4" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
94
+ </g>
95
+ <!-- artifact_status_events&#45;&gt;artifact_review_decision_refs -->
96
+ <g id="edge3" class="edge">
97
+ <title>artifact_status_events:artifact_review_decision_ref_id&#45;&gt;artifact_review_decision_refs:artifact_review_decision_ref_id</title>
98
+ <path fill="none" stroke="black" d="M738.12,-321.54C775.61,-314.52 762.17,-265.72 783.63,-224.8 807.59,-179.11 782.36,-120.2 833.95,-120.2"/>
99
+ <polygon fill="black" stroke="black" points="738.38,-321.52 728.03,-317.89 733.06,-321.97 728.75,-322.34 728.75,-322.34 728.75,-322.34 733.06,-321.97 728.8,-326.86 738.38,-321.52"/>
100
+ </g>
101
+ </g>
102
+ </svg>
@@ -0,0 +1,93 @@
1
+ # artifact_trace_links
2
+
3
+ ## Description
4
+
5
+ 실제 산출물 instance와 방법론, 산출물 표준, 외부 실행 결과 간 trace를 관리한다.
6
+
7
+ <details>
8
+ <summary><strong>Table Definition</strong></summary>
9
+
10
+ ```sql
11
+ CREATE TABLE artifact_trace_links (
12
+ artifact_trace_link_id CHAR(36) PRIMARY KEY
13
+ CHECK (length(artifact_trace_link_id) = 36),
14
+ artifact_instance_id CHAR(36) NOT NULL
15
+ CHECK (length(artifact_instance_id) = 36),
16
+ artifact_component_instance_id CHAR(36)
17
+ CHECK (artifact_component_instance_id IS NULL OR length(artifact_component_instance_id) = 36),
18
+ source_type_code VARCHAR(128) NOT NULL,
19
+ source_ref_id VARCHAR(256) NOT NULL,
20
+ trace_type_code VARCHAR(64) NOT NULL
21
+ CHECK (trace_type_code IN ('produced_by', 'refined_by', 'reviewed_by', 'consolidated_by', 'derived_from', 'references')),
22
+ artifact_standard_code VARCHAR(128),
23
+ artifact_standard_version VARCHAR(64),
24
+ artifact_component_code VARCHAR(128),
25
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
26
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
27
+ metadata_json JSON
28
+ CHECK (metadata_json IS NULL OR json_valid(metadata_json)),
29
+
30
+ FOREIGN KEY (artifact_instance_id)
31
+ REFERENCES artifact_instances (artifact_instance_id)
32
+ ON DELETE CASCADE,
33
+
34
+ FOREIGN KEY (artifact_component_instance_id)
35
+ REFERENCES artifact_component_instances (artifact_component_instance_id)
36
+ ON DELETE CASCADE,
37
+
38
+ CHECK (
39
+ (artifact_standard_code IS NULL AND artifact_standard_version IS NULL)
40
+ OR (artifact_standard_code IS NOT NULL AND artifact_standard_version IS NOT NULL)
41
+ )
42
+ )
43
+ ```
44
+
45
+ </details>
46
+
47
+ ## Columns
48
+
49
+ | Name | Type | Default | Nullable | Parents |
50
+ | ------------------------------ | ------------ | ----------------- | -------- | --------------------------------------------------------------- |
51
+ | artifact_trace_link_id | CHAR(36) | | true | |
52
+ | artifact_instance_id | CHAR(36) | | false | [artifact_instances](artifact_instances.md) |
53
+ | artifact_component_instance_id | CHAR(36) | | true | [artifact_component_instances](artifact_component_instances.md) |
54
+ | source_type_code | VARCHAR(128) | | false | |
55
+ | source_ref_id | VARCHAR(256) | | false | |
56
+ | trace_type_code | VARCHAR(64) | | false | |
57
+ | artifact_standard_code | VARCHAR(128) | | true | |
58
+ | artifact_standard_version | VARCHAR(64) | | true | |
59
+ | artifact_component_code | VARCHAR(128) | | true | |
60
+ | created_at | DATETIME | CURRENT_TIMESTAMP | false | |
61
+ | updated_at | DATETIME | CURRENT_TIMESTAMP | false | |
62
+ | metadata_json | JSON | | true | |
63
+
64
+ ## Constraints
65
+
66
+ | Name | Type | Definition |
67
+ | --------------------------------------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
68
+ | artifact_trace_link_id | PRIMARY KEY | PRIMARY KEY (artifact_trace_link_id) |
69
+ | - (Foreign key ID: 0) | FOREIGN KEY | FOREIGN KEY (artifact_component_instance_id) REFERENCES artifact_component_instances (artifact_component_instance_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE |
70
+ | - (Foreign key ID: 1) | FOREIGN KEY | FOREIGN KEY (artifact_instance_id) REFERENCES artifact_instances (artifact_instance_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE |
71
+ | sqlite_autoindex_artifact_trace_links_1 | PRIMARY KEY | PRIMARY KEY (artifact_trace_link_id) |
72
+ | - | CHECK | CHECK (length(artifact_trace_link_id) = 36) |
73
+ | - | CHECK | CHECK (length(artifact_instance_id) = 36) |
74
+ | - | CHECK | CHECK (artifact_component_instance_id IS NULL OR length(artifact_component_instance_id) = 36) |
75
+ | - | CHECK | CHECK (trace_type_code IN ('produced_by', 'refined_by', 'reviewed_by', 'consolidated_by', 'derived_from', 'references')) |
76
+ | - | CHECK | CHECK (metadata_json IS NULL OR json_valid(metadata_json)) |
77
+ | - | 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) ) |
78
+
79
+ ## Indexes
80
+
81
+ | Name | Definition |
82
+ | --------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
83
+ | idx_artifact_trace_links_source | CREATE INDEX idx_artifact_trace_links_source<br /> ON artifact_trace_links (source_type_code, source_ref_id) |
84
+ | idx_artifact_trace_links_artifact | CREATE INDEX idx_artifact_trace_links_artifact<br /> ON artifact_trace_links (artifact_instance_id) |
85
+ | sqlite_autoindex_artifact_trace_links_1 | PRIMARY KEY (artifact_trace_link_id) |
86
+
87
+ ## Relations
88
+
89
+ ![er](artifact_trace_links.svg)
90
+
91
+ ---
92
+
93
+ > Generated by [tbls](https://github.com/k1LoW/tbls)
@@ -0,0 +1,74 @@
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: artifact_trace_links Pages: 1 -->
7
+ <svg width="782pt" height="469pt"
8
+ viewBox="0.00 0.00 782.17 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>artifact_trace_links</title>
11
+ <polygon fill="white" stroke="none" points="-4,4 -4,-464.8 778.17,-464.8 778.17,4 -4,4"/>
12
+ <!-- artifact_trace_links -->
13
+ <g id="node1" class="node">
14
+ <title>artifact_trace_links</title>
15
+ <polygon fill="#efefef" stroke="none" points="119.07,-368.6 119.07,-414.6 574.19,-414.6 574.19,-368.6 119.07,-368.6"/>
16
+ <polygon fill="none" stroke="black" points="119.07,-368.6 119.07,-414.6 574.19,-414.6 574.19,-368.6 119.07,-368.6"/>
17
+ <text text-anchor="start" x="242.54" y="-392.4" font-family="Arial Bold" font-size="18.00">artifact_trace_links</text>
18
+ <text text-anchor="start" x="381.47" y="-392.4" font-family="Arial" font-size="14.00">    </text>
19
+ <text text-anchor="start" x="412.58" y="-392.4" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
20
+ <text text-anchor="start" x="126.07" y="-378" font-family="Arial" font-size="14.00" fill="#333333">실제 산출물 instance와 방법론, 산출물 표준, 외부 실행 결과 간 trace를 관리한다.</text>
21
+ <polygon fill="none" stroke="black" points="119.07,-337.8 119.07,-368.6 574.19,-368.6 574.19,-337.8 119.07,-337.8"/>
22
+ <text text-anchor="start" x="126.07" y="-350" font-family="Arial" font-size="14.00">artifact_trace_link_id </text>
23
+ <text text-anchor="start" x="258.36" y="-350" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
24
+ <polygon fill="none" stroke="black" points="119.07,-307 119.07,-337.8 574.19,-337.8 574.19,-307 119.07,-307"/>
25
+ <text text-anchor="start" x="126.07" y="-319.2" font-family="Arial" font-size="14.00">artifact_instance_id </text>
26
+ <text text-anchor="start" x="250.59" y="-319.2" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
27
+ <polygon fill="none" stroke="black" points="119.07,-276.2 119.07,-307 574.19,-307 574.19,-276.2 119.07,-276.2"/>
28
+ <text text-anchor="start" x="126.07" y="-288.4" font-family="Arial" font-size="14.00">artifact_component_instance_id </text>
29
+ <text text-anchor="start" x="327.64" 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="117.57,-274.7 117.57,-416.1 575.69,-416.1 575.69,-274.7 117.57,-274.7"/>
31
+ </g>
32
+ <!-- artifact_instances -->
33
+ <g id="node2" class="node">
34
+ <title>artifact_instances</title>
35
+ <polygon fill="#efefef" stroke="none" points="43.2,-89.4 43.2,-135.4 254.06,-135.4 254.06,-89.4 43.2,-89.4"/>
36
+ <polygon fill="none" stroke="black" points="43.2,-89.4 43.2,-135.4 254.06,-135.4 254.06,-89.4 43.2,-89.4"/>
37
+ <text text-anchor="start" x="51.03" y="-113.2" font-family="Arial Bold" font-size="18.00">artifact_instances</text>
38
+ <text text-anchor="start" x="176.97" y="-113.2" font-family="Arial" font-size="14.00">    </text>
39
+ <text text-anchor="start" x="208.09" y="-113.2" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
40
+ <text text-anchor="start" x="56.43" y="-98.8" font-family="Arial" font-size="14.00" fill="#333333">실제 산출물 instance를 관리한다.</text>
41
+ <polygon fill="none" stroke="black" points="43.2,-58.6 43.2,-89.4 254.06,-89.4 254.06,-58.6 43.2,-58.6"/>
42
+ <text text-anchor="start" x="50.2" y="-70.8" font-family="Arial" font-size="14.00">artifact_instance_id </text>
43
+ <text text-anchor="start" x="174.72" y="-70.8" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
44
+ </g>
45
+ <!-- artifact_trace_links&#45;&gt;artifact_instances -->
46
+ <g id="edge1" class="edge">
47
+ <title>artifact_trace_links:artifact_instance_id&#45;&gt;artifact_instances:artifact_instance_id</title>
48
+ <path fill="none" stroke="black" d="M108.05,-320.92C80.53,-311.61 97.78,-260.53 119.07,-230 155.79,-177.34 217.38,-231.28 254.06,-178.6 280.63,-140.45 301.55,-74 255.06,-74"/>
49
+ <polygon fill="black" stroke="black" points="107.85,-320.89 117.08,-326.8 113.13,-321.67 117.41,-322.3 117.41,-322.3 117.41,-322.3 113.13,-321.67 118.4,-317.9 107.85,-320.89"/>
50
+ </g>
51
+ <!-- artifact_component_instances -->
52
+ <g id="node3" class="node">
53
+ <title>artifact_component_instances</title>
54
+ <polygon fill="#efefef" stroke="none" points="358.29,-104.8 358.29,-150.8 730.97,-150.8 730.97,-104.8 358.29,-104.8"/>
55
+ <polygon fill="none" stroke="black" points="358.29,-104.8 358.29,-150.8 730.97,-150.8 730.97,-104.8 358.29,-104.8"/>
56
+ <text text-anchor="start" x="402.54" y="-128.6" font-family="Arial Bold" font-size="18.00">artifact_component_instances</text>
57
+ <text text-anchor="start" x="617.46" y="-128.6" font-family="Arial" font-size="14.00">    </text>
58
+ <text text-anchor="start" x="648.58" y="-128.6" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
59
+ <text text-anchor="start" x="365.29" y="-114.2" font-family="Arial" font-size="14.00" fill="#333333">실제 산출물 안의 본문, 부록 등 component instance를 관리한다.</text>
60
+ <polygon fill="none" stroke="black" points="358.29,-74 358.29,-104.8 730.97,-104.8 730.97,-74 358.29,-74"/>
61
+ <text text-anchor="start" x="365.29" y="-86.2" font-family="Arial" font-size="14.00">artifact_component_instance_id </text>
62
+ <text text-anchor="start" x="566.86" y="-86.2" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
63
+ <polygon fill="none" stroke="black" points="358.29,-43.2 358.29,-74 730.97,-74 730.97,-43.2 358.29,-43.2"/>
64
+ <text text-anchor="start" x="365.29" y="-55.4" font-family="Arial" font-size="14.00">artifact_instance_id </text>
65
+ <text text-anchor="start" x="489.81" y="-55.4" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
66
+ </g>
67
+ <!-- artifact_trace_links&#45;&gt;artifact_component_instances -->
68
+ <g id="edge2" class="edge">
69
+ <title>artifact_trace_links:artifact_component_instance_id&#45;&gt;artifact_component_instances:artifact_component_instance_id</title>
70
+ <path fill="none" stroke="black" d="M584.98,-289.1C599.29,-279.92 589.4,-247.67 574.19,-230 510.71,-156.28 421.52,-267.93 358.29,-194 328.07,-158.67 310.8,-89.4 357.29,-89.4"/>
71
+ <polygon fill="black" stroke="black" points="585.2,-289.04 574.4,-287.16 580.03,-290.36 575.84,-291.43 575.84,-291.43 575.84,-291.43 580.03,-290.36 576.63,-295.88 585.2,-289.04"/>
72
+ </g>
73
+ </g>
74
+ </svg>