Projet

Général

Profil

US #1192 » new-struct-report.sql

ahlem belgacem, 27/10/2025 18:05

 
1

    
2
-- DROP  TABLES 
3
DROP TABLE IF EXISTS solution_report_criterias_charts;
4
DROP TABLE IF EXISTS solution_report_criterias_config;
5
DROP TABLE IF EXISTS solution_report_charts;
6
DROP TABLE IF EXISTS solution_report_criterias;
7
DROP TABLE IF EXISTS company_reports_details;
8
DROP TABLE IF EXISTS company_reports;
9
DROP TABLE IF EXISTS solution_reports_config_gaps;
10

    
11
-- ===============================================
12
-- 1️ solution_reports_config_gaps
13
-- ===============================================
14
CREATE TABLE solution_reports_config_gaps (
15
  subscription_code VARCHAR(255) NOT NULL,
16
  category ENUM('market', 'personalized', 'matricule') NOT NULL,
17
  gap BOOLEAN NOT NULL,
18
  PRIMARY KEY (subscription_code, category),
19
  FOREIGN KEY (subscription_code) REFERENCES solution_subscription(subscription_code)
20
    ON DELETE CASCADE ON UPDATE CASCADE
21
);
22

    
23
INSERT INTO solution_reports_config_gaps (subscription_code, category, gap) VALUES 
24
('essential', 'market', false),
25
('advanced', 'market', false),
26
('advanced', 'personalized', true),
27
('advanced', 'matricule', true),
28
('on_the_menu', 'market', false),
29
('on_the_menu', 'personalized', true),
30
('on_the_menu', 'matricule', true);
31

    
32
-- ===============================================
33
-- 2️ :solution_report_criterias
34
-- ===============================================
35
CREATE TABLE solution_report_criterias (
36
  id INT AUTO_INCREMENT PRIMARY KEY,
37
  subscription_code VARCHAR(255) NOT NULL,
38
  category ENUM('market', 'personalized', 'matricule') NOT NULL,
39
  report_criterias VARCHAR(255) UNIQUE NOT NULL,
40
  createdAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
41
  updatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
42
  FOREIGN KEY (subscription_code, category)
43
    REFERENCES solution_reports_config_gaps(subscription_code, category)
44
    ON DELETE CASCADE ON UPDATE CASCADE
45
);
46

    
47
INSERT INTO solution_report_criterias (subscription_code, category, report_criterias) VALUES
48
-- Essential
49
('essential', 'market', 'essential-grade'),
50
('essential', 'market', 'essential-collaborative_path'),
51
('essential', 'market', 'essential-function_code-subfunction_code-collaborative_path'),
52
('essential', 'market', 'essential-function_code-subfunction_code-collaborative_path-grade'),
53
-- On The Menu
54
('on_the_menu', 'market', 'essential-grade'),
55
('on_the_menu', 'market', 'essential-collaborative_path'),
56
('on_the_menu', 'market', 'essential-function_code-subfunction_code-collaborative_path'),
57
('on_the_menu', 'market', 'essential-function_code-subfunction_code-collaborative_path-grade'),
58

    
59

    
60
('on_the_menu', 'matricule', 'advanced-function_code-subfunction_code-collaborative_path-grade-matricule-departement-function'),
61

    
62
('on_the_menu', 'personalized', 'advanced-function_code-subfunction_code'),
63
('on_the_menu', 'personalized', 'advanced-function_code-subfunction_code-collaborative_path'),
64
('on_the_menu', 'personalized', 'advanced-collaborative_path'),
65
('on_the_menu', 'personalized', 'advanced-function_code-subfunction_code-collaborative_path-grade'),
66

    
67
-- Advanced
68
('advanced', 'market', 'advanced-grade'),
69
('advanced', 'market', 'advanced-collaborative_path'),
70
('advanced', 'market', 'advanced-function_code-subfunction_code-collaborative_path'),
71
('advanced', 'market', 'advanced-function_code-subfunction_code-collaborative_path-grade'),
72

    
73

    
74
('advanced', 'matricule', 'advanced-function_code-subfunction_code-collaborative_path-grade-matricule-departement-function'),
75

    
76
('advanced', 'personalized', 'advanced-function_code-subfunction_code'),
77
('advanced', 'personalized', 'advanced-function_code-subfunction_code-collaborative_path'),
78
('advanced', 'personalized', 'advanced-collaborative_path'),
79
('advanced', 'personalized', 'advanced-function_code-subfunction_code-collaborative_path-grade');
80

    
81

    
82
-- ===============================================
83
-- 3️: solution_report_criterias_config
84
-- ===============================================
85
CREATE TABLE solution_report_criterias_config (
86
  id INT AUTO_INCREMENT PRIMARY KEY,
87
  report_criterias VARCHAR(255) NOT NULL,
88
  criteria VARCHAR(255) NOT NULL,
89
  createdAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
90
  updatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
91
  FOREIGN KEY (report_criterias) REFERENCES solution_report_criterias(report_criterias)
92
    ON DELETE CASCADE ON UPDATE CASCADE
93
);
94

    
95
INSERT INTO solution_report_criterias_config (report_criterias, criteria) VALUES
96
-- Essential / market
97
('essential-grade', 'grade'),
98

    
99
('essential-collaborative_path', 'collaborative_path'),
100

    
101
('essential-function_code-subfunction_code-collaborative_path', 'function_code'),
102
('essential-function_code-subfunction_code-collaborative_path', 'subfunction_code'),
103
('essential-function_code-subfunction_code-collaborative_path', 'collaborative_path'),
104

    
105
('essential-function_code-subfunction_code-collaborative_path-grade', 'function_code'),
106
('essential-function_code-subfunction_code-collaborative_path-grade', 'subfunction_code'),
107
('essential-function_code-subfunction_code-collaborative_path-grade', 'collaborative_path'),
108
('essential-function_code-subfunction_code-collaborative_path-grade', 'grade'),
109

    
110
-- On The Menu / market
111
('on_the_menu-grade', 'grade'),
112

    
113
('on_the_menu-collaborative_path', 'collaborative_path'),
114
('on_the_menu-function_code-subfunction_code-collaborative_path', 'function_code'),
115
('on_the_menu-function_code-subfunction_code-collaborative_path', 'subfunction_code'),
116
('on_the_menu-function_code-subfunction_code-collaborative_path', 'collaborative_path'),
117
('on_the_menu-function_code-subfunction_code-collaborative_path-grade', 'function_code'),
118
('on_the_menu-function_code-subfunction_code-collaborative_path-grade', 'subfunction_code'),
119
('on_the_menu-function_code-subfunction_code-collaborative_path-grade', 'collaborative_path'),
120
('on_the_menu-function_code-subfunction_code-collaborative_path-grade', 'grade'),
121

    
122
-- On The Menu / matricule
123

    
124
('on_the_menu-function_code-subfunction_code-collaborative_path-grade-matricule-departement-function', 'function_code'),
125
('on_the_menu-function_code-subfunction_code-collaborative_path-grade-matricule-departement-function', 'subfunction_code'),
126
('on_the_menu-function_code-subfunction_code-collaborative_path-grade-matricule-departement-function', 'collaborative_path'),
127
('on_the_menu-function_code-subfunction_code-collaborative_path-grade-matricule-departement-function', 'grade'),
128
('on_the_menu-function_code-subfunction_code-collaborative_path-grade-matricule-departement-function', 'matricule'),
129
('on_the_menu-function_code-subfunction_code-collaborative_path-grade-matricule-departement-function', 'department'),
130
('on_the_menu-function_code-subfunction_code-collaborative_path-grade-matricule-departement-function', 'function'),
131

    
132
-- On The Menu / personalized
133
('on_the_menu-function_code-subfunction_code', 'function_code'),
134
('on_the_menu-function_code-subfunction_code', 'subfunction_code'),
135
('on_the_menu-function_code-subfunction_code-collaborative_path', 'function_code'),
136
('on_the_menu-function_code-subfunction_code-collaborative_path', 'subfunction_code'),
137
('on_the_menu-function_code-subfunction_code-collaborative_path', 'collaborative_path'),
138

    
139
('on_the_menu-collaborative_path', 'collaborative_path'),
140
('on_the_menu-function_code-subfunction_code-collaborative_path-grade', 'function_code'),
141
('on_the_menu-function_code-subfunction_code-collaborative_path-grade', 'subfunction_code'),
142
('on_the_menu-function_code-subfunction_code-collaborative_path-grade', 'collaborative_path'),
143
('on_the_menu-function_code-subfunction_code-collaborative_path-grade', 'grade'),
144

    
145
-- Advanced / market
146
('advanced-essential-grade', 'grade'),
147
('advanced-collaborative_path', 'collaborative_path'),
148
('advanced-function_code-subfunction_code-collaborative_path', 'function_code'),
149
('advanced-function_code-subfunction_code-collaborative_path', 'subfunction_code'),
150
('advanced-function_code-subfunction_code-collaborative_path', 'collaborative_path'),
151
('advanced-function_code-subfunction_code-collaborative_path-grade', 'function_code'),
152
('advanced-function_code-subfunction_code-collaborative_path-grade', 'subfunction_code'),
153
('advanced-function_code-subfunction_code-collaborative_path-grade', 'collaborative_path'),
154
('advanced-function_code-subfunction_code-collaborative_path-grade', 'grade'),
155

    
156
-- Advanced / matricule
157
('advanced-function_code-subfunction_code-collaborative_path-grade-matricule-departement-function', 'function_code'),
158
('advanced-function_code-subfunction_code-collaborative_path-grade-matricule-departement-function', 'subfunction_code'),
159
('advanced-function_code-subfunction_code-collaborative_path-grade-matricule-departement-function', 'collaborative_path'),
160
('advanced-function_code-subfunction_code-collaborative_path-grade-matricule-departement-function', 'grade'),
161
('advanced-function_code-subfunction_code-collaborative_path-grade-matricule-departement-function', 'matricule'),
162
('advanced-function_code-subfunction_code-collaborative_path-grade-matricule-departement-function', 'department'),
163
('advanced-function_code-subfunction_code-collaborative_path-grade-matricule-departement-function', 'function'),
164

    
165
-- Advanced / personalized
166
('advanced-function_code-subfunction_code', 'function_code'),
167
('advanced-function_code-subfunction_code', 'subfunction_code'),
168

    
169
('advanced-function_code-subfunction_code-collaborative_path', 'function_code'),
170
('advanced-function_code-subfunction_code-collaborative_path', 'subfunction_code'),
171
('advanced-function_code-subfunction_code-collaborative_path', 'collaborative_path'),
172

    
173
('advanced-collaborative_path', 'collaborative_path'),
174

    
175
('advanced-function_code-subfunction_code-collaborative_path-grade', 'function_code'),
176
('advanced-function_code-subfunction_code-collaborative_path-grade', 'subfunction_code'),
177
('advanced-function_code-subfunction_code-collaborative_path-grade', 'collaborative_path'),
178
('advanced-function_code-subfunction_code-collaborative_path-grade', 'grade');
179

    
180

    
181
-- ===============================================
182
-- 4 : solution_report_charts
183
-- ===============================================
184
CREATE TABLE solution_report_charts (
185
  id INT AUTO_INCREMENT PRIMARY KEY,
186
  subscription_code VARCHAR(255) NOT NULL,
187
  category ENUM('market', 'personalized', 'matricule') NOT NULL,
188
  report_chart VARCHAR(255) NOT NULL,
189
  createdAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
190
  updatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
191
  FOREIGN KEY (subscription_code, category)
192
    REFERENCES solution_reports_config_gaps(subscription_code, category)
193
    ON DELETE CASCADE ON UPDATE CASCADE
194
);
195

    
196
INSERT INTO solution_report_charts (subscription_code, category, report_chart) VALUES
197
-- Essential / market
198
('essential', 'market', 'gap_general'),
199
('essential', 'market', 'general_internal_gap_fixed'),
200

    
201
-- On The Menu
202
('on_the_menu', 'market', 'gap_general'),
203
('on_the_menu', 'market', 'general_internal_gap_fixed'),
204

    
205
('on_the_menu', 'matricule', 'gap_general'),
206
('on_the_menu', 'matricule', 'general_internal_gap_fixed'),
207

    
208
('on_the_menu', 'personalized', 'gap_general'),
209
('on_the_menu', 'personalized', 'general_internal_gap_fixed'),
210

    
211
-- Advanced
212
('advanced', 'market', 'gap_general'),
213
('advanced', 'market', 'general_internal_gap_fixed'),
214

    
215
('advanced', 'matricule', 'gap_general'),
216
('advanced', 'matricule', 'general_internal_gap_fixed'),
217

    
218
('advanced', 'personalized', 'gap_general'),
219
('advanced', 'personalized', 'general_internal_gap_fixed');
220

    
221

    
222
-- ===============================================
223
-- 5️: solution_report_criterias_charts
224
-- ===============================================
225
CREATE TABLE solution_report_criterias_charts (
226
  id INT AUTO_INCREMENT PRIMARY KEY,
227
  report_criterias VARCHAR(255) NOT NULL,
228
  criteria VARCHAR(255) NOT NULL,
229
  createdAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
230
  updatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
231
  FOREIGN KEY (report_criterias) REFERENCES solution_report_criterias(report_criterias)
232
    ON DELETE CASCADE ON UPDATE CASCADE
233
);
234
 -- in progres ( j'ai pas encore  fini !!!!!!)
235
INSERT INTO solution_report_criterias_charts (report_criterias, criteria) VALUES
236
-- On The Menu
237
('on_the_menu-function_code-subfunction_code', 'repartition_gap'),
238
('on_the_menu-function_code-subfunction_code', 'repartition_data_bf'),
239
('on_the_menu-function_code-subfunction_code', 'repartition_data_bt'),
240
('on_the_menu-function_code-subfunction_code-collaborative_path', 'repartition_gap'),
241
('on_the_menu-function_code-subfunction_code-collaborative_path', 'repartition_data_bf'),
242
('on_the_menu-function_code-subfunction_code-collaborative_path', 'repartition_data_bt'),
243
('on_the_menu-collaborative_path', 'repartition_gap'),
244
('on_the_menu-collaborative_path', 'repartition_data_bf'),
245
('on_the_menu-collaborative_path', 'repartition_data_bt'),
246
('on_the_menu-function_code-subfunction_code-collaborative_path-grade', 'repartition_gap'),
247
('on_the_menu-function_code-subfunction_code-collaborative_path-grade', 'repartition_data_bf'),
248
('on_the_menu-function_code-subfunction_code-collaborative_path-grade', 'repartition_data_bt'),
249
-- Advanced
250
('advanced-function_code-subfunction_code', 'repartition_gap'),
251
('advanced-function_code-subfunction_code', 'repartition_data_bf'),
252
('advanced-function_code-subfunction_code', 'repartition_data_bt'),
253
('advanced-function_code-subfunction_code-collaborative_path', 'repartition_gap'),
254
('advanced-function_code-subfunction_code-collaborative_path', 'repartition_data_bf'),
255
('advanced-function_code-subfunction_code-collaborative_path', 'repartition_data_bt'),
256
('advanced-collaborative_path', 'repartition_gap'),
257
('advanced-collaborative_path', 'repartition_data_bf'),
258
('advanced-collaborative_path', 'repartition_data_bt'),
259
('advanced-function_code-subfunction_code-collaborative_path-grade', 'repartition_gap'),
260
('advanced-function_code-subfunction_code-collaborative_path-grade', 'repartition_data_bf'),
261
('advanced-function_code-subfunction_code-collaborative_path-grade', 'repartition_data_bt');
262

    
263
-- ===============================================
264
-- 6️: company_reports + company_reports_details
265
-- ===============================================
266
CREATE TABLE company_reports (
267
  id INT AUTO_INCREMENT PRIMARY KEY,
268
  title VARCHAR(255) NOT NULL,
269
  description TEXT,
270
  report_type VARCHAR(20) NULL,
271
  includeCompany BOOLEAN DEFAULT FALSE,
272
  category ENUM('market', 'personalized', 'matricule') NOT NULL,
273
  subscription_code VARCHAR(255) NOT NULL,
274
  companyId INT NOT NULL,
275
  createdAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
276
  updatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
277
  FOREIGN KEY (companyId) REFERENCES company(id) ON DELETE CASCADE ON UPDATE CASCADE,
278
  FOREIGN KEY (subscription_code, category)
279
    REFERENCES solution_reports_config_gaps(subscription_code, category)
280
    ON DELETE CASCADE ON UPDATE CASCADE
281
);
282

    
283
CREATE TABLE company_reports_details (
284
  id INT AUTO_INCREMENT PRIMARY KEY,
285
  reportId INT NOT NULL,
286
  request JSON NULL,
287
  response JSON NULL,
288
  createdAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
289
  updatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
290
  FOREIGN KEY (reportId) REFERENCES company_reports(id)
291
    ON DELETE CASCADE ON UPDATE CASCADE
292
);
(2-2/8)