@soddong/agentic-domain-methodology 0.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/.tbls.yml +64 -0
  2. package/CHANGELOG.md +97 -0
  3. package/README.md +501 -0
  4. package/dist/database.d.ts +8 -0
  5. package/dist/database.d.ts.map +1 -0
  6. package/dist/database.js +76 -0
  7. package/dist/database.js.map +1 -0
  8. package/dist/fixtures.d.ts +13 -0
  9. package/dist/fixtures.d.ts.map +1 -0
  10. package/dist/fixtures.js +413 -0
  11. package/dist/fixtures.js.map +1 -0
  12. package/dist/index.d.ts +31 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js +19 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/repositories.d.ts +54 -0
  17. package/dist/repositories.d.ts.map +1 -0
  18. package/dist/repositories.js +652 -0
  19. package/dist/repositories.js.map +1 -0
  20. package/dist/seed-apply.d.ts +20 -0
  21. package/dist/seed-apply.d.ts.map +1 -0
  22. package/dist/seed-apply.js +728 -0
  23. package/dist/seed-apply.js.map +1 -0
  24. package/dist/service.d.ts +107 -0
  25. package/dist/service.d.ts.map +1 -0
  26. package/dist/service.js +225 -0
  27. package/dist/service.js.map +1 -0
  28. package/dist/types.d.ts +356 -0
  29. package/dist/types.d.ts.map +1 -0
  30. package/dist/types.js +2 -0
  31. package/dist/types.js.map +1 -0
  32. package/dist/validators.d.ts +17 -0
  33. package/dist/validators.d.ts.map +1 -0
  34. package/dist/validators.js +297 -0
  35. package/dist/validators.js.map +1 -0
  36. package/docs/build.md +47 -0
  37. package/docs/configuration.md +33 -0
  38. package/docs/delivery.md +52 -0
  39. package/docs/operations.md +55 -0
  40. package/docs/publishing.md +84 -0
  41. package/docs/schema/generated/README.md +39 -0
  42. package/docs/schema/generated/methodology_activities.md +121 -0
  43. package/docs/schema/generated/methodology_activities.svg +143 -0
  44. package/docs/schema/generated/methodology_activity_artifact_requirements.md +129 -0
  45. package/docs/schema/generated/methodology_activity_artifact_requirements.svg +52 -0
  46. package/docs/schema/generated/methodology_activity_criteria.md +112 -0
  47. package/docs/schema/generated/methodology_activity_criteria.svg +52 -0
  48. package/docs/schema/generated/methodology_baseline_requirements.md +103 -0
  49. package/docs/schema/generated/methodology_baseline_requirements.svg +27 -0
  50. package/docs/schema/generated/methodology_code_groups.md +70 -0
  51. package/docs/schema/generated/methodology_code_groups.svg +49 -0
  52. package/docs/schema/generated/methodology_codes.md +88 -0
  53. package/docs/schema/generated/methodology_codes.svg +49 -0
  54. package/docs/schema/generated/methodology_common_blueprint_policies.md +104 -0
  55. package/docs/schema/generated/methodology_common_blueprint_policies.svg +72 -0
  56. package/docs/schema/generated/methodology_common_blueprint_policy_nodes.md +118 -0
  57. package/docs/schema/generated/methodology_common_blueprint_policy_nodes.svg +59 -0
  58. package/docs/schema/generated/methodology_handoff_requirements.md +130 -0
  59. package/docs/schema/generated/methodology_handoff_requirements.svg +27 -0
  60. package/docs/schema/generated/methodology_lifecycles.md +105 -0
  61. package/docs/schema/generated/methodology_lifecycles.svg +71 -0
  62. package/docs/schema/generated/methodology_methodologies.md +92 -0
  63. package/docs/schema/generated/methodology_methodologies.svg +92 -0
  64. package/docs/schema/generated/methodology_phase_processes.md +106 -0
  65. package/docs/schema/generated/methodology_phase_processes.svg +77 -0
  66. package/docs/schema/generated/methodology_phases.md +107 -0
  67. package/docs/schema/generated/methodology_phases.svg +77 -0
  68. package/docs/schema/generated/methodology_processes.md +98 -0
  69. package/docs/schema/generated/methodology_processes.svg +118 -0
  70. package/docs/schema/generated/methodology_schema_migrations.md +52 -0
  71. package/docs/schema/generated/methodology_schema_migrations.svg +27 -0
  72. package/docs/schema/generated/methodology_stage_activities.md +106 -0
  73. package/docs/schema/generated/methodology_stage_activities.svg +77 -0
  74. package/docs/schema/generated/methodology_stage_artifact_requirements.md +109 -0
  75. package/docs/schema/generated/methodology_stage_artifact_requirements.svg +52 -0
  76. package/docs/schema/generated/methodology_stage_criteria.md +112 -0
  77. package/docs/schema/generated/methodology_stage_criteria.svg +52 -0
  78. package/docs/schema/generated/methodology_stages.md +117 -0
  79. package/docs/schema/generated/methodology_stages.svg +121 -0
  80. package/docs/schema/generated/methodology_steps.md +105 -0
  81. package/docs/schema/generated/methodology_steps.svg +52 -0
  82. package/docs/schema/generated/methodology_trace_policies.md +121 -0
  83. package/docs/schema/generated/methodology_trace_policies.svg +27 -0
  84. package/docs/schema/generated/schema.json +4253 -0
  85. package/docs/schema/generated/schema.mmd +296 -0
  86. package/docs/schema/generated/schema.svg +446 -0
  87. package/docs/schema/migrations.md +24 -0
  88. package/docs/usage.md +39 -0
  89. package/package.json +29 -0
  90. package/src/database/migrations/0001_methodology_base.sql +1190 -0
@@ -0,0 +1,297 @@
1
+ import { createValidationIssue, createValidationResult, mergeValidationResults } from "@soddong/agentic-capability-validation";
2
+ function resolveValidationScope(db, options = {}) {
3
+ if (options.scope?.methodologyId !== undefined) {
4
+ return { methodologyId: options.scope.methodologyId };
5
+ }
6
+ if (options.scope?.methodologyCode !== undefined || options.scope?.methodologyVersion !== undefined) {
7
+ if (options.scope.methodologyCode === undefined || options.scope.methodologyVersion === undefined) {
8
+ throw new Error("methodologyCode and methodologyVersion must be provided together for scoped methodology validation.");
9
+ }
10
+ const row = db
11
+ .prepare(`SELECT methodology_id
12
+ FROM methodology_methodologies
13
+ WHERE methodology_code = ?
14
+ AND methodology_version = ?`)
15
+ .get(options.scope.methodologyCode, options.scope.methodologyVersion);
16
+ if (row === undefined) {
17
+ throw new Error(`Unknown methodology: ${options.scope.methodologyCode}@${options.scope.methodologyVersion}`);
18
+ }
19
+ return { methodologyId: row.methodology_id };
20
+ }
21
+ return {};
22
+ }
23
+ function scopeWhere(scope, columnName) {
24
+ return scope.methodologyId === undefined ? "" : ` WHERE ${columnName} = ?`;
25
+ }
26
+ function scopeParams(scope) {
27
+ return scope.methodologyId === undefined ? [] : [scope.methodologyId];
28
+ }
29
+ function existsById(db, tableName, idColumn, id) {
30
+ const row = db.prepare(`SELECT 1 AS found FROM ${tableName} WHERE ${idColumn} = ?`).get(id);
31
+ return row !== undefined;
32
+ }
33
+ function scopeExists(db, scopeCode, refId) {
34
+ switch (scopeCode) {
35
+ case "methodology":
36
+ return existsById(db, "methodology_methodologies", "methodology_id", refId);
37
+ case "lifecycle":
38
+ return existsById(db, "methodology_lifecycles", "lifecycle_id", refId);
39
+ case "phase":
40
+ return existsById(db, "methodology_phases", "phase_id", refId);
41
+ case "process":
42
+ return existsById(db, "methodology_processes", "process_id", refId);
43
+ case "stage":
44
+ return existsById(db, "methodology_stages", "stage_id", refId);
45
+ case "activity":
46
+ return existsById(db, "methodology_activities", "activity_id", refId);
47
+ case "artifact_requirement":
48
+ return existsById(db, "methodology_activity_artifact_requirements", "activity_artifact_requirement_id", refId)
49
+ || existsById(db, "methodology_stage_artifact_requirements", "stage_artifact_requirement_id", refId);
50
+ case "artifact_standard":
51
+ return true;
52
+ default:
53
+ return false;
54
+ }
55
+ }
56
+ function issue(input) {
57
+ return createValidationIssue({
58
+ severity: input.severity ?? "error",
59
+ ruleId: input.ruleId,
60
+ targetType: input.targetType,
61
+ targetId: input.targetId,
62
+ message: input.message,
63
+ details: input.details
64
+ });
65
+ }
66
+ export function validateStageActivityAssignments(db, options = {}) {
67
+ const scope = resolveValidationScope(db, options);
68
+ const rows = db
69
+ .prepare(`SELECT sa.stage_activity_id,
70
+ sa.stage_id,
71
+ sa.activity_id,
72
+ s.process_id AS stage_process_id,
73
+ a.process_id AS activity_process_id,
74
+ sp.methodology_id AS methodology_id
75
+ FROM methodology_stage_activities sa
76
+ JOIN methodology_stages s ON s.stage_id = sa.stage_id
77
+ JOIN methodology_processes sp ON sp.process_id = s.process_id
78
+ JOIN methodology_activities a ON a.activity_id = sa.activity_id
79
+ ${scopeWhere(scope, "sp.methodology_id")}`)
80
+ .all(...scopeParams(scope));
81
+ const issues = [];
82
+ for (const row of rows) {
83
+ if (row.stage_process_id !== row.activity_process_id) {
84
+ issues.push(issue({
85
+ ruleId: "METHODOLOGY.STAGE_ACTIVITY.SAME_PROCESS",
86
+ targetType: "stage_activity",
87
+ targetId: row.stage_activity_id,
88
+ message: "Stage와 Activity는 같은 Process에 속해야 합니다.",
89
+ details: {
90
+ stageId: row.stage_id,
91
+ activityId: row.activity_id,
92
+ stageProcessId: row.stage_process_id,
93
+ activityProcessId: row.activity_process_id
94
+ }
95
+ }));
96
+ }
97
+ }
98
+ return createValidationResult(issues);
99
+ }
100
+ export function validateActivityArtifactRequirements(db, options = {}) {
101
+ const scope = resolveValidationScope(db, options);
102
+ const rows = db
103
+ .prepare(`SELECT activity_artifact_requirement_id,
104
+ r.activity_id,
105
+ requirement_role_code,
106
+ is_primary
107
+ FROM methodology_activity_artifact_requirements r
108
+ JOIN methodology_activities a ON a.activity_id = r.activity_id
109
+ JOIN methodology_processes p ON p.process_id = a.process_id
110
+ ${scopeWhere(scope, "p.methodology_id")}`)
111
+ .all(...scopeParams(scope));
112
+ const issues = [];
113
+ for (const row of rows) {
114
+ if (row.is_primary === 1 && row.requirement_role_code !== "output") {
115
+ issues.push(issue({
116
+ ruleId: "METHODOLOGY.ACTIVITY_ARTIFACT_REQUIREMENT.PRIMARY_OUTPUT_ROLE",
117
+ targetType: "activity_artifact_requirement",
118
+ targetId: row.activity_artifact_requirement_id,
119
+ message: "Primary artifact requirement는 output 역할이어야 합니다.",
120
+ details: {
121
+ activityId: row.activity_id,
122
+ requirementRoleCode: row.requirement_role_code
123
+ }
124
+ }));
125
+ }
126
+ }
127
+ return createValidationResult(issues);
128
+ }
129
+ function scopeRefBelongsToMethodology(db, methodologyId, scopeCode, refId) {
130
+ switch (scopeCode) {
131
+ case "methodology":
132
+ return refId === methodologyId;
133
+ case "lifecycle":
134
+ return db
135
+ .prepare("SELECT 1 FROM methodology_lifecycles WHERE lifecycle_id = ? AND methodology_id = ?")
136
+ .get(refId, methodologyId) !== undefined;
137
+ case "phase":
138
+ return db
139
+ .prepare(`SELECT 1
140
+ FROM methodology_phases ph
141
+ JOIN methodology_lifecycles l ON l.lifecycle_id = ph.lifecycle_id
142
+ WHERE ph.phase_id = ?
143
+ AND l.methodology_id = ?`)
144
+ .get(refId, methodologyId) !== undefined;
145
+ case "process":
146
+ return db
147
+ .prepare("SELECT 1 FROM methodology_processes WHERE process_id = ? AND methodology_id = ?")
148
+ .get(refId, methodologyId) !== undefined;
149
+ case "stage":
150
+ return db
151
+ .prepare(`SELECT 1
152
+ FROM methodology_stages s
153
+ JOIN methodology_processes p ON p.process_id = s.process_id
154
+ WHERE s.stage_id = ?
155
+ AND p.methodology_id = ?`)
156
+ .get(refId, methodologyId) !== undefined;
157
+ case "activity":
158
+ return db
159
+ .prepare(`SELECT 1
160
+ FROM methodology_activities a
161
+ JOIN methodology_processes p ON p.process_id = a.process_id
162
+ WHERE a.activity_id = ?
163
+ AND p.methodology_id = ?`)
164
+ .get(refId, methodologyId) !== undefined;
165
+ case "artifact_requirement":
166
+ return db
167
+ .prepare(`SELECT 1
168
+ FROM methodology_activity_artifact_requirements r
169
+ JOIN methodology_activities a ON a.activity_id = r.activity_id
170
+ JOIN methodology_processes p ON p.process_id = a.process_id
171
+ WHERE r.activity_artifact_requirement_id = ?
172
+ AND p.methodology_id = ?`)
173
+ .get(refId, methodologyId) !== undefined
174
+ || db
175
+ .prepare(`SELECT 1
176
+ FROM methodology_stage_artifact_requirements r
177
+ JOIN methodology_stages s ON s.stage_id = r.stage_id
178
+ JOIN methodology_processes p ON p.process_id = s.process_id
179
+ WHERE r.stage_artifact_requirement_id = ?
180
+ AND p.methodology_id = ?`)
181
+ .get(refId, methodologyId) !== undefined;
182
+ case "artifact_standard":
183
+ return true;
184
+ default:
185
+ return false;
186
+ }
187
+ }
188
+ function rowBelongsToScope(db, scope, ...refs) {
189
+ if (scope.methodologyId === undefined) {
190
+ return true;
191
+ }
192
+ return refs.some((ref) => scopeRefBelongsToMethodology(db, scope.methodologyId, ref.scopeCode, ref.refId));
193
+ }
194
+ export function validateHandoffRequirementReferences(db, options = {}) {
195
+ const scope = resolveValidationScope(db, options);
196
+ const rows = db
197
+ .prepare(`SELECT handoff_requirement_id,
198
+ source_scope_code,
199
+ source_ref_id,
200
+ target_scope_code,
201
+ target_ref_id
202
+ FROM methodology_handoff_requirements`)
203
+ .all();
204
+ const issues = [];
205
+ for (const row of rows) {
206
+ if (!rowBelongsToScope(db, scope, { scopeCode: row.source_scope_code, refId: row.source_ref_id }, { scopeCode: row.target_scope_code, refId: row.target_ref_id })) {
207
+ continue;
208
+ }
209
+ if (!scopeExists(db, row.source_scope_code, row.source_ref_id)) {
210
+ issues.push(issue({
211
+ ruleId: "METHODOLOGY.HANDOFF.SOURCE_EXISTS",
212
+ targetType: "handoff_requirement",
213
+ targetId: row.handoff_requirement_id,
214
+ message: "Handoff source 참조 대상을 찾을 수 없습니다.",
215
+ details: {
216
+ sourceScopeCode: row.source_scope_code,
217
+ sourceRefId: row.source_ref_id
218
+ }
219
+ }));
220
+ }
221
+ if (!scopeExists(db, row.target_scope_code, row.target_ref_id)) {
222
+ issues.push(issue({
223
+ ruleId: "METHODOLOGY.HANDOFF.TARGET_EXISTS",
224
+ targetType: "handoff_requirement",
225
+ targetId: row.handoff_requirement_id,
226
+ message: "Handoff target 참조 대상을 찾을 수 없습니다.",
227
+ details: {
228
+ targetScopeCode: row.target_scope_code,
229
+ targetRefId: row.target_ref_id
230
+ }
231
+ }));
232
+ }
233
+ }
234
+ return createValidationResult(issues);
235
+ }
236
+ export function validateBaselineRequirementReferences(db, options = {}) {
237
+ const scope = resolveValidationScope(db, options);
238
+ const rows = db
239
+ .prepare(`SELECT baseline_requirement_id,
240
+ baseline_scope_code,
241
+ baseline_scope_ref_id
242
+ FROM methodology_baseline_requirements`)
243
+ .all();
244
+ const issues = rows
245
+ .filter((row) => rowBelongsToScope(db, scope, {
246
+ scopeCode: row.baseline_scope_code,
247
+ refId: row.baseline_scope_ref_id
248
+ }))
249
+ .filter((row) => !scopeExists(db, row.baseline_scope_code, row.baseline_scope_ref_id))
250
+ .map((row) => issue({
251
+ ruleId: "METHODOLOGY.BASELINE.SCOPE_EXISTS",
252
+ targetType: "baseline_requirement",
253
+ targetId: row.baseline_requirement_id,
254
+ message: "Baseline scope 참조 대상을 찾을 수 없습니다.",
255
+ details: {
256
+ baselineScopeCode: row.baseline_scope_code,
257
+ baselineScopeRefId: row.baseline_scope_ref_id
258
+ }
259
+ }));
260
+ return createValidationResult(issues);
261
+ }
262
+ export function validateTracePolicyReferences(db, options = {}) {
263
+ const scope = resolveValidationScope(db, options);
264
+ const rows = db
265
+ .prepare(`SELECT trace_policy_id,
266
+ policy_scope_code,
267
+ policy_scope_ref_id
268
+ FROM methodology_trace_policies`)
269
+ .all();
270
+ const issues = rows
271
+ .filter((row) => rowBelongsToScope(db, scope, {
272
+ scopeCode: row.policy_scope_code,
273
+ refId: row.policy_scope_ref_id
274
+ }))
275
+ .filter((row) => !scopeExists(db, row.policy_scope_code, row.policy_scope_ref_id))
276
+ .map((row) => issue({
277
+ ruleId: "METHODOLOGY.TRACE_POLICY.POLICY_SCOPE_EXISTS",
278
+ targetType: "trace_policy",
279
+ targetId: row.trace_policy_id,
280
+ message: "Trace policy scope 참조 대상을 찾을 수 없습니다.",
281
+ details: {
282
+ policyScopeCode: row.policy_scope_code,
283
+ policyScopeRefId: row.policy_scope_ref_id
284
+ }
285
+ }));
286
+ return createValidationResult(issues);
287
+ }
288
+ export function validateMethodologyDefinition(db, options = {}) {
289
+ return mergeValidationResults([
290
+ validateStageActivityAssignments(db, options),
291
+ validateActivityArtifactRequirements(db, options),
292
+ validateHandoffRequirementReferences(db, options),
293
+ validateBaselineRequirementReferences(db, options),
294
+ validateTracePolicyReferences(db, options)
295
+ ]);
296
+ }
297
+ //# 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,47 @@
1
+ # @soddong/agentic-domain-methodology 개발 및 빌드 매뉴얼
2
+
3
+ ## 1. 목적
4
+
5
+ 본 문서는 구축 담당자가 `@soddong/agentic-domain-methodology` 패키지를 개발, 빌드, 로컬 검증하기 위해 알아야 하는 내용을 정리합니다.
6
+
7
+ ## 2. 패키지 정보
8
+
9
+ | 항목 | 값 |
10
+ | --- | --- |
11
+ | package | `@soddong/agentic-domain-methodology` |
12
+ | current version | `0.11.1` |
13
+ | workspace | `packages/agentic-domain-methodology` |
14
+ | CLI | 1차 제공하지 않음 |
15
+
16
+ ## 3. 개발 검증
17
+
18
+ repository root에서 실행합니다.
19
+
20
+ ```bash
21
+ npm run build --workspace @soddong/agentic-domain-methodology
22
+ npm run typecheck --workspace @soddong/agentic-domain-methodology
23
+ npm run dev:test:agentic-domain-methodology
24
+ ```
25
+
26
+ ## 4. 패키징 Dry Run
27
+
28
+ ```bash
29
+ npm pack --workspace @soddong/agentic-domain-methodology --dry-run --cache /private/tmp/agentic-npm-cache
30
+ ```
31
+
32
+ 확인 항목:
33
+
34
+ ```text
35
+ - README.md 포함
36
+ - CHANGELOG.md 포함
37
+ - docs/ 포함
38
+ - dist/index.js 포함
39
+ - package.json 포함
40
+ - 불필요한 source/test/local file 미포함
41
+ ```
42
+
43
+ ## 5. 다음 절차
44
+
45
+ publish 절차는 [publishing.md](./publishing.md)를 따릅니다.
46
+
47
+ 운영환경 전달 기준은 [delivery.md](./delivery.md)를 따릅니다.
@@ -0,0 +1,33 @@
1
+ # @soddong/agentic-domain-methodology 설정 매뉴얼
2
+
3
+ ## 1. 목적
4
+
5
+ 본 문서는 `@soddong/agentic-domain-methodology`의 설정 책임을 정의합니다.
6
+
7
+ ## 2. 현재 설정
8
+
9
+ Iteration 0에서는 별도 runtime 설정을 요구하지 않습니다.
10
+
11
+ ```text
12
+ package
13
+ - package metadata
14
+ - 최소 public API
15
+
16
+ consumer project
17
+ - 실제 runtime 설정
18
+ - registry 설정
19
+ - 향후 DB 경로 및 seed 적용 설정
20
+ ```
21
+
22
+ ## 3. 향후 설정 후보
23
+
24
+ 후속 iteration에서 다음 설정이 추가될 수 있습니다.
25
+
26
+ | 설정 후보 | 설명 |
27
+ | --- | --- |
28
+ | database path | methodology SQLite schema 적용 대상 |
29
+ | seed profile | 기본 방법론 seed 또는 SDLC seed 선택 |
30
+ | artifact standard binding | Artifact Standard code/version 식별자 연결 |
31
+ | validation profile | gate, handoff, artifact requirement 검증 수준 |
32
+
33
+ 환경별 실제 값은 패키지 내부에 고정하지 않고 consumer 프로젝트에서 제공합니다.
@@ -0,0 +1,52 @@
1
+ # @soddong/agentic-domain-methodology Delivery 매뉴얼
2
+
3
+ ## 1. 목적
4
+
5
+ 본 문서는 `@soddong/agentic-domain-methodology` 패키지를 구축 환경에서 운영환경으로 전달할 때 필요한 package-specific delivery 기준을 정의합니다.
6
+
7
+ publish 절차 자체는 [publishing.md](./publishing.md)를 따릅니다. 운영환경 설치와 검증은 [operations.md](./operations.md)를 따릅니다.
8
+
9
+ ## 2. Delivery 범위
10
+
11
+ | 구분 | 포함 여부 | 설명 |
12
+ | --- | --- | --- |
13
+ | npm package publish | 포함 | 공식 npm registry에 배포 |
14
+ | 운영환경 install 검증 | 포함 | 공식 npm registry 기준 설치 확인 |
15
+ | source repository 전체 전달 | 제외 | npm package 기준 전달 |
16
+ | 인증 정보 전달 | 제외 | 환경별 `.npmrc` 또는 보안 정책으로 관리 |
17
+ | registry URL 하드코딩 | 제외 | 환경 설정으로 제공 |
18
+
19
+ ## 3. Package에 포함되는 파일
20
+
21
+ `@soddong/agentic-domain-methodology` 배포 패키지는 다음 파일을 포함해야 합니다.
22
+
23
+ ```text
24
+ package/
25
+ package.json
26
+ README.md
27
+ CHANGELOG.md
28
+ dist/
29
+ index.js
30
+ *.d.ts
31
+ docs/
32
+ usage.md
33
+ configuration.md
34
+ build.md
35
+ publishing.md
36
+ delivery.md
37
+ operations.md
38
+ ```
39
+
40
+ ## 4. 운영환경 전달 기준
41
+
42
+ 운영환경에는 다음 정보만 전달하면 됩니다.
43
+
44
+ ```text
45
+ - package name: @soddong/agentic-domain-methodology
46
+ - install version: 0.11.1
47
+ - 공식 npm registry 설정 방법
48
+ - 설치 및 import 확인 절차
49
+ - 문제 발생 시 확인 항목
50
+ ```
51
+
52
+ 운영환경 사용자는 구축 환경의 publish registry, build cache, tarball 생성 절차를 알 필요가 없습니다.
@@ -0,0 +1,55 @@
1
+ # @soddong/agentic-domain-methodology 운영환경 매뉴얼
2
+
3
+ ## 1. 목적
4
+
5
+ 본 문서는 운영환경 담당자 또는 사용자가 `@soddong/agentic-domain-methodology`를 설치하고 기본 상태를 확인하는 절차를 정의합니다.
6
+
7
+ ## 2. 운영환경 전제
8
+
9
+ | 항목 | 기준 |
10
+ | --- | --- |
11
+ | 네트워크 | 공식 npm registry 접근 가능 |
12
+ | NPM Registry | `https://registry.npmjs.org/` |
13
+ | package | `@soddong/agentic-domain-methodology` |
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-methodology@0.11.1
31
+ ```
32
+
33
+ ## 5. 실행 확인
34
+
35
+ ```bash
36
+ node -e "import('@soddong/agentic-domain-methodology').then(m => console.log(m.getMethodologyPackageInfo()))"
37
+ ```
38
+
39
+ 기대 결과:
40
+
41
+ ```text
42
+ name: @soddong/agentic-domain-methodology
43
+ logicalSchema: methodology
44
+ sqliteTablePrefix: methodology_
45
+ ```
46
+
47
+ ## 6. 장애 확인
48
+
49
+ | 증상 | 확인 |
50
+ | --- | --- |
51
+ | package not found | 공식 npm registry publish 여부 확인 |
52
+ | authentication required | 사용자 홈 `.npmrc` 인증 정보 확인 |
53
+ | 사설 registry 접근 시도 | `npm config get registry` 결과 확인 |
54
+ | import 실패 | `node_modules/agentic-domain-methodology/package.json` 존재 여부 확인 |
55
+ | 버전 불일치 | `npm view @soddong/agentic-domain-methodology version --registry=https://registry.npmjs.org/ --prefer-online` 결과 확인 |
@@ -0,0 +1,84 @@
1
+ # @soddong/agentic-domain-methodology Publishing 매뉴얼
2
+
3
+ ## 1. 목적
4
+
5
+ 본 문서는 `@soddong/agentic-domain-methodology` 패키지를 NPM Registry에 publish하는 절차를 정의합니다.
6
+
7
+ ## 2. 전제
8
+
9
+ | 항목 | 기준 |
10
+ | --- | --- |
11
+ | package | `@soddong/agentic-domain-methodology` |
12
+ | current version | `0.11.1` |
13
+ | workspace | `packages/agentic-domain-methodology` |
14
+ | publish registry | 구축 환경에서 제공 |
15
+ | install registry | 운영환경 또는 검증 환경에서 제공 |
16
+
17
+ ## 3. Publish 전 검증
18
+
19
+ repository root에서 실행합니다.
20
+
21
+ ```bash
22
+ npm run build --workspace @soddong/agentic-domain-methodology
23
+ npm run typecheck --workspace @soddong/agentic-domain-methodology
24
+ npm run dev:test:agentic-domain-methodology
25
+ npm pack --workspace @soddong/agentic-domain-methodology --dry-run --cache /private/tmp/agentic-npm-cache
26
+ ```
27
+
28
+ ## 4. Tarball 생성
29
+
30
+ ```bash
31
+ npm pack --workspace @soddong/agentic-domain-methodology --cache /private/tmp/agentic-npm-cache
32
+ ```
33
+
34
+ 생성 예:
35
+
36
+ ```text
37
+ agentic-domain-methodology-0.11.1.tgz
38
+ ```
39
+
40
+ ## 5. Publish
41
+
42
+ `package.json`에는 registry URL을 고정하지 않습니다.
43
+
44
+ ```bash
45
+ npm publish --workspace @soddong/agentic-domain-methodology --registry="${NPM_PUBLISH_REGISTRY_URL}"
46
+ ```
47
+
48
+ Windows PowerShell:
49
+
50
+ ```powershell
51
+ npm publish --workspace @soddong/agentic-domain-methodology --registry="$env:NPM_PUBLISH_REGISTRY_URL"
52
+ ```
53
+
54
+ ## 6. Publish 검증
55
+
56
+ ```bash
57
+ npm view @soddong/agentic-domain-methodology version --registry="${NPM_INSTALL_REGISTRY_URL}"
58
+ ```
59
+
60
+ 기대 결과:
61
+
62
+ ```text
63
+ 0.11.1
64
+ ```
65
+
66
+ ## 7. 사용자 프로젝트 설치 검증
67
+
68
+ ```bash
69
+ TEST_DIR=/private/tmp/agentic-domain-methodology-consumer-test
70
+ rm -rf "$TEST_DIR"
71
+ mkdir -p "$TEST_DIR"
72
+ cd "$TEST_DIR"
73
+ npm init -y
74
+ npm install @soddong/agentic-domain-methodology@0.11.1 --registry="${NPM_INSTALL_REGISTRY_URL}" --prefer-online
75
+ node -e "import('@soddong/agentic-domain-methodology').then(m => console.log(m.getMethodologyPackageInfo().logicalSchema))"
76
+ ```
77
+
78
+ 기대 결과:
79
+
80
+ ```text
81
+ methodology
82
+ ```
83
+
84
+ registry가 불안정하거나 공식 registry가 미확정이면 tarball 기반 consumer 검증을 publish 대체 검증으로 수행합니다.
@@ -0,0 +1,39 @@
1
+ # agentic-domain-methodology
2
+
3
+ ## Description
4
+
5
+ Agentic Platform methodology domain database.
6
+
7
+ ## Tables
8
+
9
+ | Name | Columns | Comment | Type |
10
+ | ------------------------------------------------------------------------------------------- | ------- | ----------------------------------------------------------------------------- | ----- |
11
+ | [methodology_schema_migrations](methodology_schema_migrations.md) | 3 | methodology 패키지의 migration 적용 이력을 관리한다. | table |
12
+ | [methodology_code_groups](methodology_code_groups.md) | 7 | 코드 그룹을 정의한다. | table |
13
+ | [methodology_codes](methodology_codes.md) | 9 | 코드 그룹별 코드 값을 정의한다. | table |
14
+ | [methodology_methodologies](methodology_methodologies.md) | 10 | 방법론 정의의 최상위 versioned definition을 관리한다. | table |
15
+ | [methodology_common_blueprint_policies](methodology_common_blueprint_policies.md) | 11 | | table |
16
+ | [methodology_common_blueprint_policy_nodes](methodology_common_blueprint_policy_nodes.md) | 12 | | table |
17
+ | [methodology_lifecycles](methodology_lifecycles.md) | 11 | 방법론 생명주기 모델을 관리한다. | table |
18
+ | [methodology_phases](methodology_phases.md) | 11 | lifecycle 내 큰 구간을 관리한다. | table |
19
+ | [methodology_processes](methodology_processes.md) | 10 | 재사용 가능한 수행 절차를 관리한다. | table |
20
+ | [methodology_phase_processes](methodology_phase_processes.md) | 9 | phase에서 어떤 process를 어떤 순서로 사용할지 관리한다. | table |
21
+ | [methodology_activities](methodology_activities.md) | 14 | process 내부의 기본 수행 활동을 관리한다. | table |
22
+ | [methodology_steps](methodology_steps.md) | 11 | activity 하위 순차 절차를 관리한다. | table |
23
+ | [methodology_stages](methodology_stages.md) | 13 | process 내부 activity grouping, gate, 기준선, 전환 구간을 관리한다. | table |
24
+ | [methodology_stage_activities](methodology_stage_activities.md) | 9 | stage와 activity의 포함 관계를 관리한다. | table |
25
+ | [methodology_activity_artifact_requirements](methodology_activity_artifact_requirements.md) | 15 | activity의 input/output/supporting 산출물 요구를 관리한다. | table |
26
+ | [methodology_stage_artifact_requirements](methodology_stage_artifact_requirements.md) | 11 | stage gate, baseline, handoff, approval에 필요한 추가 산출물 요구를 관리한다. | table |
27
+ | [methodology_stage_criteria](methodology_stage_criteria.md) | 12 | stage의 entry, exit, gate 판단 기준을 관리한다. | table |
28
+ | [methodology_activity_criteria](methodology_activity_criteria.md) | 12 | activity의 completion 판단 기준을 관리한다. | table |
29
+ | [methodology_handoff_requirements](methodology_handoff_requirements.md) | 16 | phase, process, stage, activity 간 전달 요구를 관리한다. | table |
30
+ | [methodology_baseline_requirements](methodology_baseline_requirements.md) | 12 | baseline이 필요한 scope와 trigger를 관리한다. | table |
31
+ | [methodology_trace_policies](methodology_trace_policies.md) | 15 | 실제 trace link가 아니라 trace 필요 관계 정책을 관리한다. | table |
32
+
33
+ ## Relations
34
+
35
+ ![er](schema.svg)
36
+
37
+ ---
38
+
39
+ > Generated by [tbls](https://github.com/k1LoW/tbls)