build: /breakdown-feature add-hello-endpoint
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
This commit is contained in:
parent
f4e333abd7
commit
d73e82f92b
@ -12,6 +12,17 @@
|
||||
"status": "approved",
|
||||
"createdAt": "2026-02-03T03:02:00Z",
|
||||
"approvedAt": "2026-02-03T03:04:00Z"
|
||||
},
|
||||
"tasks": {
|
||||
"status": "draft",
|
||||
"createdAt": "2026-02-03T03:05:00Z"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tasks": [
|
||||
{"id": "T1", "title": "Create Hello handler with Say method", "status": "pending"},
|
||||
{"id": "T2", "title": "Add unit tests for Hello handler", "status": "pending"},
|
||||
{"id": "T3", "title": "Register /hello route in routes.go", "status": "pending"},
|
||||
{"id": "T4", "title": "Add OpenAPI documentation for /hello endpoint", "status": "pending"},
|
||||
{"id": "T5", "title": "Verify integration and run quality checks", "status": "pending"}
|
||||
]
|
||||
}
|
||||
|
||||
76
.sdlc/features/add-hello-endpoint/tasks.md
Normal file
76
.sdlc/features/add-hello-endpoint/tasks.md
Normal file
@ -0,0 +1,76 @@
|
||||
# Tasks: Add /hello Endpoint to API Service
|
||||
|
||||
## Task Order (dependency sequence)
|
||||
|
||||
### T1: Create Hello handler with Say method
|
||||
- **Scope:** Create `services/api/internal/api/handlers/hello.go` with:
|
||||
- `HelloResponse` struct with `Message string` field
|
||||
- `Hello` struct (handler)
|
||||
- `NewHello(logger *logging.Logger) *Hello` constructor
|
||||
- `Say(w http.ResponseWriter, r *http.Request) error` method that returns greeting
|
||||
- **Files:**
|
||||
- Create: `services/api/internal/api/handlers/hello.go`
|
||||
- **Depends on:** None
|
||||
- **Acceptance criteria:**
|
||||
- [ ] `HelloResponse` struct defined with `json:"message"` tag
|
||||
- [ ] `Hello` handler struct created with logger field
|
||||
- [ ] `NewHello` constructor follows existing pattern from `example.go`
|
||||
- [ ] `Say` method uses `httpresponse.OK()` to return `HelloResponse{Message: "Hello, World!"}`
|
||||
- [ ] `Say` method returns `nil` (no error case)
|
||||
- [ ] File compiles without errors
|
||||
|
||||
### T2: Add unit tests for Hello handler
|
||||
- **Scope:** Create `services/api/internal/api/handlers/hello_test.go` with test for `Say` method
|
||||
- **Files:**
|
||||
- Create: `services/api/internal/api/handlers/hello_test.go`
|
||||
- **Depends on:** T1
|
||||
- **Acceptance criteria:**
|
||||
- [ ] Test file follows pattern from `example_test.go`
|
||||
- [ ] `TestHello_Say` test verifies HTTP 200 status
|
||||
- [ ] Test verifies response contains `data` field
|
||||
- [ ] Test verifies `data.message` equals `"Hello, World!"`
|
||||
- [ ] All tests pass
|
||||
|
||||
### T3: Register /hello route in routes.go
|
||||
- **Scope:** Update `services/api/internal/api/routes.go` to:
|
||||
- Initialize `helloHandler` using `handlers.NewHello(logger)`
|
||||
- Register `GET /api/v1/hello` route with `app.Wrap(helloHandler.Say)`
|
||||
- **Files:**
|
||||
- Modify: `services/api/internal/api/routes.go`
|
||||
- **Depends on:** T1
|
||||
- **Acceptance criteria:**
|
||||
- [ ] `helloHandler` initialized alongside other handlers
|
||||
- [ ] Route registered in public routes section (before auth group)
|
||||
- [ ] Route uses `app.Wrap()` pattern
|
||||
- [ ] Route path is `/hello` (under `/api/v1` group)
|
||||
|
||||
### T4: Add OpenAPI documentation for /hello endpoint
|
||||
- **Scope:** Update `services/api/internal/api/spec.go` to:
|
||||
- Add "Hello" tag with description "Simple greeting endpoint"
|
||||
- Define `HelloResponse` schema
|
||||
- Add `/api/v1/hello` GET path with response documentation
|
||||
- **Files:**
|
||||
- Modify: `services/api/internal/api/spec.go`
|
||||
- **Depends on:** T3
|
||||
- **Acceptance criteria:**
|
||||
- [ ] "Hello" tag added with appropriate description
|
||||
- [ ] `HelloResponse` schema defined with `message` field
|
||||
- [ ] GET `/api/v1/hello` path documented
|
||||
- [ ] Response shows 200 with `{data, meta}` envelope containing `HelloResponse`
|
||||
- [ ] No security requirement (public endpoint)
|
||||
- [ ] OpenAPI spec renders correctly at `/docs`
|
||||
|
||||
### T5: Verify integration and run quality checks
|
||||
- **Scope:** Run the service and verify end-to-end functionality:
|
||||
- Build passes
|
||||
- Tests pass
|
||||
- Endpoint responds correctly
|
||||
- OpenAPI docs show the new endpoint
|
||||
- **Files:** None (verification only)
|
||||
- **Depends on:** T1, T2, T3, T4
|
||||
- **Acceptance criteria:**
|
||||
- [ ] `go build ./...` succeeds for services/api
|
||||
- [ ] `go test ./...` passes for services/api
|
||||
- [ ] `GET /api/v1/hello` returns 200 with `{"data": {"message": "Hello, World!"}, "meta": {...}}`
|
||||
- [ ] `/docs` shows Hello endpoint under "Hello" tag
|
||||
- [ ] Response includes `request_id` in meta (via middleware)
|
||||
Loading…
Reference in New Issue
Block a user