Skip to main content

Module work_report_dto

Module work_report_dto 

Source
Expand description

Work report DTOs — les montants utilisent rust_decimal::Decimal (ADR-0007/0008).

Deux notes qui expliquent les attributs serde ci-dessous :

  1. validator ne sait pas borner un Decimal (#[validate(range(...))] n’accepte que des littéraux flottants). L’invariant « coût ≥ 0 » descend donc dans le domaine — WorkReport::new / WorkReport::set_cost — où il couvre tous les appelants et plus seulement la route HTTP.

  2. Un Decimal nu sérialise en chaîne JSON ("1500.00"), là où le type d’avant produisait un nombre (1500.0). serde::float / serde::float_option préservent la représentation numérique : la conversion ne provoque donc AUCUN drift de contrat API. Le default sur les champs optionnels est indispensable : #[serde(with = ...)] fait perdre le défaut implicite d’un Option absent, et un cost omis dans une mise à jour partielle deviendrait un 400 « missing field ».

Structs§

AddDocumentDto
AddPhotoDto
CreateWorkReportDto
UpdateWorkReportDto
WarrantyStatusDto
WorkReportListResponseDto
WorkReportResponseDto