Pin down why v1 is Android-only now that the client is Flutter
Flutter weakens the old "single platform = faster dev" argument for skipping iOS, so tech-design.md §6/§8 now state the reasons that still hold: v2's OS-layer notification access is Android-only by Apple's own policy regardless of framework, and the dev environment is Windows, so an iOS build isn't even possible right now. Flutter still means no UI rewrite once a Mac is available later.
This commit is contained in:
parent
874e965665
commit
9cd86a4da5
|
|
@ -92,10 +92,15 @@ v1에서는 커스텀 모델을 새로 학습하지 않는다. 대신 **검색
|
|||
|
||||
## 6. 플랫폼 전략
|
||||
|
||||
- **Android 우선.** 알림 접근 권한 기반 확장(v2 OS 레이어)을 염두에 둔 선택이기도 하고, v1
|
||||
자체 앱 단계에서도 베타 규모라면 단일 플랫폼으로 좁혀 개발 속도를 확보하는 게 유리하다.
|
||||
- iOS는 베타 반응 확인 후 병행 착수. (근거: `decision-log.md` Q7, 원본 회의자료 §oslayer 리스크
|
||||
"iOS는 안드로이드보다 훨씬 제한적")
|
||||
- **Android 우선 (v1은 Android만).** 근거 세 가지:
|
||||
1. v2 OS 레이어(알림 접근 권한) 확장이 애초에 안드로이드에서만 가능함 — 애플이 다른 앱의
|
||||
알림 내용을 읽는 것 자체를 정책적으로 막고 있어, 클라이언트 프레임워크와 무관하게 구조적으로
|
||||
안드로이드 전용인 기능임
|
||||
2. 개발 환경이 Windows라 iOS 빌드(Xcode/macOS 필요)를 할 수 없음 — v1 시점의 실질적 제약
|
||||
3. Flutter라 iOS 코드 재작성 비용 자체는 낮지만, 위 두 이유로 지금은 굳이 열 이유가 없음
|
||||
- iOS는 빌드 가능한 환경(Mac)이 갖춰지거나 베타 반응을 보고 병행 착수 여부를 다시 판단한다.
|
||||
Flutter를 쓰므로 그때 가서 UI를 다시 만들 필요는 없고, iOS 빌드·서명·APNs 설정 등 플랫폼별
|
||||
작업만 추가하면 된다.
|
||||
|
||||
## 7. v1에서 의도적으로 안 만드는 것
|
||||
|
||||
|
|
@ -119,7 +124,7 @@ Python으로 남긴다.
|
|||
|
||||
| 항목 | 결정 | 근거 |
|
||||
|---|---|---|
|
||||
| 클라이언트 | Flutter (Dart) | Q7이 안드로이드 우선을 확정했지만 네이티브를 강제하진 않음. 채팅 UI(이미 클릭 프로토타입으로 검증된 디자인)를 핫리로드로 빠르게 만들 수 있어 v1 개발 속도에 유리. v2 OS 레이어의 알림 접근 권한(NotificationListenerService)은 platform channel로 네이티브 Android 모듈을 붙여 해결 — 클라이언트 전체를 네이티브로 갈 필요는 없음 |
|
||||
| 클라이언트 | Flutter (Dart), **v1은 Android 빌드만** | Q7이 안드로이드 우선을 확정했지만 네이티브를 강제하진 않음. 채팅 UI(이미 클릭 프로토타입으로 검증된 디자인)를 핫리로드로 빠르게 만들 수 있어 v1 개발 속도에 유리. v2 OS 레이어의 알림 접근 권한(NotificationListenerService)은 platform channel로 네이티브 Android 모듈을 붙여 해결 — 클라이언트 전체를 네이티브로 갈 필요는 없음. iOS는 개발 환경이 Windows라 지금은 빌드 자체가 안 됨 (§6 참고) — Flutter라 나중에 Mac 환경이 생기면 UI 재작성 없이 iOS 빌드만 추가하면 됨 |
|
||||
| 백엔드 — 코어 서비스 | Go (Gin/Echo + `gorilla/websocket`) | 인증, 메시지 릴레이, DB 접근. 동시성·성능 이점, 향후 스케일 대비. 이 프로젝트 규모에선 Python으로도 충분했지만 선제적으로 Go 선택 |
|
||||
| 백엔드 — AI 서비스 | Python (FastAPI) | `generate_draft.py`·`escalation_filter.py`·`retrieve_style.py`를 그대로 감싸는 내부 API. 이미 실행 검증까지 끝난 코드를 다시 짜지 않기 위함 |
|
||||
| 서비스 간 통신 | Go 코어 → Python AI 서비스, 내부망 HTTP(REST) | 처음부터 gRPC 등으로 과설계하지 않음 — 필요해지면 그때 전환 |
|
||||
|
|
|
|||
Loading…
Reference in New Issue