refactor: massive rename dap -> dat and fix scaffold syntax error
Some checks failed
Deploy to OCIWP / deploy (push) Failing after 14s

This commit is contained in:
jade
2026-08-20 10:41:37 +09:00
parent 64c422378f
commit 0085ec6919
765 changed files with 1151 additions and 1151 deletions

View File

@@ -22,8 +22,8 @@
### Task 1: Define grouped Tool and structured-field models
**Files:**
- Modify: `dap-was-lib/src/main/java/io/shinhanlife/dap/lib/util/ToolScaffolder.java:43-61`
- Modify: `dap-was-lib/src/test/java/io/shinhanlife/dap/lib/util/ToolScaffolderTest.java`
- Modify: `dat-was-lib/src/main/java/io/shinhanlife/dat/lib/util/ToolScaffolder.java:43-61`
- Modify: `dat-was-lib/src/test/java/io/shinhanlife/dat/lib/util/ToolScaffolderTest.java`
**Interfaces:**
- Produces `FieldDefinition(name, type, description, example, required, enumValues, itemType, itemFields)`.
@@ -42,7 +42,7 @@ assertTrue(implementation.contains("private final CustomerGuidanceClient custome
- [ ] **Step 2: Run the focused test and confirm it fails**
Run: `./gradlew.bat :dap-was-lib:test --tests "*ToolScaffolderTest.generatesOneUseCaseWithTwoMcpToolMethodsAndDistinctClients"`
Run: `./gradlew.bat :dat-was-lib:test --tests "*ToolScaffolderTest.generatesOneUseCaseWithTwoMcpToolMethodsAndDistinctClients"`
Expected: FAIL because `scaffoldUseCase` is absent.
@@ -59,20 +59,20 @@ Reject blank names and duplicate MCP Tool or Java method names before writing fi
- [ ] **Step 4: Run the focused test again and commit**
Run: `./gradlew.bat :dap-was-lib:test --tests "*ToolScaffolderTest.generatesOneUseCaseWithTwoMcpToolMethodsAndDistinctClients"`
Run: `./gradlew.bat :dat-was-lib:test --tests "*ToolScaffolderTest.generatesOneUseCaseWithTwoMcpToolMethodsAndDistinctClients"`
Expected: still FAIL only because source-generation code is absent.
```bash
git add dap-was-lib/src/main/java/io/shinhanlife/dap/lib/util/ToolScaffolder.java dap-was-lib/src/test/java/io/shinhanlife/dap/lib/util/ToolScaffolderTest.java
git add dat-was-lib/src/main/java/io/shinhanlife/dat/lib/util/ToolScaffolder.java dat-was-lib/src/test/java/io/shinhanlife/dat/lib/util/ToolScaffolderTest.java
git commit -m "feat: define grouped tool scaffold model"
```
### Task 2: Generate multi-Tool UseCase and typed Client integration
**Files:**
- Modify: `dap-was-lib/src/main/java/io/shinhanlife/dap/lib/util/ToolScaffolder.java:145-1110`
- Modify: `dap-was-lib/src/test/java/io/shinhanlife/dap/lib/util/ToolScaffolderTest.java`
- Modify: `dat-was-lib/src/main/java/io/shinhanlife/dat/lib/util/ToolScaffolder.java:145-1110`
- Modify: `dat-was-lib/src/test/java/io/shinhanlife/dat/lib/util/ToolScaffolderTest.java`
**Interfaces:**
- Consumes `ToolMethodDefinition` and `FieldDefinition` from Task 1.
@@ -88,7 +88,7 @@ assertTrue(implementation.contains("return converter.toCustomerGuidanceResponse(
- [ ] **Step 2: Run the test and confirm it fails**
Run: `./gradlew.bat :dap-was-lib:test --tests "*ToolScaffolderTest.generatesOneUseCaseWithTwoMcpToolMethodsAndDistinctClients"`
Run: `./gradlew.bat :dat-was-lib:test --tests "*ToolScaffolderTest.generatesOneUseCaseWithTwoMcpToolMethodsAndDistinctClients"`
Expected: FAIL because generated source has only `execute(...)`.
@@ -122,20 +122,20 @@ for (ToolMethodDefinition tool : tools) {
- [ ] **Step 5: Run all generator tests and commit**
Run: `./gradlew.bat :dap-was-lib:test --tests "*ToolScaffolderTest"`
Run: `./gradlew.bat :dat-was-lib:test --tests "*ToolScaffolderTest"`
Expected: PASS.
```bash
git add dap-was-lib/src/main/java/io/shinhanlife/dap/lib/util/ToolScaffolder.java dap-was-lib/src/test/java/io/shinhanlife/dap/lib/util/ToolScaffolderTest.java
git add dat-was-lib/src/main/java/io/shinhanlife/dat/lib/util/ToolScaffolder.java dat-was-lib/src/test/java/io/shinhanlife/dat/lib/util/ToolScaffolderTest.java
git commit -m "feat: generate multi-tool usecases with typed clients"
```
### Task 3: Generate enum and list DTO/schema shapes
**Files:**
- Modify: `dap-was-lib/src/main/java/io/shinhanlife/dap/lib/util/ToolScaffolder.java:1144-1420`
- Modify: `dap-was-lib/src/test/java/io/shinhanlife/dap/lib/util/ToolScaffolderTest.java`
- Modify: `dat-was-lib/src/main/java/io/shinhanlife/dat/lib/util/ToolScaffolder.java:1144-1420`
- Modify: `dat-was-lib/src/test/java/io/shinhanlife/dat/lib/util/ToolScaffolderTest.java`
**Interfaces:**
- Consumes structured `FieldDefinition` from Task 1.
@@ -153,7 +153,7 @@ assertTrue(Files.readString(definition).contains("type: array"));
- [ ] **Step 2: Run the test and confirm it fails**
Run: `./gradlew.bat :dap-was-lib:test --tests "*ToolScaffolderTest.generatesEnumAndListFields"`
Run: `./gradlew.bat :dat-was-lib:test --tests "*ToolScaffolderTest.generatesEnumAndListFields"`
Expected: FAIL because `Enum` and `List` are unsupported types.
@@ -187,24 +187,24 @@ For object lists, mocks contain a one-element object array using declared item e
- [ ] **Step 5: Run all generator tests and commit**
Run: `./gradlew.bat :dap-was-lib:test --tests "*ToolScaffolderTest"`
Run: `./gradlew.bat :dat-was-lib:test --tests "*ToolScaffolderTest"`
Expected: PASS.
```bash
git add dap-was-lib/src/main/java/io/shinhanlife/dap/lib/util/ToolScaffolder.java dap-was-lib/src/test/java/io/shinhanlife/dap/lib/util/ToolScaffolderTest.java
git add dat-was-lib/src/main/java/io/shinhanlife/dat/lib/util/ToolScaffolder.java dat-was-lib/src/test/java/io/shinhanlife/dat/lib/util/ToolScaffolderTest.java
git commit -m "feat: generate enum and list scaffold fields"
```
### Task 4: Expose grouped generation in the API and Scaffold UI
**Files:**
- Modify: `dap-gateway/src/main/java/io/shinhanlife/dap/mcg/presentation/ScaffoldingController.java:77-260`
- Modify: `dap-gateway/src/test/java/io/shinhanlife/dap/mcg/presentation/ScaffoldingControllerToolDraftTest.java`
- Modify: `dap-gateway/src/main/resources/static/admin/scaffold.html:880-1750`
- Modify: `dat-gateway/src/main/java/io/shinhanlife/dat/mcg/presentation/ScaffoldingController.java:77-260`
- Modify: `dat-gateway/src/test/java/io/shinhanlife/dat/mcg/presentation/ScaffoldingControllerToolDraftTest.java`
- Modify: `dat-gateway/src/main/resources/static/admin/scaffold.html:880-1750`
**Interfaces:**
- Consumes `{ "useCaseName": "Customer", "moduleName": "dap-was-oth", "tools": [ ... ] }`.
- Consumes `{ "useCaseName": "Customer", "moduleName": "dat-was-oth", "tools": [ ... ] }`.
- Produces `POST /api/v1/scaffold/tool-group` and keeps `POST /api/v1/scaffold/tool` unchanged.
- [ ] **Step 1: Write the failing controller test**
@@ -218,7 +218,7 @@ mockMvc.perform(post("/api/v1/scaffold/tool-group")
- [ ] **Step 2: Run the controller test and confirm it fails**
Run: `./gradlew.bat :dap-gateway:test --tests "*ScaffoldingControllerToolDraftTest.groupedToolRequest"`
Run: `./gradlew.bat :dat-gateway:test --tests "*ScaffoldingControllerToolDraftTest.groupedToolRequest"`
Expected: FAIL with 404 because `/tool-group` is absent.
@@ -242,12 +242,12 @@ Add a UseCase name and an “Add Tool” card list. Each card owns its Tool name
- [ ] **Step 5: Run focused gateway and library tests, then commit**
Run: `./gradlew.bat :dap-gateway:test --tests "*ScaffoldingControllerToolDraftTest"; ./gradlew.bat :dap-was-lib:test --tests "*ToolScaffolderTest"`
Run: `./gradlew.bat :dat-gateway:test --tests "*ScaffoldingControllerToolDraftTest"; ./gradlew.bat :dat-was-lib:test --tests "*ToolScaffolderTest"`
Expected: PASS.
```bash
git add dap-gateway/src/main/java/io/shinhanlife/dap/mcg/presentation/ScaffoldingController.java dap-gateway/src/test/java/io/shinhanlife/dap/mcg/presentation/ScaffoldingControllerToolDraftTest.java dap-gateway/src/main/resources/static/admin/scaffold.html
git add dat-gateway/src/main/java/io/shinhanlife/dat/mcg/presentation/ScaffoldingController.java dat-gateway/src/test/java/io/shinhanlife/dat/mcg/presentation/ScaffoldingControllerToolDraftTest.java dat-gateway/src/main/resources/static/admin/scaffold.html
git commit -m "feat: add grouped tool scaffold UI"
```

View File

@@ -19,8 +19,8 @@
### Task 1: AI Tool Draft 서버 계약 확장
**Files:**
- Modify: `dap-gateway/src/test/java/io/shinhanlife/dap/mcg/presentation/ScaffoldingControllerToolDraftTest.java`
- Modify: `dap-gateway/src/main/java/io/shinhanlife/dap/mcg/presentation/ScaffoldingController.java`
- Modify: `dat-gateway/src/test/java/io/shinhanlife/dat/mcg/presentation/ScaffoldingControllerToolDraftTest.java`
- Modify: `dat-gateway/src/main/java/io/shinhanlife/dat/mcg/presentation/ScaffoldingController.java`
**Interfaces:**
- Consumes: AI가 반환한 JSON Tool 초안
@@ -34,7 +34,7 @@
### Task 2: Scaffold 화면 자동 매핑
**Files:**
- Modify: `dap-gateway/src/main/resources/static/admin/scaffold.html`
- Modify: `dat-gateway/src/main/resources/static/admin/scaffold.html`
**Interfaces:**
- Consumes: Task 1의 V17 Metadata JSON 필드

View File

@@ -24,11 +24,11 @@
### Task 1: V17 Tool Definition 모델과 로더
**Files:**
- Create: `dap-was-lib/src/main/java/io/shinhanlife/dap/lib/metadata/ToolDescription.java`
- Create: `dap-was-lib/src/main/java/io/shinhanlife/dap/lib/metadata/ToolDefinition.java`
- Create: `dap-was-lib/src/main/java/io/shinhanlife/dap/lib/metadata/ToolDefinitionRepository.java`
- Create: `dap-was-lib/src/test/java/io/shinhanlife/dap/lib/metadata/ToolDefinitionRepositoryTest.java`
- Modify: `dap-was-lib/src/main/java/io/shinhanlife/dap/mcc/dto/ToolMetadata.java`
- Create: `dat-was-lib/src/main/java/io/shinhanlife/dat/lib/metadata/ToolDescription.java`
- Create: `dat-was-lib/src/main/java/io/shinhanlife/dat/lib/metadata/ToolDefinition.java`
- Create: `dat-was-lib/src/main/java/io/shinhanlife/dat/lib/metadata/ToolDefinitionRepository.java`
- Create: `dat-was-lib/src/test/java/io/shinhanlife/dat/lib/metadata/ToolDefinitionRepositoryTest.java`
- Modify: `dat-was-lib/src/main/java/io/shinhanlife/dat/mcc/dto/ToolMetadata.java`
**Interfaces:**
- Produces: `Optional<ToolDefinition> findByName(String name)``ToolMetadata`의 V17 필드 접근자.
@@ -40,7 +40,7 @@
- [ ] **Step 2: Run tests and verify RED**
Run: `./gradlew.bat :dap-was-lib:test --tests "*ToolDefinitionRepositoryTest"`
Run: `./gradlew.bat :dat-was-lib:test --tests "*ToolDefinitionRepositoryTest"`
Expected: FAIL because V17 model/repository does not exist.
- [ ] **Step 3: Implement minimal immutable models and classpath loader**
@@ -49,18 +49,18 @@
- [ ] **Step 4: Run tests and verify GREEN**
Run: `./gradlew.bat :dap-was-lib:test --tests "*ToolDefinitionRepositoryTest"`
Run: `./gradlew.bat :dat-was-lib:test --tests "*ToolDefinitionRepositoryTest"`
Expected: PASS.
### Task 2: Registry 수집과 Manifest 표준 매핑
**Files:**
- Modify: `dap-was-lib/src/main/java/io/shinhanlife/dap/lib/mcp/ToolRegistryHeartbeatSender.java`
- Modify: `dap-was-lib/src/main/java/io/shinhanlife/dap/lib/manifest/ToolManifestItem.java`
- Modify: `dap-was-lib/src/main/java/io/shinhanlife/dap/lib/manifest/ToolManifestMeta.java`
- Modify: `dap-was-lib/src/main/java/io/shinhanlife/dap/lib/manifest/ToolManifestService.java`
- Modify: `dap-was-lib/src/test/java/io/shinhanlife/dap/lib/mcp/ToolRegistryHeartbeatSenderTest.java`
- Modify: `dap-was-lib/src/test/java/io/shinhanlife/dap/mcc/manifest/ToolManifestServiceTest.java`
- Modify: `dat-was-lib/src/main/java/io/shinhanlife/dat/lib/mcp/ToolRegistryHeartbeatSender.java`
- Modify: `dat-was-lib/src/main/java/io/shinhanlife/dat/lib/manifest/ToolManifestItem.java`
- Modify: `dat-was-lib/src/main/java/io/shinhanlife/dat/lib/manifest/ToolManifestMeta.java`
- Modify: `dat-was-lib/src/main/java/io/shinhanlife/dat/lib/manifest/ToolManifestService.java`
- Modify: `dat-was-lib/src/test/java/io/shinhanlife/dat/lib/mcp/ToolRegistryHeartbeatSenderTest.java`
- Modify: `dat-was-lib/src/test/java/io/shinhanlife/dat/mcc/manifest/ToolManifestServiceTest.java`
**Interfaces:**
- Consumes: `ToolDefinitionRepository.findByName`.
@@ -69,7 +69,7 @@
- [ ] **Step 1: Add failing enrichment and manifest mapping tests**
- [ ] **Step 2: Run targeted tests and verify RED**
Run: `./gradlew.bat :dap-was-lib:test --tests "*ToolRegistryHeartbeatSenderTest" --tests "*ToolManifestServiceTest"`
Run: `./gradlew.bat :dat-was-lib:test --tests "*ToolRegistryHeartbeatSenderTest" --tests "*ToolManifestServiceTest"`
- [ ] **Step 3: Merge annotation runtime data with definition YAML**
@@ -81,10 +81,10 @@
### Task 3: MCP Tool 직접 노출과 Gateway 동기화
**Files:**
- Modify: `dap-was-lib/src/main/java/io/shinhanlife/dap/lib/mcp/ToolPodMcpToolSynchronizer.java`
- Create or Modify: `dap-was-lib/src/test/java/io/shinhanlife/dap/lib/mcp/ToolPodMcpToolSynchronizerTest.java`
- Modify: `dap-gateway/src/main/java/io/shinhanlife/dap/mcg/sync/RegistryMcpToolSpecificationFactory.java`
- Modify: `dap-gateway/src/test/java/io/shinhanlife/dap/biz/mcp/gateway/sync/RegistryMcpToolSpecificationFactoryTest.java`
- Modify: `dat-was-lib/src/main/java/io/shinhanlife/dat/lib/mcp/ToolPodMcpToolSynchronizer.java`
- Create or Modify: `dat-was-lib/src/test/java/io/shinhanlife/dat/lib/mcp/ToolPodMcpToolSynchronizerTest.java`
- Modify: `dat-gateway/src/main/java/io/shinhanlife/dat/mcg/sync/RegistryMcpToolSpecificationFactory.java`
- Modify: `dat-gateway/src/test/java/io/shinhanlife/dat/biz/mcp/gateway/sync/RegistryMcpToolSpecificationFactoryTest.java`
**Interfaces:**
- Consumes: enriched `ToolMetadata`.
@@ -98,10 +98,10 @@
### Task 4: 기존 Tool 전체 정의와 이름 정규화
**Files:**
- Create: `dap-was-sms/src/main/resources/tool-definitions/**/*.yml`
- Create: `dap-was-oth/src/main/resources/tool-definitions/**/*.yml`
- Modify: all `dap-was-sms/src/main/java/**/*UseCase*.java` containing `@McpTool`
- Modify: all `dap-was-oth/src/main/java/**/*UseCase*.java` containing `@McpTool`
- Create: `dat-was-sms/src/main/resources/tool-definitions/**/*.yml`
- Create: `dat-was-oth/src/main/resources/tool-definitions/**/*.yml`
- Modify: all `dat-was-sms/src/main/java/**/*UseCase*.java` containing `@McpTool`
- Modify: all `dat-was-oth/src/main/java/**/*UseCase*.java` containing `@McpTool`
- Modify: matching tests and mock fixture keys
**Interfaces:**
@@ -122,10 +122,10 @@
### Task 5: Scaffold V17 생성 지원
**Files:**
- Modify: `dap-gateway/src/main/resources/static/admin/scaffold.html`
- Modify: Scaffold request DTO/controller files discovered under `dap-gateway/src/main/java`
- Modify: `dap-was-lib/src/main/java/io/shinhanlife/dap/lib/util/ToolScaffolder.java`
- Modify: `dap-was-lib/src/test/java/io/shinhanlife/dap/lib/util/ToolScaffolderTest.java`
- Modify: `dat-gateway/src/main/resources/static/admin/scaffold.html`
- Modify: Scaffold request DTO/controller files discovered under `dat-gateway/src/main/java`
- Modify: `dat-was-lib/src/main/java/io/shinhanlife/dat/lib/util/ToolScaffolder.java`
- Modify: `dat-was-lib/src/test/java/io/shinhanlife/dat/lib/util/ToolScaffolderTest.java`
**Interfaces:**
- Consumes: 입력한 function/when-to-use/when-not-to-use/io-limits/display-description/examples/owner/tags/hints.
@@ -139,8 +139,8 @@
### Task 6: Gradle 품질 게이트와 문서
**Files:**
- Create: `dap-was-lib/src/main/java/io/shinhanlife/dap/lib/validation/ToolSchemaV17ValidationRunner.java`
- Create: `dap-was-lib/src/test/java/io/shinhanlife/dap/lib/validation/ToolSchemaV17ValidationRunnerTest.java`
- Create: `dat-was-lib/src/main/java/io/shinhanlife/dat/lib/validation/ToolSchemaV17ValidationRunner.java`
- Create: `dat-was-lib/src/test/java/io/shinhanlife/dat/lib/validation/ToolSchemaV17ValidationRunnerTest.java`
- Modify: `build.gradle`
- Modify: `README.md`
@@ -154,8 +154,8 @@
- [ ] **Step 5: Run targeted and full verification**
Run:
- `./gradlew.bat :dap-was-lib:test`
- `./gradlew.bat :dap-was-sms:test :dap-was-oth:test :dap-gateway:test`
- `./gradlew.bat :dat-was-lib:test`
- `./gradlew.bat :dat-was-sms:test :dat-was-oth:test :dat-gateway:test`
- `./gradlew.bat validateMcpToolNames validateToolSchemaV17`
- `./gradlew.bat clean build`

View File

@@ -1,4 +1,4 @@
# dap-was-sys Executable Mock Tools Implementation Plan
# dat-was-sys Executable Mock Tools Implementation Plan
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
@@ -20,11 +20,11 @@
**Files:**
- Create: `dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/sys/status/dto/SystemStatusRequest.java`
- Create: `dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/sys/status/dto/SystemStatusResponse.java`
- Create: `dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/sys/status/usecase/SystemStatusUseCase.java`
- Create: `dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/sys/status/usecase/impl/SystemStatusUseCaseImpl.java`
- Test: `dap-was-sys/src/test/java/io/shinhanlife/dap/mcc/sys/status/usecase/impl/SystemStatusUseCaseImplTest.java`
- Create: `dat-was-sys/src/main/java/io/shinhanlife/dat/mcc/sys/status/dto/SystemStatusRequest.java`
- Create: `dat-was-sys/src/main/java/io/shinhanlife/dat/mcc/sys/status/dto/SystemStatusResponse.java`
- Create: `dat-was-sys/src/main/java/io/shinhanlife/dat/mcc/sys/status/usecase/SystemStatusUseCase.java`
- Create: `dat-was-sys/src/main/java/io/shinhanlife/dat/mcc/sys/status/usecase/impl/SystemStatusUseCaseImpl.java`
- Test: `dat-was-sys/src/test/java/io/shinhanlife/dat/mcc/sys/status/usecase/impl/SystemStatusUseCaseImplTest.java`
- [ ] Write a test expecting default `development`, `AX Hub System`, `HEALTHY`, and a nonblank ISO timestamp; run it and observe compilation failure because the types do not exist.
- [ ] Implement request/response DTOs, MCP-annotated `getSystemStatus(SystemStatusRequest)`, and the service returning those literal mock values; rerun the focused test and expect pass.
@@ -33,11 +33,11 @@
**Files:**
- Create: `dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/sys/notice/dto/SystemNoticeRequest.java`
- Create: `dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/sys/notice/dto/SystemNoticeResponse.java`
- Create: `dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/sys/notice/usecase/SystemNoticeUseCase.java`
- Create: `dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/sys/notice/usecase/impl/SystemNoticeUseCaseImpl.java`
- Test: `dap-was-sys/src/test/java/io/shinhanlife/dap/mcc/sys/notice/usecase/impl/SystemNoticeUseCaseImplTest.java`
- Create: `dat-was-sys/src/main/java/io/shinhanlife/dat/mcc/sys/notice/dto/SystemNoticeRequest.java`
- Create: `dat-was-sys/src/main/java/io/shinhanlife/dat/mcc/sys/notice/dto/SystemNoticeResponse.java`
- Create: `dat-was-sys/src/main/java/io/shinhanlife/dat/mcc/sys/notice/usecase/SystemNoticeUseCase.java`
- Create: `dat-was-sys/src/main/java/io/shinhanlife/dat/mcc/sys/notice/usecase/impl/SystemNoticeUseCaseImpl.java`
- Test: `dat-was-sys/src/test/java/io/shinhanlife/dat/mcc/sys/notice/usecase/impl/SystemNoticeUseCaseImplTest.java`
- [ ] Write a test expecting at least two notices with title, priority, and published date; run it and observe compilation failure because the types do not exist.
- [ ] Implement the DTOs, MCP-annotated `getSystemNotices(SystemNoticeRequest)`, and service returning deterministic notices; rerun the focused test and expect pass.
@@ -46,11 +46,11 @@
**Files:**
- Create: `dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/sys/presentation/SystemMockToolController.java`
- Test: `dap-was-sys/src/test/java/io/shinhanlife/dap/mcc/sys/presentation/SystemMockToolControllerTest.java`
- Create: `dat-was-sys/src/main/java/io/shinhanlife/dat/mcc/sys/presentation/SystemMockToolController.java`
- Test: `dat-was-sys/src/test/java/io/shinhanlife/dat/mcc/sys/presentation/SystemMockToolControllerTest.java`
- [ ] Write MockMvc tests for both GET endpoints using optional query parameters and asserting response fields; run and observe compilation failure because the controller does not exist.
- [ ] Implement a controller that constructs request DTOs, delegates to the UseCases, and returns response DTOs; run `./gradlew.bat :dap-was-sys:test` and expect pass.
- [ ] Implement a controller that constructs request DTOs, delegates to the UseCases, and returns response DTOs; run `./gradlew.bat :dat-was-sys:test` and expect pass.
## Plan Self-Review

View File

@@ -1,8 +1,8 @@
# dap-was-sys Mock Tools Implementation Plan
# dat-was-sys Mock Tools Implementation Plan
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
**Goal:** Add two read-only system mock tools to `dap-was-sys`, with MCP YAML definitions and deterministic mock JSON responses.
**Goal:** Add two read-only system mock tools to `dat-was-sys`, with MCP YAML definitions and deterministic mock JSON responses.
**Architecture:** YAML definitions under `tool-definitions/sys` describe the tools. Their paired `mock-responses` files provide synthetic data. A resource-based JUnit test verifies the tool names, immutable safety flags, and valid response shape.
@@ -10,10 +10,10 @@
## Global Constraints
- Create tool resources only in `dap-was-sys`.
- Create tool resources only in `dat-was-sys`.
- Both tools must be `read_only: true`, `destructive: false`, and `idempotent: true`.
- Do not include personal, customer, credential, or secret data.
- Follow the field layout in `dap-was-cus/src/main/resources/tool-definitions/smp/smp_team_list.yml`.
- Follow the field layout in `dat-was-cus/src/main/resources/tool-definitions/smp/smp_team_list.yml`.
---
@@ -21,33 +21,33 @@
**Files:**
- Create: `dap-was-sys/src/main/resources/tool-definitions/sys/sys_system_status.yml`
- Create: `dap-was-sys/src/main/resources/mock-responses/sys_system_status.json`
- Create: `dap-was-sys/src/test/java/io/shinhanlife/dap/mcc/sys/SystemMockToolResourcesTest.java`
- Create: `dat-was-sys/src/main/resources/tool-definitions/sys/sys_system_status.yml`
- Create: `dat-was-sys/src/main/resources/mock-responses/sys_system_status.json`
- Create: `dat-was-sys/src/test/java/io/shinhanlife/dat/mcc/sys/SystemMockToolResourcesTest.java`
**Interfaces:** Accepts optional `environment: string`; returns mock `systemName`, `environment`, `status`, and `checkedAt` values.
- [ ] Write a JUnit test that loads the two classpath resources; asserts tool name `sys_system_status`, `read_only: true`, `destructive: false`, optional `environment`, `resultCode` `SUCCESS`, and all four response fields.
- [ ] Run `./gradlew.bat :dap-was-sys:test --tests io.shinhanlife.dap.mcc.sys.SystemMockToolResourcesTest.systemStatusDefinitionIsReadOnlyAndHasValidMockResponse`; expect failure because both resources are absent.
- [ ] Run `./gradlew.bat :dat-was-sys:test --tests io.shinhanlife.dat.mcc.sys.SystemMockToolResourcesTest.systemStatusDefinitionIsReadOnlyAndHasValidMockResponse`; expect failure because both resources are absent.
- [ ] Create the definition with `category_key: sys`, no required environment keys, `additionalProperties: false`, and read-only safety fields. Create a `SUCCESS` mock JSON response whose stringified `data` contains only synthetic status data.
- [ ] Re-run the focused test; expect pass.
- [ ] Commit the task: `git add dap-was-sys/src/main/resources/tool-definitions/sys/sys_system_status.yml dap-was-sys/src/main/resources/mock-responses/sys_system_status.json dap-was-sys/src/test/java/io/shinhanlife/dap/mcc/sys/SystemMockToolResourcesTest.java && git commit -m "feat: add system status mock tool"`.
- [ ] Commit the task: `git add dat-was-sys/src/main/resources/tool-definitions/sys/sys_system_status.yml dat-was-sys/src/main/resources/mock-responses/sys_system_status.json dat-was-sys/src/test/java/io/shinhanlife/dat/mcc/sys/SystemMockToolResourcesTest.java && git commit -m "feat: add system status mock tool"`.
### Task 2: System notices mock tool
**Files:**
- Create: `dap-was-sys/src/main/resources/tool-definitions/sys/sys_notice_list.yml`
- Create: `dap-was-sys/src/main/resources/mock-responses/sys_notice_list.json`
- Modify: `dap-was-sys/src/test/java/io/shinhanlife/dap/mcc/sys/SystemMockToolResourcesTest.java`
- Create: `dat-was-sys/src/main/resources/tool-definitions/sys/sys_notice_list.yml`
- Create: `dat-was-sys/src/main/resources/mock-responses/sys_notice_list.json`
- Modify: `dat-was-sys/src/test/java/io/shinhanlife/dat/mcc/sys/SystemMockToolResourcesTest.java`
**Interfaces:** Accepts optional `category: string`; returns a mock array containing notices with `title`, `priority`, and `publishedDate`.
- [ ] Add a JUnit test that loads both resources; asserts tool name `sys_notice_list`, `read_only: true`, `destructive: false`, optional `category`, `resultCode` `SUCCESS`, and at least one mock notice with all three fields.
- [ ] Run `./gradlew.bat :dap-was-sys:test --tests io.shinhanlife.dap.mcc.sys.SystemMockToolResourcesTest.noticeListDefinitionIsReadOnlyAndHasValidMockResponse`; expect failure because both resources are absent.
- [ ] Run `./gradlew.bat :dat-was-sys:test --tests io.shinhanlife.dat.mcc.sys.SystemMockToolResourcesTest.noticeListDefinitionIsReadOnlyAndHasValidMockResponse`; expect failure because both resources are absent.
- [ ] Create the definition with `category_key: sys`, no required environment keys, `additionalProperties: false`, and read-only safety fields. Create a `SUCCESS` mock JSON response containing only synthetic system notices.
- [ ] Run `./gradlew.bat :dap-was-sys:test`; expect pass.
- [ ] Commit the task: `git add dap-was-sys/src/main/resources/tool-definitions/sys/sys_notice_list.yml dap-was-sys/src/main/resources/mock-responses/sys_notice_list.json dap-was-sys/src/test/java/io/shinhanlife/dap/mcc/sys/SystemMockToolResourcesTest.java && git commit -m "feat: add system notice mock tool"`.
- [ ] Run `./gradlew.bat :dat-was-sys:test`; expect pass.
- [ ] Commit the task: `git add dat-was-sys/src/main/resources/tool-definitions/sys/sys_notice_list.yml dat-was-sys/src/main/resources/mock-responses/sys_notice_list.json dat-was-sys/src/test/java/io/shinhanlife/dat/mcc/sys/SystemMockToolResourcesTest.java && git commit -m "feat: add system notice mock tool"`.
## Plan Self-Review

View File

@@ -1,8 +1,8 @@
# dap-was-sys Executable Mock Tools Design
# dat-was-sys Executable Mock Tools Design
## Scope
Implement `sys_system_status` and `sys_notice_list` as executable, read-only MCP tools and REST endpoints in `dap-was-sys`.
Implement `sys_system_status` and `sys_notice_list` as executable, read-only MCP tools and REST endpoints in `dat-was-sys`.
## Architecture

View File

@@ -1,8 +1,8 @@
# dap-was-sys Mock Tool Design
# dat-was-sys Mock Tool Design
## Scope
Add two read-only system mock tools to `dap-was-sys`, following the metadata shape of `smp_team_list`.
Add two read-only system mock tools to `dat-was-sys`, following the metadata shape of `smp_team_list`.
## Tools