TypeScript 98.3%
CSS 0.9%
Shell 0.7%
1# Installation — Immbot AI23## Prérequis45- **Node.js ≥ 24** (utilise `node:sqlite` natif et l'exécution TypeScript intégrée — Node 25 recommandé)6- **pnpm** (`npm i -g pnpm`)7- Les dossiers de cours `IMM1003-20/` et `IMM1033-20/` accessibles (par défaut : à côté de `immbot-ai/`)8- Une clé **OpenRouter** (https://openrouter.ai/keys) pour le chat910## Installation automatique1112```bash13./scripts/setup.sh14```1516Fait : `pnpm install` → création de `.env` (avec `AUTH_SECRET` généré) → `pnpm seed` → `pnpm ingest`.1718## Installation manuelle1920```bash21pnpm install22cp .env.example .env # puis renseigner OPENROUTER_API_KEY et AUTH_SECRET23pnpm seed # admin initial + cours + prompts + 140 cartes + 129 questions + 6 examens24pnpm ingest # parse les .tex des cours → 2 000+ fragments indexés (FTS5 + embeddings)25pnpm dev # http://localhost:307026```2728Premier `pnpm ingest` : téléchargement du modèle d'embeddings (~120 Mo) dans `data/models/`,29puis tout fonctionne hors-ligne.3031## Variables d'environnement3233Voir `.env.example`. Essentielles :3435| Variable | Rôle |36|---|---|37| `OPENROUTER_API_KEY` | Clé serveur (jamais exposée au navigateur) |38| `AUTH_SECRET` | Générer : `openssl rand -hex 32` |39| `DATABASE_PATH` | SQLite (défaut `./data/immbot.db`) |40| `INITIAL_ADMIN_USERNAME` / `INITIAL_ADMIN_PASSWORD` | Amorçage seulement — changement forcé |41| `FORCE_INITIAL_ADMIN_PASSWORD_CHANGE` | `true` (défaut) |42| `DISABLE_INITIAL_ADMIN` | `true` en production une fois le vrai compte créé |43| `SIGNUP_ACCESS_CODE` | Code exigé à l'inscription étudiante (vide = libre) |44| `COURSE_IMM1003_PATH` / `COURSE_IMM1033_PATH` | Dossiers sources des cours |4546## Compte administrateur initial4748Créé par `pnpm seed` : `admin` / `admin123`, **haché bcrypt (coût 12)**, indicateur49`must_change_password` → l'interface force le remplacement à la première connexion et refuse50`admin123` comme mot de passe permanent. Une bannière d'avertissement reste visible tant que le51compte d'amorçage est actif. Procédure recommandée en production :521. se connecter, changer le mot de passe ;532. créer son compte personnel (rôle admin via Sécurité) ;543. mettre `DISABLE_INITIAL_ADMIN=true` et désactiver le compte `admin` dans l'admin.5556## Vérification5758```bash59./scripts/verify.sh # tsc + 34 tests + évaluation RAG (rappel/refus/isolation)60```61