# VTE Watch — Mini Program Zepp OS

Dashboard VTENEXT sul polso (Amazfit Balance 2): attività calendario, ticket HelpDesk, notifiche.

**Server VTE:** `https://vte.mypantarei.net`  
**Cartella isolata:** non modifica il core VTE (`vte2472`).

## Contenuto

| Modulo | Ruolo |
|--------|--------|
| `app-side/` | Side Service — chiamate REST VTE (Touch API) |
| `setting/` | Settings App — login e URL (Zepp App sul telefono) |
| `page/` | UI orologio — home + 3 liste |
| `secondary-widget/` | Widget quadrante con contatori |
| `docs/` | Guida OAuth VTE + bozza privacy policy |

## Prerequisiti (Linux)

```bash
npm install -g @zeppos/zeus-cli
cd /var/www/html/vte-watch-zepp
npm install
```

Simulatore: [Zepp OS Simulator](https://docs.zepp.com/docs/guides/quick-start/simulator-dev/) + device **Amazfit Balance 2**.

Developer Mode in Zepp App: Profile → Settings → About → 7 tap sul logo.

## Sviluppo

```bash
cd /var/www/html/vte-watch-zepp
zeus dev          # preview con simulatore
zeus build        # genera .zab
zeus preview      # QR per device reale
```

## Primo utilizzo

1. Installa l'app sull'orologio (preview QR o sideload).
2. Su **Zepp App → VTE Watch → Settings**:
   - URL: `https://vte.mypantarei.net` (predefinito)
   - Username + password VTE (oppure access key senza MFA)
   - **Test connessione / Login**
3. Se MFA attivo: inserire OTP e ripetere test.
4. Apri l'app sull'orologio → **Sync**.

### Setup via JSON (QR)

Payload QR / codice setup:

```json
{
  "vte_url": "https://vte.mypantarei.net",
  "client_id": "OPZIONALE_OAUTH_CLIENT_ID"
}
```

Incollare il JSON nel campo «Setup QR JSON» nelle impostazioni e toccare **Applica codice setup**.

## API VTE usate

- `touch.login` — autenticazione
- `touch.get_todos` — task calendario
- `touch.get_list` — Events + HelpDesk (`viewname: Open Tickets`)
- `touch.get_notifications` — notifiche non lette

Autenticazione post-login: `Authorization: Basic base64(user:accesskey)`.

## OAuth2 (fase store)

Vedi [docs/oauth-vte-setup.md](docs/oauth-vte-setup.md) per registrare l'External Application in VTE.

## Limitazioni MVP

- **Sola lettura** — nessuna modifica record da orologio
- **Niente push real-time** — sync manuale o all'apertura app
- Widget mostra **ultimo sync** (cache Side Service)
- OAuth PKCE: struttura predisposta, login attivo via Touch/Basic

## Struttura build

Dopo `zeus build`, il pacchetto `.zab` è in `dist/`.

## Licenza

Uso interno Pantarei / VTENEXT — non distribuire senza privacy policy e account developer Zepp.
