Expand description
Handlers Actix pour /portfolios — Story 2.1.
Endpoints :
- POST
/portfolios: create - GET
/portfolios: list (owner + shared) - GET
/portfolios/{id}: get (scope-guarded) - PUT
/portfolios/{id}: update (owner OR shared can_edit) - DELETE
/portfolios/{id}: delete (owner) - POST
/portfolios/{id}/buildings: add building (owner OR can_edit) - GET
/portfolios/{id}/buildings: list buildings (owner OR shared) - DELETE
/portfolios/{id}/buildings/{building_id}: remove building - POST
/portfolios/{id}/shares: share (owner) - GET
/portfolios/{id}/shares: list shares (owner) - DELETE
/portfolios/{id}/shares/{user_id}: unshare (owner)
Audit : infrastructure::audit::AuditLogEntry consigne chaque mutation
réussie ET chaque échec (traçabilité INV-24, pattern ACP Story 1.1).