# PatchCenter — SLPM (SANEF Linux Patch Manager)

App web FastAPI/PostgreSQL pour piloter le patching Linux SANEF : plan de patching, historique, users AD/LDAP, intégration iTop, API Qualys.

**Source de vérité** : VM CT 116 (`pc.mpcz.fr`, `172.28.199.185` + `pct exec 116 -- ...`) + repo Gitea `adminmpmcz/patchcenter`.

## Workflow de dev (validé 2026-04-17)
1. **Claude** modifie direct sur CT 116 via SSH → `git push` Gitea
2. **Khalid** sur poste SANEF (`C:\patchcenter`) → `git pull` → test sur `127.0.0.1:8080`
3. Si OK : Khalid ajoute ses modifs + `git push` Gitea
4. **Claude** sur CT 116 → `git pull` + `systemctl restart patchcenter`

## Stack
- Python 3.11+ / FastAPI / Uvicorn
- PostgreSQL (patchcenter)
- Jinja2 + Tailwind (templates)
- LDAP (AD SANEF) pour auth

## Structure
- `app/` — code FastAPI (auth, models, routers, services)
- `deploy/` — scripts déploiement + migrations SQL
- `tools/` — scripts d'import/enrichissement (Qualys, iTop, Ayoub, etc.)
- `docs/` — DEPLOY.md, SANEF_PATCHING_PROCESS.md
- `migrate_*.sql` — migrations DB manuelles

## Lancer en local (poste SANEF, pas la copie locale Claude)
```
python -m uvicorn app.main:app --host 0.0.0.0 --port 8080
```

## Gitea
- Repo : `http://172.28.199.202:3000/adminmpmcz/patchcenter`
- Creds HTTPS : `adminmpmcz` / `Admin@2025`

## Notes
- `SECRET_KEY` côté VM : `sanef-patchcenter-demo-key-change-me` (drop-in systemd)
- DB échangée via **Gitea Releases** (attachment `.sql`), jamais dans le git tree
- Après restore DB : `ALTER TABLE ... OWNER TO patchcenter` pour toutes les tables+sequences
