7.0 KiB
7.0 KiB
2026-07-16 업무 인계 메모
작성 시각: 2026-07-16 KST
오늘 최종 상태
- 실기기 로그인은 다시 정상 진행됐다.
- 문자 링크 승인 후 앱 복귀 시 직원검색 목록이 다시 표시되는 것까지 확인했다.
- 오늘 최종 복구 기준은
로그인 성공 -> 직원검색 목록 표시 성공이다. - 다만 프로필 사진 1순위/2순위/3순위 화면 검증은 아직 오늘 완료 범위에 포함하지 않는다.
오늘 발생한 주요 이슈와 원인
1. 로그인 후 직원검색이 다시 무너지는 문제
현상:
- 로그인 링크 발송은 되지만 앱 진입 후 직원검색 화면이 비거나 로딩만 지속됐다.
- 잠시 후
로그인이 만료되었거나 권한을 확인할 수 없습니다.화면으로 떨어졌다.
중간에 확인한 사실:
- 앱 SharedPreferences 안에는 세션 토큰이 실제로 저장되고 있었다.
- 저장된 토큰은 Baron access token이 아니라
tdc114plus-auth가 발급한 app session token 형식이었다. - 저장된 user 정보는 아래처럼 fallback 값이었다.
id = baron-username = Baron UsertenantSlug = ""
의미:
- 세션 토큰이 전혀 저장되지 않는 문제는 아니었다.
- 다만 user 메타데이터는 충분하지 않았고, 동시에 org-context 중계 경로도 깨져 있었다.
2. 핵심 장애 원인: 5001 auth broker의 org-context self-recursion
현상:
tdc114plus-auth로그에/api/v1/integrations/org-context요청이 들어온 뒤, 같은 5001 서버가 다시 자기 자신의/api/v1/integrations/org-context를 호출하는 패턴이 반복됐다.- 내부 재호출 요청에는
Authorization,X-App-Session헤더가 없어서 결국 unauthorized 흐름으로 무너졌다.
실제 확인값:
- 실행 중인 5001 프로세스 환경변수에서 아래를 직접 확인했다.
BARON_ORG_CONTEXT_BASE_URL=http://127.0.0.1:5001
즉:
- 원래 의도는
https://sadmin.hmac.kr를 upstream으로 호출해야 하는데, - 실제 실행 중 프로세스는 자기 자신
http://127.0.0.1:5001을 upstream으로 잡고 있었다.
근본 원인:
scripts/start-auth-server.sh가TDC114_AUTH_UPSTREAM_ORG_CONTEXT_API_BASE값을 env 파일source전에 먼저 읽고 있었다.- 그래서
scripts/.env.android-device.local안에TDC114_AUTH_UPSTREAM_ORG_CONTEXT_API_BASE=https://sadmin.hmac.kr가 있어도 반영되지 않았다. - 그 결과 fallback으로
TDC114_ORG_CONTEXT_API_BASE=http://127.0.0.1:5001를 사용하면서 self-recursion이 발생했다.
3. 오늘 복구 조치
수정 파일:
scripts/start-auth-server.sh
수정 내용:
UPSTREAM_ORG_CONTEXT_BASE읽는 위치를 env 파일source뒤로 옮겼다.- 이후 5001 auth broker를 재기동했다.
재기동 후 직접 확인한 실행 환경:
PORT=5001
APP_SESSION_SECRET=tdc114plus-dev-session
BARON_ORG_CONTEXT_BASE_URL=https://sadmin.hmac.kr
BARON_ORG_CONTEXT_TENANT_SLUG=hanmac-family
결과:
- self-recursion 원인이 제거됐다.
- 다시 로그인 후 실기기 직원검색 목록이 정상 표시됐다.
오늘 추가로 확인한 기술 메모
1. baron-user / Baron User 생성 위치
파일:
/home/ubuntu/workspace/tdc114plus-auth/cmd/server/main.go
확인 내용:
link/poll완료 후poll.User에 값이 없을 때 fallback으로 아래 값이 채워진다.baron-userBaron User
현재 판단:
- 이 값은 오늘 새로 생긴 회귀가 아니라 기존 구조였다.
- 오늘의 실장애 원인은 이것 자체보다
org-context upstream 오배선이었다.
2. tenantSlug 누락 구조는 후속 개선 대상
현재 확인 결과:
tdc114plus-auth의link/poll응답 user 모델에는tenantSlug,tenantId,tenantName이 없다.- 앱은 세션 user의
tenantSlug가 비어 있으면 후속 조직도/초기 선택 계산에서 fallback을 더 많이 타게 된다.
중요 판단:
- 오늘 직원검색이 완전히 무너진 직접 원인은 self-recursion이었다.
- 하지만
tenantSlug누락 구조는 다음 작업에서 별도로 정리해야 한다.
오늘 수정/추가한 파일
-
scripts/start-auth-server.sh- org-context upstream env 읽는 순서를 수정했다.
-
app/lib/src/core/config/app_environment.dart- 빌드 시각 define 표시용 항목을 유지했다.
-
app/lib/src/features/auth/presentation/login_screen.dart- 실기기에서 최신 APK 식별을 위해 빌드 시각 표시를 유지했다.
확인 완료한 테스트
- 5001 health 확인
curl -i --max-time 5 http://127.0.0.1:5001/health
결과:
{"jwks":"ok","provider":"baron","status":"ok"}
- 실행 중 5001 프로세스 환경변수 확인
BARON_ORG_CONTEXT_BASE_URL=https://sadmin.hmac.kr반영 확인
- 실기기 세션 저장 확인
- SharedPreferences 안에 app session token 저장 확인
- user fallback 값 저장 확인
- 실기기 재로그인 후 직원검색 확인
- 문자 링크 승인 성공
- 앱 복귀 성공
- 직원검색 목록 표시 성공
내일 업무 시작 순서
- 전일 인계 문서 먼저 확인
docs/daily-issues/2026-07-16_work_handoff.md
- 5001 auth broker health 확인
curl -fsSL --max-time 5 http://127.0.0.1:5001/health
- 실행 중 5001 프로세스 upstream 값 확인
ss -ltnp '( sport = :5001 )'
tr '\0' '\n' < /proc/<PID>/environ | rg 'BARON_ORG_CONTEXT_BASE_URL|BARON_ORG_CONTEXT_TENANT_SLUG'
정상 기준:
BARON_ORG_CONTEXT_BASE_URL=https://sadmin.hmac.kr
BARON_ORG_CONTEXT_TENANT_SLUG=hanmac-family
- 실기기 ADB 연결 및 reverse 확인
ADB_SERVER_SOCKET=tcp:172.21.128.1:5037 ./scripts/flutter-docker.sh adb -s R5CT42QTCNX reverse --list
- 앱 재로그인 후 첫 확인
- 직원검색 목록이 바로 뜨는지
- 30초 뒤에도 만료 화면으로 떨어지지 않는지
내일 우선 점검할 항목
org-contextself-recursion이 정말 재발하지 않는지 먼저 확인한다.tenantSlug누락 구조를tdc114plus-auth응답 모델 기준으로 정리한다.- 프로필 사진 우선순위 검증을 아래 순서로 이어간다.
- NAVER_WORKS
- BARON_UUID_R2
- DEFAULT
- 직원검색 외에 조직도/상세/즐겨찾기 화면도 같은 세션 상태에서 유지되는지 확인한다.
보안상 주의사항
-
아래 값들은 문서에 실제 값을 남기지 않는다.
- NAVER WORKS 서비스 계정 자격값
- Baron org-context key id / secret
- private key 경로 및 원문
-
scripts/.env.android-device.local -
secrets/naver_works_service_account.local.env
위 두 파일은 계속 비공개 로컬 파일로만 유지한다.
내일 첫 판단 기준
- 내일 첫 목표는 “또 고치는 것”이 아니라 “오늘 복구한 5001 upstream 상태가 유지되는지 먼저 검증”이다.
- 그 상태가 유지되면 사진 정책 검증으로 넘어가고,
- 유지되지 않으면 가장 먼저
start-auth-server.sh와 실행 중 프로세스 환경변수부터 다시 본다.