Files
tdc114plus/docs/dev_env_tdc114plus_setup_plan_2026-07-02.md

180 lines
6.3 KiB
Markdown

# 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:<WINDOWS_HOST_IP>: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 저장소의 문서는 회의 및 초기 검토 기록으로 보존한다.