Update project documentation in 10-stack.mdc with JIRA prefix details, add new routes for Radar functionality in Routes.php, and include Radar link in the sidebar menu of men_list.php.
This commit is contained in:
129
sql/IDEE-4-radar-proto.sql
Normal file
129
sql/IDEE-4-radar-proto.sql
Normal file
@ -0,0 +1,129 @@
|
||||
-- IDEE-4 / IDEE-5 — Radar mail proto (CRM)
|
||||
-- Tables pour l’écran /v4/radar. Moteur Gmail Push + Gemini : story suivante.
|
||||
-- Exécuter sur la BD CRM de DEV (devcrmms1_dev), pas en prod.
|
||||
|
||||
CREATE TABLE IF NOT EXISTS radar_exceptions (
|
||||
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
kind ENUM('mailbox', 'sender') NOT NULL DEFAULT 'mailbox',
|
||||
value VARCHAR(190) NOT NULL,
|
||||
note VARCHAR(255) NOT NULL DEFAULT '',
|
||||
active TINYINT(1) NOT NULL DEFAULT 1,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uq_radar_exc (kind, value)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS radar_threads (
|
||||
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
gmail_thread_id VARCHAR(64) NOT NULL,
|
||||
mailbox VARCHAR(190) NOT NULL DEFAULT '',
|
||||
subject VARCHAR(255) NOT NULL DEFAULT '',
|
||||
from_email VARCHAR(190) NOT NULL DEFAULT '',
|
||||
from_name VARCHAR(190) NOT NULL DEFAULT '',
|
||||
gmail_url VARCHAR(500) NOT NULL DEFAULT '',
|
||||
client_id INT UNSIGNED NULL DEFAULT NULL,
|
||||
projet_id INT UNSIGNED NULL DEFAULT NULL,
|
||||
proposed_client_no VARCHAR(32) NOT NULL DEFAULT '',
|
||||
status VARCHAR(32) NOT NULL DEFAULT 'a_classer',
|
||||
summary VARCHAR(500) NOT NULL DEFAULT '',
|
||||
confidence TINYINT UNSIGNED NOT NULL DEFAULT 0,
|
||||
is_example TINYINT(1) NOT NULL DEFAULT 0,
|
||||
received_at DATETIME NULL DEFAULT NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uq_radar_thread (gmail_thread_id),
|
||||
KEY idx_radar_status (status),
|
||||
KEY idx_radar_received (received_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS radar_thread_skills (
|
||||
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
thread_id INT UNSIGNED NOT NULL,
|
||||
skill VARCHAR(32) NOT NULL,
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uq_radar_skill (thread_id, skill),
|
||||
KEY idx_radar_skill (skill)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS radar_rules (
|
||||
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
match_type ENUM('email', 'domain') NOT NULL DEFAULT 'email',
|
||||
match_value VARCHAR(190) NOT NULL,
|
||||
client_id INT UNSIGNED NULL DEFAULT NULL,
|
||||
projet_id INT UNSIGNED NULL DEFAULT NULL,
|
||||
skill VARCHAR(32) NOT NULL DEFAULT '',
|
||||
source VARCHAR(32) NOT NULL DEFAULT 'human',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uq_radar_rule (match_type, match_value, skill)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
INSERT INTO radar_exceptions (kind, value, note, active)
|
||||
SELECT 'mailbox', 'confirmation@ms1timing.com', 'Mails transactionnels inscription — ne pas ouvrir', 1
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM radar_exceptions
|
||||
WHERE kind = 'mailbox' AND value = 'confirmation@ms1timing.com'
|
||||
);
|
||||
|
||||
INSERT INTO radar_threads (
|
||||
gmail_thread_id, mailbox, subject, from_email, from_name, gmail_url,
|
||||
proposed_client_no, status, summary, confidence, is_example, received_at
|
||||
)
|
||||
SELECT
|
||||
'proto-ex-1',
|
||||
'desjardins.lp@ms1timing.com',
|
||||
'Logos dossards + fichiers départ site',
|
||||
'marie@course-exemple.ca',
|
||||
'Marie Exemple',
|
||||
'',
|
||||
'1842',
|
||||
'a_classer',
|
||||
'Deux sujets dans le même fil : logos pour l’imprimeur, et fichiers à déposer pour le site d’inscription.',
|
||||
72,
|
||||
1,
|
||||
NOW()
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM radar_threads WHERE gmail_thread_id = 'proto-ex-1');
|
||||
|
||||
INSERT INTO radar_thread_skills (thread_id, skill)
|
||||
SELECT t.id, 'dossards' FROM radar_threads t
|
||||
WHERE t.gmail_thread_id = 'proto-ex-1'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM radar_thread_skills s WHERE s.thread_id = t.id AND s.skill = 'dossards'
|
||||
);
|
||||
|
||||
INSERT INTO radar_thread_skills (thread_id, skill)
|
||||
SELECT t.id, 'site' FROM radar_threads t
|
||||
WHERE t.gmail_thread_id = 'proto-ex-1'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM radar_thread_skills s WHERE s.thread_id = t.id AND s.skill = 'site'
|
||||
);
|
||||
|
||||
INSERT INTO radar_threads (
|
||||
gmail_thread_id, mailbox, subject, from_email, from_name, gmail_url,
|
||||
proposed_client_no, status, summary, confidence, is_example, received_at
|
||||
)
|
||||
SELECT
|
||||
'proto-ex-2',
|
||||
'info@ms1timing.com',
|
||||
'Question impression dossards',
|
||||
'nouveau@inconnu.example',
|
||||
'Contact inconnu',
|
||||
'',
|
||||
'',
|
||||
'a_mettre_dans_crm',
|
||||
'Adresse absente du CRM. Créer le contact / projet, puis relancer — le fil doit se recoller tout seul.',
|
||||
40,
|
||||
1,
|
||||
DATE_SUB(NOW(), INTERVAL 25 MINUTE)
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM radar_threads WHERE gmail_thread_id = 'proto-ex-2');
|
||||
|
||||
INSERT INTO radar_thread_skills (thread_id, skill)
|
||||
SELECT t.id, 'dossards' FROM radar_threads t
|
||||
WHERE t.gmail_thread_id = 'proto-ex-2'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM radar_thread_skills s WHERE s.thread_id = t.id AND s.skill = 'dossards'
|
||||
);
|
||||
Reference in New Issue
Block a user