# tdc114plus 개발환경 구성 작업순서 작성일: 2026-07-02 목적: 신규 앱 `tdc114plus` 개발환경 구성을 시작하기 전, Baron SSO 저장소에 임시로 보관할 작업순서를 정리한다. 추후 `tdc114plus` 저장소의 Flutter 앱 골격이 갖춰지면 본 문서를 해당 저장소의 `docs/` 경로로 복사 이관한다. ## 1. 저장소 확인 Gitea 저장소: - https://gitea.hmac.kr/kevin/tdc114plus 확인 결과: - `git ls-remote https://gitea.hmac.kr/kevin/tdc114plus.git` 접근은 성공했다. - 출력 ref가 없으므로 현재 저장소는 아직 커밋/브랜치가 없는 빈 저장소이거나, 기본 브랜치가 아직 생성되지 않은 상태로 판단한다. ## 2. 기본 추진 방향 `tdc114plus`는 Baron Safe에서 검토했던 Flutter 기반 모바일 앱 구성 방식을 참고해 개발환경을 구성한다. 1차 개발은 아래 범위에 집중한다. - Baron SSO 전화번호 로그인 - Baron SSO 등록 사용자만 앱 사용 허용 - Baron SSO `orgFront` 기반 개인/조직 정보 연계 - 직원검색 - 전화번호검색 - 가족사 필터 - 조직도 - 직원목록 - 전화걸기 - 문자보내기 - 즐겨찾기 1차 보류 기능은 아래와 같다. - 공지사항 - 전자결재 - 수신전화식별 - 수신팝업 ## 3. 단계별 개발환경 구성 순서 ### 3.1 저장소 초기화 1. `tdc114plus` 저장소를 clone한다. 2. 기본 브랜치를 `main` 또는 `develop`으로 생성한다. 3. `README.md`, `.gitignore`, `docs/`, `scripts/` 기본 구조를 생성한다. 4. Baron SSO 저장소에 임시 보관한 신규 앱 결정 문서와 본 문서를 `tdc114plus/docs/`로 복사 이관한다. ### 3.2 Flutter 앱 스캐폴딩 1. Flutter 프로젝트를 생성한다. 2. Android/iOS 타겟을 활성화한다. 3. 앱 패키지명을 확정한다. - 예: `kr.co.baron.tdc114plus` 4. 앱 이름, 앱 아이콘, splash, 기본 권한 설정을 정리한다. 5. Baron Safe 때 검토한 방식처럼 Flutter 기반 Android/iOS 공통 앱 구조로 시작한다. ### 3.3 기술스택 기본 구성 | 영역 | 권장 | | --- | --- | | Framework | Flutter | | Language | Dart | | 상태관리 | `flutter_riverpod` | | Routing | `go_router` | | HTTP | 기존 방식이면 `http`, 확장성 필요 시 `dio` 검토 | | 로컬 설정 | `shared_preferences` | | 보안 저장 | 후속 단계에서 `flutter_secure_storage` 검토 | | 다국어 | `easy_localization` | | 로깅 | `logging` 또는 `logger` | | 전화/문자 | `url_launcher` | | 즐겨찾기 저장 | 1차는 로컬 저장, 후속 서버 동기화 검토 | ### 3.4 환경 분리 1. `dev`, `staging`, `prod` API endpoint를 분리한다. 2. Baron SSO backend URL을 환경별로 설정한다. 3. orgFront API URL 또는 Baron SSO backend proxy 경로를 설정한다. 4. Flutter `--dart-define` 또는 환경 설정 파일 방식 중 하나를 선택한다. 5. Android/iOS별 네트워크 보안 설정을 정리한다. ### 3.5 앱 기본 구조 권장 디렉터리 예시는 다음과 같다. ```text lib/ core/ config/ router/ network/ storage/ logging/ features/ auth/ directory/ organization/ favorites/ profile/ shared/ widgets/ models/ ``` 각 영역의 역할은 다음과 같이 둔다. | 경로 | 역할 | | --- | --- | | `core/config` | 앱 환경, API endpoint, 빌드 설정 | | `core/router` | `go_router` 기반 화면 라우팅 | | `core/network` | Baron SSO 및 orgFront API client | | `core/storage` | 로컬 설정, 즐겨찾기, 보안 저장 추상화 | | `core/logging` | 앱 로그 정책 | | `features/auth` | Baron SSO 전화번호 로그인 | | `features/directory` | 직원검색, 전화번호검색, 직원목록, 직원 상세 | | `features/organization` | 가족사 필터, 조직도 | | `features/favorites` | 즐겨찾기 | | `features/profile` | 내 정보, 향후 설정 화면 | | `shared/widgets` | 공통 UI 컴포넌트 | | `shared/models` | 공통 모델 | ### 3.6 1차 기능 개발 순서 1. Baron SSO 전화번호 로그인 화면 2. 로그인 성공/실패 처리 3. orgFront 기반 직원 목록 API 연동 4. 직원검색 5. 전화번호검색 6. 가족사 필터 7. 조직도 8. 직원 상세 9. 전화걸기/문자보내기 10. 즐겨찾기 ### 3.7 검증 및 배포 준비 1. `flutter analyze` 기준을 정리한다. 2. 기본 widget/unit test 실행 방식을 정리한다. 3. Android debug APK 빌드를 확인한다. 4. iOS 빌드는 macOS 환경에서 별도 확인한다. 5. `README.md`에 개발 실행 방법을 기록한다. 6. Gitea Actions 또는 수동 빌드 절차를 정리한다. 7. 개발 중간 산출물 기준 APK 배포 방식을 결정한다. ### 3.8 Android emulator / WSL ADB 연동 기준 Windows Android Studio emulator를 WSL 또는 Docker 기반 Flutter CLI에서 사용할 때는 별도 ADB 연동 정책을 따른다. - 정책 문서: `docs/troubleshooting/policy_android_studio_wsl_adb_2026-07-03.md` - 실행 기록: `docs/troubleshooting/android-studio-wsl-adb-timetable-260703.md` - 통합테스트 시나리오: `docs/scenario_android_emulator_device_integration_test_2026-07-03.md` 핵심 기준: - `adb -a -P 5037 nodaemon server`는 1차 시도만 한다. - `10048` bind 실패가 재현되면 즉시 Windows `portproxy` 방식으로 전환한다. - Android emulator에서 host API는 `127.0.0.1`이 아니라 `10.0.2.2`를 사용한다. - Docker Flutter에서 Windows ADB를 사용할 때는 `ADB_SERVER_SOCKET=tcp::5037`을 명시한다. ## 4. 작업 원칙 - 1차 개발은 전화번호부/조직도 기본 기능 완성에 집중한다. - 공지사항, 전자결재, 수신전화식별, 수신팝업은 골격 단계에서 제외한다. - 기존 Baron SSO backend와 orgFront 데이터를 우선 활용한다. - 앱 자체 회원가입 기능은 만들지 않는다. - Baron SSO 등록 인원 확인 실패 시 앱 사용을 허용하지 않는다. - 기기 등록, 푸시, 자동 로그인, 공지/전자결재 연동은 후속 단계에서 별도 검토한다. ## 5. 추후 이관 항목 `tdc114plus` 저장소 골격이 갖춰지면 아래 문서를 복사 이관한다. - `docs/guide_tdc114plus_development_decision_brief_2026-07-01.md` - `docs/dev_env_tdc114plus_setup_plan_2026-07-02.md` 이관 후 Baron SSO 저장소의 문서는 회의 및 초기 검토 기록으로 보존한다.