Statistiques — refonte complète, aucun changement backend statistics_screen.dart réécrit (+1832) : barres horizontales monochromes à la place des barres verticales tronquées et des deux anneaux, barre de filtres unique avec les volumes par canal, règle mono-canal, 4 KPI portant chacun leur variation, bandeau « à retenir », courbe en aire avec bandes de week-end. La période précédente s'obtient en rappelant le même endpoint. statistics_report.dart : export PDF généré côté client (paquet pdf Dart), il partage les valeurs calculées de l'écran — un chiffre ne peut pas diverger entre l'écran et le document envoyé à la commune. Deux puces du sommaire promettaient des données inexistantes (parcours terminés, questions au guide IA), retirées. ⚠️ Jamais ouvert dans un navigateur. Cases de test : test-plan.md §8bis / §8ter. Guide IA Screens/GuideIa/guide_ia_screen.dart — onglet Configuration. Menu conditionné à isAssistant, le même drapeau que la garde d'AiController. L'onglet « Ce que demandent vos visiteurs » n'est pas dans ce commit : le schéma backend est prêt, l'UI non. Onboarding self-service Screens/Auth/ (mot de passe oublié, définition du mot de passe), Screens/Billing/subscription_screen.dart, ai_quota_hint.dart. ⚠️ Aucun parcours joué de bout en bout — test-plan.md §18. Parcours guidés progression_mode.dart : 9 booléens sur 3 niveaux remplacés par 3 questions. Popups GuidedPath / GuidedStep / QuizQuestion mises à jour en conséquence. Client API (manager_api_new) — édité À LA MAIN, ne pas relancer la génération onboarding_api.dart, authentication_api.dart (+80), instance_dto (champs Guide*), guided_step / quiz_question_guided_step (flags morts retirés). Le // @dart=2.18 manquant dans onboarding_api.dart cassait les 3 apps Flutter d'un coup — corrigé ici. i18n : ~180 clés par langue (FR/EN/NL) + fichiers générés. Tests : progression_mode_test, statistics_report_test (le second a attrapé deux plantages qui seraient sortis au premier clic). flutter build web ✅. flutter analyze : 68 erreurs, toutes dans les fichiers modèle orphelins de manager_api_new — dette connue, pas une régression, ces fichiers ne sont pas dans le graphe de compilation.
206 lines
7.2 KiB
Dart
206 lines
7.2 KiB
Dart
//
|
|
// AUTO-GENERATED FILE, DO NOT MODIFY!
|
|
//
|
|
// @dart=2.18
|
|
|
|
// ignore_for_file: unused_element, unused_import
|
|
// ignore_for_file: always_put_required_named_parameters_first
|
|
// ignore_for_file: constant_identifier_names
|
|
// ignore_for_file: lines_longer_than_80_chars
|
|
|
|
library openapi.api;
|
|
|
|
import 'dart:async';
|
|
import 'dart:convert';
|
|
import 'dart:io';
|
|
|
|
import 'package:collection/collection.dart';
|
|
import 'package:http/http.dart';
|
|
import 'package:intl/intl.dart';
|
|
import 'package:meta/meta.dart';
|
|
|
|
part 'api_client.dart';
|
|
part 'api_helper.dart';
|
|
part 'api_exception.dart';
|
|
part 'auth/authentication.dart';
|
|
part 'auth/api_key_auth.dart';
|
|
part 'auth/oauth.dart';
|
|
part 'auth/http_basic_auth.dart';
|
|
part 'auth/http_bearer_auth.dart';
|
|
|
|
part 'api/ai_api.dart';
|
|
part 'api/api_key_api.dart';
|
|
part 'api/application_instance_api.dart';
|
|
part 'api/authentication_api.dart';
|
|
part 'api/configuration_api.dart';
|
|
part 'api/device_api.dart';
|
|
part 'api/instance_api.dart';
|
|
part 'api/onboarding_api.dart';
|
|
part 'api/subscription_plan_api.dart';
|
|
part 'api/resource_api.dart';
|
|
part 'api/section_api.dart';
|
|
part 'api/section_agenda_api.dart';
|
|
part 'api/section_event_api.dart';
|
|
part 'api/section_map_api.dart';
|
|
part 'api/section_parcours_api.dart';
|
|
part 'api/section_quiz_api.dart';
|
|
part 'api/notification_api.dart';
|
|
part 'api/stats_api.dart';
|
|
part 'api/user_api.dart';
|
|
|
|
part 'model/push_notification_dto.dart';
|
|
part 'model/send_notification_request.dart';
|
|
part 'model/schedule_notification_request.dart';
|
|
|
|
part 'model/agenda_dto.dart';
|
|
part 'model/agenda_dto_all_of_agenda_map_provider.dart';
|
|
part 'model/ai_card_dto.dart';
|
|
part 'model/ai_chat_message.dart';
|
|
part 'model/ai_chat_request.dart';
|
|
part 'model/ai_chat_response.dart';
|
|
part 'model/ai_chat_response_navigation.dart';
|
|
part 'model/api_key_app_type.dart';
|
|
part 'model/app_configuration_link.dart';
|
|
part 'model/app_configuration_link_application_instance.dart';
|
|
part 'model/app_configuration_link_configuration.dart';
|
|
part 'model/app_configuration_link_dto.dart';
|
|
part 'model/app_configuration_link_dto_configuration.dart';
|
|
part 'model/app_configuration_link_dto_device.dart';
|
|
part 'model/app_configuration_link_device.dart';
|
|
part 'model/app_type.dart';
|
|
part 'model/app_type_extensions.dart';
|
|
part 'model/application_instance.dart';
|
|
part 'model/application_instance_dto.dart';
|
|
part 'model/application_instance_dto_section_event_dto.dart';
|
|
part 'model/application_instance_section_event.dart';
|
|
part 'model/article_dto.dart';
|
|
part 'model/categorie_dto.dart';
|
|
part 'model/configuration.dart';
|
|
part 'model/configuration_dto.dart';
|
|
part 'model/content_dto.dart';
|
|
part 'model/coordinate.dart';
|
|
part 'model/coordinate_equality_comparer.dart';
|
|
part 'model/coordinate_sequence.dart';
|
|
part 'model/coordinate_sequence_factory.dart';
|
|
part 'model/create_api_key_request.dart';
|
|
part 'model/device.dart';
|
|
part 'model/device_dto.dart';
|
|
part 'model/device_detail_dto.dart';
|
|
part 'model/dimension.dart';
|
|
part 'model/envelope.dart';
|
|
part 'model/event_address_dto.dart';
|
|
part 'model/event_address_dto_geometry.dart';
|
|
part 'model/event_agenda_dto.dart';
|
|
part 'model/event_agenda_dto_address.dart';
|
|
part 'model/event_agenda_dto_resource.dart';
|
|
part 'model/export_configuration_dto.dart';
|
|
part 'model/game_dto.dart';
|
|
part 'model/game_dto_all_of_puzzle_image.dart';
|
|
part 'model/game_types.dart';
|
|
part 'model/geo_point.dart';
|
|
part 'model/geo_point_dto.dart';
|
|
part 'model/geometry.dart';
|
|
part 'model/geometry_centroid.dart';
|
|
part 'model/geometry_dto.dart';
|
|
part 'model/geometry_envelope_internal.dart';
|
|
part 'model/geometry_factory.dart';
|
|
part 'model/geometry_factory_coordinate_sequence_factory.dart';
|
|
part 'model/geometry_factory_geometry_services.dart';
|
|
part 'model/geometry_precision_model.dart';
|
|
part 'model/geometry_type.dart';
|
|
part 'model/guided_path.dart';
|
|
part 'model/guided_path_dto.dart';
|
|
part 'model/guided_path_section_game.dart';
|
|
part 'model/guided_path_section_map.dart';
|
|
part 'model/guided_step.dart';
|
|
part 'model/guided_step_dto.dart';
|
|
part 'model/guided_step_guided_path.dart';
|
|
part 'model/instance.dart';
|
|
part 'model/instance_dto.dart';
|
|
part 'model/instance_quota_dto.dart';
|
|
part 'model/subscription_plan_dto.dart';
|
|
part 'model/login_dto.dart';
|
|
part 'model/map_annotation.dart';
|
|
part 'model/map_annotation_dto.dart';
|
|
part 'model/map_annotation_geometry.dart';
|
|
part 'model/map_annotation_icon_resource.dart';
|
|
part 'model/map_dto.dart';
|
|
part 'model/map_dto_all_of_map_provider.dart';
|
|
part 'model/map_dto_all_of_map_type.dart';
|
|
part 'model/map_dto_all_of_map_type_mapbox.dart';
|
|
part 'model/map_provider.dart';
|
|
part 'model/map_type_app.dart';
|
|
part 'model/map_type_map_box.dart';
|
|
part 'model/menu_dto.dart';
|
|
part 'model/navigation_action_dto.dart';
|
|
part 'model/nts_geometry_services.dart';
|
|
part 'model/nts_geometry_services_coordinate_equality_comparer.dart';
|
|
part 'model/nts_geometry_services_geometry_overlay.dart';
|
|
part 'model/ogc_geometry_type.dart';
|
|
part 'model/ordered_translation_and_resource_dto.dart';
|
|
part 'model/ordinates.dart';
|
|
part 'model/pdf_dto.dart';
|
|
part 'model/player_message_dto.dart';
|
|
part 'model/point.dart';
|
|
part 'model/point_all_of_boundary.dart';
|
|
part 'model/point_all_of_coordinate.dart';
|
|
part 'model/point_all_of_coordinate_sequence.dart';
|
|
part 'model/precision_model.dart';
|
|
part 'model/precision_models.dart';
|
|
part 'model/problem_details.dart';
|
|
part 'model/programme_block.dart';
|
|
part 'model/programme_block_dto.dart';
|
|
part 'model/question_dto.dart';
|
|
part 'model/question_dto_image_background_resource_type.dart';
|
|
part 'model/question_type.dart';
|
|
part 'model/quiz_dto.dart';
|
|
part 'model/quiz_question.dart';
|
|
part 'model/quiz_question_guided_step.dart';
|
|
part 'model/quiz_question_section_quiz.dart';
|
|
part 'model/resource.dart';
|
|
part 'model/resource_dto.dart';
|
|
part 'model/resource_type.dart';
|
|
part 'model/response_dto.dart';
|
|
part 'model/section.dart';
|
|
part 'model/section_dto.dart';
|
|
part 'model/section_event.dart';
|
|
part 'model/section_event_dto.dart';
|
|
part 'model/section_game.dart';
|
|
part 'model/parcours_dto.dart';
|
|
part 'model/section_game_all_of_game_puzzle_image.dart';
|
|
part 'model/section_map.dart';
|
|
part 'model/section_map_all_of_map_map_provider.dart';
|
|
part 'model/section_map_all_of_map_map_type.dart';
|
|
part 'model/section_map_all_of_map_resource.dart';
|
|
part 'model/section_map_all_of_map_type_mapbox.dart';
|
|
part 'model/section_quiz.dart';
|
|
part 'model/section_type.dart';
|
|
part 'model/slider_dto.dart';
|
|
part 'model/stats_summary_dto.dart';
|
|
part 'model/token_dto.dart';
|
|
part 'model/translation_and_resource_dto.dart';
|
|
part 'model/translation_dto.dart';
|
|
part 'model/user_detail_dto.dart';
|
|
part 'model/user_detail_dto_role.dart';
|
|
part 'model/user_role.dart';
|
|
part 'model/user_role_extensions.dart';
|
|
part 'model/video_dto.dart';
|
|
part 'model/visit_event_dto.dart';
|
|
part 'model/weather_dto.dart';
|
|
part 'model/web_dto.dart';
|
|
|
|
/// An [ApiClient] instance that uses the default values obtained from
|
|
/// the OpenAPI specification file.
|
|
var defaultApiClient = ApiClient();
|
|
|
|
const _delimiters = {'csv': ',', 'ssv': ' ', 'tsv': '\t', 'pipes': '|'};
|
|
const _dateEpochMarker = 'epoch';
|
|
const _deepEquality = DeepCollectionEquality();
|
|
final _dateFormatter = DateFormat('yyyy-MM-dd');
|
|
final _regList = RegExp(r'^List<(.*)>$');
|
|
final _regSet = RegExp(r'^Set<(.*)>$');
|
|
final _regMap = RegExp(r'^Map<String,(.*)>$');
|
|
|
|
bool _isEpochMarker(String? pattern) =>
|
|
pattern == _dateEpochMarker || pattern == '/$_dateEpochMarker/';
|