# lunchpick 앱 배포 저장소

**공개 URL**: https://gvdms.tail2e525d.ts.net/lunchpick-downloads/

이 디렉터리는 lunchpick 사용자 앱 + 사장님 앱의 iOS/Android 빌드 아티팩트를 보관합니다.
Flutter CI 가 새 빌드를 완료하면 자동으로 이곳에 저장되고, `latest-*` symlink 가 갱신되어
gvdms 랜딩 페이지의 LUNCHPICK 카드 옆 다운로드 링크에 즉시 반영됩니다.

## 구조

```
downloads/
├── README.md                      # 이 파일
├── latest-manifest.json           # 최신 버전 메타데이터
├── latest-android.apk             # symlink → versions/vX.Y.Z/lunchpick-android.apk
├── latest-android.aab             # (Play Store 업로드용)
├── latest-ios.ipa                 # symlink → versions/vX.Y.Z/lunchpick-ios.ipa
├── latest-business-android.apk    # 사장님 앱
├── latest-business-ios.ipa
└── versions/
    └── vX.Y.Z/
        ├── lunchpick-android.apk
        ├── lunchpick-android.aab
        ├── lunchpick-ios.ipa
        ├── lunchpick-business-android.apk
        ├── lunchpick-business-ios.ipa
        └── build-info.json
```

## Symlink 갱신 (CI 스크립트에서 실행)

```bash
cd /data/apps/LUNCH/downloads
VER=v1.2.3
ln -sfn versions/$VER/lunchpick-android.apk latest-android.apk
ln -sfn versions/$VER/lunchpick-ios.ipa latest-ios.ipa
ln -sfn versions/$VER/lunchpick-business-android.apk latest-business-android.apk
ln -sfn versions/$VER/lunchpick-business-ios.ipa latest-business-ios.ipa
# manifest 갱신
cat > latest-manifest.json <<EOF
{
  "version": "$VER",
  "built_at": "$(date -u +%Y-%m-%dT%H:%M:%SZ)",
  "artifacts": {
    "consumer": {"android": "versions/$VER/lunchpick-android.apk", "ios": "versions/$VER/lunchpick-ios.ipa"},
    "business": {"android": "versions/$VER/lunchpick-business-android.apk", "ios": "versions/$VER/lunchpick-business-ios.ipa"}
  }
}
EOF
```

## nginx 서빙

nginx 는 이 디렉터리를 `/lunchpick-downloads/` 로 노출합니다:
- `autoindex on` — 파일 목록 브라우저 열람 가능
- `Content-Disposition: attachment` — 클릭 시 다운로드
- Basic Auth 없음 (베타 테스터 배포용)

## 현재 상태

- **모바일 앱 아직 미개발** — 이 디렉터리는 CI 파이프라인 구축 후 채워짐
- Flutter 프로젝트 초기화: `mobile/` 폴더에서 진행 예정 (기획서 §7.1 참고)

## 원칙

- iOS 와 Android 는 **항상 동시 빌드/배포** (원칙 0-a)
- 두 플랫폼 모두 성공한 경우에만 symlink 갱신 (부분 실패 시 이전 버전 유지 — 회귀 방지)
- 파일 존재 시에만 다운로드 링크 활성화 (부재 시 랜딩 페이지에서 "빌드 준비 중" 표시)
