8.6 KiB
8.6 KiB
tdc114plus Swagger API 목록 및 Feature 매핑
작성일: 2026-07-07 상태: v1.2
목적: 타임테이블의 다음 작업인 Swagger 기준 1차 사용 API 목록 고정, 현재 Flutter feature 매핑, 구조 차이점 정리를 한 문서에 정리한다.
상위 기준 문서:
docs/00_guide_tdc114plus_work_progress_timetable_2026-07-02.mddocs/00_contract_tdc114plus_api_2026-07-02.mddocs/00_policy_tdc114plus_development_2026-07-02.md
주의:
- 현재 기준은 Baron Swagger 문서와 앱 소스의 대조 결과를 합친 중간 정리본이다.
- 신규앱 전용
/api/v1/tdc114plus/...API는 공식 계약으로 간주하지 않는다. - 옛
/api/v1/tdc114plus/...경로는 과거 구현 흔적 또는 호환 경로이며, 기능이 무너지지 않게 테스트하면서 점진 제거한다.
1. 1차 사용 API 목록
현재 Baron Swagger 기준 1차 사용 또는 즉시 검토 대상 API는 아래다.
| 구분 | Method | Path | 현재 상태 | 앱 사용 목적 |
|---|---|---|---|---|
| auth | GET |
https://sso.hmac.kr/oidc/oauth2/auth |
RP 설정 기준 | Baron SSO Hosted Login 시작 |
| auth | POST |
https://sso.hmac.kr/oidc/oauth2/token |
RP 설정 기준 | PKCE authorization code token 교환 |
| auth | GET |
https://sso.hmac.kr/oidc/userinfo |
RP 설정 기준 | 로그인 사용자 정보 조회 |
| auth reference | POST |
/api/v1/auth/phone-login |
앱 직접 호출 제외 | Baron SSO Hosted Login 내부 전화번호 로그인 구현 참고 |
| auth reference | POST |
/api/v1/auth/headless/phone-login |
앱 직접 호출 제외 | Baron SSO Hosted Login 내부 구현 참고 |
| auth reference | POST |
/api/v1/auth/headless/link/poll |
앱 직접 호출 제외 | Baron SSO Hosted Login 내부 구현 참고 |
| auth reference | POST |
/api/v1/auth/enchanted-link/init |
앱 직접 호출 제외 | Baron SSO 링크 로그인 내부 구현 참고 |
| auth reference | POST |
/api/v1/auth/enchanted-link/poll |
앱 직접 호출 제외 | Baron SSO 링크 로그인 내부 구현 참고 |
| auth reference | POST |
/api/v1/auth/sms, /api/v1/auth/verify-sms |
앱 직접 호출 제외 | Baron SSO SMS 인증 내부 구현 참고 |
| auth reference | POST |
/api/v1/auth/qr/* |
앱 직접 호출 제외 | Baron SSO QR 인증 내부 구현 참고 |
| organization | GET |
/api/v1/integrations/org-context |
공식 계약 | 조직 subtree/구성원 조회 |
| organization | GET |
/api/v1/public/orgchart |
공식 계약 | 공유용 조직도 조회 |
| legacy auth | POST |
/api/v1/tdc114plus/auth/phone-login |
호환 흔적 | 테스트용 세션 seed 예외 경로 |
| legacy directory | GET |
/api/v1/tdc114plus/directory/employees |
제거 대상 | 과거 직원검색 목록 가정 |
| legacy organization | GET |
/api/v1/tdc114plus/organization/tenants |
제거 대상 | 과거 회사 필터 가정 |
| legacy organization | GET |
/api/v1/tdc114plus/organization/orgchart |
제거 대상 | 과거 조직도 가정 |
2. Feature별 현재 매핑
2.1 auth
관련 코드:
app/lib/src/features/auth/data/auth_api_client.dartapp/lib/src/features/auth/data/auth_repository.dart
현재 매핑:
| 기능 | 기준 API | 비고 |
|---|---|---|
| 로그인 시작 | GET https://sso.hmac.kr/oidc/oauth2/auth |
기본 로그인 경로. 외부 Baron SSO Hosted Login 화면을 연다 |
| callback 처리 | https://114.hmac.kr/auth/callback |
App Link로 앱 복귀 |
| token 교환 | POST https://sso.hmac.kr/oidc/oauth2/token |
PKCE code_verifier로 authorization code 교환 |
| 사용자 정보 | GET https://sso.hmac.kr/oidc/userinfo |
후속 연결 대상 |
| fallback 로그인 | legacy POST /api/v1/tdc114plus/auth/phone-login |
예외 호환 경로만 유지 |
| 세션 저장 | API 아님 | AuthSessionStore에서 로컬 저장 |
구조 메모:
AuthRepository추상화는 이미 존재한다.- 구현체 이름은
RemoteAuthRepository로 일반화했다. OidcLoginRepository는 Hosted Login authorization URL 생성, PKCE transaction 저장, callback token 교환을 담당한다.- Swagger Auth 섹션에 표시되는
phone-login,headless,enchanted-link,sms,qr계열 API는 Baron SSO Hosted Login 화면/서버 내부 구현 참고 대상으로 분류한다. - 기존 headless/legacy phone login 계층은 테스트 호환 및 제거 대상 분류용으로만 유지한다.
- 로그인 성공 후 Baron SSO가
org-context호출용 연동 키를 내려주면 앱 세션의 선택적 credential로 받아 사용한다. - 해당 기능이 미개발인 동안은 staging
org-context고정 키를 비추적 env/Dart define fallback으로 사용한다.
2.2 directory
관련 코드:
app/lib/src/features/directory/data/directory_api_client.dartapp/lib/src/features/directory/data/directory_repository.dart
현재 매핑:
| 기능 | 기준 API | 비고 |
|---|---|---|
| 직원 목록/검색 | GET /api/v1/integrations/org-context 기반 재구성 |
메인 직원검색 진입점 |
| 직원 상세 | org-context member 필드 또는 후속 공식 API 확인 필요 |
API 계약 재정렬 중 |
구조 메모:
DirectoryRepository추상화는 존재한다.- 구현체 이름은
RemoteDirectoryRepository로 일반화했다. - 현재는 directory repository를
org-context기반 구조로 재정렬하는 단계다.
2.3 organization
관련 코드:
app/lib/src/features/organization/data/organization_api_client.dart
현재 매핑:
| 기능 | 기준 API | 비고 |
|---|---|---|
| 테넌트/상위 조직 | GET /api/v1/integrations/org-context |
실제 화면 사용 높음 |
| 조직도/공유형 | GET /api/v1/public/orgchart |
공유/외부 링크 전용 |
구조 메모:
- organization 쪽은 repository 추상화가 추가됐다.
orgContextProvider를 통해 subtree 조회를 별도 책임으로 분리한다.- 1차 화면 재사용 범위는
orgContextProvider까지로 고정한다. org-context전용 provider를 준비하되, 현재 직원검색 화면 연결은 점진 전환한다.
3. 구조 차이점 및 정리 우선순위
3.1 우선순위 1
- Hosted Login + PKCE를 기본 로그인 계약으로 고정
- 앱 내부 phone 입력/headless 직접 호출 UI와 API 의존 제거
- callback
state검증, token 교환, userinfo 조회 연결
3.2 우선순위 2
- organization 상태 재사용 범위를
org-context중심으로 먼저 고정 org-context전용 provider를 준비하고, 실제 UI 연결은 후속 단계로 분리- directory 화면에서 subtree/member 비동기 조합 방식을 더 다듬을지 검토
3.3 우선순위 3
- 직원 상세 API를 화면에서 실제로 쓰는 범위를 확대할지 판단
- orgchart client를 drilldown 화면에 실제 연결할지 판단
4. 현재 확인된 구조상 이슈
- 일부 코드와 문서에 legacy
/api/v1/tdc114plus/...흔적이 남아 있다. - 실제
org-context응답 필드 대조가 끝나기 전까지는 DTO 필드 확정 표현을 최소화해야 한다. - Baron SSO의 로그인 성공 응답 또는 후속 userinfo/session 응답에 조직도 API 연동 키가 아직 포함되지 않을 수 있다.
- 따라서 앱은
세션 credential 우선 -> 비추적 env fallback순서로 구현되어야 한다.
5. 다음 코드 작업 제안
다음 코드 작업은 아래 순서를 권장한다.
- organization 상태 재사용은
orgContextProvider우선으로 유지 - legacy
/api/v1/tdc114plus/...의존은 테스트를 곁들여 단계적으로 제거 - 실제 UI 연결 전
org-context매핑과 member 검색 규칙을 먼저 고정 - auth session 모델에 선택적
orgContextCredential수신/저장 구조를 추가 org-contextclient는 session credential을 우선 사용하고 없으면 staging env fallback을 사용
6. 이 문서로 완료된 타임테이블 항목
이 문서로 아래 작업을 1차 수행했다.
- Swagger 기준 1차 사용 API 목록 문서화
- 현재 Flutter 코드의 auth/directory/organization feature 매핑
- feature별 DTO/repository/mock 구조 차이점의 초안 정리
- auth feature의 기본 로그인 경로와 fallback 경로 역할 분리
- directory repository와 organization repository의 1차 책임 경계 분리
- organization 상태 재사용 범위와 orgchart 연결 범위 1차 확정
- orgchart 전용 provider 준비 완료, 실제 UI 연결은 후속 단계로 유지
- auth/directory 구현체 명칭을
Remote...Repository로 일반화 - auth/directory 구현체 명칭 일반화 후 관련 테스트 통과
다만 실제 Swagger UI 대조 확인은 후속 작업으로 남아 있다.