feat: production deployment - full update with providers, admin, glossaries, pricing, tests

Major changes across backend, frontend, infrastructure:
- Provider system with model selection (Google, DeepL, OpenAI, Ollama, Google Cloud)
- Admin panel: user management, pricing, settings
- Glossary system with CSV import/export
- Subscription and tier quota management
- Security hardening (rate limiting, API key auth, path traversal fixes)
- Docker compose for dev, prod, and IONOS deployment
- Alembic migrations for new tables
- Frontend: dashboard, pricing page, landing page, i18n (en/fr)
- Test suite and verification scripts

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Sepehr Ramezani
2026-04-25 15:01:47 +02:00
parent 2ba4fedfc8
commit 26bd096a06
1178 changed files with 136435 additions and 3047 deletions

81
docs/COMPTES-ACCES.md Normal file
View File

@@ -0,0 +1,81 @@
# Comptes et accès (référence locale)
> **Sécurité** : les mots de passe et secrets **réels** ne doivent **pas** être commités dans ce dépôt. Ils vivent dans ton fichier **`.env`** à la racine (non versionné). Ce document décrit les **rôles** et les **valeurs dexemple / défauts documentés** dans le code ou les fichiers dexemple.
---
## 1. Compte administrateur (API / tableau de bord admin)
Ladmin nest **pas** un utilisateur en base : lidentifiant et le mot de passe viennent des **variables denvironnement**.
| Champ | Variable | Où cest défini |
|--------|-----------|------------------|
| Identifiant (login) | `ADMIN_USERNAME` | `.env` (exemple dans `.env.example` : `admin`) |
| Mot de passe | `ADMIN_PASSWORD` **ou** hash `ADMIN_PASSWORD_HASH` | `.env` uniquement |
| Secours dev (si les deux absents) | `ADMIN_DEV_DEFAULT` | `.env` (voir `routes/admin_routes.py`) |
**Comment connaître *ton* mot de passe admin :**
- Si `ADMIN_PASSWORD` est renseigné en clair dans `.env`, cest cette valeur.
- Si seul `ADMIN_PASSWORD_HASH` est renseigné, le mot de passe en clair **napparaît nulle part** dans le dépôt : cest celui que **tu** as choisi lors de la configuration (bcrypt). Il ny a pas de liste centralisée à extraire automatiquement.
**Placeholder documenté** (fichier `.env.example`, pas un secret réel) :
| Compte | Mot de passe (exemple fichier exemple) |
|--------|------------------------------------------|
| `admin` | `your_admin_password_here` |
---
## 2. Comptes utilisateurs de lapplication (inscription)
Les utilisateurs finaux (**email + mot de passe**) sont créés via lAPI d**inscription** (`/api/v1/auth/register` ou équivalent selon version). Il **nexiste pas** de liste de comptes utilisateurs livrée avec le projet : chaque environnement a ses propres comptes, stockés en base (PostgreSQL / SQLite selon config) avec mot de passe **haché**.
**Liste des comptes utilisateurs avec mots de passe en clair :** inexistante dans le code ; à consulter uniquement via ta base ou les personnes qui se sont inscrites.
---
## 3. PostgreSQL (Docker **développement** uniquement)
Fichier `docker-compose.dev.yml` — valeurs **par défaut** si tu ne les surcharges pas dans `.env` :
| Rôle | Utilisateur | Mot de passe | Base |
|------|-------------|--------------|------|
| PostgreSQL | `translate` (ou `POSTGRES_USER`) | `translate_secret_123` (ou `POSTGRES_PASSWORD`) | `translate_db` (ou `POSTGRES_DB`) |
En **production** (`docker-compose.yml`), le mot de passe PostgreSQL **doit** être défini dans `.env` ; il ny a pas de défaut documenté dans le compose prod.
---
## 4. Grafana (si le service est activé dans `docker-compose.yml`)
Daprès les variables du compose :
| Compte | Utilisateur par défaut | Mot de passe par défaut |
|--------|------------------------|-------------------------|
| Grafana | `GRAFANA_USER` ou `admin` | `GRAFANA_PASSWORD` ou `admin` |
À remplacer impérativement en production.
---
## 5. Redis
Pas de « compte » utilisateur classique pour lapp en dev simple ; lURL est `REDIS_URL` dans `.env` si configurée.
---
## Synthèse
| Type de compte | Liste + mots de passe dans le repo ? |
|----------------|----------------------------------------|
| Admin | **Non** — tout est dans `.env` (éventuellement hash seulement). |
| Utilisateurs app | **Non** — inscription + base de données. |
| Postgres (dev compose) | **Oui** — défauts ci-dessus (`translate` / `translate_secret_123`). |
| Grafana (optionnel) | **Oui** — défaut `admin` / `admin` si non surchargé. |
Pour un inventaire **personnel** incluant ton vrai mot de passe admin, ouvre ton **`.env` local** (ne le commite pas) ou garde une copie chiffrée / hors dépôt.
mot de passe admin
ChangeMeAfterReset!