누적된 잠금·승인·증거 체인이 구현과 완료를 반복 차단해 작업 비용을 키웠다. 보안·데이터 손상·명시적 외부 의존성만 차단 조건으로 남기고 로드맵과 스킬의 기본 흐름을 단순화한다.
116 lines
6.6 KiB
Markdown
116 lines
6.6 KiB
Markdown
---
|
|
test_env: dev-corp
|
|
test_profile: testing-smoke
|
|
domain: testing
|
|
verification_type: smoke
|
|
last_rule_updated_at: 2026-07-13
|
|
---
|
|
|
|
# testing-smoke dev-corp 테스트
|
|
|
|
## 읽기 조건
|
|
|
|
- `Makefile`, `scripts/dev/**`, `scripts/e2e-*.sh`, bootstrap pack, 테스트/검증 절차, dev-corp compose/profile 변경 판단이 필요한 경우
|
|
|
|
## 적용 범위
|
|
|
|
- `Makefile`
|
|
- `scripts/dev/edge.sh`
|
|
- `scripts/dev/node.sh`
|
|
- `scripts/e2e-smoke.sh`
|
|
- `scripts/e2e-openai-ollama.sh`
|
|
- `iop-edge bootstrap pack`
|
|
- `docker-compose.yml`
|
|
- `.env.dev-corp.example` 또는 dev-corp compose override
|
|
- `agent-test/dev-corp/**`
|
|
|
|
## 분류
|
|
|
|
- domain: testing
|
|
- verification_type: smoke
|
|
- scope: dev-corp 테스트 도구, 보조 smoke, full-cycle 실제 구동 기준
|
|
|
|
## 환경
|
|
|
|
- host: local checkout. Flutter client 포함 검증, Docker compose, field/bootstrap, artifact server, external provider evidence가 필요하면 mac-mini runner를 사용한다.
|
|
- port: web/dev preview `13002`, artifact/bootstrap HTTP 후보 `18085`, Edge OpenAI-compatible HTTP 후보 `18086`, Client WS `19004`, CP-Edge wire `19005`, compose Edge-Node TCP transport `19006`, native Edge-Node TCP 후보 `18087`, Edge metrics 후보 `19102`.
|
|
- runtime: Go `1.24`
|
|
- package manager: Go modules / Makefile
|
|
- docker: quick check는 Docker를 요구하지 않는다. 현재 작업 컨테이너에서는 Docker-in-Docker를 사용하지 않으며, Docker compose 검증은 mac-mini 환경에서 수행한다.
|
|
- external service: dev-corp Control Plane 후보는 mac-mini local 기준 `http://127.0.0.1:18002`, 기본 외부 후보 `http://iop.ai.kr:18002`이다. Client wire 후보는 mac-mini local 기준 `ws://127.0.0.1:19004/client`, 기본 외부 후보 `ws://iop.ai.kr:19004/client`이다. dev-corp Edge runtime 기본 후보는 `iop.ai.kr:18087`이며, mac-mini runner/local legacy 경로를 Edge runtime 또는 Node `edge_addr`로 쓰지 않는다.
|
|
- model endpoint: dev-corp OpenAI-compatible base URL 기본 후보 `https://digitalplatform.iop.ai.kr/v1`; direct Edge listener 확인이 필요할 때만 `http://digitalplatform.iop.ai.kr:18086/v1`
|
|
- credential: token/secret/API key 원문은 문서에 기록하지 않는다.
|
|
|
|
## 명령
|
|
|
|
- setup:
|
|
- lint:
|
|
- unit: `make test`
|
|
- smoke: `./scripts/e2e-smoke.sh`
|
|
- compose-smoke: mac-mini 환경에서 `IOP_EDGE_NODE_TOKEN`을 안전하게 주입한 뒤 `docker compose --env-file .env.dev-corp.example up -d postgres redis control-plane edge web`
|
|
- compose-health: `curl -fsS http://127.0.0.1:18002/healthz`
|
|
- control-plane-status: mac-mini에서 `curl -fsS http://127.0.0.1:18002/edges/dev-corp-edge/status`
|
|
- provider-health: mac-mini에서 `curl -fsS http://192.168.2.2:8003/health`, `curl -fsS http://192.168.2.4:8005/health`, `curl -fsS http://192.168.2.3:8004/health`
|
|
- e2e: `make test-e2e`
|
|
- model: `./scripts/e2e-openai-ollama.sh` 또는 dev-corp OpenAI-compatible smoke
|
|
- full-cycle: `make pack-node-target`, repo 내부 edge-node 진단, field bootstrap UX, 실제 provider pool 검증
|
|
|
|
## 최소 검증
|
|
|
|
- 테스트 도구 자체를 바꾼 경우 해당 도구를 직접 실행해 성공/실패 판정을 확인한다.
|
|
- 사용자 실행 파이프라인에 닿는 변경은 일반 Go 테스트와 변경 범위에 맞는 full-cycle 실제 구동을 함께 검증한다.
|
|
- dev-corp compose/profile 변경 시 `docker compose --env-file .env.dev-corp.example config`로 렌더링된 host publish 포트와 network name을 확인한다.
|
|
- `iop-edge bootstrap pack`, `make pack-edge`, 내장 artifact server 변경 시 현재 host target build와 artifact/checksum/bootstrap script를 확인한다.
|
|
- field/bootstrap/deploy 작업은 one-line bootstrap UX 기준을 적용한다.
|
|
- 사용자에게 전달하는 Node bootstrap 명령은 완성된 URL과 token positional value 하나만 포함한다.
|
|
- dev-corp provider-pool 작업은 mac-mini에서 provider direct endpoint health를 먼저 확인한다.
|
|
- dev-corp native provider-pool capacity 검증은 Control Plane status의 `provider_snapshots`에서 `in_flight`/`queued`를 관측한다.
|
|
|
|
## 보조 검증
|
|
|
|
- `make test-e2e`, `./scripts/e2e-smoke.sh`, `./scripts/e2e-openai-ollama.sh`는 보조 smoke다.
|
|
- 보조 smoke는 full-cycle 실제 구동이나 field bootstrap 검증을 대체하지 않는다.
|
|
|
|
## 판정 기준
|
|
|
|
- dev-corp compose는 `COMPOSE_PROJECT_NAME=iop-dev-corp-agent`와 `IOP_COMPOSE_NETWORK=iop-dev-corp-agent-net`을 사용한다.
|
|
- dev-corp compose가 local/test/dev 포트를 점유하지 않는다.
|
|
- edge console에서 메시지 2회가 각각 기대 payload를 포함한 `[node-*-message]`로 표시되고, command 결과가 edge 화면에 도착한다.
|
|
- node 로컬 `[node-message]` payload 라인 목록과 edge `[node-*-message]` payload 라인 목록이 run별로 내용/순서까지 동일해야 한다.
|
|
- Node bootstrap UX는 Edge가 출력한 완성된 bootstrap URL과 실제 positional token 값 하나만 포함하는 한 줄 명령 형태를 유지한다.
|
|
- dev-corp provider pool의 기본 endpoint 3개가 mac-mini에서 `/health`와 `/v1/models`에 성공 응답한다.
|
|
- native Control Plane이 활성화된 provider-pool 검증에서는 `dev-corp-edge`가 connected이고 capacity smoke 완료 후 provider `in_flight=0`, `queued=0`으로 회복해야 한다.
|
|
|
|
## 기준 출력 예시
|
|
|
|
```text
|
|
docker compose --env-file .env.dev-corp.example config
|
|
curl -fsS http://127.0.0.1:18002/healthz
|
|
curl -fsS http://192.168.2.2:8003/v1/models
|
|
curl -fsS http://192.168.2.4:8005/v1/models
|
|
curl -fsS http://192.168.2.3:8004/v1/models
|
|
```
|
|
|
|
## 차단 기준
|
|
|
|
- mac-mini 접근, 지정 port, provider 상태가 없어 선택한 검증을 수행할 수 없다.
|
|
- mac-mini에 `/Users/fe/agent-work/iop-dev-corp` checkout이 없다.
|
|
- 사용자가 명시하지 않았는데 code-server 컨테이너 재시작이 필요한 상황이다.
|
|
- dev-corp 포트가 이미 사용 중이라 local/test/dev stack과 공존할 수 없다.
|
|
|
|
## 보고 항목
|
|
|
|
- 실행한 명령:
|
|
- 성공한 검증:
|
|
- 실패/차단된 검증:
|
|
- 생략 사유:
|
|
- 남은 위험:
|
|
|
|
## 금지 사항
|
|
|
|
- 보조 E2E smoke 통과만으로 완료 처리하지 않는다.
|
|
- 사용자 기본 경로에서 `IOP_ARTIFACT_BASE_URL=...`, `IOP_EDGE_ADDR=...`, `IOP_NODE_TOKEN=...` 같은 named environment parameter를 요구하지 않는다.
|
|
- 사용자가 명시적으로 요청하지 않았는데 mac-mini runner/local legacy 경로를 dev-corp Edge public runtime 기본 후보로 사용하지 않는다.
|
|
- 사용자가 명시하지 않으면 code-server 컨테이너를 재시작하지 않는다.
|
|
- 환경값을 사람용 docs나 roadmap에 복사하지 않는다.
|
|
- secret, token, API key 원문은 tracked 파일에 기록하지 않는다.
|