@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
package/.tbls.yml ADDED
@@ -0,0 +1,64 @@
1
+ name: agentic-domain-methodology
2
+ desc: Agentic Platform methodology domain database.
3
+
4
+ dsn: ${AGENTIC_DOMAIN_METHODOLOGY_SCHEMA_DSN}
5
+ docPath: ${AGENTIC_DOMAIN_METHODOLOGY_SCHEMA_DOC_PATH}
6
+
7
+ format:
8
+ adjust: true
9
+ sort: false
10
+ number: false
11
+ hideColumnsWithoutValues: true
12
+
13
+ er:
14
+ skip: false
15
+ format: svg
16
+ comment: true
17
+ hideDef: true
18
+ showColumnTypes:
19
+ related: true
20
+ primary: true
21
+ distance: 1
22
+
23
+ include:
24
+ - methodology_*
25
+
26
+ comments:
27
+ - table: methodology_schema_migrations
28
+ tableComment: methodology ํŒจํ‚ค์ง€์˜ migration ์ ์šฉ ์ด๋ ฅ์„ ๊ด€๋ฆฌํ•œ๋‹ค.
29
+ - table: methodology_code_groups
30
+ tableComment: ์ฝ”๋“œ ๊ทธ๋ฃน์„ ์ •์˜ํ•œ๋‹ค.
31
+ - table: methodology_codes
32
+ tableComment: ์ฝ”๋“œ ๊ทธ๋ฃน๋ณ„ ์ฝ”๋“œ ๊ฐ’์„ ์ •์˜ํ•œ๋‹ค.
33
+ - table: methodology_methodologies
34
+ tableComment: ๋ฐฉ๋ฒ•๋ก  ์ •์˜์˜ ์ตœ์ƒ์œ„ versioned definition์„ ๊ด€๋ฆฌํ•œ๋‹ค.
35
+ - table: methodology_lifecycles
36
+ tableComment: ๋ฐฉ๋ฒ•๋ก  ์ƒ๋ช…์ฃผ๊ธฐ ๋ชจ๋ธ์„ ๊ด€๋ฆฌํ•œ๋‹ค.
37
+ - table: methodology_phases
38
+ tableComment: lifecycle ๋‚ด ํฐ ๊ตฌ๊ฐ„์„ ๊ด€๋ฆฌํ•œ๋‹ค.
39
+ - table: methodology_processes
40
+ tableComment: ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ˆ˜ํ–‰ ์ ˆ์ฐจ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.
41
+ - table: methodology_phase_processes
42
+ tableComment: phase์—์„œ ์–ด๋–ค process๋ฅผ ์–ด๋–ค ์ˆœ์„œ๋กœ ์‚ฌ์šฉํ• ์ง€ ๊ด€๋ฆฌํ•œ๋‹ค.
43
+ - table: methodology_activities
44
+ tableComment: process ๋‚ด๋ถ€์˜ ๊ธฐ๋ณธ ์ˆ˜ํ–‰ ํ™œ๋™์„ ๊ด€๋ฆฌํ•œ๋‹ค.
45
+ - table: methodology_steps
46
+ tableComment: activity ํ•˜์œ„ ์ˆœ์ฐจ ์ ˆ์ฐจ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.
47
+ - table: methodology_stages
48
+ tableComment: process ๋‚ด๋ถ€ activity grouping, gate, ๊ธฐ์ค€์„ , ์ „ํ™˜ ๊ตฌ๊ฐ„์„ ๊ด€๋ฆฌํ•œ๋‹ค.
49
+ - table: methodology_stage_activities
50
+ tableComment: stage์™€ activity์˜ ํฌํ•จ ๊ด€๊ณ„๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.
51
+ - table: methodology_activity_artifact_requirements
52
+ tableComment: activity์˜ input/output/supporting ์‚ฐ์ถœ๋ฌผ ์š”๊ตฌ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.
53
+ - table: methodology_stage_artifact_requirements
54
+ tableComment: stage gate, baseline, handoff, approval์— ํ•„์š”ํ•œ ์ถ”๊ฐ€ ์‚ฐ์ถœ๋ฌผ ์š”๊ตฌ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.
55
+ - table: methodology_stage_criteria
56
+ tableComment: stage์˜ entry, exit, gate ํŒ๋‹จ ๊ธฐ์ค€์„ ๊ด€๋ฆฌํ•œ๋‹ค.
57
+ - table: methodology_activity_criteria
58
+ tableComment: activity์˜ completion ํŒ๋‹จ ๊ธฐ์ค€์„ ๊ด€๋ฆฌํ•œ๋‹ค.
59
+ - table: methodology_handoff_requirements
60
+ tableComment: phase, process, stage, activity ๊ฐ„ ์ „๋‹ฌ ์š”๊ตฌ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.
61
+ - table: methodology_baseline_requirements
62
+ tableComment: baseline์ด ํ•„์š”ํ•œ scope์™€ trigger๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.
63
+ - table: methodology_trace_policies
64
+ tableComment: ์‹ค์ œ trace link๊ฐ€ ์•„๋‹ˆ๋ผ trace ํ•„์š” ๊ด€๊ณ„ ์ •์ฑ…์„ ๊ด€๋ฆฌํ•œ๋‹ค.
package/CHANGELOG.md ADDED
@@ -0,0 +1,97 @@
1
+ # Changelog
2
+
3
+ ## 0.11.1
4
+
5
+ - `applyAgenticSeed()`์˜ `criteria` section ์ฒ˜๋ฆฌ์—์„œ `scopeTypeCode = activity`๋ฅผ ์ง€์›ํ•œ๋‹ค.
6
+ - Activity completion criteria seed๋ฅผ `methodology_activity_criteria`์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.
7
+ - Stage criteria์™€ Activity criteria๋ฅผ ํ•จ๊ป˜ ํฌํ•จํ•˜๋Š” AI-Agent SDLC Build Planning seed ์ ์šฉ์„ ์ง€์›ํ•œ๋‹ค.
8
+
9
+ ## 0.11.0
10
+
11
+ - `applyAgenticSeed()` runtime seed apply handler๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
12
+ - `methodology`, `lifecycle`, `phases`, `processes`, `stages`, `activities`, `activityArtifactRequirements`, `criteria`, `handoffs` seed section์„ methodology DB์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.
13
+ - AI-Agent SDLC seed์˜ `stage_gate` handoff type์€ methodology ๊ณตํ†ต handoff type `context`๋กœ ์ €์žฅํ•˜๊ณ  ์›๋ณธ payload๋Š” metadata์— ๋ณด์กดํ•œ๋‹ค.
14
+ - seed apply dev-test๋ฅผ ์ถ”๊ฐ€ํ•ด runtime์ด ํ˜ธ์ถœํ•˜๋Š” section ๋‹จ์œ„ handler ๋™์ž‘์„ ๊ฒ€์ฆํ•œ๋‹ค.
15
+
16
+ ## 0.10.0
17
+
18
+ - Handoff Requirement public API๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
19
+ - `createHandoffRequirement()`, `listHandoffRequirementsBySource()`, `listHandoffRequirementsByTarget()`๋กœ Phase/Process/Stage/Activity ๊ฐ„ ์ „๋‹ฌ ๊ณ„์•ฝ์„ ์ƒ์„ฑ/์กฐํšŒํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.
20
+ - Handoff 1๊ฑด์ด ๋‹ค์ˆ˜ ์„ ํ–‰ ์‚ฐ์ถœ๋ฌผ component ์„ธํŠธ๋ฅผ ํ›„ํ–‰ Stage ๋˜๋Š” Activity์— ์ „๋‹ฌํ•˜๋Š” ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ๊ฒ€์ฆํ•œ๋‹ค.
21
+ - 4๋ชจ๋“ˆ ํ†ตํ•ฉ ๊ฒ€์ฆ์—์„œ Stage Handoff๊ฐ€ artifact instance scope, required component codes, validation/review result refs๋ฅผ ํฌํ•จํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
22
+
23
+ ## 0.9.0
24
+
25
+ - Stage Criteria public API๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
26
+ - `createStageCriteria()`์™€ `listStageCriteriaByStage()`๋กœ Stage entry, exit, gate ๊ธฐ์ค€์„ ์ƒ์„ฑ/์กฐํšŒํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.
27
+ - `getMethodologyStructure()`์˜ Stage read model์— criteria ๋ชฉ๋ก์„ ํฌํ•จํ•œ๋‹ค.
28
+ - 4๋ชจ๋“ˆ ํ†ตํ•ฉ ๊ฒ€์ฆ์—์„œ Stage Criteria๊ฐ€ entry/exit/gate ๊ธฐ์ค€์„ ๋ชจ๋‘ ํฌํ•จํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
29
+
30
+ ## 0.8.0
31
+
32
+ - Activity Artifact Requirement์— `artifactComponentCode`, `artifactComponentRoleCode`, `outputUsageCode`๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
33
+ - Methodology Activity๊ฐ€ ์‚ฐ์ถœ๋ฌผ ํ‘œ์ค€ ์ „์ฒด๋ฟ ์•„๋‹ˆ๋ผ artifact-standard์˜ ํŠน์ • `DocumentComponent`๊นŒ์ง€ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.
34
+ - output usage code ํ›„๋ณด๋กœ `produces`, `refines`, `reviews`, `consolidates`๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
35
+ - Build Planning fixture์—์„œ `component_business_process_definition` Activity๊ฐ€ `appendix_l3_process` component๋ฅผ ์‚ฐ์ถœํ•˜๋Š” ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ๊ฒ€์ฆํ•œ๋‹ค.
36
+
37
+ ## 0.7.0
38
+
39
+ - Methodology Common Blueprint Policy ์ตœ์†Œ ๋ชจ๋ธ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.
40
+ - `methodology_common_blueprint_policies`, `methodology_common_blueprint_policy_nodes` ํ…Œ์ด๋ธ”์„ ์ถ”๊ฐ€ํ•œ๋‹ค.
41
+ - ๋ฐฉ๋ฒ•๋ก  ์ฐจ์›์˜ Front Matter, Back Matter, Body Policy ๊ณตํ†ต ๊ตฌ์กฐ ์ •์ฑ…์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.
42
+ - ์‹ค์ œ ์‚ฐ์ถœ๋ฌผ๋ณ„ Document Blueprint, Template Slot, Table Schema, Validation Rule์€ ๊ณ„์† `@soddong/agentic-domain-artifact-standard` ์ฑ…์ž„์œผ๋กœ ์œ ์ง€ํ•œ๋‹ค.
43
+
44
+ ## 0.6.0
45
+
46
+ - Artifact Standard ์šฉ์–ด ๊ธฐ์ค€์— ๋งž์ถฐ Methodology ์‚ฐ์ถœ๋ฌผ ์š”๊ตฌ์™€ handoff์˜ public API/DDL ๋ช…๋ช…์„ ์ •๋ฆฌํ•œ๋‹ค.
47
+ - `artifactStandardPackageCode` ์ž…๋ ฅ/์ถœ๋ ฅ ์†์„ฑ์„ `artifactStandardCode`๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.
48
+ - SQLite ์ปฌ๋Ÿผ `artifact_standard_package_code`๋ฅผ `artifact_standard_code`๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.
49
+ - npm package ์˜๋ฏธ์™€ ๋„๋ฉ”์ธ Artifact Standard ์˜๋ฏธ๊ฐ€ ํ˜ผ๋™๋˜์ง€ ์•Š๋„๋ก README์™€ schema ๋ฌธ์„œ๋ฅผ ์ •๋ ฌํ•œ๋‹ค.
50
+
51
+ ## 0.5.1
52
+
53
+ - `@soddong/agentic-capability-validation` dependency๋ฅผ `^0.3.0`์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค.
54
+ - ๊ธฐ์กด methodology validator helper API๋Š” ์œ ์ง€ํ•œ๋‹ค.
55
+
56
+ ## 0.5.0
57
+
58
+ - `validateMethodologyDefinition()`๊ณผ ๊ฐœ๋ณ„ methodology validator์— scoped validation option์„ ์ถ”๊ฐ€ํ•œ๋‹ค.
59
+ - `methodologyId` ๋˜๋Š” `methodologyCode + methodologyVersion` ๊ธฐ์ค€์œผ๋กœ ํŠน์ • ๋ฐฉ๋ฒ•๋ก ๋งŒ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.
60
+ - ํ•˜๋‚˜์˜ SQLite DB์— fixture, ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ, ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•๋ก ์ด ํ•จ๊ป˜ ์žˆ์„ ๋•Œ ๊ฒ€์ฆ ๊ฒฐ๊ณผ๊ฐ€ ์„ž์ด๋Š” ๋ฌธ์ œ๋ฅผ ์ค„์ธ๋‹ค.
61
+ - README์— Validation Scope ์‚ฌ์šฉ ์˜ˆ์‹œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
62
+
63
+ ## 0.4.0
64
+
65
+ - `temp/` ์•„๋ž˜ Build Planning ๋ฐฉ๋ฒ•๋ก  ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ `seedBuildPlanningExample()` fixture API๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
66
+ - Build Planning Phase/Process, 4๊ฐœ Stage, ๋Œ€ํ‘œ Activity, Step, primary output artifact requirement seed๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
67
+ - Cross-cutting Governance Activity๋ฅผ Stage์— ์ข…์†๋˜์ง€ ์•Š๋Š” Process-level Activity๋กœ seedํ•œ๋‹ค.
68
+ - seed ์žฌ์‹คํ–‰ ์‹œ ์ค‘๋ณต ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ๊ธฐ์กด Methodology ๊ตฌ์กฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก idempotency๋ฅผ ๋ณด์žฅํ•œ๋‹ค.
69
+ - README์— fixture/seed ์‚ฌ์šฉ ์˜ˆ์‹œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
70
+
71
+ ## 0.3.0
72
+
73
+ - Methodology ๋ชฉ๋ก, Lifecycle/Phase/Process/Activity/Stage/Step/Artifact Requirement ์กฐํšŒ API๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
74
+ - Phase ๊ธฐ์ค€ Process ์กฐํšŒ์™€ Stage ๊ธฐ์ค€ Activity ์กฐํšŒ API๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
75
+ - Methodology ์ „์ฒด ๊ตฌ์กฐ๋ฅผ ์ฝ๋Š” `getMethodologyStructure()` read model API๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
76
+ - README์— ์กฐํšŒ/ํƒ์ƒ‰ API ์‚ฌ์šฉ ์˜ˆ์‹œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
77
+
78
+ ## 0.2.1
79
+
80
+ - Consumer ์‚ฌ์šฉ์„ฑ ๊ฐœ์„ ์„ ์œ„ํ•ด `createProcessForLifecycle()` helper๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
81
+ - Phase ๊ธฐ์ค€ Process ์ƒ์„ฑ๊ณผ Phase ๋ฐฐ์ •์„ ํ•จ๊ป˜ ์ฒ˜๋ฆฌํ•˜๋Š” `createProcessForPhase()` helper๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
82
+ - `createProcess()` ํ˜ธ์ถœ ์‹œ `methodologyId` ๋ˆ„๋ฝ ์˜ค๋ฅ˜๋ฅผ DB ์ œ์•ฝ ์˜ค๋ฅ˜๊ฐ€ ์•„๋‹Œ service ์ž…๋ ฅ ์˜ค๋ฅ˜๋กœ ์•ˆ๋‚ดํ•œ๋‹ค.
83
+ - Process ์ถ”๊ฐ€ API ์‚ฌ์šฉ ๊ธฐ์ค€๊ณผ ์ž˜๋ชป๋œ ์˜ˆ์‹œ๋ฅผ README์— ๋ณด๊ฐ•ํ•œ๋‹ค.
84
+
85
+ ## 0.2.0
86
+
87
+ - Methodology SQLite migration DDL๊ณผ schema ๋ฌธ์„œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
88
+ - Methodology/Lifecycle/Phase/Process/Stage/Activity/Step repository์™€ service API๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
89
+ - Activity ์‚ฐ์ถœ๋ฌผ ์š”๊ตฌ์‚ฌํ•ญ, Stage criteria, handoff, baseline, trace policy ๋ชจ๋ธ ๊ธฐ๋ฐ˜์„ ์ถ”๊ฐ€ํ•œ๋‹ค.
90
+ - `@soddong/agentic-capability-validation` ๊ธฐ๋ฐ˜ methodology validator๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
91
+
92
+ ## 0.1.0
93
+
94
+ - `@soddong/agentic-domain-methodology` npm ํŒจํ‚ค์ง€ skeleton ์ถ”๊ฐ€
95
+ - Methodology ๋„๋ฉ”์ธ ํŒจํ‚ค์ง€ ๊ธฐ๋ณธ metadata์™€ ์ตœ์†Œ public API ์ถ”๊ฐ€
96
+ - README ๋ฐ docs ๊ธฐ๋ณธ ๋ฌธ์„œ ์ถ”๊ฐ€
97
+ - build/typecheck/dev-test/pack dry-run ๊ฒ€์ฆ ๊ฒฝ๋กœ ์ถ”๊ฐ€
package/README.md ADDED
@@ -0,0 +1,501 @@
1
+ # @soddong/agentic-domain-methodology
2
+
3
+ `@soddong/agentic-domain-methodology`๋Š” Agentic Platform์˜ ๋ฐฉ๋ฒ•๋ก  ๋„๋ฉ”์ธ ํŒจํ‚ค์ง€์ž…๋‹ˆ๋‹ค.
4
+
5
+ ์ด ํŒจํ‚ค์ง€๋Š” Methodology, Lifecycle, Phase, Process, Stage, Activity, Step, Gate, Handoff, Artifact Requirement, Common Blueprint Policy ๊ฐ™์€ ๋ฐฉ๋ฒ•๋ก  ๊ตฌ์กฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํ•˜์œ„ ๋„๋ฉ”์ธ ํŒจํ‚ค์ง€์ž…๋‹ˆ๋‹ค.
6
+
7
+ ## ํ˜„์žฌ ๋ฒ”์œ„
8
+
9
+ ํ˜„์žฌ๋Š” ํŒจํ‚ค์ง€ skeleton, Continuous Publish/Delivery ๊ธฐ๋ฐ˜, methodology SQLite schema migration, database helper, ํ•ต์‹ฌ Repository/Service API, Common Blueprint Policy, Activity Artifact Requirement์˜ artifact component ์ฐธ์กฐ, Stage Criteria API, Handoff Requirement API, Build Planning fixture/seed, runtime seed apply handler, ์ตœ์†Œ validator, scoped validation์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Agent contribution์€ ํ›„์† iteration์—์„œ ๊ตฌ์ฒดํ™”ํ•ฉ๋‹ˆ๋‹ค.
10
+
11
+ | ๊ตฌ๋ถ„ | ์ƒํƒœ |
12
+ | --- | --- |
13
+ | ํŒจํ‚ค์ง€ skeleton | ํฌํ•จ |
14
+ | ๊ธฐ๋ณธ ๋ฌธ์„œ | ํฌํ•จ |
15
+ | build/typecheck | ํฌํ•จ |
16
+ | pack dry-run | ํฌํ•จ |
17
+ | ์ตœ์†Œ public API | ํฌํ•จ |
18
+ | Methodology DB migration | ํฌํ•จ |
19
+ | Methodology database helper | ํฌํ•จ |
20
+ | Repository/Service | ํ•ต์‹ฌ ์ƒ์„ฑ/์กฐํšŒ API ํฌํ•จ |
21
+ | Common Blueprint Policy | ๊ณตํ†ต Front/Back Matter ์ •์ฑ… ํฌํ•จ |
22
+ | Activity Artifact Component Reference | Activity ์‚ฐ์ถœ๋ฌผ ์š”๊ตฌ๊ฐ€ artifact-standard์˜ ํŠน์ • document component๋ฅผ ์ฐธ์กฐ ๊ฐ€๋Šฅ |
23
+ | Stage Criteria API | Stage entry/exit/gate ๊ธฐ์ค€ ์ƒ์„ฑ/์กฐํšŒ ๊ฐ€๋Šฅ |
24
+ | Handoff Requirement API | ์ˆ˜ํ–‰ ๋‹จ์œ„ ๊ฐ„ ์ „๋‹ฌ ๊ณ„์•ฝ ์ƒ์„ฑ/์กฐํšŒ ๊ฐ€๋Šฅ |
25
+ | Runtime Seed Apply Handler | AI-Agent SDLC seed์˜ methodology section ์ ์šฉ ๊ฐ€๋Šฅ |
26
+ | Validator | ์ตœ์†Œ ๊ตฌ์กฐ ์ •ํ•ฉ์„ฑ ๊ฒ€์ฆ ํฌํ•จ |
27
+ | Fixture/Seed | Build Planning ์˜ˆ์‹œ ํฌํ•จ |
28
+ | Agent contribution | ํ›„์† iteration |
29
+ | CLI | 1์ฐจ ๊ตฌํ˜„ ์ œ์™ธ |
30
+ | Adapter | 1์ฐจ ๊ตฌํ˜„ ์ œ์™ธ |
31
+
32
+ ## ๋„๋ฉ”์ธ ์ฑ…์ž„
33
+
34
+ ```text
35
+ @soddong/agentic-domain-methodology
36
+ - Methodology
37
+ - Lifecycle
38
+ - Phase
39
+ - Process
40
+ - Stage
41
+ - Activity
42
+ - Step
43
+ - Gate
44
+ - Entry/Exit Criteria
45
+ - Handoff
46
+ - Baseline
47
+ - Artifact Requirement
48
+ - Common Blueprint Policy
49
+ - Trace Policy
50
+ ```
51
+
52
+ ## Activity Artifact Requirement์™€ Document Component ์ฐธ์กฐ
53
+
54
+ `methodology`๋Š” ์‚ฐ์ถœ๋ฌผ ํ‘œ์ค€ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ์ง์ ‘ ์†Œ์œ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ณธ๋ฌธ, ๋ถ€๋ก, ํ•˜์œ„ ๋ถ€๋ก ๊ฐ™์€ ์‚ฐ์ถœ๋ฌผ ๊ตฌ์„ฑ ๋‹จ์œ„๋Š” `@soddong/agentic-domain-artifact-standard`์˜ `DocumentComponent`๊ฐ€ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
55
+
56
+ ๋‹ค๋งŒ Activity๊ฐ€ ์‚ฐ์ถœ๋ฌผ ์ „์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ ํŠน์ • ๊ตฌ์„ฑ ๋‹จ์œ„๋ฅผ ์ž‘์„ฑ, ๊ฒ€ํ† , ์ •์ œ, ์ข…ํ•ฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ Activity Artifact Requirement๋Š” optional component ์ฐธ์กฐ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
57
+
58
+ ```ts
59
+ service.addActivityArtifactRequirement({
60
+ activityId: activity.activityId,
61
+ artifactStandardCode: "business_process_definition",
62
+ artifactStandardVersion: "1.0.0",
63
+ artifactComponentCode: "appendix_l3_process",
64
+ artifactComponentRoleCode: "APPENDIX",
65
+ requirementRoleCode: "output",
66
+ outputUsageCode: "produces",
67
+ isPrimary: true
68
+ });
69
+ ```
70
+
71
+ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
72
+
73
+ ```text
74
+ Activity: L3 ํ”„๋กœ์„ธ์Šค ๋ถ€๋ก ์ž‘์„ฑ
75
+ output artifact standard: business_process_definition@1.0.0
76
+ output component: appendix_l3_process
77
+ usage: produces
78
+ ```
79
+
80
+ ์ด ๊ตฌ์กฐ์—์„œ `methodology`๋Š” "์–ธ์ œ, ์–ด๋–ค Activity๊ฐ€ ์–ด๋–ค ์‚ฐ์ถœ๋ฌผ/component๋ฅผ ๋‹ค๋ฃจ๋Š”๊ฐ€"๋งŒ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์‚ฐ์ถœ๋ฌผ ๋‚ด๋ถ€ component ๊ตฌ์กฐ์™€ ๋ฌผ๋ฆฌ ํŒŒ์ผ ์ •์ฑ…์€ `artifact-standard`, ์‹ค์ œ ์‚ฐ์ถœ๋ฌผ instance ์—ฐ๊ฒฐ์€ ํ›„์† `artifact` ์ฑ…์ž„์ž…๋‹ˆ๋‹ค.
81
+
82
+ ํ•˜๋‚˜์˜ Stage์—์„œ ์—ฌ๋Ÿฌ ์‚ฐ์ถœ๋ฌผ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” component๋ณ„ Activity output์œผ๋กœ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
83
+
84
+ ```text
85
+ Planning Phase
86
+ Business Architecture Planning Process
87
+ Stage: component_business_process_definition
88
+ Activity: business_process_main_document_authoring
89
+ output: business_process_definition@1.0.0 / main_document
90
+ Activity: l3_process_appendix_authoring
91
+ output: business_process_definition@1.0.0 / appendix_l3_process
92
+ Activity: scenario_appendix_authoring
93
+ output: business_process_definition@1.0.0 / appendix_scenario
94
+ Activity: l4_detail_appendix_authoring
95
+ output: business_process_definition@1.0.0 / appendix_l4_detail
96
+ Activity: business_process_definition_consolidation
97
+ input: main_document, appendix_l3_process, appendix_scenario, appendix_l4_detail
98
+ output: business_process_definition@1.0.0 / main_document
99
+ usage: refines
100
+ ```
101
+
102
+ ์ข…ํ•ฉ/์ •์ œ์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ component๋ฅผ ์ฝ๊ณ  MAIN ๋ฌธ์„œ๋ฅผ ์ •์ œํ•˜๋Š” ์ž‘์—…๋„ Activity๋กœ ๋‘˜ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Stage gate/criterion์€ ์ด Activity๊ฐ€ ์™„๋ฃŒ๋๋Š”์ง€ ํŒ๋‹จํ•˜๋Š” ๊ธฐ์ค€์ด๊ณ , handoff๋Š” ๋‹ค์Œ Stage๋‚˜ Process๋กœ ๋„˜๊ธฐ๋Š” ๊ด€๊ณ„์ž…๋‹ˆ๋‹ค.
103
+
104
+ ํ•œ ์‚ฐ์ถœ๋ฌผ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋‚ด๋ถ€ ์ ˆ์ฐจ๋Š” Step์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ํ˜„์žฌ ์กฐ๋ฆฝ ๊ฒ€์ฆ์—์„œ๋Š” Step๊นŒ์ง€ ์„ธ๋ถ„ํ™”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
105
+
106
+ ## Stage Criteria API
107
+
108
+ Stage์˜ ์‹œ์ž‘, ์ข…๋ฃŒ, ์ „ํ™˜ ํŒ๋‹จ ๊ธฐ์ค€์€ `methodology_stage_criteria`์™€ Service API๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
109
+
110
+ ```ts
111
+ const exitCriteria = service.createStageCriteria({
112
+ stageId: stage.stageId,
113
+ criteriaTypeCode: "exit",
114
+ criteriaName: "ํ•„์ˆ˜ component ์ƒ์„ฑ",
115
+ criteriaText: "MAIN, L3 ๋ถ€๋ก, ์‹œ๋‚˜๋ฆฌ์˜ค ๋ถ€๋ก, L4 ์ƒ์„ธ ๋ถ€๋ก component๊ฐ€ ๋ชจ๋‘ ์ƒ์„ฑ๋˜์–ด์•ผ ํ•œ๋‹ค.",
116
+ validationRequired: true,
117
+ severityCode: "error",
118
+ sortOrder: 20,
119
+ metadata: {
120
+ criteriaCode: "exit_required_components_created"
121
+ }
122
+ });
123
+
124
+ const criteria = service.listStageCriteriaByStage(stage.stageId);
125
+ console.log(criteria.map((item) => item.criteriaTypeCode));
126
+ ```
127
+
128
+ ๊ตฌ๋ถ„ ๊ธฐ์ค€์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
129
+
130
+ | criteriaTypeCode | ์˜๋ฏธ |
131
+ | --- | --- |
132
+ | `entry` | Stage ์‹œ์ž‘ ์ „ ์ค€๋น„ ์กฐ๊ฑด |
133
+ | `exit` | Stage ์ข…๋ฃŒ๋ฅผ ์œ„ํ•œ ์‚ฐ์ถœ๋ฌผ/๊ตฌ์กฐ ์™„์„ฑ ์กฐ๊ฑด |
134
+ | `gate` | ๋‹ค์Œ Stage ๋˜๋Š” ์Šน์ธ ์ „ํ™˜ ํŒ๋‹จ ์กฐ๊ฑด |
135
+
136
+ ## Handoff Requirement API
137
+
138
+ Handoff๋Š” ์‹ค์ œ ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜ ์ด๋™ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์•„๋‹ˆ๋ผ, ํ›„์† Phase/Process/Stage/Activity๊ฐ€ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„์•ผ ํ•˜๋Š” ์‚ฐ์ถœ๋ฌผ, ์ด์Šˆ, ๊ฒฐ์ •, ์ œ์•ฝ ์กฐ๊ฑด ๋“ฑ์˜ ์ „๋‹ฌ ๊ณ„์•ฝ์ž…๋‹ˆ๋‹ค.
139
+
140
+ ๋‹ค์ˆ˜์˜ ์„ ํ–‰ ์‚ฐ์ถœ๋ฌผ component๋ฅผ ํ•˜๋‚˜์˜ artifact instance ๋ฌถ์Œ์œผ๋กœ ํ›„ํ–‰ Stage์— ๋„˜๊ธฐ๋Š” ๊ฒฝ์šฐ์—๋Š” Handoff 1๊ฑด์— ํ•„์ˆ˜ component ๋ชฉ๋ก์„ metadata๋กœ ๋‘ก๋‹ˆ๋‹ค.
141
+
142
+ ```ts
143
+ const handoff = service.createHandoffRequirement({
144
+ sourceScopeCode: "stage",
145
+ sourceRefId: businessProcessStage.stageId,
146
+ targetScopeCode: "stage",
147
+ targetRefId: informationObjectStage.stageId,
148
+ handoffTypeCode: "artifact",
149
+ handoffItemName: "A์ปดํฌ๋„ŒํŠธ ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค ์ •์˜์„œ",
150
+ handoffDescription: "์ปดํฌ๋„ŒํŠธ ์ •๋ณด ๊ฐ์ฒด ์ •์˜ Stage์—์„œ ์ฐธ์กฐํ•  ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค ์ •์˜์„œ ์‚ฐ์ถœ๋ฌผ ๋ฌถ์Œ์ด๋‹ค.",
151
+ artifactStandardCode: "business_process_definition",
152
+ artifactStandardVersion: "1.0.0",
153
+ validationRequired: true,
154
+ sortOrder: 10,
155
+ metadata: {
156
+ handoffItemScope: "artifact_instance",
157
+ requiredComponentCodes: [
158
+ "main_document",
159
+ "appendix_l3_process",
160
+ "appendix_scenario",
161
+ "appendix_l4_detail"
162
+ ],
163
+ requiredResultRefs: [
164
+ "validation_result",
165
+ "review_decision"
166
+ ]
167
+ }
168
+ });
169
+ ```
170
+
171
+ ํ›„ํ–‰ ์‚ฐ์ถœ๋ฌผ์„ LLM์ด ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ application ๋˜๋Š” runtime ์กฐ๋ฆฝ ๊ณ„์ธต์€ ๋‹ค์Œ ์ˆœ์„œ๋กœ context๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
172
+
173
+ ```text
174
+ 1. ํ›„ํ–‰ Activity ๋˜๋Š” Stage ์‹๋ณ„
175
+ 2. target ๊ธฐ์ค€ Handoff Requirement ์กฐํšŒ
176
+ 3. handoff metadata์˜ required component set ํ™•์ธ
177
+ 4. artifact instance์™€ component resource link ์กฐํšŒ
178
+ 5. ADoc document ๋‚ด์šฉ ์กฐํšŒ
179
+ 6. ํ›„ํ–‰ ์‚ฐ์ถœ๋ฌผ์˜ artifact-standard ์กฐํšŒ
180
+ 7. ์„ ํ–‰ ์‚ฐ์ถœ๋ฌผ context + ํ›„ํ–‰ ์‚ฐ์ถœ๋ฌผ ํ‘œ์ค€์„ LLM prompt/resource context๋กœ ์กฐ๋ฆฝ
181
+ ```
182
+
183
+ ์กฐํšŒ ์˜ˆ:
184
+
185
+ ```ts
186
+ const inboundHandoffs = service.listHandoffRequirementsByTarget(
187
+ "stage",
188
+ informationObjectStage.stageId
189
+ );
190
+
191
+ const outboundHandoffs = service.listHandoffRequirementsBySource(
192
+ "stage",
193
+ businessProcessStage.stageId
194
+ );
195
+ ```
196
+
197
+ ## ์ œ์™ธ ๋ฒ”์œ„
198
+
199
+ | ์ œ์™ธ ํ•ญ๋ชฉ | ๋‹ด๋‹น ํ›„๋ณด |
200
+ | --- | --- |
201
+ | Document ๋‚ด๋ถ€ ๊ตฌ์กฐ | `@soddong/agentic-domain-document` |
202
+ | Artifact Standard ๋ณธ๋ฌธ ๊ตฌ์กฐ | `@soddong/agentic-domain-artifact-standard` |
203
+ | Artifact instance | `@soddong/agentic-domain-artifact` |
204
+ | AI-Agent SDLC seed | `@soddong/agentic-methodology-ai-agent-sdlc` |
205
+ | Runner | `@soddong/agentic-runtime` ๋˜๋Š” application package |
206
+ | Render | render capability |
207
+ | Adapter | `@soddong/agentic-runtime` |
208
+
209
+ ## ๋ช…๋ช… ๊ธฐ์ค€
210
+
211
+ | ๊ตฌ๋ถ„ | ๊ธฐ์ค€ |
212
+ | --- | --- |
213
+ | logical schema | `methodology` |
214
+ | SQLite table prefix | `methodology_` |
215
+ | PostgreSQL mapping | ํ–ฅํ›„ ์ค‘์•™ DB ํ™œ์šฉ ์‹œ `methodology.*` ํ›„๋ณด |
216
+
217
+ ## ๊ฐœ๋ฐœ ๊ฒ€์ฆ
218
+
219
+ ```bash
220
+ npm run build --workspace @soddong/agentic-domain-methodology
221
+ npm run typecheck --workspace @soddong/agentic-domain-methodology
222
+ npm run dev:test:agentic-domain-methodology
223
+ npm pack --workspace @soddong/agentic-domain-methodology --dry-run --cache /private/tmp/agentic-npm-cache
224
+ ```
225
+
226
+ ## ๊ธฐ๋ณธ API ์˜ˆ์‹œ
227
+
228
+ ```ts
229
+ import {
230
+ applyAgenticSeed,
231
+ getMethodologyPackageInfo,
232
+ initializeMethodologyDatabase,
233
+ openMethodologyDatabase,
234
+ MethodologyService,
235
+ seedBuildPlanningExample,
236
+ validateMethodologyDefinition
237
+ } from "@soddong/agentic-domain-methodology";
238
+
239
+ console.log(getMethodologyPackageInfo());
240
+
241
+ const result = initializeMethodologyDatabase({
242
+ projectRoot: process.cwd()
243
+ });
244
+
245
+ console.log(result.tables);
246
+
247
+ const db = openMethodologyDatabase({ projectRoot: process.cwd() });
248
+ const service = new MethodologyService(db);
249
+
250
+ const scenario = service.createDefinitionScenario({
251
+ methodology: {
252
+ methodologyCode: "sdlc_default",
253
+ methodologyName: "๊ธฐ๋ณธ SDLC ๋ฐฉ๋ฒ•๋ก ",
254
+ methodologyVersion: "1.0.0"
255
+ },
256
+ lifecycle: {
257
+ lifecycleCode: "default_lifecycle",
258
+ lifecycleName: "๊ธฐ๋ณธ Lifecycle"
259
+ },
260
+ phase: {
261
+ phaseCode: "analysis",
262
+ phaseName: "๋ถ„์„"
263
+ },
264
+ process: {
265
+ processCode: "requirements_management",
266
+ processName: "์š”๊ตฌ์‚ฌํ•ญ ๊ด€๋ฆฌ"
267
+ },
268
+ activity: {
269
+ activityCode: "requirements_definition",
270
+ activityName: "์š”๊ตฌ์‚ฌํ•ญ ์ •์˜"
271
+ }
272
+ });
273
+
274
+ console.log(scenario.activity.activityId);
275
+
276
+ const validation = validateMethodologyDefinition(db);
277
+ console.log(validation.valid);
278
+ db.close();
279
+ ```
280
+
281
+ ## Process ์ถ”๊ฐ€ API ์‚ฌ์šฉ ๊ธฐ์ค€
282
+
283
+ Process๋Š” ํŠน์ • Lifecycle์— ์ง์ ‘ ์ข…์†๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹ˆ๋ผ Methodology์— ์ข…์†๋ฉ๋‹ˆ๋‹ค. Phase์™€ Process์˜ ๊ด€๊ณ„๋Š” `methodology_phase_processes` ์—ฐ๊ฒฐ ํ…Œ์ด๋ธ”๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.
284
+
285
+ ๋”ฐ๋ผ์„œ ์ด๋ฏธ ์ƒ์„ฑ๋œ Lifecycle ๋˜๋Š” Phase๋ฅผ ๊ธฐ์ค€์œผ๋กœ Process๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ๋Š” `createProcess()`์— `lifecycleId`๋ฅผ ๋„˜๊ธฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
286
+
287
+ ์ž˜๋ชป๋œ ์˜ˆ:
288
+
289
+ ```ts
290
+ service.createProcess({
291
+ lifecycleId: scenario.lifecycle.lifecycleId,
292
+ processCode: "architecture_design",
293
+ processName: "์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„"
294
+ });
295
+ ```
296
+
297
+ `createProcess()`๋Š” `methodologyId`๋ฅผ ์ง์ ‘ ๋ฐ›๋Š” ์ €์ˆ˜์ค€ API์ž…๋‹ˆ๋‹ค.
298
+
299
+ ```ts
300
+ service.createProcess({
301
+ methodologyId: scenario.methodology.methodologyId,
302
+ processCode: "architecture_design",
303
+ processName: "์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„"
304
+ });
305
+ ```
306
+
307
+ consumer ์ฝ”๋“œ์—์„œ Lifecycle ๊ธฐ์ค€์œผ๋กœ Process๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด `createProcessForLifecycle()`์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
308
+
309
+ ```ts
310
+ const process = service.createProcessForLifecycle({
311
+ lifecycleId: scenario.lifecycle.lifecycleId,
312
+ processCode: "architecture_design",
313
+ processName: "์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„"
314
+ });
315
+ ```
316
+
317
+ Phase ๊ธฐ์ค€์œผ๋กœ Process๋ฅผ ๋งŒ๋“ค๊ณ  Phase์— ๋ฐ”๋กœ ๋ฐฐ์ •ํ•˜๋ ค๋ฉด `createProcessForPhase()`๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
318
+
319
+ ```ts
320
+ const result = service.createProcessForPhase({
321
+ phaseId: scenario.phase.phaseId,
322
+ processCode: "architecture_design",
323
+ processName: "์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„",
324
+ phaseProcess: {
325
+ sortOrder: 20
326
+ }
327
+ });
328
+
329
+ console.log(result.process.processId);
330
+ console.log(result.phaseProcess.phaseProcessId);
331
+ ```
332
+
333
+ ## ์กฐํšŒ/ํƒ์ƒ‰ API ์˜ˆ์‹œ
334
+
335
+ ์ƒ์„ฑ๋œ ๋ฐฉ๋ฒ•๋ก  ๊ตฌ์กฐ๋ฅผ ํ™•์ธํ•  ๋•Œ๋Š” ์ง์ ‘ SQL์„ ์ž‘์„ฑํ•˜๊ธฐ๋ณด๋‹ค Service ์กฐํšŒ API๋ฅผ ์šฐ์„  ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
336
+
337
+ ๋‹จ์œ„ ๋ชฉ๋ก ์กฐํšŒ:
338
+
339
+ ```ts
340
+ const lifecycles = service.listLifecyclesByMethodology(scenario.methodology.methodologyId);
341
+ const phases = service.listPhasesByLifecycle(scenario.lifecycle.lifecycleId);
342
+ const processes = service.listProcessesByPhase(scenario.phase.phaseId);
343
+ const activities = service.listActivitiesByProcess(scenario.process.processId);
344
+ const stages = service.listStagesByProcess(scenario.process.processId);
345
+ const steps = service.listStepsByActivity(scenario.activity.activityId);
346
+ const outputs = service.listActivityArtifactRequirements(scenario.activity.activityId);
347
+ ```
348
+
349
+ ์ „์ฒด ๊ตฌ์กฐ ์กฐํšŒ:
350
+
351
+ ```ts
352
+ const structure = service.getMethodologyStructure(scenario.methodology.methodologyId);
353
+
354
+ for (const lifecycle of structure.lifecycles) {
355
+ for (const phase of lifecycle.phases) {
356
+ for (const process of phase.processes) {
357
+ console.log(process.process.processName);
358
+ console.log(process.activities.map((item) => item.activity.activityName));
359
+ console.log(process.stages.map((item) => item.stage.stageName));
360
+ }
361
+ }
362
+ }
363
+ ```
364
+
365
+ `getMethodologyStructure()`๋Š” Methodology -> Lifecycle -> Phase -> Process -> Activity/Stage ๊ตฌ์กฐ๋ฅผ ์ฝ๊ธฐ ์œ„ํ•œ ํŽธ์˜ read model์ž…๋‹ˆ๋‹ค. Stage ํ•˜์œ„ Activity๋Š” `methodology_stage_activities` ์—ฐ๊ฒฐ ๊ธฐ์ค€์œผ๋กœ ์กฐํšŒ๋ฉ๋‹ˆ๋‹ค.
366
+
367
+ ## Fixture/Seed ์‚ฌ์šฉ ์˜ˆ์‹œ
368
+
369
+ `seedBuildPlanningExample()`์€ `temp/` ์•„๋ž˜ Build Planning ๋ฐฉ๋ฒ•๋ก  ์ •๋ฆฌ ๋‚ด์šฉ์„ ๊ธฐ์ค€์œผ๋กœ ๊ตฌ์„ฑํ•œ ์˜ˆ์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
370
+
371
+ ํฌํ•จ ๋ฒ”์œ„:
372
+
373
+ - `Build Planning Phase`
374
+ - `Build Planning Process`
375
+ - `Analysis Stage`
376
+ - `Interface Design Stage`
377
+ - `Structure Design Stage`
378
+ - `Build Scope Planning Stage`
379
+ - Stage๋ณ„ ๋Œ€ํ‘œ Activity, Step, primary output artifact requirement
380
+ - ํŠน์ • Stage์— ์ข…์†๋˜์ง€ ์•Š๋Š” Cross-cutting Governance Activity
381
+
382
+ ์‚ฌ์šฉ ์˜ˆ:
383
+
384
+ ```ts
385
+ const seedResult = seedBuildPlanningExample(db);
386
+
387
+ console.log(seedResult.seeded);
388
+ console.log(seedResult.structure.methodology.methodologyName);
389
+ console.log(seedResult.structure.lifecycles[0].phases[0].processes[0].stages.length);
390
+ console.log(seedResult.structure.lifecycles[0].phases[0].processes[0].activities.length);
391
+ ```
392
+
393
+ ๋™์ผํ•œ `methodologyCode + methodologyVersion`์ด ์ด๋ฏธ ์กด์žฌํ•˜๋ฉด ์ค‘๋ณต ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ๊ธฐ์กด ๊ตฌ์กฐ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
394
+
395
+ ```ts
396
+ const first = seedBuildPlanningExample(db);
397
+ const second = seedBuildPlanningExample(db);
398
+
399
+ console.log(first.seeded); // true
400
+ console.log(second.seeded); // false
401
+ ```
402
+
403
+ ## Runtime Seed Apply Handler
404
+
405
+ `applyAgenticSeed()`๋Š” `@soddong/agentic-runtime seed apply`๊ฐ€ target package๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” handler์ž…๋‹ˆ๋‹ค.
406
+
407
+ ์ด handler๋Š” methodology ๋„๋ฉ”์ธ์ด ์†Œ์œ ํ•˜๋Š” section๋งŒ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
408
+
409
+ | sourceSection | ์ฒ˜๋ฆฌ |
410
+ | --- | --- |
411
+ | `methodology` | Methodology ์ƒ์„ฑ ๋˜๋Š” ๊ธฐ์กด ํ•ญ๋ชฉ skip |
412
+ | `lifecycle` | Lifecycle ์ƒ์„ฑ ๋˜๋Š” ๊ธฐ์กด ํ•ญ๋ชฉ skip |
413
+ | `phases` | Phase ๋ชฉ๋ก ์ƒ์„ฑ |
414
+ | `processes` | Process ์ƒ์„ฑ ๋ฐ Phase ์—ฐ๊ฒฐ |
415
+ | `stages` | Stage ๋ชฉ๋ก ์ƒ์„ฑ |
416
+ | `activities` | Activity ์ƒ์„ฑ ๋ฐ Stage ์—ฐ๊ฒฐ |
417
+ | `activityArtifactRequirements` | Activity output/input/supporting artifact requirement ์ƒ์„ฑ |
418
+ | `criteria` | Stage criteria ์ƒ์„ฑ |
419
+ | `handoffs` | Stage ๊ฐ„ handoff requirement ์ƒ์„ฑ |
420
+
421
+ `generatedOutputLinks`, `validationProfiles`, `sampleExecution`์€ ๊ฐ๊ฐ `artifact-standard`, `validation`, `artifact` ๊ณ„์—ด ํŒจํ‚ค์ง€์˜ ์ฑ…์ž„์ž…๋‹ˆ๋‹ค.
422
+
423
+ ์˜ˆ์‹œ:
424
+
425
+ ```ts
426
+ await applyAgenticSeed({
427
+ sourcePackageName: "@soddong/agentic-methodology-ai-agent-sdlc",
428
+ sourcePackageVersion: "0.2.0",
429
+ bundleCode: "ai-agent-sdlc-build-planning",
430
+ bundleVersion: "0.2.0",
431
+ methodologyCode: "ai_agent_sdlc",
432
+ sourceSection: "stages",
433
+ targetOperation: "upsert_stages",
434
+ mode: "apply",
435
+ itemPayload: [
436
+ {
437
+ processCode: "build_planning_process",
438
+ stageCode: "analysis_stage",
439
+ stageName: "Analysis Stage",
440
+ stageTypeCode: "analysis",
441
+ stageOrder: 10
442
+ }
443
+ ]
444
+ });
445
+ ```
446
+
447
+ ์ ์šฉ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
448
+
449
+ | status | ์˜๋ฏธ |
450
+ | --- | --- |
451
+ | `applied` | ์‹ ๊ทœ methodology ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒ์„ฑ๋จ |
452
+ | `skipped` | ๋™์ผ ๊ธฐ์ค€์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ด๋ฏธ ์žˆ์–ด ์ค‘๋ณต ์ƒ์„ฑํ•˜์ง€ ์•Š์Œ |
453
+ | `blocked` | ์„ ํ–‰ methodology, lifecycle, phase, process, stage, activity ๋“ฑ์ด ์—†์–ด ์ ์šฉํ•  ์ˆ˜ ์—†์Œ |
454
+ | `failed` | payload ํ•„์ˆ˜๊ฐ’ ๋ˆ„๋ฝ ๋˜๋Š” DB ์ œ์•ฝ ์˜ค๋ฅ˜ |
455
+
456
+ AI-Agent SDLC seed์˜ `handoffTypeCode: "stage_gate"`๋Š” ํ˜„์žฌ methodology DB์˜ ๊ณตํ†ต handoff type์— ์ง์ ‘ ํฌํ•จ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ `context`๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์›๋ณธ `stage_gate` ๊ฐ’์€ metadata์˜ `seedPayload`์— ๋ณด์กดํ•ฉ๋‹ˆ๋‹ค.
457
+
458
+ ## Validation Scope ์‚ฌ์šฉ ์˜ˆ์‹œ
459
+
460
+ `validateMethodologyDefinition(db)`๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ methodology DB ์ „์ฒด๋ฅผ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ consumer ํ”„๋กœ์ ํŠธ ์•ˆ์— ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•๋ก , ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ, ์˜๋„์ ์œผ๋กœ ๋งŒ๋“  ์˜ค๋ฅ˜ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•จ๊ป˜ ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํŠน์ • ๋ฐฉ๋ฒ•๋ก ๋งŒ ๊ฒ€์ฆํ•ด์•ผ ํ•  ๋•Œ๋Š” scope๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
461
+
462
+ ๋ฐฉ๋ฒ•๋ก  ID ๊ธฐ์ค€:
463
+
464
+ ```ts
465
+ const result = validateMethodologyDefinition(db, {
466
+ scope: {
467
+ methodologyId: seedResult.methodologyId
468
+ }
469
+ });
470
+
471
+ console.log(result.valid);
472
+ ```
473
+
474
+ ๋ฐฉ๋ฒ•๋ก  ์ฝ”๋“œ์™€ ๋ฒ„์ „ ๊ธฐ์ค€:
475
+
476
+ ```ts
477
+ const result = validateMethodologyDefinition(db, {
478
+ scope: {
479
+ methodologyCode: "build_planning_example",
480
+ methodologyVersion: "1.0.0"
481
+ }
482
+ });
483
+
484
+ console.log(result.valid);
485
+ ```
486
+
487
+ ์ „์ฒด validation์€ DB ์•ˆ์˜ ๋ชจ๋“  ๋ฐฉ๋ฒ•๋ก ๊ณผ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ํ•จ๊ป˜ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • fixture๋‚˜ ํŠน์ • ๋ฐฉ๋ฒ•๋ก ์˜ ํ’ˆ์งˆ๋งŒ ํ™•์ธํ•˜๋ ค๋ฉด scoped validation์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
488
+
489
+ ๊ธฐ๋Œ€ ๊ฒฐ๊ณผ:
490
+
491
+ ```json
492
+ {
493
+ "name": "@soddong/agentic-domain-methodology",
494
+ "version": "0.11.1",
495
+ "layer": "domain",
496
+ "logicalSchema": "methodology",
497
+ "sqliteTablePrefix": "methodology_",
498
+ "cli": "not-provided",
499
+ "adapter": "not-provided"
500
+ }
501
+ ```
@@ -0,0 +1,8 @@
1
+ import Database from "better-sqlite3";
2
+ import type { MethodologyDatabaseInitResult, MethodologyDatabaseOptions } from "./types.js";
3
+ export declare function resolveMethodologyDatabasePath(options?: MethodologyDatabaseOptions): string;
4
+ export declare function listMethodologyTables(db: Database.Database): string[];
5
+ export declare function applyMethodologyBaseMigration(db: Database.Database): void;
6
+ export declare function openMethodologyDatabase(options?: MethodologyDatabaseOptions): Database.Database;
7
+ export declare function initializeMethodologyDatabase(options?: MethodologyDatabaseOptions): MethodologyDatabaseInitResult;
8
+ //# sourceMappingURL=database.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAGtC,OAAO,KAAK,EAAE,6BAA6B,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAuB5F,wBAAgB,8BAA8B,CAAC,OAAO,GAAE,0BAA+B,GAAG,MAAM,CAiB/F;AAOD,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,EAAE,CAYrE;AAED,wBAAgB,6BAA6B,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAEzE;AAED,wBAAgB,uBAAuB,CAAC,OAAO,GAAE,0BAA+B,GAAG,QAAQ,CAAC,QAAQ,CAkBnG;AAED,wBAAgB,6BAA6B,CAAC,OAAO,GAAE,0BAA+B,GAAG,6BAA6B,CAcrH"}