AI

Architecture AITicketInfo™ — Plan de navigation complet

DEV / DEMO
Page d'architecture développeur. Liste exhaustive des 4 portails (citoyen, avocat, entreprise, admin), Bailey AI 3 lenses, caméras live, conformité (Loi 25 + Barreau), infrastructure VPS2 et outils internes. Chaque carte est cliquable. Usage : navigation dev + démos commerciales. Mise à jour : 2026-04-27 · reflet de l'état réel production.
4
Portails login
123+
Pages totales
1 460
Caméras live
Loi 25
+ Barreau QC
Légende: Public Sans login Authentification requise Payant Abonnement SaaS Démo Aperçu commercial Admin Maison mère seulement Nouveau Ajouté récemment Actif Bailey lens active Dormant En attente cold start
👤

PORTAIL CITOYEN

Gratuit · Accès justice
⚖️

PORTAIL AVOCAT

SaaS mensuel · Québec · 12 features CRM
🚚

PORTAIL ENTREPRISE

Flotte véhicules · 299-999 $/mois
🔐

PORTAIL ADMIN — MAISON MÈRE

Accès restreint · AITicketInfo™
🧠

BAILEY AI — ARCHITECTURE 3 LENSES

Master Aggregator · Pipeline MiroFish · Retraining hebdo
1

Lens Juges

Active

6 175 jugements anonymisés pseudonymes Juge #M-XXX. Service systemd bailey-jugements.service (active hebdo, lundi 4h).

2

Lens Procureurs

Dormant · cold start

Table crm_negotiations + 183 procureurs #PM-XXX (320 cas). Déclenche à 200+ deals. Service bailey-procureurs.service.

3

Lens Faiblesses rapports police

Placeholder

14 359 rapports catalogués. Modèle futur, service dormant bailey-faiblesses.service.

Master Aggregator
POST /api/predict-master
Pondère les 3 lenses (active + dormants quand prêts) en sortie unifiée calibrée.
Juges (anonymisés)
GET /api/juges
Statistiques pseudonymes Juge #M-XXX (Loi 25 + k-anonymity).
Public
Pipeline MiroFish
pipeline_comparisons (PG triggers)
Dual A+B + gate 3 niveaux. dossier_uuid anonyme · pas de lien identifiant. Training = global.
Actif
Retraining hebdo
lundi 04:00 · bailey-jugements.timer
Embeddings 4096-dim · hard negatives · output gelé vers /api/predict-master.
📷

CAMÉRAS LIVE (1 460)

7 sources publiques · traffic-monitor:8950 · SQLite
MTQ Quebec511
662 caméras
Autoroutes provinciales QC (FenetreVideo iframe).
Ville de Montréal CGMU
579 caméras
Caméras municipales Montréal — JPEG refresh 1.5s.
511 Ontario
148 caméras
Frontière Outaouais + 401 ouest.
511 Vermont
14 caméras
Frontière sud (I-89 / I-91).
511 Maine
2 caméras
Frontière Estrie / Beauce.
NAV CANADA météo
17 aérodromes
Caméras météo iframe HTML.
Tourism (ski/parcs)
23 caméras
Stations ski · parcs SEPAQ.
Infra (aéro/ports/ponts/univ.)
22 caméras
Aéroports, ports, ponts, universités.
Traffic flow
28 segments · vitesse temps réel
Vitesse mesurée MTQ + détection blitz.
API: Caméras (filter offline)
GET /livedata/api/cameras
7 hors-ligne masquées automatiquement. Response JSON 1 460 entrées.
Public
Storage
SQLite /var/www/traffic-monitor/traffic_monitor.db
1 467 lignes au total · 1 460 live + 7 offline.
Service systemd
traffic-monitor.service → :8950
Active running · reverse-proxé via nginx /livedata/.
Actif
🏔

ÉCOSYSTÈME — 11 OUTILS

Stack juridique complète
1. Recensement statistique
/recensement
Contribution données citoyens, conforme Loi 25.
2. Data Live
/livedata/
1 460 caméras + flux trafic 28 segments.
3. Détection blitz
SQLite traffic_monitor
Algorithme vitesses + alertes en temps réel.
4. Scanner OCR
/scanner.html
Multi-agents IA + extraction structurée.
5. Chatbot Bailey
/chatbot
50+ outils CRM (accès automatique).
6. API REST + Webhooks
/api/*
~80 endpoints exposés · Stripe webhook.
7. Multilingue 5 langues
FR/EN/ES/AR/ZH
i18n switcher uniforme sur 123 pages.
8. Entraînement IA hebdo
bailey-jugements.timer
Lundi 04:00 · pipeline MiroFish.
9. Intégration custom
MCP + OpenAPI
Claude Desktop/Code, ChatGPT Custom GPT.
10. Automatisation envoi+impression
Documents & Envoi
Greffes 66 cours · lettres IA · impression.
11. Workspace juridique complet
CRM 12 features
Pipeline + calendrier + notes + facturation.
📄

PAGES PUBLIQUES — LEGAL & SEO

Sans login · Conformité
🎬

DÉMOS & PRÉSENTATIONS COMMERCIALES

Pitch · Investisseurs · Prospects

🔄 Flows utilisateur

👤 Citoyen

  1. / Accueil
  2. Scanner ticket
  3. Rapport IA multi-agents
  4. Cour municipale de la ville
  5. Login + Mon-dossier
  6. Avocat assigné (random équitable)

⚖️ Avocat

  1. Plateforme
  2. Demande essai
  3. Validation maison mère
  4. CRM 12 features + Négociation
  5. Bailey 3 lenses
  6. Mur vidéo 1 460 caméras

🚚 Entreprise

  1. Portail + pricing
  2. Formulaire flotte (taille)
  3. Google Sign-In
  4. Dashboard flotte
  5. Véhicules + conducteurs
  6. Référence avocat par zone

🔐 Admin

  1. Admin Google OAuth
  2. KPIs · demandes · revenus
  3. Gestion liste avocats + territoires
  4. Email tracking
  5. Data Live + Mur Vidéo
  6. Pipeline training Bailey

APIs & ENDPOINTS

Backend Flask + nginx + PostgreSQL + pgvector
🤖

ONBOARDING CABINETS PARTENAIRES

Page /welcome/<token> par cabinet · tracking visites
Welcome cabinet (exemple)
/welcome/<token>
Page perso cabinet : credentials + scan + CRM + 2FA + MCP + liens publics. 6 cabinets whitelabel déployés.
Public
API: Admin onboarding
GET /api/admin/onboarding
Liste tokens + stats visites par cabinet (admin only).
Admin
DB onboarding_pages
6 cabinets whitelabel
token unique · cabinet · credentials · visit_count · first/last_visit_at.
DB onboarding_visits
Auto-log IP + UA + timestamp
Audit trail complet des visites.
🤖

IA & INTÉGRATIONS LLM

ChatGPT · Claude · Gemini · MCP
🛡️

SÉCURITÉ & CONFORMITÉ

Loi 25 (QC) · Barreau art. 128 · OVH Beauharnois
SPF + DKIM + DMARC
propagation OK
Tous les enregistrements actifs (Gmail Workspace).
Actif
TLS Let's Encrypt
aiticketinfo.com
Renouvellement auto · HSTS + CSP nginx global.
Actif
JWT durci
expiry 24h · secret obligatoire
Bearer token · vérification d'origine.
Routes admin protégées
9 routes (commit 7395aaa)
Toutes les routes /api/admin/* gate _is_admin().
Pseudonymes Loi 25
Juges #M-XXX · Procureurs #PM-XXX
k-anonymity ≥ 5 sur stats publiques. Aucun nom réel exposé.
EFVP complétée + DPO
Loi 25 art. 3.3
Évaluation facteurs vie privée · DPO désigné.
Hébergement Canada
OVH Beauharnois (QC)
Résidence données 100 % Canada.
Chiffrement at-rest
pgcrypto
Données CRM privées chiffrées au repos.
Backups quotidiens
cron pg_dump 03:00
Rétention 14 jours.
Notice ™
AITicketInfo™ + Bailey™
Visible global · CIPO en cours classes 9 + 42.
i18n switcher uniforme
123 pages · 5 langues
FR/EN/ES/AR (RTL)/ZH · cohérence totale.
Conformité Barreau QC
art. 128
Pas d'exercice illégal du droit. Vocabulaire : « analyse » jamais « prédiction », « citoyen » jamais « lead ».
Pas de citations CanLII/SOQUIJ
commits e338027, bd28e29
Sources non référencées publiquement (cleanup complet).
✉️

EMAIL INFRASTRUCTURE

Gmail API · service account · tracking + audit
Service account
aiticketinfo-mail-sender@ai-ticket-info.iam.gserviceaccount.com
Scope actuel gmail.send. Demande gmail.readonly en cours pour bounce scanner.
Anti-spam throttle
10s entre envois
Protection réputation domaine.
Pixel + click tracking
email_audit_log
Open + click + bounce + log timestamp.
Touch 1 envoyé
101 emails · 43 % open / 18 % click
Première campagne réussie.
Welcome v2 templates
122 prêts (non envoyés)
En attente déclenchement.
Postfix local
relayhost vide
Sender via Gmail Workspace.
💻

INFRASTRUCTURE SERVEUR

VPS2 (149.56.140.39) OVH Beauharnois · Ubuntu 24.04 · Docker
Hardware
6 CPU · 11 GB RAM · 2 GB swap
Dispo ~6.5 GB · swap quasi-inutilisé.
Web: nginx 1.24
:443 / :80
Reverse proxy + SSL Let's Encrypt + HSTS + CSP global strict.
App: Flask gunicorn
aiticketinfo.service · 127.0.0.1:8912 · 3 workers
api.py ~14K lignes · timeout 300s · preload.
Actif
DB: PostgreSQL 15 + pgvector
seo-agent-postgres (Docker) :5432
tickets_qc_on 4.4 GB · jurisprudence (42K), avocats_partenaires (122), tribunaux_qc (89), avocat_territoires (107), media_contacts (17), procureur_stats (183), procureur_cas (320), crm_cases, crm_negotiations, email_audit_log.
Cache: Redis
127.0.0.1:6379
Sessions + cache court terme.
MCP: FastMCP
aiticketinfo-mcp.service · :8913
14 outils pour Claude/ChatGPT/Gemini/Perplexity.
Actif
Traffic monitor
traffic-monitor.service · :8950
SQLite 1 467 caméras + 28 segments flow.
Actif
Bailey Lens 1 (juges)
bailey-jugements.service
Active hebdo lundi 04:00 · entraînement 6 175 jugements.
Actif
Bailey Lens 2 (procureurs)
bailey-procureurs.service
Dormant · cold start à 200+ deals.
Dormant
Bailey Lens 3 (faiblesses)
bailey-faiblesses.service
Dormant · placeholder futur (14 359 rapports).
Dormant
Postfix local
relayhost vide
Sender via Gmail Workspace.
Backup pg_dump
cron 03:00 quotidien
Rétention 14j · chiffrement at-rest.
🌐

DOMAINES

aiticketinfo.com actif · expansion en cours
aiticketinfo.com
Namecheap · ACTIF
Domaine principal production.
Actif
aiticketinfo.ca
à acheter (recommandé)
Renforcement marque Canada.
aiticketinfo.io
à considérer
Branding tech.
aiticketinfo.ai
à considérer
Branding IA.
baileypredict.com
à considérer
Branding produit Bailey.
📼

CAPACITÉ & CONCURRENCE

Audit 2026-04-18
Requêtes simultanées
3 actuel → 13 cible
gunicorn sync · 2×CPU+1 recommandé pour scale 10+ avocats actifs.
Connexions DB
80 max · 9 actives
Pool : workers + MCP + daemons. Passer à 200 si scale.
Connexions TCP web
~12 établies
nginx keepalive · pas de saturation.
Rate limit nginx
⚠ non configuré
À ajouter : limit_req zone=api rate=10r/s burst=20.
Cache Redis
127.0.0.1:6379
Déployé · usage minimal pour le moment.
Load balancer
Single VPS · besoin futur si >1000 req/s.
🔒

ISOLATION MULTI-TENANTS

Avocat A ≠ Avocat B · Training = global anonyme
Clé isolation
crm_cases.avocat_email
Chaque dossier CRM assigné à 1 seul avocat via son email authentifié.
Auth JWT (24h)
_get_crm_avocat()
Bearer token obligatoire · extrait email depuis JWT signé.
Gate d'accès
_check_case_access() · api.py
Compare case.avocat_email == user.email. Return 403 si mismatch. Appelé sur TOUS les endpoints /api/crm/*.
Whitelist Google OAuth
auth.py callback
Si return_to=/crm-avocat, vérifie email Google dans la liste avocats DB. Rejet si non-enregistré. Auto-promote role=avocat.
Distribution citoyens
random équitable par cour municipale
89 cours · capacité variable 10/4/3/2/1 avocats. Pas de favoritisme.
Admin override
_is_admin()
Role « admin » dans users table — voit tous les dossiers (support/debug).
⚠ RLS PostgreSQL
désactivé
Défense en profondeur manquante. Bug code => fuite possible. À activer pour production scale.
Base A: privée (par avocat)
crm_cases/notes/documents/chat
Jamais partagé entre avocats. Chiffrement au repos (pgcrypto).
Base B: globale (anonyme)
v_*_anon views · #M-XXX / #PM-XXX
Jurisprudence pseudonymisée (1 843 juges). Entraînement IA + stats publiques · mélange voulu entre tous avocats.
Pipeline training
pipeline_comparisons
dossier_uuid anonyme · pas de lien identifiant. Training = global.
🔎

SEO & AEO

Google · Bing · ChatGPT · Claude
Google Search Console
✓ configuré
Sitemap soumis · crawl régulier.
Bing Webmaster
✓ configuré
Import GSC + crawl Bing.
IndexNow auto
✓ daily 04:00 UTC
221+ URLs → Bing + Yandex + Naver + Seznam.
Sitemap dynamique
/sitemap.xml
221+ URLs · xhtml:link hreflang (5 langues).
robots.txt
25+ bots AI autorisés
GPTBot, ClaudeBot, Perplexity, Copilot, Mistral, Grok...
llms.txt
/llms.txt
Documentation structurée pour crawlers LLM.
Meta max-snippet:-1
15+ pages
AEO optimal — AI citent paragraphes complets (pas tronqués).
Schema.org
JSON-LD multi-types
Organization, GovernmentService, LegalService, FAQPage, Attorney.
i18n
5 langues sur 123 pages
FR + EN + ES + AR (RTL) + ZH · hreflang correct · switcher uniforme.
OpenAPI / ChatGPT
/openapi.json · /.well-known/ai-plugin.json
Custom GPT compatible · MCP endpoint /mcp/sse pour Claude.
AITicketInfo™ et Bailey™ — marques de commerce déposées (CIPO classes 9 + 42, en cours).
Hébergement Canada (OVH Beauharnois) · Conformité Loi 25 (QC) + Code de déontologie du Barreau du Québec (art. 128).
Aucune référence CanLII / SOQUIJ sur les pages publiques. Vocabulaire strict : « analyse » (jamais « prédiction »), « citoyen » (jamais « lead »).