Modèle de données — ce que nous gardons et pas
copilot_seats — sièges actifs
Chaque cycle de pull remplace tout le snapshot pour cette org.
| Champ | Source | Haché? |
|---|---|---|
user_login_hash | SHA256(lowercase login) | ✓ |
user_login_prefix | 4 premiers chars + ’…‘ | partiel |
plan_type | ”business” / “enterprise” | non |
assignee_team | Équipe qui a attribué le siège | non |
last_activity_at | Timestamp RFC3339 | non |
last_activity_editor | ”VSCode” / “JetBrains” / … | non |
pending_cancellation_date | DATE ou NULL | non |
snapshot_at | Moment du pull | non |
copilot_events — entrées audit-log
Append-only. Idempotent sur (connection_id, github_event_id).
| Champ | Source | Haché? |
|---|---|---|
github_event_id | _document_id GitHub | non |
event_type | Champ action | non |
actor_login_hash | SHA256(lowercase actor.login) | ✓ |
actor_login_prefix | 4 premiers chars + ’…‘ | partiel |
target_login_hash | SHA256(lowercase user.login) | ✓ |
target_login_prefix | 4 premiers chars + ’…‘ | partiel |
occurred_at | Champ @timestamp | non |
payload_json | Reste de la payload GitHub, PII filtrées | partiel |
Champs payload filtrés
Ces champs des audit-log entries sont supprimés avant stockage :
actor,user,actor_login,user_login— déjà stockés comme hashesactor_id,user_id— IDs GitHub internesactor_email,user_email,emailsname,full_name
Le reste (action codes, métadonnées org, noms de repos) va tel quel dans
payload_json.
Ce que nous n’AVONS PAS
- Nom complet, email, nom d’affichage — supprimés à l’ingestion
- Suggestions de code, prompts, completions — Copilot les garde, pas nous
- Adresses IP — pas dans l’API admin GitHub
- Fichiers ouverts par le dev — privé
- Fréquence/durée d’usage par dev — seulement
last_activity_at
Retrouver une personne depuis un hash
Le user_login_prefix affiche jan… pour jan.peeters. Comparez ce
préfixe avec votre système RH ou la liste des membres GitHub. Nous
n’avons pas le mapping et ne le voulons pas.