Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ Toutes les versions notables de TechIBase sont documentées ici. Le projet est e

- **Cycle de maintenance et rappels** : un équipement peut avoir un cycle de maintenance (mensuel, trimestriel, semestriel, annuel, tous les 2 ans). Quand un bon de service de maintenance (généré automatiquement ou prévu à la date de prochaine maintenance) passe à « Terminé », la dernière maintenance est enregistrée et la prochaine est reportée d'autant. L'accueil affiche les listes « Maintenances en retard / à venir (30 j) » et « EPI expirés / bientôt expirés (30 j) ». La tâche quotidienne crée des notifications pour les administrateurs (sans doublon sur 7 jours) et le résumé par courriel (si configuré) inclut les maintenances à venir et les EPI expirés. Nouvelle colonne `equipment.maintenance_interval_months` (ajoutée automatiquement).
- **« Ma journée » (mobile)** : une page `/journee` (entrée « Ma journée » du menu) liste, pour le technicien connecté, ses bons de service en cours, du jour et en retard, plus ceux terminés aujourd'hui, avec le client, l'adresse (ouvre la carte), le téléphone (appel en un geste), les boutons **Démarrer** / **Terminer**, une note rapide ajoutée au journal du client et un lien vers les bons du client. Sur téléphone, un utilisateur non administrateur arrive sur cette page à l'ouverture de l'application. Nouvelles routes `GET /api/work-orders/my-day` et `POST /api/work-orders/:id/status` (réservée à la personne assignée ou à un administrateur).
- **Rapports d'intervention signés (PDF)** : depuis un bon de service, le technicien rédige un rapport (travaux effectués, pièces, temps passé, observations), le client signe à l'écran (zone de signature tactile ou souris, image PNG limitée à 64 Ko et vérifiée côté serveur), puis l'application génère un PDF (en-tête, client, bon de service, rapport, signature, date) à télécharger ou à joindre aux documents du client. Réservé à l'administrateur, au technicien assigné et au créateur du bon. Nouvelle table `service_reports` ; nouvelle dépendance `pdfkit` (JavaScript pur). Le nom en en-tête se règle avec `COMPANY_NAME` (par défaut « TechIBase »). La génération du PDF n'est pas disponible sur le déploiement Netlify (réponse 501) ; la rédaction et la signature y fonctionnent.

## [0.0.14] - Mises à jour en un clic (publication corrigée)

Expand Down
16 changes: 16 additions & 0 deletions backend/db/init.sql
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,22 @@ CREATE TABLE IF NOT EXISTS work_orders (
CONSTRAINT work_orders_priority_check CHECK (priority IN ('low', 'medium', 'high', 'urgent'))
);

CREATE TABLE IF NOT EXISTS service_reports (
id SERIAL PRIMARY KEY,
work_order_id INTEGER NOT NULL UNIQUE REFERENCES work_orders(id) ON DELETE CASCADE,
work_done TEXT,
parts_used TEXT,
time_spent_minutes INTEGER,
observations TEXT,
signer_name VARCHAR(255),
signature BYTEA,
signed_at TIMESTAMP,
document_id INTEGER REFERENCES documents(id) ON DELETE SET NULL,
created_by INTEGER REFERENCES users(id) ON DELETE SET NULL,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW()
);

CREATE TABLE IF NOT EXISTS notifications (
id SERIAL PRIMARY KEY,
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
Expand Down
Loading
Loading