iop/agent-task/edge_multi_point_routing/plan_1.log

54 lines
3.1 KiB
Text

<!-- task=edge_multi_point_routing plan=1 tag=REVIEW_API -->
# Edge Multi-Point Routing Follow-up Plan
## 이 파일을 읽는 구현 에이전트에게
아래 체크리스트를 순서대로 완료하고, 각 항목의 중간 검증과 최종 검증을 실제로 실행하세요. 구현이 끝나면 `agent-task/edge_multi_point_routing/CODE_REVIEW.md`의 모든 섹션을 실제 구현 내용과 명령 출력으로 채우세요. `CODE_REVIEW.md`의 `이 파일을 읽는 리뷰 에이전트에게` 섹션에 있는 아카이브 지시(`*.log`로 이름 변경, `complete.log` 작성)는 구현 에이전트가 수행하면 안 되며, 리뷰 스킬 전용입니다.
## 배경
1차 구현으로 multi-point routing의 핵심 동작은 들어갔지만, `/terminate-session` 성공 메시지에는 여전히 대상 node 정보가 드러나지 않습니다. 이 작업은 계획서에서 명시한 "startup banner와 `/terminate-session` 결과도 `node=<alias>`를 포함" 요구를 마저 완료하고, 회귀 테스트로 고정하는 후속 루프입니다.
## 의존 관계 및 구현 순서
1. `REVIEW_API-1`에서 `/terminate-session` 성공 메시지에 node label을 포함하도록 console 성공 경로를 보강한다.
2. 같은 항목에서 회귀 테스트를 추가해 multi-node context가 출력에 남는지 고정한다.
### [REVIEW_API-1] `/terminate-session` 성공 출력에 대상 node 컨텍스트를 포함
#### 문제
현재 `apps/edge/cmd/edge/console.go`의 `/terminate-session` 성공 분기는 `terminated session <id>`만 출력합니다. 이 구현은 multi-node 환경에서 어떤 node의 session을 종료했는지 사용자가 바로 확인할 수 없고, 원래 계획서의 출력 요구도 충족하지 못합니다.
#### 해결 방법
성공 메시지에서도 실제로 resolve된 node entry를 기반으로 `alias` 우선, 없으면 `node_id`를 사용해 `node=<label>`을 함께 출력합니다. 가능하면 기존 terminate helper가 resolve 결과를 재사용하거나, 성공 메시지 전용 helper를 추가해 node label 계산을 한 곳에 모읍니다.
#### 수정 파일 및 체크리스트
- [ ] `apps/edge/cmd/edge/console.go` - `/terminate-session` 성공 메시지에 `node=<alias|id>` 포함
- [ ] `apps/edge/cmd/edge/console_test.go` - 성공 출력이 session과 node label을 함께 포함하는지 검증하는 회귀 테스트 추가
- [ ] 필요 시 helper 정리 - run/status/terminate가 동일한 node label 규칙을 공유하도록 최소 범위 정리
#### 테스트 작성
테스트를 작성합니다.
- `apps/edge/cmd/edge/console_test.go` - terminate-session 성공 경로에서 출력 문자열에 `node=<alias|id>`가 포함되는지 검증
#### 중간 검증
```bash
go test ./apps/edge/cmd/edge/...
```
기대 결과: console 관련 테스트가 모두 통과하고, terminate-session 성공 출력이 node-aware 하게 고정됩니다.
### 최종 검증
```bash
go test ./apps/edge/cmd/edge/... ./apps/edge/internal/node/...
```
기대 결과: console 변경이 registry 선택 규칙과 함께 회귀 없이 통과합니다.