pub async fn reject(
pool: &PgPool,
actor: &Actor,
id: Uuid,
) -> AppResult<Proposal>Expand description
Rejects a pending proposal (no check-out needed: nothing changes in the revision).
ยงInvariants
- Permission: CAD editor in the project group; a proposal that is not pending gets a 409.
- Locks: the proposal row, then the simulation revision (both
FOR UPDATE). - Audit:
simulation.proposal.reject. - Notifications / webhooks: none.
- Atomic: one transaction (
tests/result_proposals.rs).