Add Baron Safe app features through session block skeleton
ci / flutter-check (push) Successful in 4s

This commit is contained in:
2026-06-30 17:17:14 +09:00
parent d2f6af7657
commit 7c8e95e0a3
23 changed files with 1531 additions and 5 deletions
+33
View File
@@ -0,0 +1,33 @@
# 금일 작업내역 보고
일자: 2026-06-30
프로젝트: Baron Safe 앱 개발
## 금일 내용
| 작업 꼭지 | 주요 내용 |
| --- | --- |
| 앱 개발 방향 및 Flutter 프로젝트 확장 계획 정리 | Baron Safe 앱 개발 단계, 진행 원칙, Docker Flutter 사용 방식, 단계별 타임테이블 정리 |
| Flutter Android/iOS 정식 프로젝트 구조 병합 | 임시 Flutter 프로젝트 생성 후 Android/iOS 기본 scaffold를 기존 repository 구조에 병합 |
| 앱 기본 실행 구조 및 의존성 정리 | `pubspec.yaml` SDK/의존성 정리, `go_router` 기반 앱 entrypoint와 기본 홈 화면 구성 |
| WebView 및 Native bridge skeleton 구성 | Baron Safe WebView route, URL 주입 방식, WebView 보안 정책, JavaScript bridge 메시지 구조 구성 |
| Push, Secure Storage, Device registration skeleton 구성 | push token service, secure storage abstraction, device id 생성/저장 및 기기 등록 service skeleton 구성 |
| 세션 API 및 사용자 확인 화면 skeleton 구성 | 최근 세션 목록/상세 DTO, mock repository, 세션 목록/상세 화면 route와 홈 진입 타일 구성 |
| 검증 및 원격 반영 | Docker Flutter 컨테이너에서 `flutter pub get`, `flutter analyze`, `flutter test` 검증 및 0-12단계 변경분 Gitea push |
## 산출물
- Flutter Android/iOS 앱 기본 구조 생성
- Baron Safe 앱 기본 홈, WebView, bridge, push, secure storage, device registration, session skeleton 추가
- 세션 목록/상세 mock 화면 확인 가능
- 진행 문서 및 후속 개발 단계표 작성
- Gitea 원격 반영: `d2f6af7 Expand Flutter app scaffold`
## 다음 예정 작업
| 우선순위 | 작업 |
| --- | --- |
| 1 | 세션 차단 workflow skeleton 구성 |
| 2 | 생체 인증 placeholder와 세션 차단 요청 흐름 연결 |
| 3 | 연결 앱 목록/차단 skeleton 구성 |
| 4 | Android FCM 및 iOS APNs 설정 방식 확정 |
@@ -180,13 +180,39 @@ flutter create --project-name baron_safe_app --org kr.hmac.baron.safe /tmp/baron
| 2026-06-30 | 10단계 | Secure storage skeleton | 완료 | device id, app lock, biometric 설정 저장 abstraction과 `flutter_secure_storage` adapter, memory test store 구성 완료. Docker Flutter 컨테이너에서 `dart format lib test`, `flutter analyze`, secure storage 단위 테스트 통과 |
| 2026-06-30 | 11단계 | 검증 | 완료 | Docker Flutter 컨테이너에서 `flutter pub get`, `flutter analyze`, 전체 `flutter test` 통과. 전체 테스트 10건 성공 |
| 2026-06-30 | 12단계 | 커밋 및 push | 완료 | Flutter Android/iOS 프로젝트 병합 및 앱 skeleton 변경분을 커밋하고 Gitea `origin/main` push 진행 |
| 2026-06-30 | 13단계 | WebView URL 및 실행 환경 분리 | 완료 | `BARON_SAFE_WEB_URL` dart-define 기반 WebView URL 주입 방식과 local/staging/production 예시, 검증 방법을 `docs/runtime-config.md`에 정리 |
| 2026-06-30 | 14단계 | WebView 보안 정책 보강 | 완료 | 허용 host 기반 WebView navigation policy와 차단 UI를 구성하고 URL 허용/차단 단위 테스트 추가 |
| 2026-06-30 | 15단계 | Bridge 메시지 연결 | 완료 | WebView `BaronSafeBridge` JavaScript channel, bridge JSON request/response envelope, command parsing 및 허용 command 검증 테스트 추가 |
| 2026-06-30 | 16단계 | Device registration skeleton | 완료 | device id 생성/저장 service, device register API client interface, push token 포함 등록 request skeleton 및 단위 테스트 추가 |
| 2026-06-30 | 17단계 | Session API skeleton | 완료 | 세션 목록/상세 DTO, session client/repository interface, mock session client 및 목록/상세 단위 테스트 추가 |
| 2026-06-30 | 18단계 | Session 화면 skeleton | 완료 | 최근 세션 목록 route, 세션 상세 route, mock repository 기반 세션 목록/상세 화면과 홈 진입 타일 구성 |
| 2026-06-30 | 19단계 | Session block skeleton | 완료 | 세션 차단 request/response/result 모델, 생체 인증 placeholder 기반 block workflow, bridge `blockSession` service 주입 경로, 상세 화면 차단 버튼 연결 및 관련 단위 테스트 추가. Docker Flutter 컨테이너에서 `dart format lib test`, `flutter analyze`, 관련 테스트 15건 통과 |
## 7. 다음 승인 요청 예정
다음 단계는 후속 개발 범위 확정 후 별도 승인으로 진행한다.
다음 단계는 `20단계: Linked apps skeleton`다.
승인 후 결정할 작업:
1. Baron Safe WebView 실제 URL과 환경 분리 방식을 확정한다.
2. Firebase/FCM Android 설정과 iOS APNs 설정 방식을 확정한다.
3. native bridge와 backend API 연동 순서를 확정한다.
1. 연결 앱 목록/차단 DTO와 service interface를 정의한다.
2. mock 기반 연결 앱 목록/상세 또는 차단 진입 화면 placeholder를 구성한다.
3. 연결 앱 목록/차단 workflow 단위 테스트를 추가한다.
## 8. 후속 개발 단계
정식 Flutter Android/iOS scaffold와 앱 skeleton이 원격 `main`에 반영된 이후의 후속 개발 단계이다. 각 단계는 기존 원칙과 동일하게 사용자 승인 후 진행하며, 검증 가능한 단위마다 Docker Flutter 컨테이너에서 `flutter analyze`와 필요한 테스트를 수행한다.
| 단계 | 작업명 | 주요 작업 | 산출물 | 완료 기준 |
| --- | --- | --- | --- | --- |
| 13단계 | WebView URL 및 실행 환경 분리 | `BARON_SAFE_WEB_URL` 사용법 문서화, local/staging/production URL 관리 방식 정리 | 실행 환경 설정 문서 | 환경별 WebView URL 주입 방식 확인 |
| 14단계 | WebView 보안 정책 보강 | 허용 origin 목록, navigation delegate 차단 정책, 외부 링크 처리 기준 정리 | WebView policy 코드/문서 | 허용되지 않은 URL 이동 차단 테스트 가능 |
| 15단계 | Bridge 메시지 연결 | WebView JavaScript channel, bridge request parsing, response envelope 구성 | WebView-native bridge 연결 skeleton | 허용 command만 처리되는 테스트 통과 |
| 16단계 | Device registration skeleton | device id 생성/저장, device register API client interface 구성 | 기기 등록 service skeleton | device id 저장 및 등록 요청 테스트 통과 |
| 17단계 | Session API skeleton | 세션 목록/상세 DTO, API client interface, mock repository 구성 | session service skeleton | mock 기반 목록/상세 테스트 통과 |
| 18단계 | Session 화면 skeleton | 최근 로그인/세션 목록, 상세, 차단 진입 UI 구성 | Flutter session 화면 | analyze 통과 및 화면 route 동작 |
| 19단계 | Session block skeleton | 생체 인증 placeholder와 세션 차단 service 연결 | block workflow skeleton | 생체 인증 후 차단 요청 흐름 테스트 통과 |
| 20단계 | Linked apps skeleton | 연결 앱 목록/차단 DTO, service, 화면 placeholder 구성 | linked apps feature skeleton | mock 기반 목록/차단 테스트 통과 |
| 21단계 | Firebase/FCM Android 준비 | Android Firebase 설정 파일 반영 정책, Gradle 설정, 알림 권한 확인 | Android push 준비 변경 | secret 제외 여부 확인 및 analyze 통과 |
| 22단계 | iOS APNs 준비 | bundle id, entitlement, APNs/FCM 설정 방식 문서화 및 iOS 설정 skeleton | iOS push 준비 변경 | secret 제외 여부 확인 및 analyze 통과 |
| 23단계 | 앱 실행/빌드 검증 | Docker Flutter 기반 Android debug build 가능성 확인, 필요 시 iOS 설정 정합성 점검 | 빌드 검증 결과 | Android debug build 또는 명확한 차단 사유 기록 |
| 24단계 | 후속 커밋 및 push | 13-23단계 변경 목록 확인, 검증, 커밋, Gitea push | Git commit | 원격 `main` 반영 |
+70
View File
@@ -0,0 +1,70 @@
# Runtime Configuration
Baron Safe runtime values are injected at Flutter build/run time with `--dart-define`.
## WebView URL
The app reads the initial WebView URL from `BARON_SAFE_WEB_URL`.
| Environment | Example value | Purpose |
| --- | --- | --- |
| local | `http://10.0.2.2:8080` | Android emulator access to a host preview server |
| staging | `https://safe-staging.baron.hmac.kr` | Internal QA and SSO integration testing |
| production | `https://safe.baron.hmac.kr` | Production Baron Safe web route |
Default value in code:
```text
https://safe.baron.hmac.kr
```
## Run Examples
Android emulator local preview:
```bash
flutter run --dart-define=BARON_SAFE_WEB_URL=http://10.0.2.2:8080
```
Staging:
```bash
flutter run --dart-define=BARON_SAFE_WEB_URL=https://safe-staging.baron.hmac.kr
```
Release build example:
```bash
flutter build apk --dart-define=BARON_SAFE_WEB_URL=https://safe.baron.hmac.kr
```
## Docker Flutter Examples
From repository root:
```bash
docker run --rm \
-v /home/ubuntu/workspace/baron-safe-app/app:/app \
-w /app \
ghcr.io/cirruslabs/flutter:3.38.0 \
flutter analyze
```
For build or run commands, pass the same `--dart-define` argument to Flutter inside the container.
## Rules
- Do not hardcode staging-only or developer-only URLs in feature code.
- Do not put API keys, APNs keys, FCM server keys, signing keys, or production secrets in `--dart-define`.
- Keep WebView URL configuration separate from future native API base URL configuration.
- Keep the WebView allowed host list in app code small and explicit.
- Allow remote WebView traffic only over HTTPS.
- Allow HTTP only for local development hosts such as `localhost`, `127.0.0.1`, and Android emulator host `10.0.2.2`.
## Verification
1. Confirm [baron_safe_web_config.dart](../app/lib/src/features/webview/baron_safe_web_config.dart) still reads `BARON_SAFE_WEB_URL`.
2. Confirm [baron_safe_webview_policy.dart](../app/lib/src/features/webview/baron_safe_webview_policy.dart) allows only approved WebView hosts.
3. Run `flutter analyze`.
4. Run WebView policy tests.
5. For device/emulator checks, launch the app with the environment-specific `--dart-define` and verify the `/safe` route loads the expected WebView target.