--- test_env: dev-corp test_profile: client-smoke domain: client verification_type: smoke last_rule_updated_at: 2026-06-29 --- # 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://172.24.63.178:18002 IOP_CONTROL_PLANE_WIRE_URL=ws://172.24.63.178: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://172.24.63.178:18002 IOP_CONTROL_PLANE_WIRE_URL=ws://172.24.63.178: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이 `http://172.24.63.178: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를 직접 복제하지 않는다.