아키텍처
LinkOStar는 IoT hub의 연결성·셋업·관제를 supplier-agnostic 하게 제공합니다. Supplier는 자기 비즈니스 로직(예: 디바이스 모델, 알람 정책)을 자기 BFF/앱에 두고, LinkOStar는 raw resource 만 노출합니다.
컴포넌트 한눈에
┌────────────────────────────────────────────────────────────────────────┐
│ LinkOStar (공유 플랫폼) │
│ │
│ ┌─────────────────┐ ┌────────────────┐ ┌─────────────────┐ │
│ │ Web Console │ │ Mobile App │ │ Backend API │ │
│ │ (Next.js) │ │ (Flutter) │ │ (Spring Boot) │ │
│ │ /tenant/** │ │ /app/** │ │ │ │
│ └────────┬────────┘ └────────┬───────┘ └────────┬─────────┘ │
│ │ │ │ │
│ └─────────────────────┴────────── REST ────┤ │
│ │ │
│ ┌────────┴────────┐ │
│ │ MySQL + │ │
│ │ (later) MQTT │ │
│ └────────┬────────┘ │
│ │ │
│ ┌────────────┘ │
│ ┌─────────────────────┐ │ │
│ │ Hub-Agent (Pi) │◀── /v1/** ────┘ │
│ │ Go binary + │ │
│ │ systemd │ │
│ └────────┬────────────┘ │
│ │ BLE │
│ │ MQTT (선택) │
│ ▼ │
│ ┌─────────────────────┐ │
│ │ Bluetooth devices │ │
│ │ (예: 비콘, 센서) │ │
│ └─────────────────────┘ │
└─────────────────────────────────┬──────────────────────────────────────┘
│ X-API-Key + X-Tenant-UUID
│ JWT (sdx-oauth)
▼
┌──────────────────────────────┐
│ Supplier BFF (예: EDS BFF) │
│ 자기 비즈니스 집계/매핑 │
└───────────┬──────────────────┘
│
▼
┌──────────────────────────────┐
│ Supplier UI (운영자 콘솔) │
│ / End-user 앱 │
└──────────────────────────────┘주요 흐름
1. Hub Claim (최초 boot)
- Supplier 가 web 콘솔에서 HubClaimCode 발급 (또는 installer가 자동 발급).
- Installer가 SD에 OS 이미지 + boot config (
linkostar-config.json: claim_code, supplier_uuid, backend_url) 굽기. - Pi 부팅 → hub-agent → bootconfig 발견 →
POST /v1/hubs/claim - Backend가 claim_code 검증 + HubInstance 생성/재사용 + HubAuthToken 발급 + BundleClaimExpansion 실행.
- Hub-agent가 응답으로
hub_uuid + accessToken + refreshToken받아state.json에 저장.
2. Telemetry 수집 (정상 운영)
- Hub-agent의 reconciler가 60s 주기로
POST /v1/hubs/{uuid}/telemetry. - Backend가 hub_telemetry 행 INSERT.
- Supplier UI/Web 콘솔에서
GET /tenant/hub-monitoring/{uuid}/telemetry로 조회.
3. BLE 셋업 (Mobile)
- Pi 부팅 → hub-agent가 BLE GATT advertise (LinkOStar service UUID).
- Mobile app이 BLE scan → 매칭 → connect.
- WiFi scan / 자격 주입 → hub WAN 연결 → telemetry 첫 성공.
- ConnectivityMonitor 가 healthy 판정 → BLE 광고 OFF.
- 이후 telemetry 실패가 N회 연속이면 광고 자동 재ON (재셋업 가능).
4. Supplier Step Wizard
- Supplier가 web에서 ProvisioningStep 정의 (BUILDER UI).
- Claim 시점에 BundleClaimExpansionService가 step → HubProvisioningRun으로 expand.
- End-user가 web/mobile에서 단계 진행 →
POST /tenant/hubs/{uuid}/provisioning/steps/{stepId}/submit.
책임 경계 (Supplier가 만들어야 할 것)
| 책임 | LinkOStar | Supplier |
|---|---|---|
| Hub 발견/제어 | ✅ BLE 광고, GATT, MQTT | — |
| End-user 인증 | sdx-oauth 만 통합 | BFF에서 자기 세션 ↔ LinkOStar 자격 변환 |
| 화면용 집계 | — | ✅ BFF에서 LinkOStar fan-out |
| 알람/이상감지 | — | ✅ telemetry 폴링 + 정책 |
| 디바이스 모델/제품 정의 | generic ManagedApp | ✅ 자기 비즈니스 메타데이터 |
| 요금/계약 | — | sdx-billing 또는 자체 |