누적된 잠금·승인·증거 체인이 구현과 완료를 반복 차단해 작업 비용을 키웠다. 보안·데이터 손상·명시적 외부 의존성만 차단 조건으로 남기고 로드맵과 스킬의 기본 흐름을 단순화한다.
98 lines
4.4 KiB
Markdown
98 lines
4.4 KiB
Markdown
---
|
|
test_env: dev-corp
|
|
test_profile: client-smoke
|
|
domain: client
|
|
verification_type: smoke
|
|
last_rule_updated_at: 2026-07-11
|
|
---
|
|
|
|
# client-smoke dev-corp 테스트
|
|
|
|
## 읽기 조건
|
|
|
|
- `apps/client/**` 또는 `packages/flutter/iop_console/**` 변경의 dev-corp 테스트, 검증, 실행 조건 판단이 필요한 경우
|
|
|
|
## 적용 범위
|
|
|
|
- IOP Flutter client app shell
|
|
- IOP-owned embeddable console package
|
|
- Client-Control Plane proto-socket hello baseline
|
|
- Flutter widget/unit tests
|
|
- dev-corp web preview와 compose web build URL 주입
|
|
|
|
## 분류
|
|
|
|
- domain: client
|
|
- verification_type: smoke
|
|
- scope: Flutter client와 IOP console package 변경
|
|
|
|
## 환경
|
|
|
|
- host: Flutter client 또는 `packages/flutter/iop_console`가 포함된 runtime evidence는 mac-mini `ssh fe@172.24.63.178`의 `/Users/fe/agent-work/iop-dev-corp` 기준으로 수행한다.
|
|
- port: web/dev preview `13002`, Control Plane HTTP `18002`, Client WS `19004`, Edge-Node TCP transport `19006`.
|
|
- runtime: Flutter/Dart
|
|
- package manager: Flutter pub
|
|
- docker: compose 검증은 mac-mini에서 `.env.dev-corp.example` 기준이다.
|
|
- external service: sibling path dependencies `../agent-shell`, `../nexo/packages/messaging_flutter`, `../proto-socket/dart`
|
|
- model endpoint:
|
|
- credential: token/secret/API key 원문은 문서에 기록하지 않는다.
|
|
|
|
명령은 mac-mini runner 사용 시 `/Users/fe/agent-work/iop-dev-corp` 기준으로 실행한다. 현재 작업 컨테이너의 변경분이 mac-mini checkout에 동기화되지 않았으면 원격 검증 완료로 보지 않는다.
|
|
|
|
## 명령
|
|
|
|
- setup: `cd apps/client && flutter pub get`
|
|
- package-setup: `cd packages/flutter/iop_console && flutter pub get`
|
|
- unit: `cd apps/client && flutter test`
|
|
- package-unit: `cd packages/flutter/iop_console && flutter test`
|
|
- lint: `cd apps/client && flutter analyze --no-fatal-infos`
|
|
- smoke: `cd apps/client && flutter test`
|
|
- e2e: `IOP_WEB_PORT=13002 IOP_CONTROL_PLANE_HTTP_URL=http://iop.ai.kr:18002 IOP_CONTROL_PLANE_WIRE_URL=ws://iop.ai.kr:19004/client ./scripts/dev/web.sh`
|
|
- compose-e2e: mac-mini 환경에서 `IOP_EDGE_NODE_TOKEN`을 안전하게 주입한 뒤 `docker compose --env-file .env.dev-corp.example up --build`
|
|
- web-build: `make client-build-web IOP_CONTROL_PLANE_HTTP_URL=http://iop.ai.kr:18002 IOP_CONTROL_PLANE_WIRE_URL=ws://iop.ai.kr:19004/client`
|
|
- model:
|
|
- full-cycle:
|
|
|
|
## 최소 검증
|
|
|
|
- client 또는 `packages/flutter/iop_console` 변경은 최소 `cd apps/client && flutter test`로 확인한다.
|
|
- `packages/flutter/iop_console` 자체 API나 widget 구조가 바뀌면 `cd packages/flutter/iop_console && flutter test` 실행 가능 여부를 확인한다.
|
|
- analyzer 영향이 있는 dependency, app shell, generated import 변경이면 `cd apps/client && flutter analyze --no-fatal-infos`를 함께 확인한다.
|
|
- Web build/deploy, `apps/client/Dockerfile`, `docker-compose.yml`, `scripts/dev/web.sh`, `Makefile client-build-web` 변경은 mac-mini에서 dev-server 기동 또는 compose build 중 변경 범위에 맞는 경로를 확인하고, 외부 브라우저 확인 URL이 기본 public 경로 `http://iop.ai.kr:13002` 계열인지 보고한다.
|
|
- compose 경로를 확인할 때는 `IOP_EDGE_NODE_TOKEN`을 mac-mini 환경에서 주입하고, token 원문은 tracked 파일에 기록하지 않는다.
|
|
|
|
## 보조 검증
|
|
|
|
- `cd apps/client && flutter pub get`
|
|
- `cd packages/flutter/iop_console && flutter pub get`
|
|
|
|
## 판정 기준
|
|
|
|
- Flutter test가 실패 없이 종료한다.
|
|
- Analyzer는 기존 non-fatal info를 기능 실패로 확대하지 않는다.
|
|
- path dependency가 없어 실행하지 못하면 누락된 sibling workspace를 차단 사유로 보고한다.
|
|
- dev-corp web preview가 필요한 경우 browser-facing URL과 compiled Control Plane HTTP/WS URL이 모두 dev-corp 포트(`13002`, `18002`, `19004`)를 사용한다.
|
|
|
|
## 기준 출력 예시
|
|
|
|
```text
|
|
All tests passed!
|
|
```
|
|
|
|
## 차단 기준
|
|
|
|
- mac-mini runner 접근, Flutter SDK, Docker compose, 또는 필요한 dev-corp 포트 개방이 없어 client runtime 검증을 실행할 수 없다.
|
|
- 필요한 sibling path dependency가 없어 `flutter pub get` 또는 test가 진행되지 않는다.
|
|
|
|
## 보고 항목
|
|
|
|
- 실행한 명령:
|
|
- 성공한 검증:
|
|
- 실패/차단된 검증:
|
|
- 생략 사유:
|
|
- 남은 위험:
|
|
|
|
## 금지 사항
|
|
|
|
- secret, token, API key 원문은 tracked 파일에 기록하지 않는다.
|
|
- IOP client에 NomadCode product shell UX를 직접 복제하지 않는다.
|