# 출근 후 기동 확인 및 복구 체크리스트 **작성일**: 2026-07-03 **최종 업데이트**: 2026-07-19 **버전**: 2.5 (개발용 로컬 Baron worktree와 최종 배포 목표 구조 구분 반영) ## 목적 전날 퇴근하면서 VS Code, 터미널, Android target을 모두 종료한 뒤, 다음 출근 시 `tdc114plus` 작업을 빠르게 재개할 수 있도록 기동 확인과 복구 절차를 고정한다. **핵심 정책**: 소스코드 변경을 요하지 않는 자동 복구(컨테이너 재시작, 충돌 컨테이너 정리, 권한 수정, 디렉터리 정리 등)는 사용자 승인 없이 자동으로 진행한다. --- ## 1. 적용 대상 - 앱 저장소: `/home/ubuntu/workspace/tdc114plus` - Baron SSO API worktree: `/home/ubuntu/workspace/baron-sso-tdc114plus-api` - auth 중계서버 저장소: `/home/ubuntu/workspace/tdc114plus-auth` - Windows ADB 서버 공유 기반 Android target + WSL/Docker Flutter 조합 주의: - 이 체크리스트는 `현재 개발/검증용 업무시작 기동` 기준이다. - 최종 배포 목표 구조에서는 로컬 `baron-sso-tdc114plus-api` 기동이 없어지는 방향을 목표로 한다. - 다만 2026-07-19 현재는 아직 일부 로그인/조직 연동 검증이 로컬 Baron worktree에 의존하므로, 업무 시작 기동 대상에서 바로 제거하지 않는다. --- ## 2. 출근 후 기본 순서 아래 순서를 기본값으로 사용한다. 1. VS Code를 연다. 2. 작업 기준 문서를 먼저 연다. - `docs/00_guide_tdc114plus_work_progress_timetable_2026-07-02.md` - `docs/daily-issues/YYYY-MM-DD.md` 3. Android target 선행 확인 4. Baron SSO runtime 초기화 (아래 섹션 참고) 5. `tdc114plus-auth` broker 기동 및 health 확인 6. 1차 상태 확인 명령 실행 7. Integration test 실행 현재 해석: - `tdc114plus`와 `tdc114plus-auth`는 최종 배포 직접 대상이다. - `baron-sso-tdc114plus-api`는 현재 개발 중 연동 검증용 보조 worktree다. - Baron SSO 원본 `staging`/`production` 연동으로 완전히 전환되기 전까지는 이 보조 worktree 기동 여부가 앱 개발 중 동작에 직접 영향을 줄 수 있다. --- ## 3. 런타임 초기화 및 1차 확인 ### 3.0 Android target 선행 확인 `startup.sh`는 이제 **가장 먼저** Android target 상태를 확인한다. 실기기 또는 emulator가 `offline`, `unauthorized`, `connection refused` 중 하나면 Baron runtime 기동 전에 멈추고, Windows에서 무엇을 해야 하는지 단계별로 출력한다. 기본 정책: - 기본 타깃은 실기기 1대다. emulator는 fallback일 때만 1대만 켠다. - Windows `adb.exe devices`에서 대상 Android target이 `device` 상태인지 먼저 확인한다. - 표준 연결 방식은 Windows ADB server 공유 방식인 `ADB_SERVER_SOCKET=tcp:172.21.128.1:5037`을 사용한다. - 직접 emulator port 연결인 `TDC114_ADB_CONNECT_ADDRESS=:`는 Docker local ADB가 꼭 필요한 예외 상황에만 사용한다. - Windows 단독 `device` 상태가 확인되기 전에는 WSL/Docker Android 스크립트를 실행하지 않는다. 권장 실행: ```bash # Android preflight + startup 계획 확인 ADB_SERVER_SOCKET=tcp:172.21.128.1:5037 ./scripts/startup.sh --dry-run --wait=40 # 실제 기동 ADB_SERVER_SOCKET=tcp:172.21.128.1:5037 ./scripts/startup.sh --auto --wait=40 ``` Android target preflight 실패 시 사용자가 로컬 PC에서 최소한으로 해야 하는 일: 1. Windows에서 Android Studio를 연다. 2. 실기기면 USB 디버깅 연결을 확인하고, emulator fallback이면 Device Manager에서 1대만 켠다. 3. Windows PowerShell에서 `adb.exe devices`를 실행해 `device` 상태를 확인한다. 4. 여전히 `offline`이면 대상 기기 또는 emulator를 재시작한다. 5. Windows adb는 정상인데 WSL/Docker에서만 실패하면 우선 `5037 -> 127.0.0.1:5037` portproxy와 방화벽 rule을 확인한다. 6. `5037` 공유 방식은 정상인데 특정 integration test에서만 막히면 그때 ` -> 127.0.0.1:` 직접 연결 보조 경로를 검토한다. 이 단계는 Codex가 대신 할 수 없다. Codex가 계속할 수 있는 작업: - WSL/Docker에서 Android target 재인식 확인 - Baron runtime 기동 - API smoke 확인 - integration/manual Android 명령 실행 - `tdc114plus-auth` broker 기동 확인 및 자동 실행 시도 ### 3.05 앱 직접 App Link callback 제거 2026-07-15 기준 신규 앱은 Baron SSO OIDC callback을 직접 받지 않는다. 기본 정책: - 앱은 `https://114.hmac.kr/auth/callback` App Link를 사용하지 않는다. - 앱은 `tdc114plus-auth`의 `/api/v1/auth/link/init`, `/api/v1/auth/link/poll`만 호출한다. - Baron SSO OIDC callback은 `tdc114plus-auth`가 받는다. - 필요한 redirect URI는 `https://114-auth.hmac.kr/api/v1/auth/oidc/callback`이다. - Windows 로컬 App Link 테스트 서버는 업무 시작 기동 대상이 아니다. 참조 문서: ```text docs/00_guide_tdc114plus_auth_broker_redirect_flow_2026-07-15.md ``` ### 3.1 Baron SSO 런타임 전체 초기화 **중요**: Baron SSO는 인프라(PostgreSQL, Redis, ClickHouse)와 Ory 인증(Kratos, Hydra, Keto) 서비스가 **모두 필수**다. 단순히 `docker compose up -d`로는 불충분하다. **반드시 모든 compose 파일을 포함**해야 한다: ```bash cd /home/ubuntu/workspace/baron-sso-tdc114plus-api # 모든 compose 파일 포함하여 안전 중지 후 재시작 docker compose -f docker-compose.yaml -f compose.infra.yaml -f compose.ory.yaml down 2>/dev/null || true docker compose -f docker-compose.yaml -f compose.infra.yaml -f compose.ory.yaml up -d # compose up 실패 시(예: name conflict) 기존 관련 컨테이너 정리 후 1회 재시도 docker ps -a --format '{{.Names}}' | grep -iE "baron|ory" | xargs -r docker rm -f docker compose -f docker-compose.yaml -f compose.infra.yaml -f compose.ory.yaml up -d # 서비스 안정화 대기 (인지 마이그레이션/헬스체크 완료) sleep 30 # tdc114plus로 돌아가기 cd /home/ubuntu/workspace/tdc114plus ``` ### 3.2 1차 상태 확인 명령 ```bash cd /home/ubuntu/workspace/tdc114plus # Baron runtime 상태 확인 (스크립트로 자동 실행 가능) ./scripts/check-baron-api-env.sh # API smoke 테스트 (스크립트로 자동 실행 가능) ./scripts/api-smoke.sh ``` **실행 방법 (권장)**: - 수동: 위 명령을 복사해 실행 - 자동(권장): `scripts/startup.sh`를 사용 **자동 실행 예 (dry-run 권장)**: ```bash # Dry-run: Android preflight 포함, 어떤 작업을 할지 미리 확인 ADB_SERVER_SOCKET=tcp:172.21.128.1:5037 ./scripts/startup.sh --dry-run # 실제 재기동(주의) ADB_SERVER_SOCKET=tcp:172.21.128.1:5037 ./scripts/startup.sh --auto --wait=40 ``` **기대 결과**: - `check-baron-api-env.sh`: `"RESULT ready-ish: 0 failure(s), 0 warning(s)"` - `api-smoke.sh`: 성공 코드 0 - `tdc114plus-auth` health: `{"jwks":"ok","provider":"baron","status":"ok"}` - `scripts/startup.sh --auto`: Android preflight, Baron runtime, `tdc114plus-auth`, smoke 조건 중 하나라도 충족하지 못하면 비정상 종료(exit 1) --- ## 4. 자동 복구 정책 및 규칙 ### 4.1 자동 복구 대상 (사용자 승인 불필요) 다음 사항들은 소스 변경을 요하지 않으므로 **자동으로 복구**한다: - **컨테이너 미실행**: 자동 재시작 또는 전체 재기동 - **컨테이너 명 충돌**: 기존 컨테이너 강제 제거 후 1회 재시작 - **권한 문제**: `chmod`, `chown` 자동 수정 - **설정 디렉터리 부재**: 자동 생성 또는 복원 - **헬스체크 실패 또는 warning**: 최대 6회 재시도 - **서비스 안정화 대기**: 자동 진행 (최대 60초) ### 4.2 수동 개입 필요 (사용자 승인 필요) 다음 사항들은 설정 또는 소스 변경을 요하므로 **명시적 승인**을 받는다: - 소스코드 수정 - 환경 변수 값 변경 - 설정 파일 내용 수정 - 데이터베이스 마이그레이션 또는 초기화 - API 엔드포인트 주소 변경 --- ## 5. 실패 시 복구 순서 ### 5.1 `check-baron-api-env.sh` 실패 또는 warning 다수 Baron SSO runtime 상태 확인 및 복구: ```bash cd /home/ubuntu/workspace/baron-sso-tdc114plus-api ``` **자동 복구 절차** (순차 실행): ```bash # 1단계: 안전 중지 후 전체 재시작 docker compose -f docker-compose.yaml -f compose.infra.yaml -f compose.ory.yaml down 2>/dev/null || true docker compose -f docker-compose.yaml -f compose.infra.yaml -f compose.ory.yaml up -d # 2단계: name conflict가 보이면 관련 컨테이너 정리 후 1회 재시작 docker ps -a --format '{{.Names}}' | grep -iE "baron|ory" | xargs -r docker rm -f docker compose -f docker-compose.yaml -f compose.infra.yaml -f compose.ory.yaml up -d # 3단계: 서비스 안정화 대기 sleep 30 # 4단계: 재확인 cd /home/ubuntu/workspace/tdc114plus ./scripts/check-baron-api-env.sh ``` **상태 확인 명령어**: ```bash docker ps --format '{{.Names}} {{.Status}}' | grep -E "baron_backend|baron_gateway|ory_kratos|ory_postgres" ``` **정상 기대 상태**: | 서비스 | 상태 | 설명 | |--------|------|------| | `baron_backend` | Up (healthy) | 메인 백엔드 서비스 | | `baron_gateway` | Up | 리버스 프록시 | | `baron_postgres` | Up (healthy) | 메인 데이터베이스 | | `baron_redis` | Up | 캐시/세션 저장소 | | `ory_postgres` | Up (healthy) | Ory 데이터베이스 | | `ory_kratos` | Up | 사용자 관리/인증 | | `ory_hydra` | Up | OAuth2/OIDC 제공자 | | `ory_keto` | Up | 권한 관리 | --- ### 5.2 `api-smoke.sh` 실패 (HTTP 502/503) #### 원인 분석 ```bash # Ory Kratos 로그 확인 (인증 서비스) docker logs ory_kratos 2>&1 | tail -30 # Baron backend 로그 확인 docker logs baron_backend 2>&1 | tail -30 # 전체 컨테이너 상태 docker ps | grep -iE "baron|ory" ``` #### 자동 복구 Ory 또는 Baron 서비스가 준비 완료되지 않은 경우: ```bash cd /home/ubuntu/workspace/baron-sso-tdc114plus-api # 전체 재시작 (가장 안전한 방법) docker compose -f docker-compose.yaml -f compose.infra.yaml -f compose.ory.yaml down docker compose -f docker-compose.yaml -f compose.infra.yaml -f compose.ory.yaml up -d sleep 40 # 재확인 cd /home/ubuntu/workspace/tdc114plus ./scripts/api-smoke.sh ``` #### HTTP 401 (인증 오류) ```bash cat /home/ubuntu/workspace/tdc114plus/scripts/.env.smoke.local | grep -E "PHONE|PROVIDER" ``` 전화번호, provider 설정이 올바른지 확인. 변경 필요시 사용자 승인 후 수정. --- ## 6. Android target 확인 `startup.sh`가 이 단계를 먼저 수행하지만, 수동 재확인이 필요하면 아래 명령을 쓴다. 실기기 우선이면 USB 디버깅 연결을 먼저 확인하고, emulator fallback이면 Windows에서 Android Studio emulator를 켠다. 그 후 WSL/Docker 기준 확인: ```bash cd /home/ubuntu/workspace/tdc114plus ADB_SERVER_SOCKET=tcp:172.21.128.1:5037 ./scripts/flutter-docker.sh devices ``` **완료 기준**: - `emulator-` 또는 Android target이 표시된다. - 직접 emulator port 연결은 표준 방식이 실패하거나 integration test 보조 경로가 필요할 때만 사용한다. ### 6.1 Android device가 보이지 않을 때 우선 정책 문서를 참고한다: - `docs/policy_android_studio_wsl_adb_2026-07-03.md` - `docs/scenario_android_emulator_device_integration_test_2026-07-03.md` 가장 흔한 확인 포인트: - Windows emulator가 실제로 켜져 있는가? - Windows `adb.exe devices`에서 대상이 `device` 상태인가? - 당일 emulator port에 맞는 portproxy가 살아 있는가? - Docker local ADB가 `device` 상태를 보는가? --- ## 7. Android SDK license 관련 현재 `scripts/flutter-docker.sh`에는 Android SDK license 선행 승인 로직이 들어 있다. 다음과 같은 오류가 나면 먼저 cache 상태를 의심한다: - `ndk;28.2.13676358` license not accepted - `CMake 3.22.1` license not accepted **확인 경로**: ```bash ls -la /home/ubuntu/workspace/tdc114plus/.docker-cache/flutter/android-sdk/licenses/ ``` 이 디렉터리들이 비어 있지 않으면 재사용되는 것이 정상이다. --- ## 8. 정상 기대 상태 정상 재개 기준: - ✅ `./scripts/check-baron-api-env.sh` 통과 (0 failures, 0 warnings) - ✅ `./scripts/api-smoke.sh` 통과 (성공 코드 0) - ✅ Android emulator device 인식 성공 - ✅ integration test 통과 **Integration test에서 확인할 실제 홈화면 기대값**: 로그인 후 홈화면에는 `문형석`의 조직 slug `is-3` 기준 팀 직원목록이 보여야 한다: - `직원검색` - `검색 결과` - `문형석` - `IS3` --- ## 9. 다음 조치 위 순서 중 어느 단계에서 실패했는지 `docs/daily-issues/YYYY-MM-DD.md`에 남긴다. 기록할 최소 항목: - 실패 단계 (예: 3.2, 5.1, 5.2 등) - 첫 번째 에러 메시지 - 수행한 자동 복구 명령 - 복구 성공 여부 - 추가 수동 개입 필요 여부 및 사유 **기록 예시**: ``` ## 2026-07-06 출근 재기동 ### 진행 상황 - [x] 3.1 Baron SSO 초기화: 성공 - [x] 3.2 상태 확인: 초기 실패 (baron_backend not running) - [x] 5.1 자동 복구: docker compose 재시작 → 성공 - [x] 5.2 api-smoke 재확인: 통과 - [ ] 6.0 Android emulator: 미진행 (시간 부족) ### 실패 내역 - Initial check-baron-api-env.sh: WARN baron_backend not running - Resolved with: docker compose -f ... up -d - No source code changes needed ``` --- ## 부록: 명령 치트시트 ### 빠른 전체 초기화 (추천) ```bash # 1. Baron SSO 전체 재시작 (권장) cd /home/ubuntu/workspace/baron-sso-tdc114plus-api docker compose -f docker-compose.yaml -f compose.infra.yaml -f compose.ory.yaml down 2>/dev/null || true docker compose -f docker-compose.yaml -f compose.infra.yaml -f compose.ory.yaml up -d sleep 30 # 2. tdc114plus 상태 확인 cd /home/ubuntu/workspace/tdc114plus ./scripts/check-baron-api-env.sh && ./scripts/api-smoke.sh ``` ### 컨테이너 상태 모니터링 ```bash # 실시간 로그 보기 docker logs -f baron_backend # 백엔드 로그 docker logs -f ory_kratos # 인증 로그 # 모든 baron/ory 컨테이너 상태 docker ps | grep -iE "baron|ory" # 전체 상태 요약 docker ps --format '{{.Names}} {{.Status}}' ``` ### 긴급 초기화 (최후의 수단) ```bash cd /home/ubuntu/workspace/baron-sso-tdc114plus-api # 모든 관련 컨테이너 강제 제거 docker ps -a --format '{{.Names}}' | grep -iE "baron|ory|sso" | xargs -r docker rm -f # 전체 재시작 docker compose -f docker-compose.yaml -f compose.infra.yaml -f compose.ory.yaml up -d # 서비스 안정화 대기 sleep 40 # 상태 확인 docker ps | grep -iE "baron_backend|ory_kratos" ``` ### 일반적인 문제 해결 ```bash # 권한 문제 수정 (config 디렉터리 쓰기 불가) cd /home/ubuntu/workspace/baron-sso-tdc114plus-api chmod -R u+w config/.generated/ 2>/dev/null || true # Ory 마이그레이션 재시도 docker compose -f docker-compose.yaml -f compose.ory.yaml up kratos-migrate # 특정 컨테이너만 재시작 docker restart baron_backend docker restart ory_kratos # 로그 대량 확인 docker logs baron_backend 2>&1 | grep -i error | tail -20 ``` --- ## 변경 이력 ### v2.0 (2026-07-06) - 자동 복구 정책 섹션 추가 (섹션 4) - Ory 포함 필수 명시 (섹션 3.1) - 컨테이너 정리 자동화 (섹션 5.1) - 안정화 대기 시간 추가 (30~40초) - 권한 문제 자동 처리 설명 추가 - 명령 치트시트 부록 추가 - 문제 기록 템플릿 추가 (섹션 9) ### v1.0 (2026-07-03) 초기 버전: 기본 기동 절차 및 복구 순서