Skip to main content

koprogo_api/domain/entities/
mod.rs

1//! Façade de transition vers les contextes bornés du domaine.
2//!
3//! Cette couche plate a longtemps été le domaine tout entier : soixante-dix
4//! entités côte à côte, sans frontière entre le Code civil, la norme
5//! comptable, les fonctions communautaires et la plateforme SaaS. Les
6//! règles y fuyaient d'un univers à l'autre (ADR-0045, RFC-0002).
7//!
8//! Elle ne re-exporte plus que ce qui vit désormais dans
9//! `domain::copropriete`, `domain::comptabilite`,
10//! `domain::economie_circulaire` et `domain::plateforme`. Elle existe pour
11//! que les sites d'appel convergent au fil des reprises plutôt qu'en une
12//! seule secousse.
13//!
14//! **Rien ne s'ajoute ici.** Une entité neuve appartient à un contexte.
15//! `tests/architecture.rs` fige le solde.
16
17// --- copropriete ---
18pub use crate::domain::copropriete::acp;
19pub use crate::domain::copropriete::acp::{
20    Acp, AcpError, AcpLegalStatus, AcpMetrics, AcpNotConformantError, ReserveFundInsufficientError,
21};
22pub use crate::domain::copropriete::acp_enabled_module;
23pub use crate::domain::copropriete::acp_enabled_module::{AcpEnabledModule, Module};
24pub use crate::domain::copropriete::ag_session;
25pub use crate::domain::copropriete::ag_session::{AgSession, AgSessionStatus, VideoPlatform};
26pub use crate::domain::copropriete::age_request;
27pub use crate::domain::copropriete::age_request::{
28    AgeRequest, AgeRequestCosignatory, AgeRequestStatus,
29};
30pub use crate::domain::copropriete::board_alert;
31pub use crate::domain::copropriete::board_alert::{AlertSeverity, AlerteRefusee, BoardAlert};
32pub use crate::domain::copropriete::board_decision;
33pub use crate::domain::copropriete::board_decision::{BoardDecision, DecisionStatus};
34pub use crate::domain::copropriete::board_member;
35pub use crate::domain::copropriete::board_member::{BoardMember, BoardPosition};
36pub use crate::domain::copropriete::building;
37pub use crate::domain::copropriete::building::{
38    Building, BuildingMetrics, BuildingNotConformantError,
39};
40pub use crate::domain::copropriete::convocation;
41pub use crate::domain::copropriete::convocation::{
42    Convocation, ConvocationStatus, ConvocationType,
43};
44pub use crate::domain::copropriete::convocation_recipient;
45pub use crate::domain::copropriete::convocation_recipient::{
46    AttendanceStatus, ConvocationRecipient, QualiteDuMandataire,
47};
48pub use crate::domain::copropriete::document;
49pub use crate::domain::copropriete::document::{Document, DocumentType};
50pub use crate::domain::copropriete::lien_notaire;
51pub use crate::domain::copropriete::lien_notaire::{
52    LienNotaire, LienNotaireError, DUREE_JOURS as DUREE_LIEN_NOTAIRE_JOURS,
53};
54pub use crate::domain::copropriete::mandate;
55pub use crate::domain::copropriete::mandate::{
56    Mandate, MandateKind, MandateScope, MAX_MANDATE_DURATION_DAYS,
57};
58pub use crate::domain::copropriete::meeting;
59pub use crate::domain::copropriete::meeting::{
60    Meeting, MeetingCompletionChecklist, MeetingMode, MeetingModeError, MeetingNotCompletableError,
61    MeetingStatus, MeetingType, MissingInvariant,
62};
63pub use crate::domain::copropriete::poll;
64pub use crate::domain::copropriete::poll::{Poll, PollOption, PollStatus, PollType};
65pub use crate::domain::copropriete::poll_vote;
66pub use crate::domain::copropriete::poll_vote::PollVote;
67pub use crate::domain::copropriete::resolution;
68pub use crate::domain::copropriete::resolution::{
69    MajorityType, Resolution, ResolutionKind, ResolutionStatus, ResolutionType,
70};
71pub use crate::domain::copropriete::syndic_mandate;
72pub use crate::domain::copropriete::syndic_mandate::{SyndicMandate, SyndicMandateError};
73pub use crate::domain::copropriete::syndic_response;
74pub use crate::domain::copropriete::syndic_response::{
75    sla_window_for_severity, SyndicResponse, ALLOWED_ACTIONS, MAX_RESPONSE_BODY_LEN,
76    MIN_RESPONSE_BODY_LEN,
77};
78pub use crate::domain::copropriete::technical_inspection;
79pub use crate::domain::copropriete::technical_inspection::{
80    InspectionStatus, InspectionType, TechnicalInspection, TechnicalInspectionError,
81};
82pub use crate::domain::copropriete::unit;
83pub use crate::domain::copropriete::unit::{Unit, UnitType};
84pub use crate::domain::copropriete::unit_owner;
85pub use crate::domain::copropriete::unit_owner::{
86    assert_single_voting_representative, assert_voting_right_active, voting_right_status,
87    LotHolder, OwnershipType, UnitOwner, VotingRightError, VotingRightStatus,
88    VotingRightSuspendedError,
89};
90pub use crate::domain::copropriete::vote;
91pub use crate::domain::copropriete::vote::{
92    assert_vote_auth_sufficient, Vote, VoteAuthError, VoteAuthMethod, VoteChoice,
93};
94
95// --- comptabilite ---
96pub use crate::domain::comptabilite::account;
97pub use crate::domain::comptabilite::account::{Account, AccountType};
98pub use crate::domain::comptabilite::budget;
99pub use crate::domain::comptabilite::budget::{Budget, BudgetStatus};
100pub use crate::domain::comptabilite::call_for_funds;
101pub use crate::domain::comptabilite::call_for_funds::{
102    CallForFunds, CallForFundsError, CallForFundsStatus,
103};
104pub use crate::domain::comptabilite::charge_distribution;
105pub use crate::domain::comptabilite::charge_distribution::{
106    ChargeDistribution, ChargeDistributionError, DistributionCriteria,
107};
108pub use crate::domain::comptabilite::etat_date;
109pub use crate::domain::comptabilite::etat_date::{
110    EtatDate, EtatDateError, EtatDateLanguage, EtatDateStatus,
111};
112pub use crate::domain::comptabilite::expense;
113pub use crate::domain::comptabilite::expense::{
114    ApprovalStatus, Expense, ExpenseCategory, PaymentStatus,
115};
116pub use crate::domain::comptabilite::fund;
117pub use crate::domain::comptabilite::fund::{Fund, FundError, FundKind, FundReassignment};
118pub use crate::domain::comptabilite::invoice_line_item;
119pub use crate::domain::comptabilite::invoice_line_item::InvoiceLineItem;
120pub use crate::domain::comptabilite::journal_entry;
121pub use crate::domain::comptabilite::journal_entry::{
122    JournalEntry, JournalEntryError, JournalEntryLine,
123};
124pub use crate::domain::comptabilite::owner_contribution;
125pub use crate::domain::comptabilite::owner_contribution::{
126    ContributionPaymentMethod, ContributionPaymentStatus, ContributionType, OwnerContribution,
127    OwnerContributionError,
128};
129pub use crate::domain::comptabilite::owner_credit_balance;
130pub use crate::domain::comptabilite::owner_credit_balance::{
131    CreditStatus, OwnerCreditBalance, ParticipationLevel,
132};
133pub use crate::domain::comptabilite::payment;
134pub use crate::domain::comptabilite::payment::{Payment, PaymentMethodType, TransactionStatus};
135pub use crate::domain::comptabilite::payment_method;
136pub use crate::domain::comptabilite::payment_method::PaymentMethod;
137pub use crate::domain::comptabilite::payment_reminder;
138pub use crate::domain::comptabilite::payment_reminder::{
139    DeliveryMethod, PaymentReminder, ReminderLevel, ReminderStatus,
140};
141pub use crate::domain::comptabilite::quote;
142pub use crate::domain::comptabilite::quote::{Quote, QuoteScore, QuoteStatus, QuoteSubmission};
143pub use crate::domain::copropriete::owner;
144pub use crate::domain::copropriete::owner::Owner;
145
146// --- economie_circulaire ---
147pub use crate::domain::copropriete::contract_evaluation;
148pub use crate::domain::copropriete::contract_evaluation::ContractEvaluation;
149pub use crate::domain::economie_circulaire::achievement;
150pub use crate::domain::economie_circulaire::achievement::{
151    Achievement, AchievementCategory, AchievementTier, UserAchievement,
152};
153pub use crate::domain::economie_circulaire::challenge;
154pub use crate::domain::economie_circulaire::challenge::{
155    Challenge, ChallengeProgress, ChallengeStatus, ChallengeType,
156};
157pub use crate::domain::economie_circulaire::contractor_evaluation;
158pub use crate::domain::economie_circulaire::contractor_evaluation::{
159    ContractorEvaluation, EvaluationScores, MAX_COMMENT_LEN as CONTRACTOR_EVAL_MAX_COMMENT_LEN,
160    MAX_LINKED_TICKETS as CONTRACTOR_EVAL_MAX_LINKED_TICKETS,
161    MAX_SCORE as CONTRACTOR_EVAL_MAX_SCORE, MIN_COMMENT_LEN as CONTRACTOR_EVAL_MIN_COMMENT_LEN,
162    MIN_SCORE as CONTRACTOR_EVAL_MIN_SCORE,
163};
164pub use crate::domain::economie_circulaire::contractor_report;
165pub use crate::domain::economie_circulaire::contractor_report::{
166    ContractorReport, ContractorReportStatus, ReplacedPart,
167};
168pub use crate::domain::economie_circulaire::energy_bill_upload;
169pub use crate::domain::economie_circulaire::energy_bill_upload::EnergyBillUpload;
170pub use crate::domain::economie_circulaire::energy_campaign;
171pub use crate::domain::economie_circulaire::energy_campaign::{
172    CampaignStatus, CampaignType, ContractType, EnergyCampaign, EnergyType, ProviderOffer,
173};
174pub use crate::domain::economie_circulaire::individual_member;
175pub use crate::domain::economie_circulaire::individual_member::IndividualMember;
176pub use crate::domain::economie_circulaire::iot_reading;
177pub use crate::domain::economie_circulaire::iot_reading::{DeviceType, IoTReading, MetricType};
178pub use crate::domain::economie_circulaire::linky_device;
179pub use crate::domain::economie_circulaire::linky_device::{LinkyDevice, LinkyProvider};
180pub use crate::domain::economie_circulaire::local_exchange;
181pub use crate::domain::economie_circulaire::local_exchange::{
182    ExchangeStatus, ExchangeType, LocalExchange,
183};
184pub use crate::domain::economie_circulaire::notice;
185pub use crate::domain::economie_circulaire::notice::{
186    Notice, NoticeCategory, NoticeStatus, NoticeType,
187};
188pub use crate::domain::economie_circulaire::resource_booking;
189pub use crate::domain::economie_circulaire::resource_booking::{
190    BookingStatus, RecurringPattern, ReservationOnBehalfError, ResourceBooking, ResourceType,
191};
192pub use crate::domain::economie_circulaire::service_provider;
193pub use crate::domain::economie_circulaire::service_provider::{ServiceProvider, TradeCategory};
194pub use crate::domain::economie_circulaire::shared_object;
195pub use crate::domain::economie_circulaire::shared_object::{
196    ObjectCondition, SharedObject, SharedObjectCategory,
197};
198pub use crate::domain::economie_circulaire::skill;
199pub use crate::domain::economie_circulaire::skill::{ExpertiseLevel, Skill, SkillCategory};
200pub use crate::domain::economie_circulaire::technical_spec;
201pub use crate::domain::economie_circulaire::technical_spec::{
202    SemVer, SignatoryRole, TechnicalSpec, TechnicalSpecSignature, TechnicalSpecStatus,
203    MAX_ATTACHMENTS as TECH_SPEC_MAX_ATTACHMENTS, MAX_DELIVERABLES as TECH_SPEC_MAX_DELIVERABLES,
204    MAX_DESCRIPTION_LEN as TECH_SPEC_MAX_DESCRIPTION_LEN,
205    MAX_REQUIRED_SIGNATURES as TECH_SPEC_MAX_REQUIRED_SIGNATURES,
206    MAX_TITLE_LEN as TECH_SPEC_MAX_TITLE_LEN, MIN_DESCRIPTION_LEN as TECH_SPEC_MIN_DESCRIPTION_LEN,
207    MIN_TITLE_LEN as TECH_SPEC_MIN_TITLE_LEN,
208};
209pub use crate::domain::economie_circulaire::ticket;
210pub use crate::domain::economie_circulaire::ticket::{
211    Ticket, TicketCategory, TicketKind, TicketPriority, TicketSeverity, TicketStatus,
212    MAX_EVIDENCE_ATTACHMENTS, MAX_WITNESSES, TICKET_EDIT_WINDOW_MINUTES,
213};
214pub use crate::domain::economie_circulaire::work_report;
215pub use crate::domain::economie_circulaire::work_report::{
216    WarrantyType, WorkReport, WorkReportError, WorkType,
217};
218
219// --- plateforme ---
220pub use crate::domain::plateforme::consent;
221pub use crate::domain::plateforme::consent::{ConsentRecord, ConsentStatus};
222pub use crate::domain::plateforme::gdpr_art30;
223pub use crate::domain::plateforme::gdpr_art30::{ProcessingActivity, ProcessorAgreement};
224pub use crate::domain::plateforme::gdpr_export;
225pub use crate::domain::plateforme::gdpr_export::{
226    DocumentData, ExpenseData, GdprExport, MeetingData, OwnerData, RelatedData, UnitOwnershipData,
227    UserData,
228};
229pub use crate::domain::plateforme::gdpr_objection;
230pub use crate::domain::plateforme::gdpr_objection::{
231    GdprObjectionRequest, ObjectionStatus, ObjectionType, ProcessingPurpose,
232};
233pub use crate::domain::plateforme::gdpr_rectification;
234pub use crate::domain::plateforme::gdpr_rectification::{
235    FieldChange, GdprRectificationRequest, RectificationStatus,
236};
237pub use crate::domain::plateforme::gdpr_restriction;
238pub use crate::domain::plateforme::gdpr_restriction::{
239    GdprRestrictionRequest, RestrictionReason, RestrictionStatus,
240};
241pub use crate::domain::plateforme::magic_link;
242pub use crate::domain::plateforme::magic_link::{MagicLink, MagicLinkScopeKind};
243pub use crate::domain::plateforme::notification;
244pub use crate::domain::plateforme::notification::{
245    Notification, NotificationChannel, NotificationPreference, NotificationPriority,
246    NotificationStatus, NotificationType,
247};
248pub use crate::domain::plateforme::organization;
249pub use crate::domain::plateforme::organization::{Organization, SubscriptionPlan};
250pub use crate::domain::plateforme::portfolio;
251pub use crate::domain::plateforme::portfolio::{
252    Portfolio, PortfolioBuilding, PortfolioError, PortfolioShare,
253};
254pub use crate::domain::plateforme::refresh_token;
255pub use crate::domain::plateforme::refresh_token::RefreshToken;
256pub use crate::domain::plateforme::security_incident;
257pub use crate::domain::plateforme::security_incident::{
258    IncidentSeverity, IncidentStatus, SecurityIncident,
259};
260pub use crate::domain::plateforme::two_factor_secret;
261pub use crate::domain::plateforme::two_factor_secret::TwoFactorSecret;
262pub use crate::domain::plateforme::user;
263pub use crate::domain::plateforme::user::{User, UserRole};
264pub use crate::domain::plateforme::user_role_assignment;
265pub use crate::domain::plateforme::user_role_assignment::UserRoleAssignment;