@soddong/agentic-domain-document 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 (110) hide show
  1. package/.tbls.yml +201 -0
  2. package/CHANGELOG.md +75 -0
  3. package/README.md +342 -0
  4. package/agent/agent.manifest.json +8 -0
  5. package/agent/capabilities/document-authoring.json +21 -0
  6. package/agent/capabilities/document-block.json +22 -0
  7. package/agent/capabilities/document-toc.json +21 -0
  8. package/agent/capabilities/document-validation.json +21 -0
  9. package/agent/examples/document-quality-examples.md +153 -0
  10. package/agent/examples/examples.md +172 -0
  11. package/agent/guides/10-document-authoring-guide.md +28 -0
  12. package/agent/guides/20-domain-boundary-guide.md +41 -0
  13. package/agent/guides/30-authoring-policy-guide.md +40 -0
  14. package/agent/guides/40-toc-authoring-guide.md +73 -0
  15. package/agent/guides/50-content-block-guide.md +57 -0
  16. package/agent/guides/51-paragraph-authoring-guide.md +68 -0
  17. package/agent/guides/52-table-authoring-guide.md +73 -0
  18. package/agent/guides/53-diagram-figure-authoring-guide.md +75 -0
  19. package/agent/guides/70-korean-writing-style-guide.md +65 -0
  20. package/agent/instructions/00-runtime-behavior.md +17 -0
  21. package/agent/instructions/10-scope-and-boundary.md +27 -0
  22. package/agent/instructions/20-task-procedures.md +69 -0
  23. package/agent/instructions/30-must-and-must-not.md +34 -0
  24. package/agent/resource-index.json +185 -0
  25. package/agent/resource-selection.json +205 -0
  26. package/agent/routing.json +34 -0
  27. package/agent/sources/reference-mapping.md +53 -0
  28. package/agent/validation/document-validation-rules.md +73 -0
  29. package/dist/agent/document-agent-contribution.d.ts +15 -0
  30. package/dist/agent/document-agent-contribution.d.ts.map +1 -0
  31. package/dist/agent/document-agent-contribution.js +39 -0
  32. package/dist/agent/document-agent-contribution.js.map +1 -0
  33. package/dist/agent/index.d.ts +2 -0
  34. package/dist/agent/index.d.ts.map +1 -0
  35. package/dist/agent/index.js +2 -0
  36. package/dist/agent/index.js.map +1 -0
  37. package/dist/database.d.ts +8 -0
  38. package/dist/database.d.ts.map +1 -0
  39. package/dist/database.js +76 -0
  40. package/dist/database.js.map +1 -0
  41. package/dist/import-profile.d.ts +48 -0
  42. package/dist/import-profile.d.ts.map +1 -0
  43. package/dist/import-profile.js +35 -0
  44. package/dist/import-profile.js.map +1 -0
  45. package/dist/index.d.ts +17 -0
  46. package/dist/index.d.ts.map +1 -0
  47. package/dist/index.js +15 -0
  48. package/dist/index.js.map +1 -0
  49. package/dist/markdown-importer.d.ts +14 -0
  50. package/dist/markdown-importer.d.ts.map +1 -0
  51. package/dist/markdown-importer.js +446 -0
  52. package/dist/markdown-importer.js.map +1 -0
  53. package/dist/reader.d.ts +17 -0
  54. package/dist/reader.d.ts.map +1 -0
  55. package/dist/reader.js +332 -0
  56. package/dist/reader.js.map +1 -0
  57. package/dist/repositories.d.ts +118 -0
  58. package/dist/repositories.d.ts.map +1 -0
  59. package/dist/repositories.js +388 -0
  60. package/dist/repositories.js.map +1 -0
  61. package/dist/service.d.ts +35 -0
  62. package/dist/service.d.ts.map +1 -0
  63. package/dist/service.js +327 -0
  64. package/dist/service.js.map +1 -0
  65. package/dist/types.d.ts +280 -0
  66. package/dist/types.d.ts.map +1 -0
  67. package/dist/types.js +2 -0
  68. package/dist/types.js.map +1 -0
  69. package/dist/validators.d.ts +4 -0
  70. package/dist/validators.d.ts.map +1 -0
  71. package/dist/validators.js +255 -0
  72. package/dist/validators.js.map +1 -0
  73. package/docs/build.md +76 -0
  74. package/docs/configuration.md +34 -0
  75. package/docs/delivery.md +66 -0
  76. package/docs/operations.md +53 -0
  77. package/docs/publishing.md +69 -0
  78. package/docs/schema/generated/README.md +30 -0
  79. package/docs/schema/generated/document_annotations.md +119 -0
  80. package/docs/schema/generated/document_annotations.svg +60 -0
  81. package/docs/schema/generated/document_blocks.md +97 -0
  82. package/docs/schema/generated/document_blocks.svg +60 -0
  83. package/docs/schema/generated/document_change_events.md +135 -0
  84. package/docs/schema/generated/document_change_events.svg +88 -0
  85. package/docs/schema/generated/document_code_groups.md +70 -0
  86. package/docs/schema/generated/document_code_groups.svg +52 -0
  87. package/docs/schema/generated/document_codes.md +88 -0
  88. package/docs/schema/generated/document_codes.svg +52 -0
  89. package/docs/schema/generated/document_contents.md +87 -0
  90. package/docs/schema/generated/document_contents.svg +116 -0
  91. package/docs/schema/generated/document_documents.md +126 -0
  92. package/docs/schema/generated/document_documents.svg +222 -0
  93. package/docs/schema/generated/document_node_taxonomies.md +84 -0
  94. package/docs/schema/generated/document_node_taxonomies.svg +80 -0
  95. package/docs/schema/generated/document_node_taxonomy_levels.md +91 -0
  96. package/docs/schema/generated/document_node_taxonomy_levels.svg +52 -0
  97. package/docs/schema/generated/document_nodes.md +120 -0
  98. package/docs/schema/generated/document_nodes.svg +98 -0
  99. package/docs/schema/generated/document_revisions.md +107 -0
  100. package/docs/schema/generated/document_revisions.svg +116 -0
  101. package/docs/schema/generated/document_versions.md +126 -0
  102. package/docs/schema/generated/document_versions.svg +88 -0
  103. package/docs/schema/generated/schema.json +2534 -0
  104. package/docs/schema/generated/schema.mmd +170 -0
  105. package/docs/schema/generated/schema.svg +331 -0
  106. package/docs/schema/migrations.md +40 -0
  107. package/docs/usage.md +360 -0
  108. package/docs/validation-rules.md +69 -0
  109. package/package.json +30 -0
  110. package/src/database/migrations/0001_document_base.sql +753 -0
@@ -0,0 +1,255 @@
1
+ const TEXT_BLOCK_TYPES = new Set(["paragraph", "quote", "code", "callout"]);
2
+ const JSON_BLOCK_TYPES = new Set(["table", "figure", "diagram", "list"]);
3
+ const DIAGRAM_NOTATIONS = new Set(["mermaid", "plantuml", "drawio", "svg"]);
4
+ function isRecord(value) {
5
+ return value !== null && typeof value === "object" && !Array.isArray(value);
6
+ }
7
+ function nonEmptyString(value) {
8
+ return typeof value === "string" && value.trim().length > 0;
9
+ }
10
+ function issue(input) {
11
+ return {
12
+ severity: input.severity ?? "error",
13
+ ruleId: input.ruleId,
14
+ targetType: input.targetType,
15
+ targetId: input.targetId,
16
+ message: input.message,
17
+ details: input.details
18
+ };
19
+ }
20
+ function parseJson(value) {
21
+ if (typeof value !== "string" || value.length === 0) {
22
+ return undefined;
23
+ }
24
+ return JSON.parse(value);
25
+ }
26
+ function getDocument(db, documentId) {
27
+ return db.prepare(`SELECT * FROM document_documents WHERE document_id = ?`).get(documentId);
28
+ }
29
+ function listNodes(db, documentId) {
30
+ return db.prepare(`SELECT * FROM document_nodes WHERE document_id = ? ORDER BY node_level, sort_order`).all(documentId).map((row) => ({
31
+ nodeId: row.node_id,
32
+ documentId: row.document_id,
33
+ parentNodeId: typeof row.parent_node_id === "string" ? row.parent_node_id : undefined,
34
+ nodeLevel: row.node_level,
35
+ nodeRoleCode: row.node_role_code,
36
+ title: row.title,
37
+ tocVisibility: row.toc_visibility,
38
+ numberingPolicyCode: row.numbering_policy_code,
39
+ numberingOverride: typeof row.numbering_override === "string" ? row.numbering_override : undefined,
40
+ sortOrder: row.sort_order,
41
+ createdAt: row.created_at,
42
+ updatedAt: row.updated_at,
43
+ metadata: parseJson(row.metadata_json)
44
+ }));
45
+ }
46
+ function listBlocks(db, documentId) {
47
+ return db
48
+ .prepare(`SELECT b.*
49
+ FROM document_blocks b
50
+ JOIN document_contents c ON c.content_id = b.content_id
51
+ WHERE c.document_id = ?
52
+ ORDER BY c.node_id, b.sort_order`)
53
+ .all(documentId).map((row) => ({
54
+ blockId: row.block_id,
55
+ contentId: row.content_id,
56
+ blockTypeCode: row.block_type_code,
57
+ sortOrder: row.sort_order,
58
+ contentText: typeof row.content_text === "string" ? row.content_text : undefined,
59
+ contentJson: parseJson(row.content_json),
60
+ createdAt: row.created_at,
61
+ updatedAt: row.updated_at,
62
+ metadata: parseJson(row.metadata_json)
63
+ }));
64
+ }
65
+ function hasTaxonomyLevel(db, taxonomyId, level) {
66
+ const row = db
67
+ .prepare(`SELECT taxonomy_level_id FROM document_node_taxonomy_levels WHERE taxonomy_id = ? AND node_level = ?`)
68
+ .get(taxonomyId, level);
69
+ return row !== undefined;
70
+ }
71
+ function listDepth(value, depth = 1) {
72
+ if (value === null || typeof value !== "object") {
73
+ return depth;
74
+ }
75
+ const record = value;
76
+ const children = Array.isArray(record.children) ? record.children : Array.isArray(record.items) ? record.items : [];
77
+ if (children.length === 0) {
78
+ return depth;
79
+ }
80
+ return Math.max(...children.map((child) => listDepth(child, depth + 1)));
81
+ }
82
+ function validateBlockPayload(block) {
83
+ const issues = [];
84
+ if (TEXT_BLOCK_TYPES.has(block.blockTypeCode) && (block.contentText === undefined || block.contentText.trim() === "")) {
85
+ issues.push(issue({
86
+ ruleId: "DOCUMENT.BLOCK.TEXT_REQUIRED",
87
+ targetType: "block",
88
+ targetId: block.blockId,
89
+ message: `${block.blockTypeCode} block은 contentText가 필요합니다.`
90
+ }));
91
+ }
92
+ if (JSON_BLOCK_TYPES.has(block.blockTypeCode) && block.contentJson === undefined) {
93
+ issues.push(issue({
94
+ ruleId: "DOCUMENT.BLOCK.JSON_REQUIRED",
95
+ targetType: "block",
96
+ targetId: block.blockId,
97
+ message: `${block.blockTypeCode} block은 contentJson이 필요합니다.`
98
+ }));
99
+ }
100
+ if (block.blockTypeCode === "diagram" && block.contentJson !== undefined) {
101
+ const notation = isRecord(block.contentJson) ? block.contentJson.notation : undefined;
102
+ if (typeof notation !== "string" || !DIAGRAM_NOTATIONS.has(notation)) {
103
+ issues.push(issue({
104
+ ruleId: "DOCUMENT.BLOCK.DIAGRAM_NOTATION",
105
+ targetType: "block",
106
+ targetId: block.blockId,
107
+ message: "diagram block은 mermaid, plantuml, drawio, svg 중 하나의 notation이 필요합니다.",
108
+ details: { notation }
109
+ }));
110
+ }
111
+ if (isRecord(block.contentJson) && !nonEmptyString(block.contentJson.sourceText) && !nonEmptyString(block.contentJson.sourcePath) && !nonEmptyString(block.contentJson.path)) {
112
+ issues.push(issue({
113
+ ruleId: "DOCUMENT.BLOCK.DIAGRAM_SOURCE",
114
+ targetType: "block",
115
+ targetId: block.blockId,
116
+ message: "diagram block은 sourceText, sourcePath, path 중 하나가 필요합니다."
117
+ }));
118
+ }
119
+ }
120
+ if (block.blockTypeCode === "table" && block.contentJson !== undefined) {
121
+ const columns = isRecord(block.contentJson) ? block.contentJson.columns : undefined;
122
+ const rows = isRecord(block.contentJson) ? block.contentJson.rows : undefined;
123
+ if (!Array.isArray(columns) || columns.length === 0) {
124
+ issues.push(issue({
125
+ ruleId: "DOCUMENT.BLOCK.TABLE_COLUMNS",
126
+ targetType: "block",
127
+ targetId: block.blockId,
128
+ message: "table block은 하나 이상의 column이 필요합니다."
129
+ }));
130
+ }
131
+ if (!Array.isArray(rows)) {
132
+ issues.push(issue({
133
+ ruleId: "DOCUMENT.BLOCK.TABLE_ROWS",
134
+ targetType: "block",
135
+ targetId: block.blockId,
136
+ message: "table block은 rows 배열이 필요합니다."
137
+ }));
138
+ }
139
+ if (isRecord(block.contentJson) && !nonEmptyString(block.contentJson.caption) && !nonEmptyString(block.contentJson.rawCaption)) {
140
+ issues.push(issue({
141
+ ruleId: "DOCUMENT.BLOCK.TABLE_CAPTION",
142
+ severity: "warning",
143
+ targetType: "block",
144
+ targetId: block.blockId,
145
+ message: "table block에 caption이 없습니다."
146
+ }));
147
+ }
148
+ }
149
+ if (block.blockTypeCode === "figure" && block.contentJson !== undefined && isRecord(block.contentJson)) {
150
+ if (!nonEmptyString(block.contentJson.sourcePath) && !nonEmptyString(block.contentJson.path)) {
151
+ issues.push(issue({
152
+ ruleId: "DOCUMENT.BLOCK.FIGURE_SOURCE",
153
+ targetType: "block",
154
+ targetId: block.blockId,
155
+ message: "figure block은 sourcePath 또는 path가 필요합니다."
156
+ }));
157
+ }
158
+ if (!nonEmptyString(block.contentJson.caption) && !nonEmptyString(block.contentJson.rawCaption) && !nonEmptyString(block.contentJson.altText)) {
159
+ issues.push(issue({
160
+ ruleId: "DOCUMENT.BLOCK.FIGURE_CAPTION",
161
+ severity: "warning",
162
+ targetType: "block",
163
+ targetId: block.blockId,
164
+ message: "figure block에 caption 또는 altText가 없습니다."
165
+ }));
166
+ }
167
+ }
168
+ if (block.blockTypeCode === "list" && block.contentJson !== undefined) {
169
+ const depth = listDepth(block.contentJson);
170
+ if (depth > 3) {
171
+ issues.push(issue({
172
+ ruleId: "DOCUMENT.BLOCK.LIST_DEPTH",
173
+ targetType: "block",
174
+ targetId: block.blockId,
175
+ message: "list block의 중첩 깊이는 3을 넘을 수 없습니다.",
176
+ details: { depth }
177
+ }));
178
+ }
179
+ }
180
+ return issues;
181
+ }
182
+ export function validateDocument(db, documentId) {
183
+ const document = getDocument(db, documentId);
184
+ if (document === undefined) {
185
+ return {
186
+ valid: false,
187
+ issues: [
188
+ issue({
189
+ ruleId: "DOCUMENT.EXISTS",
190
+ targetType: "document",
191
+ targetId: documentId,
192
+ message: "문서를 찾을 수 없습니다."
193
+ })
194
+ ]
195
+ };
196
+ }
197
+ const taxonomyId = document.taxonomy_id;
198
+ const issues = [];
199
+ const nodes = listNodes(db, documentId);
200
+ const nodeById = new Map(nodes.map((node) => [node.nodeId, node]));
201
+ for (const node of nodes) {
202
+ if (!hasTaxonomyLevel(db, taxonomyId, node.nodeLevel)) {
203
+ issues.push(issue({
204
+ ruleId: "DOCUMENT.NODE.TAXONOMY_LEVEL",
205
+ targetType: "node",
206
+ targetId: node.nodeId,
207
+ message: `taxonomy에 정의되지 않은 node level입니다: ${node.nodeLevel}`,
208
+ details: { nodeLevel: node.nodeLevel, taxonomyId }
209
+ }));
210
+ }
211
+ if (node.parentNodeId !== undefined) {
212
+ const parent = nodeById.get(node.parentNodeId);
213
+ if (parent === undefined) {
214
+ issues.push(issue({
215
+ ruleId: "DOCUMENT.NODE.PARENT_EXISTS",
216
+ targetType: "node",
217
+ targetId: node.nodeId,
218
+ message: "상위 node를 찾을 수 없습니다.",
219
+ details: { parentNodeId: node.parentNodeId }
220
+ }));
221
+ }
222
+ else if (node.nodeLevel <= parent.nodeLevel) {
223
+ issues.push(issue({
224
+ ruleId: "DOCUMENT.NODE.PARENT_LEVEL",
225
+ targetType: "node",
226
+ targetId: node.nodeId,
227
+ message: "하위 node level은 상위 node level보다 커야 합니다.",
228
+ details: { parentLevel: parent.nodeLevel, nodeLevel: node.nodeLevel }
229
+ }));
230
+ }
231
+ let ancestor = parent;
232
+ while (ancestor !== undefined) {
233
+ if (ancestor.tocVisibility === "exclude" && node.tocVisibility === "include") {
234
+ issues.push(issue({
235
+ ruleId: "DOCUMENT.TOC.EXCLUDED_ANCESTOR",
236
+ targetType: "node",
237
+ targetId: node.nodeId,
238
+ message: "상위 node가 TOC에서 제외된 경우 하위 node만 TOC에 포함할 수 없습니다.",
239
+ details: { ancestorNodeId: ancestor.nodeId }
240
+ }));
241
+ break;
242
+ }
243
+ ancestor = ancestor.parentNodeId === undefined ? undefined : nodeById.get(ancestor.parentNodeId);
244
+ }
245
+ }
246
+ }
247
+ for (const block of listBlocks(db, documentId)) {
248
+ issues.push(...validateBlockPayload(block));
249
+ }
250
+ return {
251
+ valid: issues.every((validationIssue) => validationIssue.severity !== "error"),
252
+ issues
253
+ };
254
+ }
255
+ //# sourceMappingURL=validators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"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"}
package/docs/build.md ADDED
@@ -0,0 +1,76 @@
1
+ # @soddong/agentic-domain-document 개발 및 빌드 매뉴얼
2
+
3
+ ## 1. 목적
4
+
5
+ 본 문서는 구축 담당자가 `@soddong/agentic-domain-document` 패키지를 개발, 빌드, 로컬 검증하기 위해 알아야 하는 내용을 정리합니다.
6
+
7
+ ## 2. 패키지 정보
8
+
9
+ | 항목 | 값 |
10
+ | --- | --- |
11
+ | package | `@soddong/agentic-domain-document` |
12
+ | current version | `0.7.0` |
13
+ | layer | Domain |
14
+ | workspace | `packages/agentic-domain-document` |
15
+
16
+ ## 3. 소스 구조
17
+
18
+ ```text
19
+ packages/agentic-domain-document/
20
+ package.json
21
+ README.md
22
+ CHANGELOG.md
23
+ tsconfig.json
24
+ src/
25
+ index.ts
26
+ import-profile.ts
27
+ markdown-importer.ts
28
+ reader.ts
29
+ validators.ts
30
+ database/
31
+ migrations/
32
+ 0001_document_base.sql
33
+ agent/
34
+ agent.manifest.json
35
+ resource-index.json
36
+ resource-selection.json
37
+ capabilities/
38
+ instructions/
39
+ guides/
40
+ examples/
41
+ validation/
42
+ sources/
43
+ docs/
44
+ usage.md
45
+ configuration.md
46
+ build.md
47
+ publishing.md
48
+ delivery.md
49
+ operations.md
50
+ schema/
51
+ generated/
52
+ migrations.md
53
+ ```
54
+
55
+ ## 4. 개발 검증
56
+
57
+ repository root에서 실행합니다.
58
+
59
+ ```bash
60
+ npm run schema:doc:agentic-domain-document
61
+ npm run build --workspace @soddong/agentic-domain-document
62
+ npm run typecheck --workspace @soddong/agentic-domain-document
63
+ npm run dev:test:agentic-domain-document
64
+ npm run dev:test:document-artifact-standard-integration
65
+ npm pack --workspace @soddong/agentic-domain-document --dry-run --cache /private/tmp/agentic-npm-cache
66
+ ```
67
+
68
+ ## 5. 통합 검증
69
+
70
+ `0.7.0`에서는 `@soddong/agentic-domain-artifact-standard`가 제공하는 `DocumentImportProfile`을 받아 Markdown import에 적용하는 통합 dev-test를 함께 실행합니다.
71
+
72
+ ```bash
73
+ npm run dev:test:document-artifact-standard-integration
74
+ ```
75
+
76
+ 이 검증은 `@soddong/agentic-domain-document`가 `artifact-standard`를 직접 의존한다는 뜻이 아니라, consumer 또는 integration layer가 profile을 전달하는 contract가 동작하는지 확인하는 목적입니다.
@@ -0,0 +1,34 @@
1
+ # @soddong/agentic-domain-document 설정 원칙
2
+
3
+ ## 1. 목적
4
+
5
+ 본 문서는 `@soddong/agentic-domain-document`가 직접 소유하는 설정과 consumer project가 소유해야 하는 설정을 구분합니다.
6
+
7
+ ## 2. 원칙
8
+
9
+ `@soddong/agentic-domain-document`는 환경별 runtime 값을 직접 소유하지 않습니다.
10
+
11
+ ```text
12
+ @soddong/agentic-domain-document
13
+ - document domain schema
14
+ - migration
15
+ - repository/service/validator
16
+ - fixture
17
+ - docs
18
+
19
+ consumer project
20
+ - runtime database path
21
+ - registry URL
22
+ - authentication
23
+ - environment variables
24
+ ```
25
+
26
+ ## 3. DB 기준
27
+
28
+ | 구분 | 기준 |
29
+ | --- | --- |
30
+ | logical schema | `document` |
31
+ | SQLite table prefix | `document_` |
32
+ | PostgreSQL mapping | 향후 별도 프로세스에서 적용 |
33
+
34
+ SQLite table prefix는 로컬 SQLite에 schema namespace가 없기 때문에 사용합니다.
@@ -0,0 +1,66 @@
1
+ # @soddong/agentic-domain-document Delivery 매뉴얼
2
+
3
+ ## 1. 목적
4
+
5
+ 본 문서는 `@soddong/agentic-domain-document` 패키지를 구축 환경에서 운영환경으로 전달할 때 필요한 package-specific delivery 기준을 정의합니다.
6
+
7
+ ## 2. Delivery 범위
8
+
9
+ | 구분 | 포함 여부 | 설명 |
10
+ | --- | --- | --- |
11
+ | npm package publish | 포함 | 공식 npm registry에 배포 |
12
+ | 운영환경 install 검증 | 포함 | 공식 npm registry 기준 설치 확인 |
13
+ | source repository 전체 전달 | 제외 | npm package 기준 전달 |
14
+ | 인증 정보 전달 | 제외 | 환경별 `.npmrc` 또는 보안 정책으로 관리 |
15
+ | registry URL 하드코딩 | 제외 | 환경 설정으로 제공 |
16
+
17
+ ## 3. Package에 포함되는 파일
18
+
19
+ `0.7.0` 배포 패키지는 다음 파일을 포함해야 합니다.
20
+
21
+ ```text
22
+ package/
23
+ package.json
24
+ README.md
25
+ CHANGELOG.md
26
+ dist/
27
+ index.js
28
+ index.d.ts
29
+ agent/
30
+ agent.manifest.json
31
+ routing.json
32
+ resource-index.json
33
+ resource-selection.json
34
+ capabilities/
35
+ instructions/
36
+ guides/
37
+ examples/
38
+ validation/
39
+ sources/
40
+ docs/
41
+ usage.md
42
+ configuration.md
43
+ build.md
44
+ publishing.md
45
+ delivery.md
46
+ operations.md
47
+ schema/
48
+ migrations.md
49
+ generated/
50
+ src/
51
+ database/
52
+ migrations/
53
+ 0001_document_base.sql
54
+ ```
55
+
56
+ ## 4. 운영환경 전달 기준
57
+
58
+ 운영환경에는 다음 정보만 전달합니다.
59
+
60
+ ```text
61
+ - package name: @soddong/agentic-domain-document
62
+ - install version: 0.7.0
63
+ - 공식 npm registry 설정 방법
64
+ - 설치 및 import 확인 절차
65
+ - 문제 발생 시 확인 항목
66
+ ```
@@ -0,0 +1,53 @@
1
+ # @soddong/agentic-domain-document 운영환경 매뉴얼
2
+
3
+ ## 1. 목적
4
+
5
+ 본 문서는 운영환경 담당자 또는 사용자가 `@soddong/agentic-domain-document`를 설치하고 기본 import 상태를 확인하는 절차를 정의합니다.
6
+
7
+ ## 2. 운영환경 전제
8
+
9
+ | 항목 | 기준 |
10
+ | --- | --- |
11
+ | 네트워크 | 공식 npm registry 접근 가능 |
12
+ | NPM Registry | `https://registry.npmjs.org/` |
13
+ | package | `@soddong/agentic-domain-document` |
14
+
15
+ ## 3. Registry 확인
16
+
17
+ ```bash
18
+ npm config get registry
19
+ ```
20
+
21
+ 기대 결과:
22
+
23
+ ```text
24
+ https://registry.npmjs.org/
25
+ ```
26
+
27
+ ## 4. 설치
28
+
29
+ ```bash
30
+ npm install @soddong/agentic-domain-document@0.7.0
31
+ ```
32
+
33
+ ## 5. 실행 확인
34
+
35
+ ```bash
36
+ node -e "import('@soddong/agentic-domain-document').then(m => console.log(m.agenticDomainDocumentPackage.logicalSchema))"
37
+ ```
38
+
39
+ 기대 결과:
40
+
41
+ ```text
42
+ document
43
+ ```
44
+
45
+ ## 6. 장애 확인
46
+
47
+ | 증상 | 확인 |
48
+ | --- | --- |
49
+ | package not found | 공식 npm registry publish 여부 확인 |
50
+ | authentication required | 사용자 홈 `.npmrc` 인증 정보 확인 |
51
+ | 사설 registry 접근 시도 | `npm config get registry` 결과 확인 |
52
+ | import 실패 | `node_modules/agentic-domain-document/dist/index.js` 존재 여부 확인 |
53
+ | 버전 불일치 | `npm view @soddong/agentic-domain-document version --registry=https://registry.npmjs.org/ --prefer-online` 결과 확인 |
@@ -0,0 +1,69 @@
1
+ # @soddong/agentic-domain-document Publishing 매뉴얼
2
+
3
+ ## 1. 목적
4
+
5
+ 본 문서는 `@soddong/agentic-domain-document` 패키지를 NPM Registry에 publish하는 절차를 정의합니다.
6
+
7
+ ## 2. 전제
8
+
9
+ | 항목 | 기준 |
10
+ | --- | --- |
11
+ | package | `@soddong/agentic-domain-document` |
12
+ | current version | `0.7.0` |
13
+ | workspace | `packages/agentic-domain-document` |
14
+ | publish registry | `https://registry.npmjs.org/` |
15
+ | install registry | `https://registry.npmjs.org/` |
16
+
17
+ ## 3. Publish 전 검증
18
+
19
+ repository root에서 실행합니다.
20
+
21
+ ```bash
22
+ npm run build --workspace @soddong/agentic-domain-document
23
+ npm run typecheck --workspace @soddong/agentic-domain-document
24
+ npm pack --workspace @soddong/agentic-domain-document --dry-run --cache /private/tmp/agentic-npm-cache
25
+ ```
26
+
27
+ ## 4. Publish
28
+
29
+ `package.json`에는 registry URL을 고정하지 않습니다.
30
+
31
+ ```bash
32
+ npm publish --workspace @soddong/agentic-domain-document --registry=https://registry.npmjs.org/ --access public
33
+ ```
34
+
35
+ Windows PowerShell:
36
+
37
+ ```powershell
38
+ npm publish --workspace @soddong/agentic-domain-document --registry=https://registry.npmjs.org/ --access public
39
+ ```
40
+
41
+ ## 5. Publish 검증
42
+
43
+ ```bash
44
+ npm view @soddong/agentic-domain-document version --registry=https://registry.npmjs.org/ --prefer-online
45
+ ```
46
+
47
+ 기대 결과:
48
+
49
+ ```text
50
+ 0.7.0
51
+ ```
52
+
53
+ ## 6. 사용자 프로젝트 설치 검증
54
+
55
+ ```bash
56
+ TEST_DIR=/private/tmp/agentic-domain-document-consumer-test
57
+ rm -rf "$TEST_DIR"
58
+ mkdir -p "$TEST_DIR"
59
+ cd "$TEST_DIR"
60
+ npm init -y
61
+ npm install @soddong/agentic-domain-document@0.7.0 --registry=https://registry.npmjs.org/ --prefer-online
62
+ node -e "import('@soddong/agentic-domain-document').then(m => console.log(m.agenticDomainDocumentPackage.logicalSchema))"
63
+ ```
64
+
65
+ 기대 결과:
66
+
67
+ ```text
68
+ document
69
+ ```
@@ -0,0 +1,30 @@
1
+ # agentic-domain-document
2
+
3
+ ## Description
4
+
5
+ Agentic Platform document domain database.
6
+
7
+ ## Tables
8
+
9
+ | Name | Columns | Comment | Type |
10
+ | ----------------------------------------------------------------- | ------- | ---------------------------------------------------------------- | ----- |
11
+ | [document_code_groups](document_code_groups.md) | 7 | 코드 그룹을 정의한다. | table |
12
+ | [document_codes](document_codes.md) | 9 | 코드 그룹별 코드 값을 정의한다. | table |
13
+ | [document_node_taxonomies](document_node_taxonomies.md) | 9 | 문서 유형별 node level 해석 정책을 정의한다. | table |
14
+ | [document_node_taxonomy_levels](document_node_taxonomy_levels.md) | 9 | taxonomy별 node level 라벨, 번호 정책, counter scope를 정의한다. | table |
15
+ | [document_documents](document_documents.md) | 15 | 문서 단위 메타데이터, 작성자, taxonomy, 상태를 관리한다. | table |
16
+ | [document_nodes](document_nodes.md) | 13 | 문서의 계층 node tree를 관리한다. | table |
17
+ | [document_contents](document_contents.md) | 6 | 특정 document node에 붙는 block collection을 관리한다. | table |
18
+ | [document_blocks](document_blocks.md) | 9 | 문서 본문 표현 block을 관리한다. | table |
19
+ | [document_annotations](document_annotations.md) | 14 | 문서 본문 밖의 note annotation을 관리한다. | table |
20
+ | [document_revisions](document_revisions.md) | 11 | 하나 이상의 변경 이벤트를 묶는 의미 있는 변경 단위를 관리한다. | table |
21
+ | [document_change_events](document_change_events.md) | 13 | revision에 속하는 로그성 변경 이벤트를 관리한다. | table |
22
+ | [document_versions](document_versions.md) | 13 | 검토/승인/배포 기준본 snapshot을 관리한다. | table |
23
+
24
+ ## Relations
25
+
26
+ ![er](schema.svg)
27
+
28
+ ---
29
+
30
+ > Generated by [tbls](https://github.com/k1LoW/tbls)