@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,27 @@
1
+ # Operations
2
+
3
+ `@soddong/agentic-domain-artifact`는 consumer project의 `.agentic/platform.sqlite` 또는 명시된 SQLite 경로에 `artifact_` prefix table을 생성한다.
4
+
5
+ 기본 확인:
6
+
7
+ ```bash
8
+ npm install @soddong/agentic-domain-artifact@0.7.0 --registry=https://registry.npmjs.org/
9
+ node -e "import('@soddong/agentic-domain-artifact').then(m => console.log(m.getArtifactPackageInfo()))"
10
+ ```
11
+
12
+ 위 설치 예시는 `0.7.0` publish 이후의 consumer 확인 기준이다.
13
+
14
+ DB 초기화 확인:
15
+
16
+ ```ts
17
+ import { initializeArtifactDatabase } from "@soddong/agentic-domain-artifact";
18
+
19
+ console.log(initializeArtifactDatabase({ projectRoot: process.cwd() }).tables);
20
+ ```
21
+
22
+ 운영 책임 경계:
23
+
24
+ - 실제 document 본문 저장은 `@soddong/agentic-domain-document` 책임이다.
25
+ - validation 실행은 `@soddong/agentic-capability-validation` 책임이다.
26
+ - render 실행은 `@soddong/agentic-capability-render` 책임이다.
27
+ - artifact는 해당 결과의 reference만 보유한다.
@@ -0,0 +1,29 @@
1
+ # Publishing
2
+
3
+ 패키지 내부에는 특정 registry URL을 고정하지 않는다.
4
+
5
+ 운영환경 publish 또는 delivery는 consumer/build 환경의 `.npmrc`, 환경 변수, CI/CD 설정에서 registry와 인증 정보를 제공한다.
6
+
7
+ 검증 명령:
8
+
9
+ ```bash
10
+ npm run build --workspace @soddong/agentic-domain-artifact
11
+ npm run typecheck --workspace @soddong/agentic-domain-artifact
12
+ npm run dev:test:agentic-domain-artifact
13
+ npm run schema:doc:agentic-domain-artifact
14
+ npm run dev:test:artifact-methodology-standard-document-integration
15
+ npm run consistency:check
16
+ npm pack --workspace @soddong/agentic-domain-artifact --dry-run --cache /private/tmp/agentic-npm-cache
17
+ ```
18
+
19
+ Publish:
20
+
21
+ ```bash
22
+ npm publish --workspace @soddong/agentic-domain-artifact --registry=https://registry.npmjs.org/
23
+ ```
24
+
25
+ Publish 검증:
26
+
27
+ ```bash
28
+ npm view @soddong/agentic-domain-artifact version --registry=https://registry.npmjs.org/ --prefer-online
29
+ ```
@@ -0,0 +1,28 @@
1
+ # agentic-domain-artifact
2
+
3
+ ## Description
4
+
5
+ Agentic Platform artifact instance domain database.
6
+
7
+ ## Tables
8
+
9
+ | Name | Columns | Comment | Type |
10
+ | --------------------------------------------------------------------- | ------- | ------------------------------------------------------------------------------- | ----- |
11
+ | [artifact_schema_migrations](artifact_schema_migrations.md) | 3 | artifact 패키지의 migration 적용 이력을 관리한다. | table |
12
+ | [artifact_code_groups](artifact_code_groups.md) | 7 | 코드 그룹을 정의한다. | table |
13
+ | [artifact_codes](artifact_codes.md) | 9 | 코드 그룹별 코드 값을 정의한다. | table |
14
+ | [artifact_instances](artifact_instances.md) | 12 | 실제 산출물 instance를 관리한다. | table |
15
+ | [artifact_component_instances](artifact_component_instances.md) | 10 | 실제 산출물 안의 본문, 부록 등 component instance를 관리한다. | table |
16
+ | [artifact_resource_links](artifact_resource_links.md) | 10 | 산출물 instance 또는 component instance와 document/file/resource를 연결한다. | table |
17
+ | [artifact_trace_links](artifact_trace_links.md) | 12 | 실제 산출물 instance와 방법론, 산출물 표준, 외부 실행 결과 간 trace를 관리한다. | table |
18
+ | [artifact_validation_result_refs](artifact_validation_result_refs.md) | 10 | validation 실행 결과의 외부 참조를 관리한다. | table |
19
+ | [artifact_review_decision_refs](artifact_review_decision_refs.md) | 12 | 산출물 instance 또는 component에 대한 검토 결정 외부 참조를 관리한다. | table |
20
+ | [artifact_status_events](artifact_status_events.md) | 11 | 산출물 instance 또는 component의 상태 전이 이력을 관리한다. | table |
21
+
22
+ ## Relations
23
+
24
+ ![er](schema.svg)
25
+
26
+ ---
27
+
28
+ > Generated by [tbls](https://github.com/k1LoW/tbls)
@@ -0,0 +1,57 @@
1
+ # artifact_code_groups
2
+
3
+ ## Description
4
+
5
+ 코드 그룹을 정의한다.
6
+
7
+ <details>
8
+ <summary><strong>Table Definition</strong></summary>
9
+
10
+ ```sql
11
+ CREATE TABLE artifact_code_groups (
12
+ code_group_code VARCHAR(64) PRIMARY KEY,
13
+ code_group_name VARCHAR(128) NOT NULL,
14
+ description TEXT,
15
+ sort_order INTEGER NOT NULL DEFAULT 0,
16
+ is_active INTEGER NOT NULL DEFAULT 1
17
+ CHECK (is_active IN (0, 1)),
18
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
19
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
20
+ )
21
+ ```
22
+
23
+ </details>
24
+
25
+ ## Columns
26
+
27
+ | Name | Type | Default | Nullable | Children |
28
+ | --------------- | ------------ | ----------------- | -------- | ----------------------------------- |
29
+ | code_group_code | VARCHAR(64) | | true | [artifact_codes](artifact_codes.md) |
30
+ | code_group_name | VARCHAR(128) | | false | |
31
+ | description | TEXT | | true | |
32
+ | sort_order | INTEGER | 0 | false | |
33
+ | is_active | INTEGER | 1 | false | |
34
+ | created_at | DATETIME | CURRENT_TIMESTAMP | false | |
35
+ | updated_at | DATETIME | CURRENT_TIMESTAMP | false | |
36
+
37
+ ## Constraints
38
+
39
+ | Name | Type | Definition |
40
+ | --------------------------------------- | ----------- | ----------------------------- |
41
+ | code_group_code | PRIMARY KEY | PRIMARY KEY (code_group_code) |
42
+ | sqlite_autoindex_artifact_code_groups_1 | PRIMARY KEY | PRIMARY KEY (code_group_code) |
43
+ | - | CHECK | CHECK (is_active IN (0, 1)) |
44
+
45
+ ## Indexes
46
+
47
+ | Name | Definition |
48
+ | --------------------------------------- | ----------------------------- |
49
+ | sqlite_autoindex_artifact_code_groups_1 | PRIMARY KEY (code_group_code) |
50
+
51
+ ## Relations
52
+
53
+ ![er](artifact_code_groups.svg)
54
+
55
+ ---
56
+
57
+ > Generated by [tbls](https://github.com/k1LoW/tbls)
@@ -0,0 +1,49 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
3
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <!-- Generated by graphviz version 12.1.2 (20240928.0832)
5
+ -->
6
+ <!-- Title: artifact_code_groups Pages: 1 -->
7
+ <svg width="354pt" height="409pt"
8
+ viewBox="0.00 0.00 353.76 408.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 404.89)">
10
+ <title>artifact_code_groups</title>
11
+ <polygon fill="white" stroke="none" points="-4,4 -4,-404.89 349.76,-404.89 349.76,4 -4,4"/>
12
+ <!-- artifact_code_groups -->
13
+ <g id="node1" class="node">
14
+ <title>artifact_code_groups</title>
15
+ <polygon fill="#efefef" stroke="none" points="46.2,-78.69 46.2,-124.69 281.39,-124.69 281.39,-78.69 46.2,-78.69"/>
16
+ <polygon fill="none" stroke="black" points="46.2,-78.69 46.2,-124.69 281.39,-124.69 281.39,-78.69 46.2,-78.69"/>
17
+ <text text-anchor="start" x="53.2" y="-102.49" font-family="Arial Bold" font-size="18.00">artifact_code_groups</text>
18
+ <text text-anchor="start" x="205.14" y="-102.49" font-family="Arial" font-size="14.00">    </text>
19
+ <text text-anchor="start" x="236.25" y="-102.49" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
20
+ <text text-anchor="start" x="105.45" y="-88.09" font-family="Arial" font-size="14.00" fill="#333333">코드 그룹을 정의한다.</text>
21
+ <polygon fill="none" stroke="black" points="46.2,-47.89 46.2,-78.69 281.39,-78.69 281.39,-47.89 46.2,-47.89"/>
22
+ <text text-anchor="start" x="53.2" y="-60.09" font-family="Arial" font-size="14.00">code_group_code </text>
23
+ <text text-anchor="start" x="169.19" y="-60.09" font-family="Arial" font-size="14.00" fill="#666666">[VARCHAR(64)]</text>
24
+ <polygon fill="none" stroke="black" stroke-width="3" points="44.7,-46.39 44.7,-126.19 282.89,-126.19 282.89,-46.39 44.7,-46.39"/>
25
+ </g>
26
+ <!-- artifact_codes -->
27
+ <g id="node2" class="node">
28
+ <title>artifact_codes</title>
29
+ <polygon fill="#efefef" stroke="none" points="48.24,-311.69 48.24,-357.69 279.35,-357.69 279.35,-311.69 48.24,-311.69"/>
30
+ <polygon fill="none" stroke="black" points="48.24,-311.69 48.24,-357.69 279.35,-357.69 279.35,-311.69 48.24,-311.69"/>
31
+ <text text-anchor="start" x="78.7" y="-335.49" font-family="Arial Bold" font-size="18.00">artifact_codes</text>
32
+ <text text-anchor="start" x="179.64" y="-335.49" font-family="Arial" font-size="14.00">    </text>
33
+ <text text-anchor="start" x="210.76" y="-335.49" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
34
+ <text text-anchor="start" x="78.22" y="-321.09" font-family="Arial" font-size="14.00" fill="#333333">코드 그룹별 코드 값을 정의한다.</text>
35
+ <polygon fill="none" stroke="black" points="48.24,-280.89 48.24,-311.69 279.35,-311.69 279.35,-280.89 48.24,-280.89"/>
36
+ <text text-anchor="start" x="55.24" y="-293.09" font-family="Arial" font-size="14.00">code_group_code </text>
37
+ <text text-anchor="start" x="171.22" y="-293.09" font-family="Arial" font-size="14.00" fill="#666666">[VARCHAR(64)]</text>
38
+ <polygon fill="none" stroke="black" points="48.24,-250.09 48.24,-280.89 279.35,-280.89 279.35,-250.09 48.24,-250.09"/>
39
+ <text text-anchor="start" x="55.24" y="-262.29" font-family="Arial" font-size="14.00">code </text>
40
+ <text text-anchor="start" x="89.49" y="-262.29" font-family="Arial" font-size="14.00" fill="#666666">[VARCHAR(128)]</text>
41
+ </g>
42
+ <!-- artifact_codes&#45;&gt;artifact_code_groups -->
43
+ <g id="edge1" class="edge">
44
+ <title>artifact_codes:code_group_code&#45;&gt;artifact_code_groups:code_group_code</title>
45
+ <path fill="none" stroke="black" d="M290.27,-294.08C340,-271.65 364.8,-85.33 327.59,-47.89 276.27,3.75 163.8,25.91 163.8,-46.89"/>
46
+ <polygon fill="black" stroke="black" points="290.44,-294.04 279.7,-291.82 285.23,-295.2 281.01,-296.14 281.01,-296.14 281.01,-296.14 285.23,-295.2 281.66,-300.61 290.44,-294.04"/>
47
+ </g>
48
+ </g>
49
+ </svg>
@@ -0,0 +1,71 @@
1
+ # artifact_codes
2
+
3
+ ## Description
4
+
5
+ 코드 그룹별 코드 값을 정의한다.
6
+
7
+ <details>
8
+ <summary><strong>Table Definition</strong></summary>
9
+
10
+ ```sql
11
+ CREATE TABLE artifact_codes (
12
+ code_group_code VARCHAR(64) NOT NULL,
13
+ code VARCHAR(128) NOT NULL,
14
+ code_name VARCHAR(128) NOT NULL,
15
+ description TEXT,
16
+ sort_order INTEGER NOT NULL DEFAULT 0,
17
+ is_active INTEGER NOT NULL DEFAULT 1
18
+ CHECK (is_active IN (0, 1)),
19
+ metadata_json JSON
20
+ CHECK (metadata_json IS NULL OR json_valid(metadata_json)),
21
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
22
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
23
+
24
+ PRIMARY KEY (code_group_code, code),
25
+
26
+ FOREIGN KEY (code_group_code)
27
+ REFERENCES artifact_code_groups (code_group_code)
28
+ ON DELETE CASCADE
29
+ )
30
+ ```
31
+
32
+ </details>
33
+
34
+ ## Columns
35
+
36
+ | Name | Type | Default | Nullable | Parents |
37
+ | --------------- | ------------ | ----------------- | -------- | ----------------------------------------------- |
38
+ | code_group_code | VARCHAR(64) | | false | [artifact_code_groups](artifact_code_groups.md) |
39
+ | code | VARCHAR(128) | | false | |
40
+ | code_name | VARCHAR(128) | | false | |
41
+ | description | TEXT | | true | |
42
+ | sort_order | INTEGER | 0 | false | |
43
+ | is_active | INTEGER | 1 | false | |
44
+ | metadata_json | JSON | | true | |
45
+ | created_at | DATETIME | CURRENT_TIMESTAMP | false | |
46
+ | updated_at | DATETIME | CURRENT_TIMESTAMP | false | |
47
+
48
+ ## Constraints
49
+
50
+ | Name | Type | Definition |
51
+ | --------------------------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------- |
52
+ | code_group_code | PRIMARY KEY | PRIMARY KEY (code_group_code) |
53
+ | code | PRIMARY KEY | PRIMARY KEY (code) |
54
+ | - (Foreign key ID: 0) | FOREIGN KEY | FOREIGN KEY (code_group_code) REFERENCES artifact_code_groups (code_group_code) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE |
55
+ | sqlite_autoindex_artifact_codes_1 | PRIMARY KEY | PRIMARY KEY (code_group_code, code) |
56
+ | - | CHECK | CHECK (is_active IN (0, 1)) |
57
+ | - | CHECK | CHECK (metadata_json IS NULL OR json_valid(metadata_json)) |
58
+
59
+ ## Indexes
60
+
61
+ | Name | Definition |
62
+ | --------------------------------- | ----------------------------------- |
63
+ | sqlite_autoindex_artifact_codes_1 | PRIMARY KEY (code_group_code, code) |
64
+
65
+ ## Relations
66
+
67
+ ![er](artifact_codes.svg)
68
+
69
+ ---
70
+
71
+ > Generated by [tbls](https://github.com/k1LoW/tbls)
@@ -0,0 +1,49 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
3
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <!-- Generated by graphviz version 12.1.2 (20240928.0832)
5
+ -->
6
+ <!-- Title: artifact_codes Pages: 1 -->
7
+ <svg width="349pt" height="411pt"
8
+ viewBox="0.00 0.00 349.35 411.02" 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 407.02)">
10
+ <title>artifact_codes</title>
11
+ <polygon fill="white" stroke="none" points="-4,4 -4,-407.02 345.35,-407.02 345.35,4 -4,4"/>
12
+ <!-- artifact_codes -->
13
+ <g id="node1" class="node">
14
+ <title>artifact_codes</title>
15
+ <polygon fill="#efefef" stroke="none" points="46.2,-310.82 46.2,-356.82 277.32,-356.82 277.32,-310.82 46.2,-310.82"/>
16
+ <polygon fill="none" stroke="black" points="46.2,-310.82 46.2,-356.82 277.32,-356.82 277.32,-310.82 46.2,-310.82"/>
17
+ <text text-anchor="start" x="76.66" y="-334.62" font-family="Arial Bold" font-size="18.00">artifact_codes</text>
18
+ <text text-anchor="start" x="177.6" y="-334.62" font-family="Arial" font-size="14.00">    </text>
19
+ <text text-anchor="start" x="208.72" y="-334.62" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
20
+ <text text-anchor="start" x="76.19" y="-320.22" font-family="Arial" font-size="14.00" fill="#333333">코드 그룹별 코드 값을 정의한다.</text>
21
+ <polygon fill="none" stroke="black" points="46.2,-280.02 46.2,-310.82 277.32,-310.82 277.32,-280.02 46.2,-280.02"/>
22
+ <text text-anchor="start" x="53.2" y="-292.22" font-family="Arial" font-size="14.00">code_group_code </text>
23
+ <text text-anchor="start" x="169.19" y="-292.22" font-family="Arial" font-size="14.00" fill="#666666">[VARCHAR(64)]</text>
24
+ <polygon fill="none" stroke="black" points="46.2,-249.22 46.2,-280.02 277.32,-280.02 277.32,-249.22 46.2,-249.22"/>
25
+ <text text-anchor="start" x="53.2" y="-261.42" font-family="Arial" font-size="14.00">code </text>
26
+ <text text-anchor="start" x="87.45" y="-261.42" font-family="Arial" font-size="14.00" fill="#666666">[VARCHAR(128)]</text>
27
+ <polygon fill="none" stroke="black" stroke-width="3" points="44.7,-247.72 44.7,-358.32 278.82,-358.32 278.82,-247.72 44.7,-247.72"/>
28
+ </g>
29
+ <!-- artifact_code_groups -->
30
+ <g id="node2" class="node">
31
+ <title>artifact_code_groups</title>
32
+ <polygon fill="#efefef" stroke="none" points="44.16,-77.82 44.16,-123.82 279.35,-123.82 279.35,-77.82 44.16,-77.82"/>
33
+ <polygon fill="none" stroke="black" points="44.16,-77.82 44.16,-123.82 279.35,-123.82 279.35,-77.82 44.16,-77.82"/>
34
+ <text text-anchor="start" x="51.16" y="-101.62" font-family="Arial Bold" font-size="18.00">artifact_code_groups</text>
35
+ <text text-anchor="start" x="203.1" y="-101.62" font-family="Arial" font-size="14.00">    </text>
36
+ <text text-anchor="start" x="234.22" y="-101.62" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
37
+ <text text-anchor="start" x="103.41" y="-87.22" font-family="Arial" font-size="14.00" fill="#333333">코드 그룹을 정의한다.</text>
38
+ <polygon fill="none" stroke="black" points="44.16,-47.02 44.16,-77.82 279.35,-77.82 279.35,-47.02 44.16,-47.02"/>
39
+ <text text-anchor="start" x="51.16" y="-59.22" font-family="Arial" font-size="14.00">code_group_code </text>
40
+ <text text-anchor="start" x="167.15" y="-59.22" font-family="Arial" font-size="14.00" fill="#666666">[VARCHAR(64)]</text>
41
+ </g>
42
+ <!-- artifact_codes&#45;&gt;artifact_code_groups -->
43
+ <g id="edge1" class="edge">
44
+ <title>artifact_codes:code_group_code&#45;&gt;artifact_code_groups:code_group_code</title>
45
+ <path fill="none" stroke="black" d="M288.49,-293.07C337.58,-270 359.61,-84.3 322.55,-47.02 272.18,3.67 161.76,25.45 161.76,-46.02"/>
46
+ <polygon fill="black" stroke="black" points="288.38,-293.09 277.63,-290.96 283.19,-294.29 278.97,-295.27 278.97,-295.27 278.97,-295.27 283.19,-294.29 279.66,-299.73 288.38,-293.09"/>
47
+ </g>
48
+ </g>
49
+ </svg>
@@ -0,0 +1,79 @@
1
+ # artifact_component_instances
2
+
3
+ ## Description
4
+
5
+ 실제 산출물 안의 본문, 부록 등 component instance를 관리한다.
6
+
7
+ <details>
8
+ <summary><strong>Table Definition</strong></summary>
9
+
10
+ ```sql
11
+ CREATE TABLE artifact_component_instances (
12
+ artifact_component_instance_id CHAR(36) PRIMARY KEY
13
+ CHECK (length(artifact_component_instance_id) = 36),
14
+ artifact_instance_id CHAR(36) NOT NULL
15
+ CHECK (length(artifact_instance_id) = 36),
16
+ artifact_component_code VARCHAR(128) NOT NULL,
17
+ artifact_component_role_code VARCHAR(64),
18
+ component_instance_name VARCHAR(256) NOT NULL,
19
+ component_status_code VARCHAR(64) NOT NULL DEFAULT 'draft'
20
+ CHECK (component_status_code IN ('draft', 'in_review', 'approved', 'published', 'archived', 'deprecated')),
21
+ sort_order INTEGER NOT NULL DEFAULT 0,
22
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
23
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
24
+ metadata_json JSON
25
+ CHECK (metadata_json IS NULL OR json_valid(metadata_json)),
26
+
27
+ FOREIGN KEY (artifact_instance_id)
28
+ REFERENCES artifact_instances (artifact_instance_id)
29
+ ON DELETE CASCADE,
30
+
31
+ UNIQUE (artifact_instance_id, artifact_component_code)
32
+ )
33
+ ```
34
+
35
+ </details>
36
+
37
+ ## Columns
38
+
39
+ | Name | Type | Default | Nullable | Children | Parents |
40
+ | ------------------------------ | ------------ | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------- |
41
+ | artifact_component_instance_id | CHAR(36) | | true | [artifact_resource_links](artifact_resource_links.md) [artifact_trace_links](artifact_trace_links.md) [artifact_validation_result_refs](artifact_validation_result_refs.md) [artifact_review_decision_refs](artifact_review_decision_refs.md) [artifact_status_events](artifact_status_events.md) | |
42
+ | artifact_instance_id | CHAR(36) | | false | | [artifact_instances](artifact_instances.md) |
43
+ | artifact_component_code | VARCHAR(128) | | false | | |
44
+ | artifact_component_role_code | VARCHAR(64) | | true | | |
45
+ | component_instance_name | VARCHAR(256) | | false | | |
46
+ | component_status_code | VARCHAR(64) | 'draft' | false | | |
47
+ | sort_order | INTEGER | 0 | false | | |
48
+ | created_at | DATETIME | CURRENT_TIMESTAMP | false | | |
49
+ | updated_at | DATETIME | CURRENT_TIMESTAMP | false | | |
50
+ | metadata_json | JSON | | true | | |
51
+
52
+ ## Constraints
53
+
54
+ | Name | Type | Definition |
55
+ | ----------------------------------------------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
56
+ | artifact_component_instance_id | PRIMARY KEY | PRIMARY KEY (artifact_component_instance_id) |
57
+ | - (Foreign key ID: 0) | FOREIGN KEY | FOREIGN KEY (artifact_instance_id) REFERENCES artifact_instances (artifact_instance_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE |
58
+ | sqlite_autoindex_artifact_component_instances_2 | UNIQUE | UNIQUE (artifact_instance_id, artifact_component_code) |
59
+ | sqlite_autoindex_artifact_component_instances_1 | PRIMARY KEY | PRIMARY KEY (artifact_component_instance_id) |
60
+ | - | CHECK | CHECK (length(artifact_component_instance_id) = 36) |
61
+ | - | CHECK | CHECK (length(artifact_instance_id) = 36) |
62
+ | - | CHECK | CHECK (component_status_code IN ('draft', 'in_review', 'approved', 'published', 'archived', 'deprecated')) |
63
+ | - | CHECK | CHECK (metadata_json IS NULL OR json_valid(metadata_json)) |
64
+
65
+ ## Indexes
66
+
67
+ | Name | Definition |
68
+ | ----------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
69
+ | idx_artifact_component_instances_artifact | CREATE INDEX idx_artifact_component_instances_artifact<br /> ON artifact_component_instances (artifact_instance_id) |
70
+ | sqlite_autoindex_artifact_component_instances_2 | UNIQUE (artifact_instance_id, artifact_component_code) |
71
+ | sqlite_autoindex_artifact_component_instances_1 | PRIMARY KEY (artifact_component_instance_id) |
72
+
73
+ ## Relations
74
+
75
+ ![er](artifact_component_instances.svg)
76
+
77
+ ---
78
+
79
+ > Generated by [tbls](https://github.com/k1LoW/tbls)
@@ -0,0 +1,177 @@
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_component_instances Pages: 1 -->
7
+ <svg width="2536pt" height="699pt"
8
+ viewBox="0.00 0.00 2536.24 699.11" 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 695.11)">
10
+ <title>artifact_component_instances</title>
11
+ <polygon fill="white" stroke="none" points="-4,4 -4,-695.11 2532.24,-695.11 2532.24,4 -4,4"/>
12
+ <!-- artifact_component_instances -->
13
+ <g id="node1" class="node">
14
+ <title>artifact_component_instances</title>
15
+ <polygon fill="#efefef" stroke="none" points="1155.24,-307.31 1155.24,-353.31 1527.93,-353.31 1527.93,-307.31 1155.24,-307.31"/>
16
+ <polygon fill="none" stroke="black" points="1155.24,-307.31 1155.24,-353.31 1527.93,-353.31 1527.93,-307.31 1155.24,-307.31"/>
17
+ <text text-anchor="start" x="1199.5" y="-331.11" font-family="Arial Bold" font-size="18.00">artifact_component_instances</text>
18
+ <text text-anchor="start" x="1414.42" y="-331.11" font-family="Arial" font-size="14.00">    </text>
19
+ <text text-anchor="start" x="1445.53" y="-331.11" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
20
+ <text text-anchor="start" x="1162.24" y="-316.71" font-family="Arial" font-size="14.00" fill="#333333">실제 산출물 안의 본문, 부록 등 component instance를 관리한다.</text>
21
+ <polygon fill="none" stroke="black" points="1155.24,-276.51 1155.24,-307.31 1527.93,-307.31 1527.93,-276.51 1155.24,-276.51"/>
22
+ <text text-anchor="start" x="1162.24" y="-288.71" font-family="Arial" font-size="14.00">artifact_component_instance_id </text>
23
+ <text text-anchor="start" x="1363.82" y="-288.71" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
24
+ <polygon fill="none" stroke="black" points="1155.24,-245.71 1155.24,-276.51 1527.93,-276.51 1527.93,-245.71 1155.24,-245.71"/>
25
+ <text text-anchor="start" x="1162.24" y="-257.91" font-family="Arial" font-size="14.00">artifact_instance_id </text>
26
+ <text text-anchor="start" x="1286.76" y="-257.91" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
27
+ <polygon fill="none" stroke="black" stroke-width="3" points="1153.74,-244.21 1153.74,-354.81 1529.43,-354.81 1529.43,-244.21 1153.74,-244.21"/>
28
+ </g>
29
+ <!-- artifact_instances -->
30
+ <g id="node7" class="node">
31
+ <title>artifact_instances</title>
32
+ <polygon fill="#efefef" stroke="none" points="1236.15,-74.31 1236.15,-120.31 1447.02,-120.31 1447.02,-74.31 1236.15,-74.31"/>
33
+ <polygon fill="none" stroke="black" points="1236.15,-74.31 1236.15,-120.31 1447.02,-120.31 1447.02,-74.31 1236.15,-74.31"/>
34
+ <text text-anchor="start" x="1243.99" y="-98.11" font-family="Arial Bold" font-size="18.00">artifact_instances</text>
35
+ <text text-anchor="start" x="1369.93" y="-98.11" font-family="Arial" font-size="14.00">    </text>
36
+ <text text-anchor="start" x="1401.04" y="-98.11" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
37
+ <text text-anchor="start" x="1249.39" y="-83.71" font-family="Arial" font-size="14.00" fill="#333333">실제 산출물 instance를 관리한다.</text>
38
+ <polygon fill="none" stroke="black" points="1236.15,-43.51 1236.15,-74.31 1447.02,-74.31 1447.02,-43.51 1236.15,-43.51"/>
39
+ <text text-anchor="start" x="1243.15" y="-55.71" font-family="Arial" font-size="14.00">artifact_instance_id </text>
40
+ <text text-anchor="start" x="1367.67" y="-55.71" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
41
+ </g>
42
+ <!-- artifact_component_instances&#45;&gt;artifact_instances -->
43
+ <g id="edge6" class="edge">
44
+ <title>artifact_component_instances:artifact_instance_id&#45;&gt;artifact_instances:artifact_instance_id</title>
45
+ <path fill="none" stroke="black" d="M1342.35,-234.61C1352.18,-174.89 1453.69,-225.09 1490.22,-163.51 1517.43,-117.64 1527.8,-81.35 1490.22,-43.51 1443.66,3.36 1341.59,23.55 1341.59,-42.51"/>
46
+ <polygon fill="black" stroke="black" points="1342.37,-234.41 1337.12,-244.04 1341.96,-239.72 1341.64,-244.04 1341.64,-244.04 1341.64,-244.04 1341.96,-239.72 1346.1,-244.72 1342.37,-234.41"/>
47
+ </g>
48
+ <!-- artifact_resource_links -->
49
+ <g id="node2" class="node">
50
+ <title>artifact_resource_links</title>
51
+ <polygon fill="#efefef" stroke="none" points="43.2,-586.51 43.2,-632.51 527.97,-632.51 527.97,-586.51 43.2,-586.51"/>
52
+ <polygon fill="none" stroke="black" points="43.2,-586.51 43.2,-632.51 527.97,-632.51 527.97,-586.51 43.2,-586.51"/>
53
+ <text text-anchor="start" x="168.49" y="-610.31" font-family="Arial Bold" font-size="18.00">artifact_resource_links</text>
54
+ <text text-anchor="start" x="333.42" y="-610.31" font-family="Arial" font-size="14.00">    </text>
55
+ <text text-anchor="start" x="364.54" y="-610.31" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
56
+ <text text-anchor="start" x="50.2" y="-595.91" font-family="Arial" font-size="14.00" fill="#333333">산출물 instance 또는 component instance와 document/file/resource를 연결한다.</text>
57
+ <polygon fill="none" stroke="black" points="43.2,-555.71 43.2,-586.51 527.97,-586.51 527.97,-555.71 43.2,-555.71"/>
58
+ <text text-anchor="start" x="50.2" y="-567.91" font-family="Arial" font-size="14.00">artifact_resource_link_id </text>
59
+ <text text-anchor="start" x="205.83" y="-567.91" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
60
+ <polygon fill="none" stroke="black" points="43.2,-524.91 43.2,-555.71 527.97,-555.71 527.97,-524.91 43.2,-524.91"/>
61
+ <text text-anchor="start" x="50.2" y="-537.11" font-family="Arial" font-size="14.00">artifact_instance_id </text>
62
+ <text text-anchor="start" x="174.72" y="-537.11" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
63
+ <polygon fill="none" stroke="black" points="43.2,-494.11 43.2,-524.91 527.97,-524.91 527.97,-494.11 43.2,-494.11"/>
64
+ <text text-anchor="start" x="50.2" y="-506.31" font-family="Arial" font-size="14.00">artifact_component_instance_id </text>
65
+ <text text-anchor="start" x="251.77" y="-506.31" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
66
+ </g>
67
+ <!-- artifact_resource_links&#45;&gt;artifact_component_instances -->
68
+ <g id="edge1" class="edge">
69
+ <title>artifact_resource_links:artifact_component_instance_id&#45;&gt;artifact_component_instances:artifact_component_instance_id</title>
70
+ <path fill="none" stroke="black" d="M538.98,-508.12C565.05,-499.77 550.07,-456.05 579.59,-435.51 687.63,-360.33 1022.62,-291.91 1154.24,-291.91"/>
71
+ <polygon fill="black" stroke="black" points="539.21,-508.09 528.68,-505.01 533.92,-508.82 529.63,-509.42 529.63,-509.42 529.63,-509.42 533.92,-508.82 529.92,-513.92 539.21,-508.09"/>
72
+ </g>
73
+ <!-- artifact_trace_links -->
74
+ <g id="node3" class="node">
75
+ <title>artifact_trace_links</title>
76
+ <polygon fill="#efefef" stroke="none" points="632.03,-586.51 632.03,-632.51 1087.14,-632.51 1087.14,-586.51 632.03,-586.51"/>
77
+ <polygon fill="none" stroke="black" points="632.03,-586.51 632.03,-632.51 1087.14,-632.51 1087.14,-586.51 632.03,-586.51"/>
78
+ <text text-anchor="start" x="755.49" y="-610.31" font-family="Arial Bold" font-size="18.00">artifact_trace_links</text>
79
+ <text text-anchor="start" x="894.42" y="-610.31" font-family="Arial" font-size="14.00">    </text>
80
+ <text text-anchor="start" x="925.54" y="-610.31" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
81
+ <text text-anchor="start" x="639.03" y="-595.91" font-family="Arial" font-size="14.00" fill="#333333">실제 산출물 instance와 방법론, 산출물 표준, 외부 실행 결과 간 trace를 관리한다.</text>
82
+ <polygon fill="none" stroke="black" points="632.03,-555.71 632.03,-586.51 1087.14,-586.51 1087.14,-555.71 632.03,-555.71"/>
83
+ <text text-anchor="start" x="639.03" y="-567.91" font-family="Arial" font-size="14.00">artifact_trace_link_id </text>
84
+ <text text-anchor="start" x="771.32" y="-567.91" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
85
+ <polygon fill="none" stroke="black" points="632.03,-524.91 632.03,-555.71 1087.14,-555.71 1087.14,-524.91 632.03,-524.91"/>
86
+ <text text-anchor="start" x="639.03" y="-537.11" font-family="Arial" font-size="14.00">artifact_instance_id </text>
87
+ <text text-anchor="start" x="763.54" y="-537.11" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
88
+ <polygon fill="none" stroke="black" points="632.03,-494.11 632.03,-524.91 1087.14,-524.91 1087.14,-494.11 632.03,-494.11"/>
89
+ <text text-anchor="start" x="639.03" y="-506.31" font-family="Arial" font-size="14.00">artifact_component_instance_id </text>
90
+ <text text-anchor="start" x="840.6" y="-506.31" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
91
+ </g>
92
+ <!-- artifact_trace_links&#45;&gt;artifact_component_instances -->
93
+ <g id="edge2" class="edge">
94
+ <title>artifact_trace_links:artifact_component_instance_id&#45;&gt;artifact_component_instances:artifact_component_instance_id</title>
95
+ <path fill="none" stroke="black" d="M1098.44,-508.63C1179.45,-493.66 1056.92,-291.91 1154.24,-291.91"/>
96
+ <polygon fill="black" stroke="black" points="1098.44,-508.63 1088.09,-505 1093.13,-509.09 1088.81,-509.45 1088.81,-509.45 1088.81,-509.45 1093.13,-509.09 1088.86,-513.97 1098.44,-508.63"/>
97
+ </g>
98
+ <!-- artifact_validation_result_refs -->
99
+ <g id="node4" class="node">
100
+ <title>artifact_validation_result_refs</title>
101
+ <polygon fill="#efefef" stroke="none" points="1191.5,-586.51 1191.5,-632.51 1491.67,-632.51 1491.67,-586.51 1191.5,-586.51"/>
102
+ <polygon fill="none" stroke="black" points="1191.5,-586.51 1191.5,-632.51 1491.67,-632.51 1491.67,-586.51 1191.5,-586.51"/>
103
+ <text text-anchor="start" x="1198.5" y="-610.31" font-family="Arial Bold" font-size="18.00">artifact_validation_result_refs</text>
104
+ <text text-anchor="start" x="1415.41" y="-610.31" font-family="Arial" font-size="14.00">    </text>
105
+ <text text-anchor="start" x="1446.53" y="-610.31" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
106
+ <text text-anchor="start" x="1218.66" y="-595.91" font-family="Arial" font-size="14.00" fill="#333333">validation 실행 결과의 외부 참조를 관리한다.</text>
107
+ <polygon fill="none" stroke="black" points="1191.5,-555.71 1191.5,-586.51 1491.67,-586.51 1491.67,-555.71 1191.5,-555.71"/>
108
+ <text text-anchor="start" x="1198.5" y="-567.91" font-family="Arial" font-size="14.00">artifact_validation_result_ref_id </text>
109
+ <text text-anchor="start" x="1396.17" y="-567.91" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
110
+ <polygon fill="none" stroke="black" points="1191.5,-524.91 1191.5,-555.71 1491.67,-555.71 1491.67,-524.91 1191.5,-524.91"/>
111
+ <text text-anchor="start" x="1198.5" y="-537.11" font-family="Arial" font-size="14.00">artifact_instance_id </text>
112
+ <text text-anchor="start" x="1323.02" y="-537.11" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
113
+ <polygon fill="none" stroke="black" points="1191.5,-494.11 1191.5,-524.91 1491.67,-524.91 1491.67,-494.11 1191.5,-494.11"/>
114
+ <text text-anchor="start" x="1198.5" y="-506.31" font-family="Arial" font-size="14.00">artifact_component_instance_id </text>
115
+ <text text-anchor="start" x="1400.07" y="-506.31" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
116
+ </g>
117
+ <!-- artifact_validation_result_refs&#45;&gt;artifact_component_instances -->
118
+ <g id="edge3" class="edge">
119
+ <title>artifact_validation_result_refs:artifact_component_instance_id&#45;&gt;artifact_component_instances:artifact_component_instance_id</title>
120
+ <path fill="none" stroke="black" d="M1342.2,-483.01C1352.18,-406.27 1480.82,-475.09 1527.93,-399.51 1553.22,-358.92 1576.75,-291.91 1528.93,-291.91"/>
121
+ <polygon fill="black" stroke="black" points="1342.21,-482.79 1337.11,-492.5 1341.89,-488.12 1341.63,-492.44 1341.63,-492.44 1341.63,-492.44 1341.89,-488.12 1346.1,-493.05 1342.21,-482.79"/>
122
+ </g>
123
+ <!-- artifact_review_decision_refs -->
124
+ <g id="node5" class="node">
125
+ <title>artifact_review_decision_refs</title>
126
+ <polygon fill="#efefef" stroke="none" points="1595.91,-586.51 1595.91,-632.51 2015.26,-632.51 2015.26,-586.51 1595.91,-586.51"/>
127
+ <polygon fill="none" stroke="black" points="1595.91,-586.51 1595.91,-632.51 2015.26,-632.51 2015.26,-586.51 1595.91,-586.51"/>
128
+ <text text-anchor="start" x="1664.01" y="-610.31" font-family="Arial Bold" font-size="18.00">artifact_review_decision_refs</text>
129
+ <text text-anchor="start" x="1877.91" y="-610.31" font-family="Arial" font-size="14.00">    </text>
130
+ <text text-anchor="start" x="1909.02" y="-610.31" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
131
+ <text text-anchor="start" x="1602.91" y="-595.91" font-family="Arial" font-size="14.00" fill="#333333">산출물 instance 또는 component에 대한 검토 결정 외부 참조를 관리한다.</text>
132
+ <polygon fill="none" stroke="black" points="1595.91,-555.71 1595.91,-586.51 2015.26,-586.51 2015.26,-555.71 1595.91,-555.71"/>
133
+ <text text-anchor="start" x="1602.91" y="-567.91" font-family="Arial" font-size="14.00">artifact_review_decision_ref_id </text>
134
+ <text text-anchor="start" x="1799.01" y="-567.91" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
135
+ <polygon fill="none" stroke="black" points="1595.91,-524.91 1595.91,-555.71 2015.26,-555.71 2015.26,-524.91 1595.91,-524.91"/>
136
+ <text text-anchor="start" x="1602.91" y="-537.11" font-family="Arial" font-size="14.00">artifact_instance_id </text>
137
+ <text text-anchor="start" x="1727.42" y="-537.11" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
138
+ <polygon fill="none" stroke="black" points="1595.91,-494.11 1595.91,-524.91 2015.26,-524.91 2015.26,-494.11 1595.91,-494.11"/>
139
+ <text text-anchor="start" x="1602.91" y="-506.31" font-family="Arial" font-size="14.00">artifact_component_instance_id </text>
140
+ <text text-anchor="start" x="1804.48" y="-506.31" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
141
+ </g>
142
+ <!-- artifact_review_decision_refs&#45;&gt;artifact_component_instances -->
143
+ <g id="edge4" class="edge">
144
+ <title>artifact_review_decision_refs:artifact_component_instance_id&#45;&gt;artifact_component_instances:artifact_component_instance_id</title>
145
+ <path fill="none" stroke="black" d="M1584.61,-508.63C1503.62,-493.66 1626.24,-291.91 1528.93,-291.91"/>
146
+ <polygon fill="black" stroke="black" points="1584.61,-508.63 1594.19,-513.97 1589.92,-509.09 1594.24,-509.45 1594.24,-509.45 1594.24,-509.45 1589.92,-509.09 1594.96,-505 1584.61,-508.63"/>
147
+ </g>
148
+ <!-- artifact_status_events -->
149
+ <g id="node6" class="node">
150
+ <title>artifact_status_events</title>
151
+ <polygon fill="#efefef" stroke="none" points="2120.13,-601.91 2120.13,-647.91 2485.04,-647.91 2485.04,-601.91 2120.13,-601.91"/>
152
+ <polygon fill="none" stroke="black" points="2120.13,-601.91 2120.13,-647.91 2485.04,-647.91 2485.04,-601.91 2120.13,-601.91"/>
153
+ <text text-anchor="start" x="2189.99" y="-625.71" font-family="Arial Bold" font-size="18.00">artifact_status_events</text>
154
+ <text text-anchor="start" x="2345.93" y="-625.71" font-family="Arial" font-size="14.00">    </text>
155
+ <text text-anchor="start" x="2377.05" y="-625.71" font-family="Arial" font-size="14.00" fill="#666666">[table]</text>
156
+ <text text-anchor="start" x="2127.13" y="-611.31" font-family="Arial" font-size="14.00" fill="#333333">산출물 instance 또는 component의 상태 전이 이력을 관리한다.</text>
157
+ <polygon fill="none" stroke="black" points="2120.13,-571.11 2120.13,-601.91 2485.04,-601.91 2485.04,-571.11 2120.13,-571.11"/>
158
+ <text text-anchor="start" x="2127.13" y="-583.31" font-family="Arial" font-size="14.00">artifact_status_event_id </text>
159
+ <text text-anchor="start" x="2278.89" y="-583.31" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
160
+ <polygon fill="none" stroke="black" points="2120.13,-540.31 2120.13,-571.11 2485.04,-571.11 2485.04,-540.31 2120.13,-540.31"/>
161
+ <text text-anchor="start" x="2127.13" y="-552.51" font-family="Arial" font-size="14.00">artifact_instance_id </text>
162
+ <text text-anchor="start" x="2251.65" y="-552.51" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
163
+ <polygon fill="none" stroke="black" points="2120.13,-509.51 2120.13,-540.31 2485.04,-540.31 2485.04,-509.51 2120.13,-509.51"/>
164
+ <text text-anchor="start" x="2127.13" y="-521.71" font-family="Arial" font-size="14.00">artifact_component_instance_id </text>
165
+ <text text-anchor="start" x="2328.71" y="-521.71" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
166
+ <polygon fill="none" stroke="black" points="2120.13,-478.71 2120.13,-509.51 2485.04,-509.51 2485.04,-478.71 2120.13,-478.71"/>
167
+ <text text-anchor="start" x="2127.13" y="-490.91" font-family="Arial" font-size="14.00">artifact_review_decision_ref_id </text>
168
+ <text text-anchor="start" x="2323.24" y="-490.91" font-family="Arial" font-size="14.00" fill="#666666">[CHAR(36)]</text>
169
+ </g>
170
+ <!-- artifact_status_events&#45;&gt;artifact_component_instances -->
171
+ <g id="edge5" class="edge">
172
+ <title>artifact_status_events:artifact_component_instance_id&#45;&gt;artifact_component_instances:artifact_component_instance_id</title>
173
+ <path fill="none" stroke="black" d="M2108.91,-523.61C2078.05,-514.59 2100.85,-461.02 2067.59,-435.51 1969.28,-360.13 1652.81,-291.91 1528.93,-291.91"/>
174
+ <polygon fill="black" stroke="black" points="2108.88,-523.6 2118.23,-529.33 2114.17,-524.28 2118.47,-524.83 2118.47,-524.83 2118.47,-524.83 2114.17,-524.28 2119.37,-520.4 2108.88,-523.6"/>
175
+ </g>
176
+ </g>
177
+ </svg>