# 2026-07-14 업무 인계 메모

작성 시각: 2026-07-14 16:54 KST

## 오늘 최종 상태

- 실기기 로그인 흐름은 Baron SSO 공식 정책에 맞춰 동작 확인했다.
- 사용자는 앱에서 전화번호 입력 후 문자 링크를 받는다.
- 문자 링크를 누르면 Chrome에서 Baron SSO 승인 완료 화면에 머문다.
- 사용자가 직접 TDC114PLUS 앱으로 돌아오면 앱이 저장된 pendingRef로 poll을 재개하고 직원검색 메인 화면에 진입한다.
- Baron SSO 정책상 문자 링크 클릭 후 Chrome이 자동으로 앱으로 돌아오는 기능은 현재 지원되지 않는다.
- 직원검색 화면의 직원/조직 정보 호출은 `tdc114plus-auth` 5001 서버의 `/api/v1/integrations/org-context`를 사용한다.
- 실기기에서 직원목록 표시 확인 완료:
  - IS3 중복 뱃지 제거 확인
  - 전화번호 `010-0000-0000` 형식 표시 확인
  - 직원목록 표시 확인

## 오늘 발생한 주요 이슈

### 1. 로그인 승인 후 앱 복귀 UX

현상:
- 문자 링크 클릭 후 Chrome의 `로그인 승인 완료` 화면에 머물렀다.
- 사용자가 `로그인 창으로 이동하기` 버튼을 누르면 Baron SSO 로그인창/대시보드 흐름으로 이동해 앱 메인 진입 흐름과 맞지 않았다.

확인된 정책:
- Baron SSO 개발자 답변 기준, `/api/v1/auth/headless/link/init`에는 post-verify redirect 필드가 없다.
- SMS 링크를 누른 브라우저는 verify-only approver로 동작한다.
- 승인 완료 후 브라우저가 앱 callback/App Link로 자동 이동하는 정책은 없다.

현재 대응:
- 앱 문구를 “문자 승인 후 앱으로 돌아오면 자동 로그인됩니다” 흐름으로 맞췄다.
- 앱 복귀 시 저장된 pendingRef로 poll을 재개하도록 처리했다.

내일 확인할 것:
- 사용자가 앱 복귀 시 즉시 메인으로 들어가는지 반복 테스트한다.
- 자동 앱 복귀가 꼭 필요하면 Baron SSO 쪽 정책/기능 추가 요청 사안으로 분리한다.

### 2. `auth_provider_unavailable`

현상:
- 로그인 화면에서 `승인 상태 확인 실패: auth_provider_unavailable` 발생.

원인:
- 5001 `tdc114plus-auth` 서버가 Baron SSO `link/poll` 완료 후 OIDC redirect/consent/token exchange를 처리하는 구간에서 실패할 수 있었다.
- 이후 서버를 최신 소스 기준으로 재기동하고 로그를 직접 확인했다.

확인 로그:
- `link/init` 성공
- `link/poll` pending 반복
- `link/poll status=ok`
- `/consent` redirect 감지
- consent accept 성공
- callback URL에 code 포함
- token exchange 성공

결론:
- 최신 `tdc114plus-auth` 소스와 올바른 환경값으로 실행하면 login -> poll -> consent -> token exchange는 정상 동작한다.

### 3. 직원검색 화면 로딩 지속

현상:
- 직원검색 화면에 진입했지만 중앙 로딩만 표시되고 직원목록이 나오지 않았다.

확인:
- 5001 서버 로그에 `GET /api/v1/integrations/org-context`가 여러 번 찍혔다.
- 즉 앱이 직원/조직 API를 호출하지 않은 것이 아니라, 호출은 하고 있었다.

원인:
- 5001 auth 서버를 수동 재기동하면서 조직도 연동 키 환경값을 빠뜨렸다.
- 누락된 값:
  - `BARON_ORG_CONTEXT_KEY_ID`
  - `BARON_ORG_CONTEXT_KEY_SECRET`

조치:
- `scripts/.env.android-device.local`에 있는 값을 기준으로 5001 서버를 기동하도록 자동화했다.
- 새 스크립트 추가:
  - `scripts/start-auth-server.sh`
- `scripts/startup.sh`에서 업무시작 시 `start-auth-server.sh --restart`를 자동 호출하도록 연결했다.
- `scripts/shutdown.sh`에서 5001 auth 서버도 종료하도록 연결했다.
- `scripts/.env.android-device.local`, staging env 파일 권한을 `600`으로 조정했다.

검증:

```bash
./scripts/start-auth-server.sh --restart
curl -fsSL --max-time 5 http://127.0.0.1:5001/health
```

응답:

```json
{"jwks":"ok","provider":"baron","status":"ok"}
```

실기기 화면:
- 직원검색 화면에서 직원목록 정상 표시 확인.

## 내일 업무 시작 순서

1. Windows 관리자 PowerShell에서 ADB portproxy/방화벽 상태 확인이 필요하면 기존 절차대로 확인한다.
2. Windows 일반 PowerShell에서 실기기 ADB 연결 확인:

```powershell
cd $env:LOCALAPPDATA\Android\Sdk\platform-tools
.\adb.exe devices
```

3. WSL에서 업무시작 기동:

```bash
ADB_SERVER_SOCKET=tcp:172.21.128.1:5037 ./scripts/startup.sh --auto --wait=40
```

4. 5001 auth 서버 확인:

```bash
curl -fsSL --max-time 5 http://127.0.0.1:5001/health
```

정상 기준:

```json
{"jwks":"ok","provider":"baron","status":"ok"}
```

5. 실기기 reverse 확인:

```bash
ADB_SERVER_SOCKET=tcp:172.21.128.1:5037 ./scripts/flutter-docker.sh adb -s R5CT42QTCNX reverse --list
```

필수:

```text
tcp:5000 tcp:5000
tcp:5001 tcp:5001
```

6. 앱 실행 후 확인:
   - 로그인 세션이 남아 있으면 직원검색 화면 진입
   - 직원목록이 바로 표시되는지 확인
   - 로딩이 지속되면 5001 로그 확인

```bash
tail -n 120 logs/$(date +%F)/tdc114plus-auth.log
```

## 내일 우선 점검할 항목

- `startup.sh`가 `start-auth-server.sh --restart`를 정상 호출하는지 확인한다.
- 직원검색 화면 진입 시 `GET /api/v1/integrations/org-context`가 5001 로그에 찍히는지 확인한다.
- 직원목록 로딩이 다시 멈추면 가장 먼저 아래를 확인한다:
  - 5001 health
  - `scripts/.env.android-device.local` 존재 여부
  - `TDC114_BARON_KEY_ID`, `TDC114_BARON_KEY_SECRET` 값 누락 여부
  - adb reverse `tcp:5001 tcp:5001`

## 오늘 변경된 주요 파일

- `scripts/start-auth-server.sh`
  - 5001 `tdc114plus-auth` 로컬 서버 기동 스크립트.
  - `scripts/.env.android-device.local`에서 조직도 키를 읽어 `BARON_ORG_CONTEXT_*`로 주입한다.

- `scripts/startup.sh`
  - 업무시작 기동 시 `tdc114plus-auth` 5001 서버를 자동 기동하도록 연결.

- `scripts/shutdown.sh`
  - 업무종료 시 5001 auth 서버도 종료하도록 연결.

- `app/lib/src/features/auth/presentation/login_screen.dart`
  - 문자 승인 후 앱 복귀 안내 문구 반영.
  - pendingRef 복원/poll 오류 표시 개선.

- `docs/00_policy_tdc114plus_screen_feature_2026-07-07.md`
  - Baron SSO 공식 verify-only 정책과 앱 복귀 방식 반영.

## 주의 사항

- `scripts/.env.android-device.local`에는 실제 연동 키가 들어 있으므로 외부 공유 금지.
- 내일 APK를 다시 빌드할 때는 반드시 auth base define을 포함한다.

```bash
./scripts/flutter-docker.sh build apk --debug \
  --dart-define=TDC114_API_BASE=http://127.0.0.1:5000 \
  --dart-define=TDC114_AUTH_API_BASE=http://127.0.0.1:5001 \
  --dart-define=TDC114_DIRECTORY_API_BASE=http://127.0.0.1:5000 \
  --dart-define=TDC114_ORGANIZATION_API_BASE=http://127.0.0.1:5000 \
  --dart-define=TDC114_ORG_CONTEXT_API_BASE=http://127.0.0.1:5001
```

- 직원검색의 실제 직원/조직 조회는 현재 5001 auth broker를 통해 `/api/v1/integrations/org-context`로 간다.
- 5000의 예전 `/api/v1/tdc114plus/employees` 류 경로는 현재 직원검색의 주 경로가 아니다.
