@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.
- package/.tbls.yml +64 -0
- package/CHANGELOG.md +97 -0
- package/README.md +501 -0
- package/dist/database.d.ts +8 -0
- package/dist/database.d.ts.map +1 -0
- package/dist/database.js +76 -0
- package/dist/database.js.map +1 -0
- package/dist/fixtures.d.ts +13 -0
- package/dist/fixtures.d.ts.map +1 -0
- package/dist/fixtures.js +413 -0
- package/dist/fixtures.js.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/repositories.d.ts +54 -0
- package/dist/repositories.d.ts.map +1 -0
- package/dist/repositories.js +652 -0
- package/dist/repositories.js.map +1 -0
- package/dist/seed-apply.d.ts +20 -0
- package/dist/seed-apply.d.ts.map +1 -0
- package/dist/seed-apply.js +728 -0
- package/dist/seed-apply.js.map +1 -0
- package/dist/service.d.ts +107 -0
- package/dist/service.d.ts.map +1 -0
- package/dist/service.js +225 -0
- package/dist/service.js.map +1 -0
- package/dist/types.d.ts +356 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/validators.d.ts +17 -0
- package/dist/validators.d.ts.map +1 -0
- package/dist/validators.js +297 -0
- package/dist/validators.js.map +1 -0
- package/docs/build.md +47 -0
- package/docs/configuration.md +33 -0
- package/docs/delivery.md +52 -0
- package/docs/operations.md +55 -0
- package/docs/publishing.md +84 -0
- package/docs/schema/generated/README.md +39 -0
- package/docs/schema/generated/methodology_activities.md +121 -0
- package/docs/schema/generated/methodology_activities.svg +143 -0
- package/docs/schema/generated/methodology_activity_artifact_requirements.md +129 -0
- package/docs/schema/generated/methodology_activity_artifact_requirements.svg +52 -0
- package/docs/schema/generated/methodology_activity_criteria.md +112 -0
- package/docs/schema/generated/methodology_activity_criteria.svg +52 -0
- package/docs/schema/generated/methodology_baseline_requirements.md +103 -0
- package/docs/schema/generated/methodology_baseline_requirements.svg +27 -0
- package/docs/schema/generated/methodology_code_groups.md +70 -0
- package/docs/schema/generated/methodology_code_groups.svg +49 -0
- package/docs/schema/generated/methodology_codes.md +88 -0
- package/docs/schema/generated/methodology_codes.svg +49 -0
- package/docs/schema/generated/methodology_common_blueprint_policies.md +104 -0
- package/docs/schema/generated/methodology_common_blueprint_policies.svg +72 -0
- package/docs/schema/generated/methodology_common_blueprint_policy_nodes.md +118 -0
- package/docs/schema/generated/methodology_common_blueprint_policy_nodes.svg +59 -0
- package/docs/schema/generated/methodology_handoff_requirements.md +130 -0
- package/docs/schema/generated/methodology_handoff_requirements.svg +27 -0
- package/docs/schema/generated/methodology_lifecycles.md +105 -0
- package/docs/schema/generated/methodology_lifecycles.svg +71 -0
- package/docs/schema/generated/methodology_methodologies.md +92 -0
- package/docs/schema/generated/methodology_methodologies.svg +92 -0
- package/docs/schema/generated/methodology_phase_processes.md +106 -0
- package/docs/schema/generated/methodology_phase_processes.svg +77 -0
- package/docs/schema/generated/methodology_phases.md +107 -0
- package/docs/schema/generated/methodology_phases.svg +77 -0
- package/docs/schema/generated/methodology_processes.md +98 -0
- package/docs/schema/generated/methodology_processes.svg +118 -0
- package/docs/schema/generated/methodology_schema_migrations.md +52 -0
- package/docs/schema/generated/methodology_schema_migrations.svg +27 -0
- package/docs/schema/generated/methodology_stage_activities.md +106 -0
- package/docs/schema/generated/methodology_stage_activities.svg +77 -0
- package/docs/schema/generated/methodology_stage_artifact_requirements.md +109 -0
- package/docs/schema/generated/methodology_stage_artifact_requirements.svg +52 -0
- package/docs/schema/generated/methodology_stage_criteria.md +112 -0
- package/docs/schema/generated/methodology_stage_criteria.svg +52 -0
- package/docs/schema/generated/methodology_stages.md +117 -0
- package/docs/schema/generated/methodology_stages.svg +121 -0
- package/docs/schema/generated/methodology_steps.md +105 -0
- package/docs/schema/generated/methodology_steps.svg +52 -0
- package/docs/schema/generated/methodology_trace_policies.md +121 -0
- package/docs/schema/generated/methodology_trace_policies.svg +27 -0
- package/docs/schema/generated/schema.json +4253 -0
- package/docs/schema/generated/schema.mmd +296 -0
- package/docs/schema/generated/schema.svg +446 -0
- package/docs/schema/migrations.md +24 -0
- package/docs/usage.md +39 -0
- package/package.json +29 -0
- 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 프로젝트에서 제공합니다.
|
package/docs/delivery.md
ADDED
|
@@ -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
|
+

|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
> Generated by [tbls](https://github.com/k1LoW/tbls)
|