# Installazione scheduler — store di pianificazione (SQL Server)

Lo scheduler .NET di MyTown (host `KCSSchedule.exe`, repo
`kondorcs.scheduleservices`) tiene la **pianificazione dei job** su un database
**Microsoft SQL Server** (anche Express), separato dai database PostgreSQL della
piattaforma. Questa cartella crea quel job-store da zero.

## Contenuto

| File | Contenuto |
|---|---|
| `10_schema_scheduler_sqlserver.sql` | 3 tabelle (`KCS_ScheduleLibrarys`, `KCS_ScheduleConfigLibrarys`, `KCS_ScheduleLogs`) + 2 stored procedure (`KCS_ScheduleGetLibrarys`, `KCS_ScheduleSetLog`) |
| `20_seed_scheduler_notificatore.sql` | Seed **template** del job `Notificatore` (con placeholder da sostituire) |

## Uso

1. Creare un database dedicato su SQL Server, es. `KondorCS`:
   ```sql
   CREATE DATABASE KondorCS;
   ```
2. Creare schema e stored procedure:
   ```
   sqlcmd -S <server> -E -d KondorCS -i 10_schema_scheduler_sqlserver.sql
   ```
3. Copiare `20_seed_scheduler_notificatore.sql`, **sostituire i placeholder**
   (`<mittente>`, `<PG_HOST>`, `<PG_USER>`, `<PG_PASSWORD>`) con i valori della
   propria installazione, poi eseguirlo:
   ```
   sqlcmd -S <server> -E -d KondorCS -i 20_seed_scheduler_notificatore.sql
   ```
4. Impostare la connection string verso **questo** SQL Server nel registro di
   Windows dell'host scheduler e avviare il servizio: vedi la sezione
   *Scheduler* di [`platform/INSTALL.md`](../../platform/INSTALL.md).

## Note

- Il seed registra il solo job `Notificatore` (notifiche + OTP del 2FA). Altri
  job (report fotovoltaico, estrazione PDF documentali) si aggiungono con righe
  analoghe in `KCS_ScheduleLibrarys` + `KCS_ScheduleConfigLibrarys`, indicando
  l'`AssemblyName`/`AssemblyType` della relativa libreria.
- La consegna dell'OTP via email richiede una riga `config_mail`
  (`cfm_type='LOGIN_TOKEN'`) sul database PostgreSQL `KCS-Portal`, con l'account
  SMTP **fornito dall'installazione**: vedi `platform/INSTALL.md`.
- `KeyValue` di `ConnDB` contiene una password: trattare il seed compilato come
  file con segreti (non committarlo con valori reali).
