python /home/admin/mtr/script_for_cron.py -j default -m 20 -a 'python3 /home/admin/workarea/git/Velours/python/prod/memo/memo.py --dashboard_places=SyctomXV_Mask_23Q4 -j sla_mensuel -v --date=2025-04 --rootfolder_sla=/data_2/data_log/job/memo/SyctomXV ' -s sla_mensuel -M 0 -S 0 -U 90,80,95 import MySQLdb succeeded Import error (python version) Need env var : LOGRASPI Raspi : , Date : 2025-04 _cr_cnf_ : /home/admin/mtr/.credentials/credentials.py _cr_cnf_ : /home/admin/mtr/.credentials/credentials.py warning , we can't find thcl infos in json_data warning , we can't find pdt infos in json_data nb_day : (1, 30) TODO : Insert select and so on SELECT id, name, misc_info, datou_id_for_right FROM MTRPhoto.dashboard_places WHERE name="SyctomXV_Mask_23Q4"; SELECT name, created_at,limit_max FROM MTRDatou.mtr_datou WHERE id=4932 SELECT mtd.id, mtdt.`type`, mtd.`param`, mtd.param_json, mtdt.nb_input, mtdt.nb_output, mtdt.prod, mtdt.is_local, mtdt.is_datou_depend, mtdt.is_photo_id_local FROM MTRDatou.mtr_datou_step mtd, MTRDatou.mtr_datou_step_types mtdt WHERE mtdt.`id`=mtd.`type` AND mtd.mtd_id=4932 SELECT mtd.id, mtd.mtd_id, mdsdt.id, mdsdt.name, mdsdt.description, msid.output_or_input, msid.data_order_id, mdsdt.type FROM MTRDatou.mtr_datou_step mtd, MTRDatou.mtr_datou_steptype_io_datatypes msid, MTRDatou.mtr_datou_step_data_types mdsdt WHERE mtd.`type`=msid.`mtr_datou_step_type` AND mtd.mtd_id= 4932 AND msid.data_type=mdsdt.id SELECT mts_id_output, id_output, mts_id_input, id_input FROM MTRDatou.mtr_datou_step_by_step WHERE mtd_id=4932 # VR 17-11-17 : to create in DB ! Here we check the datou graph and we reorder steps ! Tree builded and cycle checked, now we need to re-order the steps ! We have currenlty an error because there is no dependence between the last step for the case tile - detect - glue We can either keep the depence of, it is better to keep an order compatible with the id of steps if we do not have sons, so a lexical order : (number_son, step_id) DONE and to test : checkNoCycle ! We are managing only one step so we do not consider checkConsistencyNbInputNbOutput ! We are managing only one step so we do not consider checkConsistencyTypeOutputInput ! {"input_values":[]} We expected an STS datou with a camera_place_name, so there is a PB, datou_id: 4932 ! {'id': 4932, 'name': 'split_time_score_cod_upm_SyctomXV_Mask_23Q1', 'limit_max': 150, 'nb_steps': 1, 'estimated_time': 8640, 'list_steps': [{'id': 14066, 'type': 'split_time_score_with_photo', 'param': '0', 'json_param_as_string': "{'cod': 1, 'camera_place_name': 'SyctomXV_Mask_23Q4', 'ETA': 8640, 'param_moyenne_mobile': 5, 'thcl': 3379, 'list_task_complete': [''], 'list_tasks': 'LOAD,ORDER,CONVENTION,SPLIT_BY_DARK,SPLIT_TIME, CREATE_PORT_LAUNCH_CARAC_FILL_DASHBOARD,READ_PLATE', 'forced_hashtag': 'entrant', 'list_hashtag_class_create': 'entrant', 'ponderation': '0.001,0.001,0.001,0.001,0.001', 'host': 'www.fotonower.com', 'interval': 10, 'datou_proportion_papier': {'test': 370, 'entrant': 4742}, 'check_plate_format': 1, 'input_default_values': []}", 'json_param': {'cod': 1, 'camera_place_name': 'SyctomXV_Mask_23Q4', 'ETA': 8640, 'param_moyenne_mobile': 5, 'thcl': 3379, 'list_task_complete': [''], 'list_tasks': 'LOAD,ORDER,CONVENTION,SPLIT_BY_DARK,SPLIT_TIME, CREATE_PORT_LAUNCH_CARAC_FILL_DASHBOARD,READ_PLATE', 'forced_hashtag': 'entrant', 'list_hashtag_class_create': 'entrant', 'ponderation': '0.001,0.001,0.001,0.001,0.001', 'host': 'www.fotonower.com', 'interval': 10, 'datou_proportion_papier': {'test': 370, 'entrant': 4742}, 'check_plate_format': 1, 'input_default_values': []}, 'nb_input': 2, 'nb_output': 1, 'prod': False, 'is_local': False, 'is_datou_depend': False, 'is_photo_id_local': False, 'list_data': []}], 'depends_step': []} check if it is the case where we have multiple sts in one datou yes, we found a datou with multiple sts, we will choose the last one by default SELECT name, created_at,limit_max FROM MTRDatou.mtr_datou WHERE id=370 SELECT mtd.id, mtdt.`type`, mtd.`param`, mtd.param_json, mtdt.nb_input, mtdt.nb_output, mtdt.prod, mtdt.is_local, mtdt.is_datou_depend, mtdt.is_photo_id_local FROM MTRDatou.mtr_datou_step mtd, MTRDatou.mtr_datou_step_types mtdt WHERE mtdt.`id`=mtd.`type` AND mtd.mtd_id=370 SELECT mtd.id, mtd.mtd_id, mdsdt.id, mdsdt.name, mdsdt.description, msid.output_or_input, msid.data_order_id, mdsdt.type FROM MTRDatou.mtr_datou_step mtd, MTRDatou.mtr_datou_steptype_io_datatypes msid, MTRDatou.mtr_datou_step_data_types mdsdt WHERE mtd.`type`=msid.`mtr_datou_step_type` AND mtd.mtd_id= 370 AND msid.data_type=mdsdt.id SELECT mts_id_output, id_output, mts_id_input, id_input FROM MTRDatou.mtr_datou_step_by_step WHERE mtd_id=370 # VR 17-11-17 : to create in DB ! Here we check the datou graph and we reorder steps ! Tree builded and cycle checked, now we need to re-order the steps ! We have currenlty an error because there is no dependence between the last step for the case tile - detect - glue We can either keep the depence of, it is better to keep an order compatible with the id of steps if we do not have sons, so a lexical order : (number_son, step_id) All sons are already in current list ! All sons are already in current list ! All sons are already in current list ! All sons are already in current list ! DONE and to test : checkNoCycle ! Here we check the consistency of inputs/outputs number between the given ones and the db ! eke 1-6-18 : checkConsistencyNbInputNbOutput should be processed after step reordering ! Number of inputs / outputs for each step checked ! Here we check the consistency of outputs/inputs types during steps connections eke 1-6-18 : checkConsistencyTypeOutputInput should be processed after checkConsistencyNbInputNbOutput ! We ignore checkConsistencyTypeOutputInput for datou_step final ! We ignore checkConsistencyTypeOutputInput for datou_step final ! We ignore checkConsistencyTypeOutputInput for datou_step final ! DataTypes for each output/input checked ! {"input_values":[]} Unexpected error treated as WARNING for now expected given param in final step {'min_score': 0.7, 'name_pipeline': 'proportion_papier_tapis', 'hashtag_type': 705, 'hashtag_proportion': 492668766, 'hashtag_parmi': 538914404, 'hashtag_to_consider': 'papier_only', 'hashtag_background': 493012381} Found hashtag_parmi in final step, will be used and useful if different from matiere_majoritaire in classifier ventilate_hashtags_in_portfolio step not found ! SELECT name, created_at,limit_max FROM MTRDatou.mtr_datou WHERE id=4742 SELECT mtd.id, mtdt.`type`, mtd.`param`, mtd.param_json, mtdt.nb_input, mtdt.nb_output, mtdt.prod, mtdt.is_local, mtdt.is_datou_depend, mtdt.is_photo_id_local FROM MTRDatou.mtr_datou_step mtd, MTRDatou.mtr_datou_step_types mtdt WHERE mtdt.`id`=mtd.`type` AND mtd.mtd_id=4742 SELECT mtd.id, mtd.mtd_id, mdsdt.id, mdsdt.name, mdsdt.description, msid.output_or_input, msid.data_order_id, mdsdt.type FROM MTRDatou.mtr_datou_step mtd, MTRDatou.mtr_datou_steptype_io_datatypes msid, MTRDatou.mtr_datou_step_data_types mdsdt WHERE mtd.`type`=msid.`mtr_datou_step_type` AND mtd.mtd_id= 4742 AND msid.data_type=mdsdt.id SELECT mts_id_output, id_output, mts_id_input, id_input FROM MTRDatou.mtr_datou_step_by_step WHERE mtd_id=4742 # VR 17-11-17 : to create in DB ! Here we check the datou graph and we reorder steps ! Tree builded and cycle checked, now we need to re-order the steps ! We have currenlty an error because there is no dependence between the last step for the case tile - detect - glue We can either keep the depence of, it is better to keep an order compatible with the id of steps if we do not have sons, so a lexical order : (number_son, step_id) All sons are already in current list ! All sons are already in current list ! All sons are already in current list ! All sons are already in current list ! All sons are already in current list ! All sons are already in current list ! DONE and to test : checkNoCycle ! Here we check the consistency of inputs/outputs number between the given ones and the db ! eke 1-6-18 : checkConsistencyNbInputNbOutput should be processed after step reordering ! WARNING : number of outputs for step 13169 copy_chis is not consistent : 2 used against 1 in the step definition ! WARNING : number of outputs for step 13170 consolidate_hashtags_from_manual_portfolio is not consistent : 2 used against 1 in the step definition ! WARNING : number of inputs for step 13167 rle_unique_nms_with_priority is not consistent : 3 used against 1 in the step definition ! WARNING : number of outputs for step 13167 rle_unique_nms_with_priority is not consistent : 2 used against 1 in the step definition ! WARNING : number of outputs for step 13174 ventilate_hashtags_in_portfolio is not consistent : 2 used against 1 in the step definition ! Step 13168 final have less outputs used (1) than in the step definition (2) : some outputs may be not used ! Step 13171 blur_detection have less inputs used (0) than in the step definition (1) : maybe we manage optionnal inputs ! Step 13172 brightness have less inputs used (0) than in the step definition (1) : maybe we manage optionnal inputs ! Step 13173 send_mail_cod have less inputs used (4) than in the step definition (5) : maybe we manage optionnal inputs ! Step 13175 split_time_score have less inputs used (1) than in the step definition (2) : maybe we manage optionnal inputs ! Number of inputs / outputs for each step checked ! Here we check the consistency of outputs/inputs types during steps connections eke 1-6-18 : checkConsistencyTypeOutputInput should be processed after checkConsistencyNbInputNbOutput ! We ignore checkConsistencyTypeOutputInput for datou_step final ! WARNING : output 0 of step 13169 have datatype=11 whereas input 0 of step 13167 have datatype=2 WARNING : type of output 1 of step 13170 doesn't seem to be define in the database( WARNING : type of input 3 of step 13168 doesn't seem to be define in the database( We ignore checkConsistencyTypeOutputInput for datou_step final ! We ignore checkConsistencyTypeOutputInput for datou_step final ! WARNING : type of output 1 of step 13170 doesn't seem to be define in the database( WARNING : type of input 1 of step 13167 doesn't seem to be define in the database( WARNING : output 0 of step 13174 have datatype=10 whereas input 3 of step 13173 have datatype=6 WARNING : type of input 1 of step 13174 doesn't seem to be define in the database( WARNING : output 1 of step 13167 have datatype=7 whereas input 1 of step 13174 have datatype=None WARNING : type of output 1 of step 13174 doesn't seem to be define in the database( WARNING : type of input 4 of step 13168 doesn't seem to be define in the database( We ignore checkConsistencyTypeOutputInput for datou_step final ! WARNING : type of output 1 of step 13169 doesn't seem to be define in the database( WARNING : type of input 1 of step 13170 doesn't seem to be define in the database( DataTypes for each output/input checked ! {"input_values":[]} Unexpected error treated as WARNING for now expected given param in final step {'name_pipeline': 'aggregate_carac_ratio', 'hashtag_type': 4857, 'hashtag_proportion': 'sac_om_plein,textiles,verre,organique,dasri,masque,encombrant,autre_non_emballage', 'hashtag_parmi': 'papier,carton,metal,pet_clair,pehd,flux_dev,film_dev_souple,ela', 'hashtag_weights': {'papier': 3, 'carton': 2.8, 'metal': 6, 'pet_clair': 1.4, 'pehd': 2.8, 'flux_dev': 2.8, 'pet_opaque': 3, 'barquette_opaque': 2.8, 'film_dev_souple': 0.8, 'ela': 3.0, 'sac_om_plein': 6.5, 'textiles': 3, 'verre': 10.0, 'organique': 4.0, 'dasri': 2.0, 'masque': 1, 'encombrant': 7, 'autre_emballage': 6.0, 'autre_non_emballage': 6.0}, 'check_plaque': 1} Found hashtag_parmi in final step, will be used and useful if different from matiere_majoritaire in classifier Fonction SLA_MENSUEL nb_day : (1, 30) TODO : Insert select and so on SELECT id, name, misc_info, datou_id_for_right FROM MTRPhoto.dashboard_places WHERE name="SyctomXV_Mask_23Q4"; SELECT name, created_at,limit_max FROM MTRDatou.mtr_datou WHERE id=4932 SELECT mtd.id, mtdt.`type`, mtd.`param`, mtd.param_json, mtdt.nb_input, mtdt.nb_output, mtdt.prod, mtdt.is_local, mtdt.is_datou_depend, mtdt.is_photo_id_local FROM MTRDatou.mtr_datou_step mtd, MTRDatou.mtr_datou_step_types mtdt WHERE mtdt.`id`=mtd.`type` AND mtd.mtd_id=4932 SELECT mtd.id, mtd.mtd_id, mdsdt.id, mdsdt.name, mdsdt.description, msid.output_or_input, msid.data_order_id, mdsdt.type FROM MTRDatou.mtr_datou_step mtd, MTRDatou.mtr_datou_steptype_io_datatypes msid, MTRDatou.mtr_datou_step_data_types mdsdt WHERE mtd.`type`=msid.`mtr_datou_step_type` AND mtd.mtd_id= 4932 AND msid.data_type=mdsdt.id SELECT mts_id_output, id_output, mts_id_input, id_input FROM MTRDatou.mtr_datou_step_by_step WHERE mtd_id=4932 # VR 17-11-17 : to create in DB ! Here we check the datou graph and we reorder steps ! Tree builded and cycle checked, now we need to re-order the steps ! We have currenlty an error because there is no dependence between the last step for the case tile - detect - glue We can either keep the depence of, it is better to keep an order compatible with the id of steps if we do not have sons, so a lexical order : (number_son, step_id) DONE and to test : checkNoCycle ! We are managing only one step so we do not consider checkConsistencyNbInputNbOutput ! We are managing only one step so we do not consider checkConsistencyTypeOutputInput ! {"input_values":[]} We expected an STS datou with a camera_place_name, so there is a PB, datou_id: 4932 ! {'id': 4932, 'name': 'split_time_score_cod_upm_SyctomXV_Mask_23Q1', 'limit_max': 150, 'nb_steps': 1, 'estimated_time': 8640, 'list_steps': [{'id': 14066, 'type': 'split_time_score_with_photo', 'param': '0', 'json_param_as_string': "{'cod': 1, 'camera_place_name': 'SyctomXV_Mask_23Q4', 'ETA': 8640, 'param_moyenne_mobile': 5, 'thcl': 3379, 'list_task_complete': [''], 'list_tasks': 'LOAD,ORDER,CONVENTION,SPLIT_BY_DARK,SPLIT_TIME, CREATE_PORT_LAUNCH_CARAC_FILL_DASHBOARD,READ_PLATE', 'forced_hashtag': 'entrant', 'list_hashtag_class_create': 'entrant', 'ponderation': '0.001,0.001,0.001,0.001,0.001', 'host': 'www.fotonower.com', 'interval': 10, 'datou_proportion_papier': {'test': 370, 'entrant': 4742}, 'check_plate_format': 1, 'input_default_values': []}", 'json_param': {'cod': 1, 'camera_place_name': 'SyctomXV_Mask_23Q4', 'ETA': 8640, 'param_moyenne_mobile': 5, 'thcl': 3379, 'list_task_complete': [''], 'list_tasks': 'LOAD,ORDER,CONVENTION,SPLIT_BY_DARK,SPLIT_TIME, CREATE_PORT_LAUNCH_CARAC_FILL_DASHBOARD,READ_PLATE', 'forced_hashtag': 'entrant', 'list_hashtag_class_create': 'entrant', 'ponderation': '0.001,0.001,0.001,0.001,0.001', 'host': 'www.fotonower.com', 'interval': 10, 'datou_proportion_papier': {'test': 370, 'entrant': 4742}, 'check_plate_format': 1, 'input_default_values': []}, 'nb_input': 2, 'nb_output': 1, 'prod': False, 'is_local': False, 'is_datou_depend': False, 'is_photo_id_local': False, 'list_data': []}], 'depends_step': []} check if it is the case where we have multiple sts in one datou yes, we found a datou with multiple sts, we will choose the last one by default SELECT name, created_at,limit_max FROM MTRDatou.mtr_datou WHERE id=370 SELECT mtd.id, mtdt.`type`, mtd.`param`, mtd.param_json, mtdt.nb_input, mtdt.nb_output, mtdt.prod, mtdt.is_local, mtdt.is_datou_depend, mtdt.is_photo_id_local FROM MTRDatou.mtr_datou_step mtd, MTRDatou.mtr_datou_step_types mtdt WHERE mtdt.`id`=mtd.`type` AND mtd.mtd_id=370 SELECT mtd.id, mtd.mtd_id, mdsdt.id, mdsdt.name, mdsdt.description, msid.output_or_input, msid.data_order_id, mdsdt.type FROM MTRDatou.mtr_datou_step mtd, MTRDatou.mtr_datou_steptype_io_datatypes msid, MTRDatou.mtr_datou_step_data_types mdsdt WHERE mtd.`type`=msid.`mtr_datou_step_type` AND mtd.mtd_id= 370 AND msid.data_type=mdsdt.id SELECT mts_id_output, id_output, mts_id_input, id_input FROM MTRDatou.mtr_datou_step_by_step WHERE mtd_id=370 # VR 17-11-17 : to create in DB ! Here we check the datou graph and we reorder steps ! Tree builded and cycle checked, now we need to re-order the steps ! We have currenlty an error because there is no dependence between the last step for the case tile - detect - glue We can either keep the depence of, it is better to keep an order compatible with the id of steps if we do not have sons, so a lexical order : (number_son, step_id) All sons are already in current list ! All sons are already in current list ! All sons are already in current list ! All sons are already in current list ! DONE and to test : checkNoCycle ! Here we check the consistency of inputs/outputs number between the given ones and the db ! eke 1-6-18 : checkConsistencyNbInputNbOutput should be processed after step reordering ! Number of inputs / outputs for each step checked ! Here we check the consistency of outputs/inputs types during steps connections eke 1-6-18 : checkConsistencyTypeOutputInput should be processed after checkConsistencyNbInputNbOutput ! We ignore checkConsistencyTypeOutputInput for datou_step final ! We ignore checkConsistencyTypeOutputInput for datou_step final ! We ignore checkConsistencyTypeOutputInput for datou_step final ! DataTypes for each output/input checked ! {"input_values":[]} Unexpected error treated as WARNING for now expected given param in final step {'min_score': 0.7, 'name_pipeline': 'proportion_papier_tapis', 'hashtag_type': 705, 'hashtag_proportion': 492668766, 'hashtag_parmi': 538914404, 'hashtag_to_consider': 'papier_only', 'hashtag_background': 493012381} Found hashtag_parmi in final step, will be used and useful if different from matiere_majoritaire in classifier ventilate_hashtags_in_portfolio step not found ! SELECT name, created_at,limit_max FROM MTRDatou.mtr_datou WHERE id=4742 SELECT mtd.id, mtdt.`type`, mtd.`param`, mtd.param_json, mtdt.nb_input, mtdt.nb_output, mtdt.prod, mtdt.is_local, mtdt.is_datou_depend, mtdt.is_photo_id_local FROM MTRDatou.mtr_datou_step mtd, MTRDatou.mtr_datou_step_types mtdt WHERE mtdt.`id`=mtd.`type` AND mtd.mtd_id=4742 SELECT mtd.id, mtd.mtd_id, mdsdt.id, mdsdt.name, mdsdt.description, msid.output_or_input, msid.data_order_id, mdsdt.type FROM MTRDatou.mtr_datou_step mtd, MTRDatou.mtr_datou_steptype_io_datatypes msid, MTRDatou.mtr_datou_step_data_types mdsdt WHERE mtd.`type`=msid.`mtr_datou_step_type` AND mtd.mtd_id= 4742 AND msid.data_type=mdsdt.id SELECT mts_id_output, id_output, mts_id_input, id_input FROM MTRDatou.mtr_datou_step_by_step WHERE mtd_id=4742 # VR 17-11-17 : to create in DB ! Here we check the datou graph and we reorder steps ! Tree builded and cycle checked, now we need to re-order the steps ! We have currenlty an error because there is no dependence between the last step for the case tile - detect - glue We can either keep the depence of, it is better to keep an order compatible with the id of steps if we do not have sons, so a lexical order : (number_son, step_id) All sons are already in current list ! All sons are already in current list ! All sons are already in current list ! All sons are already in current list ! All sons are already in current list ! All sons are already in current list ! DONE and to test : checkNoCycle ! Here we check the consistency of inputs/outputs number between the given ones and the db ! eke 1-6-18 : checkConsistencyNbInputNbOutput should be processed after step reordering ! WARNING : number of outputs for step 13169 copy_chis is not consistent : 2 used against 1 in the step definition ! WARNING : number of outputs for step 13170 consolidate_hashtags_from_manual_portfolio is not consistent : 2 used against 1 in the step definition ! WARNING : number of inputs for step 13167 rle_unique_nms_with_priority is not consistent : 3 used against 1 in the step definition ! WARNING : number of outputs for step 13167 rle_unique_nms_with_priority is not consistent : 2 used against 1 in the step definition ! WARNING : number of outputs for step 13174 ventilate_hashtags_in_portfolio is not consistent : 2 used against 1 in the step definition ! Step 13168 final have less outputs used (1) than in the step definition (2) : some outputs may be not used ! Step 13171 blur_detection have less inputs used (0) than in the step definition (1) : maybe we manage optionnal inputs ! Step 13172 brightness have less inputs used (0) than in the step definition (1) : maybe we manage optionnal inputs ! Step 13173 send_mail_cod have less inputs used (4) than in the step definition (5) : maybe we manage optionnal inputs ! Step 13175 split_time_score have less inputs used (1) than in the step definition (2) : maybe we manage optionnal inputs ! Number of inputs / outputs for each step checked ! Here we check the consistency of outputs/inputs types during steps connections eke 1-6-18 : checkConsistencyTypeOutputInput should be processed after checkConsistencyNbInputNbOutput ! We ignore checkConsistencyTypeOutputInput for datou_step final ! WARNING : output 0 of step 13169 have datatype=11 whereas input 0 of step 13167 have datatype=2 WARNING : type of output 1 of step 13170 doesn't seem to be define in the database( WARNING : type of input 3 of step 13168 doesn't seem to be define in the database( We ignore checkConsistencyTypeOutputInput for datou_step final ! We ignore checkConsistencyTypeOutputInput for datou_step final ! WARNING : type of output 1 of step 13170 doesn't seem to be define in the database( WARNING : type of input 1 of step 13167 doesn't seem to be define in the database( WARNING : output 0 of step 13174 have datatype=10 whereas input 3 of step 13173 have datatype=6 WARNING : type of input 1 of step 13174 doesn't seem to be define in the database( WARNING : output 1 of step 13167 have datatype=7 whereas input 1 of step 13174 have datatype=None WARNING : type of output 1 of step 13174 doesn't seem to be define in the database( WARNING : type of input 4 of step 13168 doesn't seem to be define in the database( We ignore checkConsistencyTypeOutputInput for datou_step final ! WARNING : type of output 1 of step 13169 doesn't seem to be define in the database( WARNING : type of input 1 of step 13170 doesn't seem to be define in the database( DataTypes for each output/input checked ! {"input_values":[]} Unexpected error treated as WARNING for now expected given param in final step {'name_pipeline': 'aggregate_carac_ratio', 'hashtag_type': 4857, 'hashtag_proportion': 'sac_om_plein,textiles,verre,organique,dasri,masque,encombrant,autre_non_emballage', 'hashtag_parmi': 'papier,carton,metal,pet_clair,pehd,flux_dev,film_dev_souple,ela', 'hashtag_weights': {'papier': 3, 'carton': 2.8, 'metal': 6, 'pet_clair': 1.4, 'pehd': 2.8, 'flux_dev': 2.8, 'pet_opaque': 3, 'barquette_opaque': 2.8, 'film_dev_souple': 0.8, 'ela': 3.0, 'sac_om_plein': 6.5, 'textiles': 3, 'verre': 10.0, 'organique': 4.0, 'dasri': 2.0, 'masque': 1, 'encombrant': 7, 'autre_emballage': 6.0, 'autre_non_emballage': 6.0}, 'check_plaque': 1} Found hashtag_parmi in final step, will be used and useful if different from matiere_majoritaire in classifier place_id : 188 month : 04 mtr_id : dashboard_places : SyctomXV_Mask_23Q4 date : 2025-04 year : 2025 raspi : 0 select count(distinct mtr_photo_id) from MTRUser.mtr_portfolio_photos where mtr_portfolio_id in (select id from MTRUser.mtr_portfolios where id in (select mtr_portfolio_id from MTRPhoto.dashboard_results where dashboard_run_id in(select last_run_id from MTRPhoto.dashboard_entry_day where dashboard_place_id in (select id from MTRPhoto.dashboard_places where name = 'SyctomXV_Mask_23Q4' and date like '%2025-04%') and created_at like '%2025-04%'))); nb_day : (1, 30) after unwanted_material_data We return tuple() but get_coverage_data_from_list_of_date return unexpectedly data from stuff in error with raspi=0 so we force here ! after coverage_data SELECT DATE(date_debut) as date, sum(qualite*nombre_balle)/sum(nombre_balle), count(distinct mtr_photo_id) FROM MTRPhoto.dashboard_results dr, MTRUser.mtr_portfolio_photos mpp, MTRPhoto.dashboard_entry_day ded where mpp.mtr_portfolio_id=dr.mtr_portfolio_id and ded.dashboard_place_id = 188 and month(ded.date) = 04 and year(ded.date) = 2025 and dr.dashboard_run_id=ded.last_run_id and dr.qualite>=0 GROUP BY ded.date order by dr.date_debut; SELECT DATE(date_debut) as date, sum(qualite*nombre_balle)/sum(nombre_balle), count(distinct mtr_photo_id) FROM MTRPhoto.dashboard_results dr, MTRUser.mtr_portfolio_photos mpp, MTRPhoto.dashboard_entry_day ded where mpp.mtr_portfolio_id=dr.mtr_portfolio_id and dr.hashtag = '_______entrant' and ded.dashboard_place_id = 188 and month(ded.date) = 04 and year(ded.date) = 2025 and dr.dashboard_run_id=ded.last_run_id and dr.qualite>=0 GROUP BY ded.date order by dr.date_debut; select avg(cps.score) as score, SUBSTRING_INDEX(SUBSTRING_INDEX(mp.name,'__', -1), '_', 1) as sbstr, SUBSTRING_INDEX(SUBSTRING_INDEX(mp.name,'_', -2), '_', 1) as sbstr2, SUBSTRING_INDEX(mp.name,'_', -1) as sbstr3 FROM MTRUser.mtr_portfolio_photos mpp, MTRUser.mtr_portfolios mp,MTRPhoto.class_photo_score cps,MTRBack.hashtags h,MTRPhoto.dashboard_results dr,MTRPhoto.dashboard_entry_day ded, MTRPhoto.dashboard_places dp WHERE mp.id=mpp.mtr_portfolio_id and cps.photo_id=mpp.mtr_photo_id and h.hashtag_id=cps.hashtag_id and dr.mtr_portfolio_id = mpp.mtr_portfolio_id and dr.dashboard_run_id = ded.last_run_id and ded.dashboard_place_id = dp.id and h.hashtag in ('blur', 'mean_blur', 'clear') and dp.id = 188 and mp.name like '%042025%' and cps.thcl = 1533 GROUP BY sbstr ; after number_of_batch date_start : 2025-04-01 : dt_date_just_month_year : 2025-04-01 00:00:00 : VR TODO TOCHECK : due to this bug it shouldn't have being able to work, or maybe it was due to a change directory not done ! VR TODO TOCHECK : due to this bug it shouldn't have being able to work, or maybe it was due to a change directory not done ! VR TODO TOCHECK : due to this bug it shouldn't have being able to work, or maybe it was due to a change directory not done ! VR TODO TOCHECK : due to this bug it shouldn't have being able to work, or maybe it was due to a change directory not done ! VR TODO TOCHECK : due to this bug it shouldn't have being able to work, or maybe it was due to a change directory not done ! VR TODO TOCHECK : due to this bug it shouldn't have being able to work, or maybe it was due to a change directory not done ! VR TODO TOCHECK : due to this bug it shouldn't have being able to work, or maybe it was due to a change directory not done ! VR TODO TOCHECK : due to this bug it shouldn't have being able to work, or maybe it was due to a change directory not done ! VR TODO TOCHECK : due to this bug it shouldn't have being able to work, or maybe it was due to a change directory not done ! VR TODO TOCHECK : due to this bug it shouldn't have being able to work, or maybe it was due to a change directory not done ! VR TODO TOCHECK : due to this bug it shouldn't have being able to work, or maybe it was due to a change directory not done ! VR TODO TOCHECK : due to this bug it shouldn't have being able to work, or maybe it was due to a change directory not done ! VR TODO TOCHECK : due to this bug it shouldn't have being able to work, or maybe it was due to a change directory not done ! VR TODO TOCHECK : due to this bug it shouldn't have being able to work, or maybe it was due to a change directory not done ! VR TODO TOCHECK : due to this bug it shouldn't have being able to work, or maybe it was due to a change directory not done ! VR TODO TOCHECK : due to this bug it shouldn't have being able to work, or maybe it was due to a change directory not done ! VR TODO TOCHECK : due to this bug it shouldn't have being able to work, or maybe it was due to a change directory not done ! VR TODO TOCHECK : due to this bug it shouldn't have being able to work, or maybe it was due to a change directory not done ! VR TODO TOCHECK : due to this bug it shouldn't have being able to work, or maybe it was due to a change directory not done ! VR TODO TOCHECK : due to this bug it shouldn't have being able to work, or maybe it was due to a change directory not done ! VR TODO TOCHECK : due to this bug it shouldn't have being able to work, or maybe it was due to a change directory not done ! VR TODO TOCHECK : due to this bug it shouldn't have being able to work, or maybe it was due to a change directory not done ! VR TODO TOCHECK : due to this bug it shouldn't have being able to work, or maybe it was due to a change directory not done ! VR TODO TOCHECK : due to this bug it shouldn't have being able to work, or maybe it was due to a change directory not done ! VR TODO TOCHECK : due to this bug it shouldn't have being able to work, or maybe it was due to a change directory not done ! VR TODO TOCHECK : due to this bug it shouldn't have being able to work, or maybe it was due to a change directory not done ! VR TODO TOCHECK : due to this bug it shouldn't have being able to work, or maybe it was due to a change directory not done ! VR TODO TOCHECK : due to this bug it shouldn't have being able to work, or maybe it was due to a change directory not done ! VR TODO TOCHECK : due to this bug it shouldn't have being able to work, or maybe it was due to a change directory not done ! Error parsing crontab ! [Errno 2] No such file or directory: '' You better check your LOGRASPI env !!! after pl.get_datou_sts_from_crontab : verbose : True no sts found, try to find from database SELECT dri.id FROM MTRPhoto.dashboard_run_ids dri, MTRPhoto.dashboard_entry_day ded, MTRPhoto.dashboard_places dp WHERE dp.name= "SyctomXV_Mask_23Q4" AND ded.dashboard_place_id=dp.id AND dri.dashboard_entry_day=ded.id AND dri.id=ded.last_run_id AND ded.date >= "2025-04-01" AND ded.date <= "2025-04-30" apple3 {'test': {'mat': 'test', 'pht': 0, 'datou_carac_id': 370, 'unwanted_material': [], 'hashtag_majoritaire_from_carac': 538914404}, 'entrant': {'mat': 'entrant', 'pht': 4857, 'datou_carac_id': 4742, 'unwanted_material': [], 'hashtag_majoritaire_from_carac': 'papier,carton,metal,pet_clair,pehd,flux_dev,film_dev_souple,ela'}} SELECT h.hashtag as unwanted_material, substr(dr.hashtag,8) as main_material, ptp.type as pht_type, sum(pcr.value*dr.nombre_balle)/sum(dr.nombre_balle) as ratio, count(distinct mpp.mtr_photo_id) as nb_photo, group_concat(distinct ptp.mtr_portfolio_id_2) as list_port_cont, group_concat(distinct concat(cast(ptp.mtr_portfolio_id_1 as char), ":", cast(ptp.mtr_portfolio_id_2 as char))) as assoc_port, group_concat(distinct concat(cast(ptp.mtr_portfolio_id_1 as char), ":", h.hashtag, ":", cast(ptp.type as char), ":", cast(ptp.mtr_portfolio_id_2 as char))) as assoc_mat FROM MTRPhoto.dashboard_results dr, MTRPhoto.mtr_port_to_port_ids ptp, MTRUser.mtr_portfolio_photos mpp, MTRUser.portfolio_carac_ratio pcr, MTRBack.hashtags h WHERE dr.dashboard_run_id IN (1714672) AND dr.mtr_portfolio_id=ptp.mtr_portfolio_id_1 AND dr.qualite >= 0 AND mpp.mtr_portfolio_id=ptp.mtr_portfolio_id_2 AND pcr.portfolio_id=ptp.mtr_portfolio_id_1 AND h.hashtag_id = pcr.hashtag_id AND ptp.type = pcr.hashtag_type AND mpp.hide_status = 0 AND ptp.hashtag_id=h.hashtag_id AND ptp.type IN (0,4857) group by h.hashtag, dr.hashtag, ptp.type; [] select count(distinct mtr_photo_id) from MTRUser.mtr_portfolio_photos where mtr_portfolio_id in (select mtr_portfolio_id from MTRPhoto.dashboard_results where dashboard_run_id in(1714672)); after get_hostname_from_raspi hasthag : entrant hasthag that could be used but not yet : _______papier,carton,metal,pet_clair,pehd,flux_dev,film_dev_souple,ela SELECT substr(hashtag,8), substr(date_debut,1,7) as month, (sum(qualite*nombre_balle)/sum(nombre_balle)) FROM MTRPhoto.dashboard_results WHERE hashtag = '_______entrant' and qualite >=0 and dashboard_run_id in (select last_run_id from MTRPhoto.dashboard_entry_day where dashboard_place_id=188 and date >='2025-04-01' and date <= '2025-04-30') GROUP BY month order by month; after impurety_average_per_hashtag {'number_of_analysed_photos': ((1,),), 'unwanted_material_monthly_percentage': ((0.6947346970710817,),), 'material_repartition': (('entrant', 1),), 'material_dict': {'entrant': 1}, 'coverage_data': (), 'impurety_average_data': ((datetime.date(2025, 4, 1), 0.6947346970710817, 1),), 'impurety_average_data_per_hashtag': {'entrant': ((datetime.date(2025, 4, 1), 0.6947346970710817, 1),)}, 'quality_array': [], 'number_of_batch': ((1,),), 'datou_id_sts': 4932, 'map_hashtag_number_mat': {'hash_to_mat_nb': [], 'main_stat': {'nb_photos': 1}}, 'hostname': (), 'impurety_average_per_hashtag': [(('entrant', '2025-04', 0.6947346970710817),)]} TODO : Insert select and so on SELECT id, name, misc_info, datou_id_for_right FROM MTRPhoto.dashboard_places WHERE name="SyctomXV_Mask_23Q4"; SELECT name, created_at,limit_max FROM MTRDatou.mtr_datou WHERE id=4932 SELECT mtd.id, mtdt.`type`, mtd.`param`, mtd.param_json, mtdt.nb_input, mtdt.nb_output, mtdt.prod, mtdt.is_local, mtdt.is_datou_depend, mtdt.is_photo_id_local FROM MTRDatou.mtr_datou_step mtd, MTRDatou.mtr_datou_step_types mtdt WHERE mtdt.`id`=mtd.`type` AND mtd.mtd_id=4932 SELECT mtd.id, mtd.mtd_id, mdsdt.id, mdsdt.name, mdsdt.description, msid.output_or_input, msid.data_order_id, mdsdt.type FROM MTRDatou.mtr_datou_step mtd, MTRDatou.mtr_datou_steptype_io_datatypes msid, MTRDatou.mtr_datou_step_data_types mdsdt WHERE mtd.`type`=msid.`mtr_datou_step_type` AND mtd.mtd_id= 4932 AND msid.data_type=mdsdt.id SELECT mts_id_output, id_output, mts_id_input, id_input FROM MTRDatou.mtr_datou_step_by_step WHERE mtd_id=4932 # VR 17-11-17 : to create in DB ! Here we check the datou graph and we reorder steps ! Tree builded and cycle checked, now we need to re-order the steps ! We have currenlty an error because there is no dependence between the last step for the case tile - detect - glue We can either keep the depence of, it is better to keep an order compatible with the id of steps if we do not have sons, so a lexical order : (number_son, step_id) DONE and to test : checkNoCycle ! We are managing only one step so we do not consider checkConsistencyNbInputNbOutput ! We are managing only one step so we do not consider checkConsistencyTypeOutputInput ! {"input_values":[]} We expected an STS datou with a camera_place_name, so there is a PB, datou_id: 4932 ! {'id': 4932, 'name': 'split_time_score_cod_upm_SyctomXV_Mask_23Q1', 'limit_max': 150, 'nb_steps': 1, 'estimated_time': 8640, 'list_steps': [{'id': 14066, 'type': 'split_time_score_with_photo', 'param': '0', 'json_param_as_string': "{'cod': 1, 'camera_place_name': 'SyctomXV_Mask_23Q4', 'ETA': 8640, 'param_moyenne_mobile': 5, 'thcl': 3379, 'list_task_complete': [''], 'list_tasks': 'LOAD,ORDER,CONVENTION,SPLIT_BY_DARK,SPLIT_TIME, CREATE_PORT_LAUNCH_CARAC_FILL_DASHBOARD,READ_PLATE', 'forced_hashtag': 'entrant', 'list_hashtag_class_create': 'entrant', 'ponderation': '0.001,0.001,0.001,0.001,0.001', 'host': 'www.fotonower.com', 'interval': 10, 'datou_proportion_papier': {'test': 370, 'entrant': 4742}, 'check_plate_format': 1, 'input_default_values': []}", 'json_param': {'cod': 1, 'camera_place_name': 'SyctomXV_Mask_23Q4', 'ETA': 8640, 'param_moyenne_mobile': 5, 'thcl': 3379, 'list_task_complete': [''], 'list_tasks': 'LOAD,ORDER,CONVENTION,SPLIT_BY_DARK,SPLIT_TIME, CREATE_PORT_LAUNCH_CARAC_FILL_DASHBOARD,READ_PLATE', 'forced_hashtag': 'entrant', 'list_hashtag_class_create': 'entrant', 'ponderation': '0.001,0.001,0.001,0.001,0.001', 'host': 'www.fotonower.com', 'interval': 10, 'datou_proportion_papier': {'test': 370, 'entrant': 4742}, 'check_plate_format': 1, 'input_default_values': []}, 'nb_input': 2, 'nb_output': 1, 'prod': False, 'is_local': False, 'is_datou_depend': False, 'is_photo_id_local': False, 'list_data': []}], 'depends_step': []} check if it is the case where we have multiple sts in one datou yes, we found a datou with multiple sts, we will choose the last one by default SELECT name, created_at,limit_max FROM MTRDatou.mtr_datou WHERE id=370 SELECT mtd.id, mtdt.`type`, mtd.`param`, mtd.param_json, mtdt.nb_input, mtdt.nb_output, mtdt.prod, mtdt.is_local, mtdt.is_datou_depend, mtdt.is_photo_id_local FROM MTRDatou.mtr_datou_step mtd, MTRDatou.mtr_datou_step_types mtdt WHERE mtdt.`id`=mtd.`type` AND mtd.mtd_id=370 SELECT mtd.id, mtd.mtd_id, mdsdt.id, mdsdt.name, mdsdt.description, msid.output_or_input, msid.data_order_id, mdsdt.type FROM MTRDatou.mtr_datou_step mtd, MTRDatou.mtr_datou_steptype_io_datatypes msid, MTRDatou.mtr_datou_step_data_types mdsdt WHERE mtd.`type`=msid.`mtr_datou_step_type` AND mtd.mtd_id= 370 AND msid.data_type=mdsdt.id SELECT mts_id_output, id_output, mts_id_input, id_input FROM MTRDatou.mtr_datou_step_by_step WHERE mtd_id=370 # VR 17-11-17 : to create in DB ! Here we check the datou graph and we reorder steps ! Tree builded and cycle checked, now we need to re-order the steps ! We have currenlty an error because there is no dependence between the last step for the case tile - detect - glue We can either keep the depence of, it is better to keep an order compatible with the id of steps if we do not have sons, so a lexical order : (number_son, step_id) All sons are already in current list ! All sons are already in current list ! All sons are already in current list ! All sons are already in current list ! DONE and to test : checkNoCycle ! Here we check the consistency of inputs/outputs number between the given ones and the db ! eke 1-6-18 : checkConsistencyNbInputNbOutput should be processed after step reordering ! Number of inputs / outputs for each step checked ! Here we check the consistency of outputs/inputs types during steps connections eke 1-6-18 : checkConsistencyTypeOutputInput should be processed after checkConsistencyNbInputNbOutput ! We ignore checkConsistencyTypeOutputInput for datou_step final ! We ignore checkConsistencyTypeOutputInput for datou_step final ! We ignore checkConsistencyTypeOutputInput for datou_step final ! DataTypes for each output/input checked ! {"input_values":[]} Unexpected error treated as WARNING for now expected given param in final step {'min_score': 0.7, 'name_pipeline': 'proportion_papier_tapis', 'hashtag_type': 705, 'hashtag_proportion': 492668766, 'hashtag_parmi': 538914404, 'hashtag_to_consider': 'papier_only', 'hashtag_background': 493012381} Found hashtag_parmi in final step, will be used and useful if different from matiere_majoritaire in classifier ventilate_hashtags_in_portfolio step not found ! SELECT name, created_at,limit_max FROM MTRDatou.mtr_datou WHERE id=4742 SELECT mtd.id, mtdt.`type`, mtd.`param`, mtd.param_json, mtdt.nb_input, mtdt.nb_output, mtdt.prod, mtdt.is_local, mtdt.is_datou_depend, mtdt.is_photo_id_local FROM MTRDatou.mtr_datou_step mtd, MTRDatou.mtr_datou_step_types mtdt WHERE mtdt.`id`=mtd.`type` AND mtd.mtd_id=4742 SELECT mtd.id, mtd.mtd_id, mdsdt.id, mdsdt.name, mdsdt.description, msid.output_or_input, msid.data_order_id, mdsdt.type FROM MTRDatou.mtr_datou_step mtd, MTRDatou.mtr_datou_steptype_io_datatypes msid, MTRDatou.mtr_datou_step_data_types mdsdt WHERE mtd.`type`=msid.`mtr_datou_step_type` AND mtd.mtd_id= 4742 AND msid.data_type=mdsdt.id SELECT mts_id_output, id_output, mts_id_input, id_input FROM MTRDatou.mtr_datou_step_by_step WHERE mtd_id=4742 # VR 17-11-17 : to create in DB ! Here we check the datou graph and we reorder steps ! Tree builded and cycle checked, now we need to re-order the steps ! We have currenlty an error because there is no dependence between the last step for the case tile - detect - glue We can either keep the depence of, it is better to keep an order compatible with the id of steps if we do not have sons, so a lexical order : (number_son, step_id) All sons are already in current list ! All sons are already in current list ! All sons are already in current list ! All sons are already in current list ! All sons are already in current list ! All sons are already in current list ! DONE and to test : checkNoCycle ! Here we check the consistency of inputs/outputs number between the given ones and the db ! eke 1-6-18 : checkConsistencyNbInputNbOutput should be processed after step reordering ! WARNING : number of outputs for step 13169 copy_chis is not consistent : 2 used against 1 in the step definition ! WARNING : number of outputs for step 13170 consolidate_hashtags_from_manual_portfolio is not consistent : 2 used against 1 in the step definition ! WARNING : number of inputs for step 13167 rle_unique_nms_with_priority is not consistent : 3 used against 1 in the step definition ! WARNING : number of outputs for step 13167 rle_unique_nms_with_priority is not consistent : 2 used against 1 in the step definition ! WARNING : number of outputs for step 13174 ventilate_hashtags_in_portfolio is not consistent : 2 used against 1 in the step definition ! Step 13168 final have less outputs used (1) than in the step definition (2) : some outputs may be not used ! Step 13171 blur_detection have less inputs used (0) than in the step definition (1) : maybe we manage optionnal inputs ! Step 13172 brightness have less inputs used (0) than in the step definition (1) : maybe we manage optionnal inputs ! Step 13173 send_mail_cod have less inputs used (4) than in the step definition (5) : maybe we manage optionnal inputs ! Step 13175 split_time_score have less inputs used (1) than in the step definition (2) : maybe we manage optionnal inputs ! Number of inputs / outputs for each step checked ! Here we check the consistency of outputs/inputs types during steps connections eke 1-6-18 : checkConsistencyTypeOutputInput should be processed after checkConsistencyNbInputNbOutput ! We ignore checkConsistencyTypeOutputInput for datou_step final ! WARNING : output 0 of step 13169 have datatype=11 whereas input 0 of step 13167 have datatype=2 WARNING : type of output 1 of step 13170 doesn't seem to be define in the database( WARNING : type of input 3 of step 13168 doesn't seem to be define in the database( We ignore checkConsistencyTypeOutputInput for datou_step final ! We ignore checkConsistencyTypeOutputInput for datou_step final ! WARNING : type of output 1 of step 13170 doesn't seem to be define in the database( WARNING : type of input 1 of step 13167 doesn't seem to be define in the database( WARNING : output 0 of step 13174 have datatype=10 whereas input 3 of step 13173 have datatype=6 WARNING : type of input 1 of step 13174 doesn't seem to be define in the database( WARNING : output 1 of step 13167 have datatype=7 whereas input 1 of step 13174 have datatype=None WARNING : type of output 1 of step 13174 doesn't seem to be define in the database( WARNING : type of input 4 of step 13168 doesn't seem to be define in the database( We ignore checkConsistencyTypeOutputInput for datou_step final ! WARNING : type of output 1 of step 13169 doesn't seem to be define in the database( WARNING : type of input 1 of step 13170 doesn't seem to be define in the database( DataTypes for each output/input checked ! {"input_values":[]} Unexpected error treated as WARNING for now expected given param in final step {'name_pipeline': 'aggregate_carac_ratio', 'hashtag_type': 4857, 'hashtag_proportion': 'sac_om_plein,textiles,verre,organique,dasri,masque,encombrant,autre_non_emballage', 'hashtag_parmi': 'papier,carton,metal,pet_clair,pehd,flux_dev,film_dev_souple,ela', 'hashtag_weights': {'papier': 3, 'carton': 2.8, 'metal': 6, 'pet_clair': 1.4, 'pehd': 2.8, 'flux_dev': 2.8, 'pet_opaque': 3, 'barquette_opaque': 2.8, 'film_dev_souple': 0.8, 'ela': 3.0, 'sac_om_plein': 6.5, 'textiles': 3, 'verre': 10.0, 'organique': 4.0, 'dasri': 2.0, 'masque': 1, 'encombrant': 7, 'autre_emballage': 6.0, 'autre_non_emballage': 6.0}, 'check_plaque': 1} Found hashtag_parmi in final step, will be used and useful if different from matiere_majoritaire in classifier {'number_of_analysed_photos': ((1,),), 'unwanted_material_monthly_percentage': ((0.6947346970710817,),), 'material_repartition': (('entrant', 1),), 'material_dict': {'entrant': 1}, 'coverage_data': (), 'impurety_average_data': ((datetime.date(2025, 4, 1), 0.6947346970710817, 1),), 'impurety_average_data_per_hashtag': {'entrant': ((datetime.date(2025, 4, 1), 0.6947346970710817, 1),)}, 'quality_array': [], 'number_of_batch': ((1,),), 'datou_id_sts': 4932, 'map_hashtag_number_mat': {'hash_to_mat_nb': [], 'main_stat': {'nb_photos': 1}}, 'hostname': (), 'impurety_average_per_hashtag': [(('entrant', '2025-04', 0.6947346970710817),)]} filepath : /data_2/data_log/job/memo/SyctomXV/sla_mensuel_SyctomXV_Mask_23Q4_mois_04_annee_2025.pdf Before plot_photos_and_unwanted_material_summary # VR 17-11-17 : to create in DB ! Here we check the datou graph and we reorder steps ! Tree builded and cycle checked, now we need to re-order the steps ! We have currenlty an error because there is no dependence between the last step for the case tile - detect - glue We can either keep the depence of, it is better to keep an order compatible with the id of steps if we do not have sons, so a lexical order : (number_son, step_id) DONE and to test : checkNoCycle ! We are managing only one step so we do not consider checkConsistencyNbInputNbOutput ! We are managing only one step so we do not consider checkConsistencyTypeOutputInput ! Before organize_and_plot_unwanted_material_stats organize_and_plot_unwanted_material_stats returned null before organize_and_plot_impurety_average_data before organize_and_plot_quality_photo_data finish generating filepath : /data_2/data_log/job/memo/SyctomXV/sla_mensuel_SyctomXV_Mask_23Q4_mois_04_annee_2025.pdf le fichier se trouve ici : /data_2/data_log/job/memo/SyctomXV 2.48user 2.78system 0:03.01elapsed 175%CPU (0avgtext+0avgdata 190796maxresident)k 88712inputs+144outputs (500major+65954minor)pagefaults 0swaps