# Outlook AI Triage (Chrome extension)

Ez a Chrome extension Microsoft Graph (O365) segítségével lekéri az **Inbox olvasatlan** leveleit, OpenAI-val besorolja őket, majd a levelekre **Outlook kategóriát** állít, illetve a kért esetekben **fontossá teszi / olvasottá teszi**.

## Mit csinál a kategóriák szerint?

- **Action Required**: kategória + `importance=high`
- **Waiting / Pending**: kategória + `isRead=true`
- **FYI / Read Only**: kategória + `isRead=true`
- **Scheduled / Calendar Related**: kategória (nem jelöli olvasottnak automatikusan)
- **External / Client**: kategória + `isRead=true`
- **System / Automated**: kategória + `isRead=true`

**Hírlevelek**: ha a beállítás be van kapcsolva, a „newsletter/unsubscribe” jellegű leveleket átteszi egy **Newsletters** mappába, így nem maradnak az Inboxban.

## Biztonsági megjegyzés (fontos)

- Az OpenAI API kulcs kliensoldali extensionben nem 100%-ig védhető. Érzékeny / céges környezetben javasolt egy saját backend proxy.
- Ha egy API kulcs véletlenül publikus helyre került, azonnal vond vissza és generálj újat.

## Telepítés (dev)

1. Chrome → `chrome://extensions`
2. Kapcsold be: **Developer mode**
3. **Load unpacked** → válaszd ki ezt a mappát: `outlook-ai-triage-extension/`

## Microsoft (O365) azonosítás – Azure App Registration

Szükség van egy saját Azure AD App-ra (Public client / SPA jelleg).

1. Azure Portal → **App registrations** → **New registration**
2. Supported account types: általában **Accounts in any organizational directory** (vagy a saját tenantod)
3. Jegyezd fel a **Application (client) ID**-t, ezt írd be az extension popupban.
   - Ha a regisztráció **single-tenant** (csak a saját céges tenant), akkor a popupban a **Tenant / Authority** mezőbe írd be a tenant ID-t vagy a tenant domain-t (pl. `contoso.onmicrosoft.com`).
   - Alapértelmezett: `organizations` (work/school accountokhoz).
4. **Authentication**:
   - Add a platform: **Single-page application (SPA)**
   - Redirect URI: az extension popupban a **Redirect URL megmutatása** gomb kiírja.
   - Miért `chromiumapp.org`? A `chrome.identity.launchWebAuthFlow` a böngésző által kezelt visszahívási (redirect) domaint használja. Ez **nem** a te weboldalad domainje (pl. `ppt.ambrusz.hu`), és nem kell külön “kitenni” sehova.

### Ha az auth ablak azonnal bezár (AADSTS9002326)

Ha ezt látod: `AADSTS9002326: Cross-origin token redemption is permitted only for the 'Single-Page Application' client-type`, akkor az Azure appod nincs SPA-ként beállítva.

- Azure Portal → App registrations → (app) → **Authentication**
- **Add a platform** → **Single-page application (SPA)**
- Add hozzá redirect URI-ként: `https://hlmbcibcjfdhgkejfpjcpdafomhgikef.chromiumapp.org/msal`

Ez szükséges ahhoz, hogy a token endpoint elfogadja a kérést a `chrome-extension://...` originről.

### Fontos: letölthető ZIP + "Load unpacked" eset

Ha a bővítményt ZIP-ből kibontva, **Load unpacked**-del telepíted több gépre, akkor a redirect URL csak akkor fog mindenkinek működni, ha a bővítmény **ID-ja stabil**. Ehhez a manifest tartalmaz egy fix `key` mezőt.

- Stabil redirect URL ehhez a csomaghoz: `https://hlmbcibcjfdhgkejfpjcpdafomhgikef.chromiumapp.org/msal`
- Ha ezt megváltoztatod (másik `key` / másik extension ID), akkor az Azure App redirect URI-t is frissíteni kell.
5. **API permissions** → Microsoft Graph:
   - Delegated: `Mail.ReadWrite`, `MailboxSettings.Read`, `openid`, `profile`, `offline_access`
   - Delegated (kategóriák létrehozásához): `MailboxSettings.ReadWrite`
6. (Opcionális) Admin consent, ha a tenant policy ezt kéri.

## Használat

1. Kattints az extension ikonra.
2. Add meg a **Client ID**-t.
3. Add meg az **OpenAI API key**-t + modellt (alap: `gpt-4o-mini`).
4. **Bejelentkezés Microsofttal**.
5. **Olvasatlan levelek feldolgozása**.

## Megjegyzések / Limitációk

- A feldolgozás kézi indítású (popupból). Automatizálás (időzítő/tab event) külön kérésre.
- A hírlevél felismerés heurisztikus. Ha szeretnéd, hozzáadhatunk pontosabb szabályokat (pl. `List-Unsubscribe` header alapján), amihez több Graph mező kell.
