# Architecture & plan d'intégration — TIJARA

> Document interne (analyse avant extension). Ne remplace pas le code ; guide l'intégration.

## 1. Architecture actuelle

- **Monolithe PHP** (`php/public/` = webroot) + **Flutter** (`flutter_app/`)
- Pas de Composer ; PDO SQLite/MySQL
- Session web + JWT API (`api/index.php?r=…`)
- Layout commun : `layout_header.php` / `layout_footer.php` + `assets/css/app.css`
- Scope multi-société via `company_id` + `user_companies`

## 2. Stack

| Couche | Techno |
|--------|--------|
| Backend | PHP 8+ plain |
| DB | SQLite (dev) / MySQL (Namecheap) |
| Mobile | Flutter + http + shared_preferences + image_picker |
| PDF | HTML A4 imprimable |
| Auth | password_hash + session / JWT HS256 |

## 3. Tables existantes (réutiliser)

**Commercial :** companies, users, customers, suppliers, products, quotes, orders, delivery_notes, invoices, credit_notes, payments, expenses, stock_movements, cash_*, bank_*, branches, subscriptions, notifications, document_counters, activity_logs, attachments, user_companies

**Flotte :** drivers, vehicles, mission_orders, mission_expenses (ocr_status/ocr_raw déjà présents)

## 4. APIs existantes

login, dashboard, customers, products, quotes, invoices, orders, delivery-notes, credit-notes, payments, expenses, stock, treasury, search, reports, notifications, branches, subscriptions, me  
+ fleet: drivers, vehicles, missions, mission-expenses, sync offline

## 5. Authentification & rôles

SUPER_ADMIN, ADMIN, DIRECTEUR, COMMERCIAL, COMPTABLE, CAISSIER, MAGASINIER, EMPLOYE, RESPONSABLE_FLOTTE, CHAUFFEUR, READONLY  
Permissions `domain.action` via `can()` / `guard_page()` + filtre modules (`module_enabled`)

## 5bis. Modules optionnels

Registry : `includes/modules.php` + table `company_modules`  
UI : `parametres_modules.php` · Migration : `sql/migrate_modules.php`  
Plan : `PLAN-ERP-MODULAIRE.md`  
GPS / IA = stubs optionnels (CORE indépendant)

## 6. Composants réutilisables

`cuid()`, `next_number()`, `money()`, `compute_totals()`, `log_activity()`, `create_notification()`, `save_upload_photo()`, panels/tables, `partials_attachments.php`, `media.php` (accès auth)

## 7. Fonctionnalités existantes

Gestion commerciale complète, trésorerie, flotte/missions/dépenses chauffeur, PDF, portail client basique, i18n FR/AR/EN, modules activables par société

## 8. Manques (cible CDC extension)

| Domaine | Manque |
|---------|--------|
| Fournisseurs | Fiche enrichie, solde, échéances |
| Factures fournisseurs | Tables + UI + paiements AP |
| Achats | Demande / BC / réception |
| OCR | Provider pluggable + UI validation |
| GED | Centre documents centralisé |
| Véhicules | VIN, maintenance, alertes, conso L/100 |
| Rentabilité | Mission / véhicule / client |
| Contrôles | Limites dépenses, doublons, workflow approval |

## 9. Plan d'intégration (ordre)

1. **Schema étendu** additive (`schema_extended.*` + migrate) — ne pas casser l'existant  
2. **Phase 1** Fournisseurs + factures + paiements + échéances  
3. **Phase 2** OCR jobs/fields + scan UI + GED `documents`  
4. **Phase 3** Achats (PO + réception) liés aux factures  
5. **Phase 4–6** Enrichir flotte (VIN, maintenance, conso, rentabilité mission)  
6. **Phase 7–8** Dashboard global, rapports, API, Flutter scan/offline  

## 10. Conventions nouvelles tables

Anglais snake_case pluriel ; numéros via `next_number` :  
`SUPINV`→FF, `SUPPAY`→PF, `PO`→BCF, `PR`→REC, `DOC` interne

## 11. Règle absolue

Aucune suppression de modules existants. Migrations `CREATE IF NOT EXISTS` / `ALTER` try-catch. Tests smoke commercial + flotte après chaque phase.
