# SESSION_NOTES — LinkOI **Data:** 2026-06-25 ## Cosa è stato fatto Progetto creato da zero. Evoluzione Python di MonitorOsservatorio.xlsm (VBA Excel). ### Decisioni architetturali - **Scope**: solo Spagna e Germania (non tutti i paesi del vecchio VBA) - **Fonte dati**: file .xlsx dal Marketing (non più Mediametrie .txt) - **UI**: Flask + QWebEngineView (stile MyICR_Suite/MediaTrack) — NON QTableWidget puro - **DB**: sync da `X:\MonitorOsservatorio\db.accdb` via pyodbc all'avvio → SQLite locale `monitor.db` - **Tier 1**: Python embedded standalone, deploy in `X:\MonitorOsservatorioPy\` - **Nome app**: **LinkOI** (dopo varie iterazioni: MO², OITV Tool, MonitorOI, RatingOI...) ### File creati - `app/importer.py` — parsing .xlsx Marketing (2 header rows, 19 colonne, 6 target ascolti) - `app/db.py` — sync Access → SQLite + ricerca SCHEDA_PRODOTTO - `app/server.py` — Flask API (records, search, aggancia, rimuovi) - `app/state.py` — stato globale in memoria (records, paese, source_file) - `app/main.py` — PyQt6: splash screen + toolbar teal + QWebEngineView - `app/exporter.py` — export .txt con record agganciati + CodOss - `app/templates/index.html` — tabella HTML con filtri, sort, modal aggancio - `run.bat` — avvio con fallback venv/embedded ### Tracciato input (.xlsx) 2 righe header, dati da riga 3. Colonne A-S: Channel, Weekday, Date, Start time, Title, Description, Duration + Share/Rtg per 6 target ### Stile UI Colori MediaTrack: teal `#00b4db → #0083b0` Splash screen: "Link" (light) + "OI" (bold) + "OSSERVATORIO INTERNAZIONALE TV" ### Dipendenze aggiunte al venv condiviso `flask`, `PyQt6-WebEngine==6.7.0`, `openpyxl`, `loguru` ## Backlog / prossime sessioni - [ ] Deploy Python embedded (`python\` nella cartella) - [ ] Testare sync da Access reale su macchine client (verifica driver ACE) - [ ] Definire tracciato esatto del .txt di export (quali campi, con chi allinearlo) - [ ] Aggiungere supporto Germania (file di esempio da richiedere al Marketing) - [ ] Gestire caso Duration come timedelta (alcune righe La2 hanno valori anomali) - [ ] Testare aggancio automatico su dataset reale completo - [ ] Valutare se aggiungere colonna "paese" nel filter bar