# N’KORA — Premier accès administrateur

Le site est l’interface du logiciel. Le serveur applicatif et ses bases PostgreSQL
doivent être installés et raccordés avant toute connexion. La connexion utilise
les comptes propres à N’KORA, sans compte ChatGPT. Ouvrir la page de connexion
ne donne aucun accès aux données.

## 1. Installer le serveur

Dans le code source, suivre `platform/docs/INSTALLATION_V3.md` pour PostgreSQL,
les migrations et le compte SQL d’exécution. Appliquer toutes les migrations
centrales disponibles. Suivre ensuite `INSTALLATION_V4.md` pour les bases dédiées.
Ces opérations se font sur un hébergement persistant, pas dans le navigateur.

Ne pas transmettre de mot de passe PostgreSQL dans l’interface du site.
`NKORA_ADMIN_DATABASE_URL` est réservé à l’environnement opérateur.

## 2. Créer le premier administrateur

Depuis l’environnement opérateur où le module `nkora_juris` est installé,
avec `NKORA_ADMIN_DATABASE_URL` pointant vers la base **centrale** migrée :

```sh
python -m nkora_juris.provision \
  --first-administrator \
  --organization "Nom de votre entreprise" \
  --subject "identite-stable-du-proprietaire"
```

Remplacer le nom et l’identité par vos propres informations. L’identité est un
identifiant stable du compte, pas son mot de passe. Pour une organisation déjà
créée, remplacer `--organization` par `--organization-id` et son UUID.

Cette commande crée un propriétaire (`owner`) disposant de l’administration
éditeur (`is_platform_admin`). Elle refuse de s’exécuter si un administrateur
éditeur existe déjà, y compris s’il est inactif. Elle refuse les bases d’entreprise.
Elle ne crée pas de doublon en cas de deuxième initialisation.

Après validation de la transaction, elle affiche l’identifiant d’organisation,
l’identifiant utilisateur et la clé personnelle (`token`). Conserver cette sortie
dans un gestionnaire de mots de passe. La clé est affichée une seule fois ; seul
son hash est enregistré. Durée par défaut : 90 jours ; `--days` accepte 1 à 365.
Ne pas publier cette sortie ni l’inclure dans une capture d’écran ou un journal partagé.

La commande refuse une deuxième initialisation : elle ne permet pas de retrouver
une clé perdue. Il n’existe pas encore de récupération en libre-service.
Ne pas créer une autre identité pour contourner cette situation.

## 3. Raccorder le site et ouvrir l’administration

Démarrer l’API sur un serveur HTTPS persistant. Son endpoint `/health` doit
répondre correctement. Configurer la variable serveur du site `NKORA_BACKEND_URL`
avec l’adresse de base de l’API, sans suffixe `/v1`, puis republier le site avec ce
paramétrage. Ne pas enregistrer une clé utilisateur comme variable globale du site.

Ouvrir `/administration`, choisir « Clé personnelle » sur la page de connexion.
Saisir la clé issue de l’initialisation pour ouvrir l’administration centrale.
Dans RH, « Comptes & accès » permet ensuite de définir un identifiant, un mot de
passe et la double authentification du titulaire. Aucune clé remise par un autre administrateur
n’est nécessaire à cette création.

## 4. Activer le personnel et les données RH

Pour l’organisation créée, suivre intégralement `INSTALLATION_V4.md` : créer
une base distincte, exécuter `nkora_juris.company_setup`, enregistrer la connexion
dédiée dans `NKORA_COMPANY_DATABASE_URLS` puis redémarrer l’API.

La clé du compte ouvre ensuite `/workspace`. Si l’administration fonctionne mais
pas l’espace RH, vérifier le raccordement de la base d’entreprise. Le bon état de
`/health` n’atteste pas que chaque base d’entreprise est configurée.

## Comprendre le diagnostic

- **Installation à terminer** : aucune adresse de serveur n’est configurée.
- **Serveur indisponible** : adresse renseignée, réponse absente ou incorrecte.
- **Serveur joignable** : le serveur répond ; le compte et les droits restent à vérifier par la connexion.

Le diagnostic ne crée aucun compte, ne divulgue aucun secret et n’accorde aucun
accès aux données. Les clés individuelles et les permissions serveur restent obligatoires.

## Comptes des utilisateurs

L’administrateur utilise « Comptes & accès », crée le titulaire, choisit ses
droits puis autorise le compte. « Générer un code d’activation » produit un code
valable 24 heures, à remettre uniquement au titulaire. Ce code ne permet pas
de consulter les données et n’est pas une clé personnelle. Une nouvelle émission
invalide le précédent code.

Le titulaire ouvre https://lemanuelrh.pro, choisit « Activer mon compte », colle
le code puis choisit son identifiant et son mot de passe. Il ajoute la clé TOTP
affichée à son application d’authentification et confirme son code à six chiffres.
Il se connecte ensuite avec identifiant, mot de passe et un nouveau code TOTP.
L’administrateur peut désactiver le compte et révoquer ses sessions.

Pour un chef de gare, l’administrateur gère sa délégation dans
https://presences.lemanuelrh.pro, rubrique « Accès », et génère son code
d’activation. Le même parcours configure un compte limité à cette délégation.
Les clés personnelles déjà délivrées restent utilisables selon leur échéance
et leurs droits ; elles ne doivent pas être partagées.
