Expand description
TechnicalSpec — cahier des charges versionnable + signatures multi-parties (Story 3.8 — FR33).
A TechnicalSpec materialises a syndic-produced specification for an
ACP (or a specific building inside the ACP). It is versionnable with a
strict SemVer-like triple (SemVer) and signed off by one or more
parties (SignatoryRole).
§Workflow
- The syndic creates a spec in
TechnicalSpecStatus::Draft. - Once ready, the syndic submits it: the status moves to
TechnicalSpecStatus::PendingSignatures(no further edits). - Each
required_signaturesslot is filled via aTechnicalSpecSignatureappend-only row. When all required slots are filled, the use case promotes the spec toTechnicalSpecStatus::Approved. - A subsequent version bumps the spec (
TechnicalSpec::bump) — if the bump is major (requires_resignatureis true), the new draft must collect fresh signatures from every required signatory.
§Invariants enforced at new() time
title.len() in [5, 200]description.len() in [50, 10_000]deliverablesnon empty, at most 50 entries, each non emptyrequired_signaturesnon empty, at most 10attachmentsat most 20
Structs§
- SemVer
- Strict semantic version triple (
major.minor.patch). - Technical
Spec - Technical
Spec Signature
Enums§
- Signatory
Role - Role authorised to sign a
TechnicalSpec. Mandataire roles (AMO, Lawyer, Architect) must additionally carry an activecrate::domain::entities::Mandatecovering the spec’s ACP — the use case enforces this guard. - Technical
Spec Status