This commit is contained in:
2025-08-21 17:26:40 +02:00
parent 58ed59cd12
commit 095a4d0c69
96 changed files with 1070 additions and 10 deletions

View File

@@ -0,0 +1,24 @@
module gov
import freeflowuniverse.herolib.hero.models.core
// CommitteeMember represents a member of a committee
pub struct CommitteeMember {
core.Base
pub mut:
user_id u32
name string
role CommitteeRole
joined_date u64 // Unix timestamp
notes string
}
// Committee represents a committee in the governance system
pub struct Committee {
core.Base
pub mut:
company_id u32 @[index]
name string @[index]
description string
members []CommitteeMember
}

View File

@@ -0,0 +1,28 @@
module gov
import freeflowuniverse.herolib.hero.models.core
// BusinessType represents the type of a business
pub struct BusinessType {
pub mut:
type_name string
description string
}
// Company represents a company in the governance system
pub struct Company {
core.Base
pub mut:
name string @[index]
registration_number string @[index]
incorporation_date u64 // Unix timestamp
fiscal_year_end string
email string
phone string
website string
address string
business_type BusinessType
industry string
description string
status CompanyStatus
}

View File

@@ -0,0 +1,30 @@
module gov
import freeflowuniverse.herolib.hero.models.core
// Attendee represents an attendee of a meeting
pub struct Attendee {
pub mut:
user_id u32
name string
role string
status AttendanceStatus
notes string
}
// Meeting represents a meeting in the governance system
pub struct Meeting {
core.Base
pub mut:
company_id u32 @[index]
title string @[index]
description string
meeting_type MeetingType
status MeetingStatus
start_time u64 // Unix timestamp
end_time u64 // Unix timestamp
location string
agenda string
minutes string
attendees []Attendee
}

View File

@@ -0,0 +1,18 @@
module gov
import freeflowuniverse.herolib.hero.models.core
// Resolution represents a resolution in the governance system
pub struct Resolution {
core.Base
pub mut:
company_id u32 @[index]
title string @[index]
description string
resolution_type ResolutionType
status ResolutionStatus
proposed_date u64 // Unix timestamp
effective_date ?u64 // Unix timestamp
expiry_date ?u64 // Unix timestamp
approvals []string
}

View File

@@ -0,0 +1,15 @@
module gov
import freeflowuniverse.herolib.hero.models.core
// Shareholder represents a shareholder in the governance system
pub struct Shareholder {
core.Base
pub mut:
company_id u32 @[index]
name string @[index]
shareholder_type ShareholderType
contact_info string @[index]
shares u32
percentage f64
}

View File

@@ -0,0 +1,82 @@
module gov
pub enum CompanyStatus {
active
inactive
dissolved
suspended
pending
}
pub enum ShareholderType {
individual
corporate
trust
partnership
government
other
}
pub enum CommitteeRole {
chair
vice_chair
secretary
treasurer
member
observer
advisor
}
pub enum MeetingStatus {
scheduled
in_progress
completed
cancelled
}
pub enum MeetingType {
board_meeting
committee_meeting
general_assembly
annual_general_meeting
extraordinary_general_meeting
other
}
pub enum AttendanceStatus {
invited
confirmed
declined
attended
absent
}
pub enum ResolutionStatus {
draft
proposed
approved
rejected
expired
}
pub enum ResolutionType {
ordinary
special
unanimous
written
other
}
pub enum VoteStatus {
draft
open
closed
cancelled
}
pub enum VoteOption {
yes
no
abstain
custom
}

View File

@@ -0,0 +1,12 @@
module gov
import freeflowuniverse.herolib.hero.models.core
// User represents a user in the governance system
pub struct User {
core.Base
pub mut:
name string @[index]
email string @[index]
role string
}

View File

@@ -0,0 +1,27 @@
module gov
import freeflowuniverse.herolib.hero.models.core
// Ballot represents a ballot cast in a vote
pub struct Ballot {
pub mut:
user_id u32
option VoteOption
weight f64
cast_at u64 // Unix timestamp
notes string
}
// Vote represents a vote in the governance system
pub struct Vote {
core.Base
pub mut:
company_id u32 @[index]
resolution_id u32 @[index]
title string @[index]
description string
status VoteStatus
start_date u64 // Unix timestamp
end_date u64 // Unix timestamp
ballots []Ballot
}