pub struct AgSession {Show 20 fields
pub id: Uuid,
pub organization_id: Uuid,
pub meeting_id: Uuid,
pub platform: VideoPlatform,
pub video_url: String,
pub host_url: Option<String>,
pub status: AgSessionStatus,
pub scheduled_start: DateTime<Utc>,
pub actual_start: Option<DateTime<Utc>>,
pub actual_end: Option<DateTime<Utc>>,
pub remote_attendees_count: i32,
pub remote_voting_power: Decimal,
pub quorum_remote_contribution: Decimal,
pub access_password: Option<String>,
pub waiting_room_enabled: bool,
pub recording_enabled: bool,
pub recording_url: Option<String>,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
pub created_by: Uuid,
}Expand description
Session de visioconférence pour une Assemblée Générale (Art. 3.87 §1 CC)
L’Art. 3.87 §1 CC permet aux copropriétaires de participer à l’AG “physiquement ou à distance au moyen d’une communication électronique”. Cette entité gère la session vidéo associée à une réunion.
Fields§
§id: Uuid§organization_id: Uuid§meeting_id: Uuid§platform: VideoPlatform§video_url: String§host_url: Option<String>§status: AgSessionStatus§scheduled_start: DateTime<Utc>§actual_start: Option<DateTime<Utc>>§actual_end: Option<DateTime<Utc>>§remote_attendees_count: i32§remote_voting_power: DecimalMillièmes représentés par les distanciels — Decimal exact (ADR-0008 :
une quote-part n’est jamais un f64, elle alimente un seuil légal).
quorum_remote_contribution: Decimal% de contribution distancielle au quorum total. Decimal et non f64 :
la valeur est persistée en NUMERIC(8,4), un f64 intermédiaire
introduirait l’aller-retour Decimal→f64→Decimal interdit par ADR-0008.
access_password: Option<String>§waiting_room_enabled: bool§recording_enabled: bool§recording_url: Option<String>§created_at: DateTime<Utc>§updated_at: DateTime<Utc>§created_by: UuidImplementations§
Source§impl AgSession
impl AgSession
Sourcepub fn new(
organization_id: Uuid,
meeting_id: Uuid,
platform: VideoPlatform,
video_url: String,
host_url: Option<String>,
scheduled_start: DateTime<Utc>,
access_password: Option<String>,
waiting_room_enabled: bool,
recording_enabled: bool,
created_by: Uuid,
) -> Result<Self, String>
pub fn new( organization_id: Uuid, meeting_id: Uuid, platform: VideoPlatform, video_url: String, host_url: Option<String>, scheduled_start: DateTime<Utc>, access_password: Option<String>, waiting_room_enabled: bool, recording_enabled: bool, created_by: Uuid, ) -> Result<Self, String>
Crée une nouvelle session de visioconférence
Sourcepub fn end(&mut self, recording_url: Option<String>) -> Result<(), String>
pub fn end(&mut self, recording_url: Option<String>) -> Result<(), String>
Termine la session (Live → Ended)
Sourcepub fn record_remote_join(
&mut self,
voting_power: Decimal,
total_building_quotas: Decimal,
) -> Result<(), String>
pub fn record_remote_join( &mut self, voting_power: Decimal, total_building_quotas: Decimal, ) -> Result<(), String>
Enregistre un participant distant et met à jour le quorum distanciel
Art. 3.87 §5 CC : les participants en visio comptent pour le quorum au même titre que les présents physiquement.
Sourcepub fn calculate_combined_quorum(
&self,
physical_quotas: Decimal,
total_building_quotas: Decimal,
) -> Result<Decimal, String>
pub fn calculate_combined_quorum( &self, physical_quotas: Decimal, total_building_quotas: Decimal, ) -> Result<Decimal, String>
Calcule le quorum combiné (présentiel + distanciel) en pourcentage.
Art. 3.87 §5 CC : les participants en visio comptent au même titre que
les présents physiquement. Calcul en Decimal exact de bout en bout —
aucun aller-retour vers f64 sur le chemin du seuil légal (ADR-0008).
Sourcepub fn is_combined_quorum_reached(
&self,
physical_quotas: Decimal,
total_building_quotas: Decimal,
physical_owners_count: i32,
total_owners_count: i32,
) -> Result<bool, String>
pub fn is_combined_quorum_reached( &self, physical_quotas: Decimal, total_building_quotas: Decimal, physical_owners_count: i32, total_owners_count: i32, ) -> Result<bool, String>
Le quorum double combiné est-il atteint ? Art. 3.87 §5 CC.
Applique la règle de Meeting::double_quorum_reached — la même que le
chemin présentiel (Story H9) — aux totaux combinés présentiel +
distanciel :
- têtes : présents physiquement +
remote_attendees_count; - quotités :
physical_quotas+remote_voting_power.
Avant #661, ce chemin ne testait que les quotités, avec son propre
littéral > 50.0 en f64 : une AG hybride pouvait être déclarée en
quorum sans que le volet « têtes » exigé par la loi soit vérifié.
C’est cette méthode que doit appeler la couche application : aucun seuil légal ne doit être ré-écrit dans un use case.
Sourcepub fn duration_minutes(&self) -> Option<i64>
pub fn duration_minutes(&self) -> Option<i64>
Durée de la session en minutes (si terminée)
Trait Implementations§
Source§impl<'de> Deserialize<'de> for AgSession
impl<'de> Deserialize<'de> for AgSession
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl From<&AgSession> for AgSessionResponse
impl From<&AgSession> for AgSessionResponse
impl StructuralPartialEq for AgSession
Auto Trait Implementations§
impl Freeze for AgSession
impl RefUnwindSafe for AgSession
impl Send for AgSession
impl Sync for AgSession
impl Unpin for AgSession
impl UnsafeUnpin for AgSession
impl UnwindSafe for AgSession
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
§impl<T> Fake for T
impl<T> Fake for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more