feat: Version 3.6.2 - Correctifs tâches #17-20
- #17: Amélioration gestion des secteurs et statistiques - #18: Optimisation services API et logs - #19: Corrections Flutter widgets et repositories - #20: Fix création passage - détection automatique ope_users.id vs users.id Suppression dossier web/ (migration vers app Flutter) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
19
api/scripts/sql/alter_ope_pass_fk_sector_default_null.sql
Normal file
19
api/scripts/sql/alter_ope_pass_fk_sector_default_null.sql
Normal file
@@ -0,0 +1,19 @@
|
||||
-- Migration: Modifier fk_sector pour avoir DEFAULT NULL au lieu de DEFAULT 0
|
||||
-- Raison: La FK vers ope_sectors(id) ne permet pas la valeur 0 (aucun secteur avec id=0)
|
||||
-- Date: 2026-01-16
|
||||
|
||||
-- 1. D'abord, mettre à NULL les passages qui ont fk_sector = 0
|
||||
UPDATE ope_pass SET fk_sector = NULL WHERE fk_sector = 0;
|
||||
|
||||
-- 2. Modifier la colonne pour avoir DEFAULT NULL
|
||||
ALTER TABLE ope_pass MODIFY COLUMN fk_sector INT UNSIGNED DEFAULT NULL;
|
||||
|
||||
-- Vérification
|
||||
SELECT
|
||||
COLUMN_NAME,
|
||||
COLUMN_DEFAULT,
|
||||
IS_NULLABLE
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'ope_pass'
|
||||
AND COLUMN_NAME = 'fk_sector';
|
||||
57
api/scripts/sql/create_event_stats_daily.sql
Normal file
57
api/scripts/sql/create_event_stats_daily.sql
Normal file
@@ -0,0 +1,57 @@
|
||||
-- ============================================================
|
||||
-- Table event_stats_daily - Statistiques d'événements agrégées
|
||||
-- Version: 1.0
|
||||
-- Date: 2025-12-22
|
||||
-- ============================================================
|
||||
--
|
||||
-- Usage: Exécuter dans les 3 environnements (DEV, REC, PROD)
|
||||
-- mysql -u user -p database < create_event_stats_daily.sql
|
||||
--
|
||||
-- Description:
|
||||
-- Stocke les statistiques quotidiennes agrégées depuis les
|
||||
-- fichiers JSONL (/logs/events/YYYY-MM-DD.jsonl)
|
||||
-- Alimentée par le CRON aggregate_event_stats.php (1x/nuit)
|
||||
--
|
||||
-- ============================================================
|
||||
|
||||
CREATE TABLE IF NOT EXISTS event_stats_daily (
|
||||
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
|
||||
-- Clés d'agrégation
|
||||
stat_date DATE NOT NULL COMMENT 'Date des statistiques',
|
||||
entity_id INT UNSIGNED NULL COMMENT 'ID entité (NULL = stats globales super-admin)',
|
||||
event_type VARCHAR(50) NOT NULL COMMENT 'Type événement (login_success, passage_created, etc.)',
|
||||
|
||||
-- Compteurs
|
||||
count INT UNSIGNED DEFAULT 0 COMMENT 'Nombre d\'occurrences',
|
||||
sum_amount DECIMAL(12,2) DEFAULT 0.00 COMMENT 'Somme des montants (passages/paiements)',
|
||||
unique_users INT UNSIGNED DEFAULT 0 COMMENT 'Nombre d\'utilisateurs distincts',
|
||||
|
||||
-- Métadonnées agrégées (JSON)
|
||||
metadata JSON NULL COMMENT 'Données agrégées: top secteurs, erreurs fréquentes, etc.',
|
||||
|
||||
-- Timestamps
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
|
||||
-- Contraintes
|
||||
UNIQUE KEY uk_date_entity_event (stat_date, entity_id, event_type),
|
||||
INDEX idx_entity_date (entity_id, stat_date),
|
||||
INDEX idx_date (stat_date),
|
||||
INDEX idx_event_type (event_type)
|
||||
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
COMMENT='Statistiques quotidiennes agrégées des événements (EventLogService)';
|
||||
|
||||
-- ============================================================
|
||||
-- Exemples de données attendues
|
||||
-- ============================================================
|
||||
--
|
||||
-- | stat_date | entity_id | event_type | count | sum_amount | unique_users |
|
||||
-- |------------|-----------|------------------|-------|------------|--------------|
|
||||
-- | 2025-12-22 | 5 | login_success | 45 | 0.00 | 12 |
|
||||
-- | 2025-12-22 | 5 | passage_created | 128 | 2450.00 | 8 |
|
||||
-- | 2025-12-22 | 5 | stripe_payment_success | 12 | 890.00 | 6 |
|
||||
-- | 2025-12-22 | NULL | login_success | 320 | 0.00 | 85 | <- Global
|
||||
--
|
||||
-- ============================================================
|
||||
5
api/scripts/sql/drop_stripe_devices_table.sql
Normal file
5
api/scripts/sql/drop_stripe_devices_table.sql
Normal file
@@ -0,0 +1,5 @@
|
||||
-- Suppression de la table stripe_android_certified_devices
|
||||
-- Cette table n'est plus utilisée : la vérification de compatibilité Tap to Pay
|
||||
-- se fait maintenant directement côté client via le SDK Stripe Terminal
|
||||
|
||||
DROP TABLE IF EXISTS stripe_android_certified_devices;
|
||||
Reference in New Issue
Block a user