42 lines
6.0 KiB
Markdown
42 lines
6.0 KiB
Markdown
# 구조와 모듈
|
||
|
||
- `lib/modules/<이름>/<이름>.dart` 가 모듈의 공개 입구(예외: platform_ui.dart, storage_sqlite.dart). 다른 모듈은 입구 파일만 import.
|
||
- 조립은 모듈 밖 `lib/main.dart`, `lib/composition/android_bootstrap.dart` 에서만. 암호·저장소·연결 방식을 바꾸려면 bootstrap 의 해당 줄만 바꾼다.
|
||
- 안드로이드 전용 플러그인은 platform_android 에서만 import (check_modules.py 의 PLATFORM_ONLY).
|
||
- 화면은 `AppScope.of(context).app`(FriendlyApp)의 서비스만 쓴다.
|
||
|
||
## 모듈과 의존 방향 (`tool/check_modules.py` 가 검사)
|
||
|
||
| 모듈 | 하는 일 | 쓸 수 있는 모듈 |
|
||
| ---------------- | ---------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
|
||
| core | 모듈끼리 주고받는 약속(키·전송·암호·봉투·명함 항목 이름) | 없음 |
|
||
| platform | 기기마다 다른 기능의 약속(보안 저장소, 저장 공간, 센서, QR, 발견, 위치, 통화 기록·전화, 알림, 주소록) | 없음 |
|
||
| platform_android | platform 의 안드로이드 구현(플러그인은 여기서만) | core, platform, storage |
|
||
| storage | 저장소 약속 + 메모리/SQLite 구현 | platform |
|
||
| keys | 키 파생, 둘만 아는 키 암호 (복구 코드·조각 기능은 화면에서 폐지, 코드는 남김) | core, platform |
|
||
| sharing | 명함·대화방이 누구와 공유되는지 | storage |
|
||
| sync | 봉투 만들기·반영, 충돌 규칙, 시계 맞추기, 재전송 | core, storage |
|
||
| transport | 메모리·직접 연결·외부 보관함·늦게 만드는 연결 | core |
|
||
| discovery | QR 내용, 흔들기 감지, 같은 네트워크 주소록 | platform |
|
||
| inference | "어디서 봤지?" 유추와 추천 | core |
|
||
| visibility | 공개 범위 표(정보 × 관계)와 명함 거르기. 순수 계산 | core |
|
||
| layout | 홈·명함 틀(템플릿) 순서/보이기/편집 | core |
|
||
| kinship | 가계도로 촌수·호칭 계산(순수) | 없음 |
|
||
| events | 생일·기일 일정, 알림 날짜 계획, 통화 기록 요약(순수) | 없음 |
|
||
| groups | 그룹 정의(이름·종류·순서·구성원·하위 그룹), 비밀번호 잠금, 여러 번 틀리면 기다리기(순수) | core |
|
||
| work | 대화 속 업무 표시(📌 업무·🚨 긴급 호출) 읽고 쓰기, 맡은 업무 목록(순수) | 없음 |
|
||
| circles | 원형 보기 계산: 가까움 순위·고리 나누기, 선배·후배(연도), 직급 순서, 원 위의 자리(순수) | 없음 |
|
||
| history | 사람별 회사 근무 기간(몇 년~몇 년), 기간 겹침 계산(순수) | 없음 |
|
||
| app | 서비스 묶음(`FriendlyApp`). 화면이 쓰는 유일한 내부 입구 | 위 모듈들(키·전송 구현 제외) |
|
||
| ui | 화면. `app` 의 서비스만 쓴다 | app, core, platform, storage, discovery, inference, layout, visibility, kinship, events, groups, work |
|
||
|
||
모듈 폴더 밖의 `lib/main.dart`, `lib/composition/` 이 부품을 고르는 유일한 곳이다.
|
||
암호 구현·저장소·연결 방식을 바꾸려면 `lib/composition/android_bootstrap.dart` 의 해당 줄만 바꾼다.
|
||
|
||
## 화면(ui) 주요 파일
|
||
- 탭: chat_list · relations · tasks · card_wallet · me (home_shell.dart)
|
||
- 처음 시작: onboarding_screen.dart, startup_gate.dart
|
||
- 대화방: chat_room_screen.dart + widgets/message_bubble.dart
|
||
- 그룹: group_detail_screen.dart + widgets/group_menu.dart, pin_dialog.dart
|
||
- 요청: requests_screen.dart (다시 연결 승인·제명)
|