first commit
This commit is contained in:
127
base44/entities/AIInterview.jsonc
Normal file
127
base44/entities/AIInterview.jsonc
Normal file
@@ -0,0 +1,127 @@
|
||||
{
|
||||
"name": "AIInterview",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"applicant_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"job_posting_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"applicant_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"job_title": {
|
||||
"type": "string"
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"scheduled",
|
||||
"in_progress",
|
||||
"completed",
|
||||
"cancelled"
|
||||
],
|
||||
"default": "scheduled"
|
||||
},
|
||||
"messages": {
|
||||
"type": "array",
|
||||
"description": "Full conversation transcript",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"role": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"ai",
|
||||
"candidate"
|
||||
]
|
||||
},
|
||||
"content": {
|
||||
"type": "string"
|
||||
},
|
||||
"timestamp": {
|
||||
"type": "string"
|
||||
},
|
||||
"response_time_seconds": {
|
||||
"type": "number"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"questions_asked": {
|
||||
"type": "number",
|
||||
"default": 0
|
||||
},
|
||||
"overall_interview_score": {
|
||||
"type": "number"
|
||||
},
|
||||
"verdict": {
|
||||
"type": "string"
|
||||
},
|
||||
"hire_recommendation": {
|
||||
"type": "string"
|
||||
},
|
||||
"ai_flags": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": "Flags like AI-generated responses, suspiciously fast answers"
|
||||
},
|
||||
"integrity_score": {
|
||||
"type": "number",
|
||||
"description": "0-100, higher = more likely authentic human responses"
|
||||
},
|
||||
"category_scores": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"communication": {
|
||||
"type": "number"
|
||||
},
|
||||
"technical_fit": {
|
||||
"type": "number"
|
||||
},
|
||||
"reliability": {
|
||||
"type": "number"
|
||||
},
|
||||
"culture_fit": {
|
||||
"type": "number"
|
||||
},
|
||||
"problem_solving": {
|
||||
"type": "number"
|
||||
}
|
||||
}
|
||||
},
|
||||
"strengths": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"concerns": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"best_fit_roles": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"summary": {
|
||||
"type": "string"
|
||||
},
|
||||
"completed_at": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"applicant_id",
|
||||
"job_posting_id",
|
||||
"applicant_name",
|
||||
"job_title"
|
||||
]
|
||||
}
|
||||
94
base44/entities/ActivityLog.jsonc
Normal file
94
base44/entities/ActivityLog.jsonc
Normal file
@@ -0,0 +1,94 @@
|
||||
{
|
||||
"name": "ActivityLog",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"title": {
|
||||
"type": "string",
|
||||
"description": "Notification title (e.g., 'Event Rescheduled', 'Invoice Paid')"
|
||||
},
|
||||
"description": {
|
||||
"type": "string",
|
||||
"description": "Detailed description of the activity"
|
||||
},
|
||||
"activity_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"event_created",
|
||||
"event_updated",
|
||||
"event_rescheduled",
|
||||
"event_canceled",
|
||||
"staff_assigned",
|
||||
"staff_removed",
|
||||
"invoice_paid",
|
||||
"invoice_created",
|
||||
"message_received",
|
||||
"order_created",
|
||||
"order_updated"
|
||||
],
|
||||
"description": "Type of activity"
|
||||
},
|
||||
"related_entity_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"event",
|
||||
"staff",
|
||||
"invoice",
|
||||
"message",
|
||||
"order",
|
||||
"user"
|
||||
],
|
||||
"description": "Type of related entity"
|
||||
},
|
||||
"related_entity_id": {
|
||||
"type": "string",
|
||||
"description": "ID of the related entity"
|
||||
},
|
||||
"action_link": {
|
||||
"type": "string",
|
||||
"description": "Link to view the related item (e.g., 'EventDetail?id=123')"
|
||||
},
|
||||
"action_label": {
|
||||
"type": "string",
|
||||
"description": "Label for the action button (e.g., 'View Event', 'View Invoice')"
|
||||
},
|
||||
"user_id": {
|
||||
"type": "string",
|
||||
"description": "ID of the user this notification is for"
|
||||
},
|
||||
"is_read": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Whether the notification has been read"
|
||||
},
|
||||
"icon_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"calendar",
|
||||
"user",
|
||||
"invoice",
|
||||
"message",
|
||||
"alert",
|
||||
"check"
|
||||
],
|
||||
"description": "Icon to display for this notification"
|
||||
},
|
||||
"icon_color": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"blue",
|
||||
"red",
|
||||
"green",
|
||||
"yellow",
|
||||
"purple"
|
||||
],
|
||||
"default": "blue",
|
||||
"description": "Color theme for the icon"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"title",
|
||||
"description",
|
||||
"activity_type",
|
||||
"user_id"
|
||||
]
|
||||
}
|
||||
79
base44/entities/AgentActivity.jsonc
Normal file
79
base44/entities/AgentActivity.jsonc
Normal file
@@ -0,0 +1,79 @@
|
||||
{
|
||||
"name": "AgentActivity",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"agent_name": {
|
||||
"type": "string",
|
||||
"description": "Name of the AI agent that performed this activity"
|
||||
},
|
||||
"department": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"operations",
|
||||
"procurement",
|
||||
"finance",
|
||||
"vendor",
|
||||
"compliance",
|
||||
"executive"
|
||||
]
|
||||
},
|
||||
"activity_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"event_processed",
|
||||
"prediction_made",
|
||||
"action_executed",
|
||||
"decision_queued",
|
||||
"anomaly_detected",
|
||||
"recommendation_sent",
|
||||
"learning_completed",
|
||||
"graph_queried"
|
||||
]
|
||||
},
|
||||
"trigger_event_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"memory_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"summary": {
|
||||
"type": "string",
|
||||
"description": "Human-readable description of what the agent did"
|
||||
},
|
||||
"details": {
|
||||
"type": "object",
|
||||
"additionalProperties": true
|
||||
},
|
||||
"impact_level": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"info",
|
||||
"low",
|
||||
"medium",
|
||||
"high",
|
||||
"critical"
|
||||
],
|
||||
"default": "info"
|
||||
},
|
||||
"entities_affected": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"entity_type": {
|
||||
"type": "string"
|
||||
},
|
||||
"entity_id": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"agent_name",
|
||||
"department",
|
||||
"activity_type",
|
||||
"summary"
|
||||
]
|
||||
}
|
||||
138
base44/entities/Announcement.jsonc
Normal file
138
base44/entities/Announcement.jsonc
Normal file
@@ -0,0 +1,138 @@
|
||||
{
|
||||
"name": "Announcement",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"team_id": {
|
||||
"type": "string",
|
||||
"description": "ID of the team that created this announcement"
|
||||
},
|
||||
"vendor_id": {
|
||||
"type": "string",
|
||||
"description": "Vendor/owner ID"
|
||||
},
|
||||
"title": {
|
||||
"type": "string",
|
||||
"description": "Announcement headline"
|
||||
},
|
||||
"body": {
|
||||
"type": "string",
|
||||
"description": "Full announcement content/message"
|
||||
},
|
||||
"flyer_url": {
|
||||
"type": "string",
|
||||
"description": "URL to uploaded flyer image"
|
||||
},
|
||||
"audience": {
|
||||
"type": "array",
|
||||
"description": "Who can see this announcement",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"all",
|
||||
"vendor",
|
||||
"client",
|
||||
"workforce",
|
||||
"procurement",
|
||||
"operator",
|
||||
"sector",
|
||||
"admin"
|
||||
]
|
||||
}
|
||||
},
|
||||
"specific_recipients": {
|
||||
"type": "array",
|
||||
"description": "Specific individual staff members to send this announcement to",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"staff_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"email": {
|
||||
"type": "string"
|
||||
},
|
||||
"phone": {
|
||||
"type": "string"
|
||||
},
|
||||
"position": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"draft",
|
||||
"scheduled",
|
||||
"active",
|
||||
"paused",
|
||||
"expired"
|
||||
],
|
||||
"default": "draft",
|
||||
"description": "Current status of the announcement"
|
||||
},
|
||||
"priority": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"low",
|
||||
"normal",
|
||||
"high",
|
||||
"urgent"
|
||||
],
|
||||
"default": "normal",
|
||||
"description": "Announcement priority/urgency level"
|
||||
},
|
||||
"publish_date": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "Scheduled publish date and time"
|
||||
},
|
||||
"expire_date": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "When the announcement stops being visible"
|
||||
},
|
||||
"send_email": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Whether to also send this as an email to audience"
|
||||
},
|
||||
"send_push": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Whether to send push notification"
|
||||
},
|
||||
"pin_to_top": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Pin this announcement to top of feed"
|
||||
},
|
||||
"view_count": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Number of views"
|
||||
},
|
||||
"tags": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": "Tags for categorization"
|
||||
},
|
||||
"created_by_name": {
|
||||
"type": "string",
|
||||
"description": "Name of user who created the announcement"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"team_id",
|
||||
"title",
|
||||
"body",
|
||||
"audience",
|
||||
"status"
|
||||
]
|
||||
}
|
||||
174
base44/entities/Assignment.jsonc
Normal file
174
base44/entities/Assignment.jsonc
Normal file
@@ -0,0 +1,174 @@
|
||||
{
|
||||
"name": "Assignment",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"assignment_number": {
|
||||
"type": "string",
|
||||
"description": "Assignment Number format ASN-#### (auto-generated)",
|
||||
"pattern": "^ASN-[0-9]{4,6}$"
|
||||
},
|
||||
"order_id": {
|
||||
"type": "string",
|
||||
"description": "Associated order ID"
|
||||
},
|
||||
"order_number": {
|
||||
"type": "string",
|
||||
"description": "Associated order number"
|
||||
},
|
||||
"workforce_id": {
|
||||
"type": "string",
|
||||
"description": "Assigned worker ID"
|
||||
},
|
||||
"workforce_name": {
|
||||
"type": "string",
|
||||
"description": "Assigned worker name"
|
||||
},
|
||||
"vendor_id": {
|
||||
"type": "string",
|
||||
"description": "Vendor providing the worker"
|
||||
},
|
||||
"vendor_name": {
|
||||
"type": "string",
|
||||
"description": "Vendor name"
|
||||
},
|
||||
"partner_id": {
|
||||
"type": "string",
|
||||
"description": "Client/partner ID"
|
||||
},
|
||||
"role": {
|
||||
"type": "string",
|
||||
"description": "Role assigned"
|
||||
},
|
||||
"department": {
|
||||
"type": "string",
|
||||
"description": "Department"
|
||||
},
|
||||
"assignment_status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Pending",
|
||||
"Confirmed",
|
||||
"Checked In",
|
||||
"In Progress",
|
||||
"Completed",
|
||||
"Cancelled",
|
||||
"No Show"
|
||||
],
|
||||
"default": "Pending",
|
||||
"description": "Assignment status"
|
||||
},
|
||||
"scheduled_start": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "Scheduled start time"
|
||||
},
|
||||
"scheduled_end": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "Scheduled end time"
|
||||
},
|
||||
"actual_start": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "Actual start time"
|
||||
},
|
||||
"actual_end": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "Actual end time"
|
||||
},
|
||||
"timesheet": {
|
||||
"type": "object",
|
||||
"description": "Timesheet data",
|
||||
"properties": {
|
||||
"clock_in": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
"clock_out": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
"break_minutes": {
|
||||
"type": "number"
|
||||
},
|
||||
"total_hours": {
|
||||
"type": "number"
|
||||
},
|
||||
"regular_hours": {
|
||||
"type": "number"
|
||||
},
|
||||
"overtime_hours": {
|
||||
"type": "number"
|
||||
},
|
||||
"approved_by": {
|
||||
"type": "string"
|
||||
},
|
||||
"approved_date": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
}
|
||||
}
|
||||
},
|
||||
"ratings": {
|
||||
"type": "object",
|
||||
"description": "Performance ratings",
|
||||
"properties": {
|
||||
"punctuality": {
|
||||
"type": "number",
|
||||
"minimum": 1,
|
||||
"maximum": 5
|
||||
},
|
||||
"quality_of_work": {
|
||||
"type": "number",
|
||||
"minimum": 1,
|
||||
"maximum": 5
|
||||
},
|
||||
"professionalism": {
|
||||
"type": "number",
|
||||
"minimum": 1,
|
||||
"maximum": 5
|
||||
},
|
||||
"would_hire_again": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"comments": {
|
||||
"type": "string"
|
||||
},
|
||||
"rated_by": {
|
||||
"type": "string"
|
||||
},
|
||||
"rated_date": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
}
|
||||
}
|
||||
},
|
||||
"pay_rate": {
|
||||
"type": "number",
|
||||
"description": "Worker pay rate"
|
||||
},
|
||||
"bill_rate": {
|
||||
"type": "number",
|
||||
"description": "Client bill rate"
|
||||
},
|
||||
"total_pay": {
|
||||
"type": "number",
|
||||
"description": "Total worker pay"
|
||||
},
|
||||
"total_bill": {
|
||||
"type": "number",
|
||||
"description": "Total client bill"
|
||||
},
|
||||
"notes": {
|
||||
"type": "string",
|
||||
"description": "Assignment notes"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"order_id",
|
||||
"workforce_id",
|
||||
"vendor_id",
|
||||
"role"
|
||||
]
|
||||
}
|
||||
55
base44/entities/Budget.jsonc
Normal file
55
base44/entities/Budget.jsonc
Normal file
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"name": "Budget",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"hub_name": {
|
||||
"type": "string",
|
||||
"description": "Name of the budget hub"
|
||||
},
|
||||
"cost_center": {
|
||||
"type": "string",
|
||||
"description": "Cost center code this budget maps to"
|
||||
},
|
||||
"amount": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"description": "Budget amount for the period"
|
||||
},
|
||||
"frequency": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Daily",
|
||||
"Weekly",
|
||||
"Monthly"
|
||||
],
|
||||
"default": "Monthly",
|
||||
"description": "Budget periodicity"
|
||||
},
|
||||
"alert_enabled": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "Whether usage alerts are on"
|
||||
},
|
||||
"alert_threshold": {
|
||||
"type": "number",
|
||||
"minimum": 1,
|
||||
"maximum": 100,
|
||||
"default": 80,
|
||||
"description": "Utilization percentage that triggers an alert"
|
||||
},
|
||||
"business_id": {
|
||||
"type": "string",
|
||||
"description": "Client business ID this budget belongs to"
|
||||
},
|
||||
"business_name": {
|
||||
"type": "string",
|
||||
"description": "Client business name"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"hub_name",
|
||||
"cost_center",
|
||||
"amount",
|
||||
"frequency"
|
||||
]
|
||||
}
|
||||
306
base44/entities/Business.jsonc
Normal file
306
base44/entities/Business.jsonc
Normal file
@@ -0,0 +1,306 @@
|
||||
{
|
||||
"name": "Business",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"business_name": {
|
||||
"type": "string",
|
||||
"description": "Name of the business/client company"
|
||||
},
|
||||
"company_logo": {
|
||||
"type": "string",
|
||||
"description": "URL to company logo image"
|
||||
},
|
||||
"contact_name": {
|
||||
"type": "string",
|
||||
"description": "Primary contact person"
|
||||
},
|
||||
"email": {
|
||||
"type": "string",
|
||||
"format": "email",
|
||||
"description": "Business email"
|
||||
},
|
||||
"phone": {
|
||||
"type": "string",
|
||||
"description": "Business phone number"
|
||||
},
|
||||
"hub_building": {
|
||||
"type": "string",
|
||||
"description": "Hub or building name/location"
|
||||
},
|
||||
"address": {
|
||||
"type": "string",
|
||||
"description": "Street address"
|
||||
},
|
||||
"city": {
|
||||
"type": "string",
|
||||
"description": "City"
|
||||
},
|
||||
"area": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Bay Area",
|
||||
"Southern California",
|
||||
"Northern California",
|
||||
"Central Valley",
|
||||
"Other"
|
||||
],
|
||||
"description": "Geographic area"
|
||||
},
|
||||
"sector": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Bon App\u00e9tit",
|
||||
"Eurest",
|
||||
"Aramark",
|
||||
"Epicurean Group",
|
||||
"Chartwells",
|
||||
"Other"
|
||||
],
|
||||
"description": "Sector/industry"
|
||||
},
|
||||
"rate_group": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Standard",
|
||||
"Premium",
|
||||
"Enterprise",
|
||||
"Custom"
|
||||
],
|
||||
"description": "Pricing tier/rate group"
|
||||
},
|
||||
"rate_card": {
|
||||
"type": "string",
|
||||
"description": "Assigned rate card name (e.g., Google, Bay Area Compass, Aramark)"
|
||||
},
|
||||
"erp_system": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"None",
|
||||
"SAP Ariba",
|
||||
"Fieldglass",
|
||||
"CrunchTime",
|
||||
"Coupa",
|
||||
"Oracle NetSuite",
|
||||
"Workday",
|
||||
"Other"
|
||||
],
|
||||
"default": "None",
|
||||
"description": "Client's ERP/procurement system"
|
||||
},
|
||||
"erp_vendor_id": {
|
||||
"type": "string",
|
||||
"description": "Vendor ID in client's ERP system"
|
||||
},
|
||||
"erp_cost_center": {
|
||||
"type": "string",
|
||||
"description": "Default cost center code for invoicing"
|
||||
},
|
||||
"edi_enabled": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Whether EDI integration is enabled"
|
||||
},
|
||||
"edi_format": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"EDI 810",
|
||||
"cXML",
|
||||
"CSV",
|
||||
"JSON",
|
||||
"Custom"
|
||||
],
|
||||
"description": "Preferred EDI/export format"
|
||||
},
|
||||
"invoice_email": {
|
||||
"type": "string",
|
||||
"format": "email",
|
||||
"description": "Email address for invoice delivery"
|
||||
},
|
||||
"po_required": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Whether PO number is required for invoicing"
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Active",
|
||||
"Inactive",
|
||||
"Pending"
|
||||
],
|
||||
"default": "Active",
|
||||
"description": "Business status"
|
||||
},
|
||||
"is_active": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "Whether the client is currently active (vendor can toggle)"
|
||||
},
|
||||
"last_order_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Date of the last order placed by this client"
|
||||
},
|
||||
"notes": {
|
||||
"type": "string",
|
||||
"description": "Additional notes"
|
||||
},
|
||||
"vendor_id": {
|
||||
"type": "string",
|
||||
"description": "Vendor managing this business"
|
||||
},
|
||||
"vendor_name": {
|
||||
"type": "string",
|
||||
"description": "Vendor name"
|
||||
},
|
||||
"hubs": {
|
||||
"type": "array",
|
||||
"description": "List of hubs/locations for this business",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"hub_name": {
|
||||
"type": "string",
|
||||
"description": "Name of the hub/location"
|
||||
},
|
||||
"address": {
|
||||
"type": "string",
|
||||
"description": "Hub address"
|
||||
},
|
||||
"city": {
|
||||
"type": "string",
|
||||
"description": "City"
|
||||
},
|
||||
"state": {
|
||||
"type": "string",
|
||||
"description": "State"
|
||||
},
|
||||
"zip_code": {
|
||||
"type": "string",
|
||||
"description": "ZIP code"
|
||||
},
|
||||
"manager_name": {
|
||||
"type": "string",
|
||||
"description": "Hub manager name"
|
||||
},
|
||||
"manager_email": {
|
||||
"type": "string",
|
||||
"format": "email",
|
||||
"description": "Hub manager email"
|
||||
},
|
||||
"is_active": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "Whether the hub is active"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"departments": {
|
||||
"type": "array",
|
||||
"description": "List of departments within this business",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"team_members": {
|
||||
"type": "array",
|
||||
"description": "Team members managing this business",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"member_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"member_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"email": {
|
||||
"type": "string"
|
||||
},
|
||||
"role": {
|
||||
"type": "string"
|
||||
},
|
||||
"is_active": {
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"favorite_staff": {
|
||||
"type": "array",
|
||||
"description": "Array of favorite staff IDs for this business",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"staff_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"staff_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"position": {
|
||||
"type": "string"
|
||||
},
|
||||
"added_date": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"blocked_staff": {
|
||||
"type": "array",
|
||||
"description": "Array of blocked staff IDs for this business",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"staff_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"staff_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"reason": {
|
||||
"type": "string"
|
||||
},
|
||||
"blocked_date": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"total_members": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Total team members"
|
||||
},
|
||||
"active_members": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Active team members"
|
||||
},
|
||||
"total_hubs": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Total hubs"
|
||||
},
|
||||
"favorite_staff_count": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Number of favorite staff"
|
||||
},
|
||||
"blocked_staff_count": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Number of blocked staff"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"business_name",
|
||||
"contact_name",
|
||||
"rate_group"
|
||||
]
|
||||
}
|
||||
88
base44/entities/Certification.jsonc
Normal file
88
base44/entities/Certification.jsonc
Normal file
@@ -0,0 +1,88 @@
|
||||
{
|
||||
"name": "Certification",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"employee_id": {
|
||||
"type": "string",
|
||||
"description": "Staff member ID"
|
||||
},
|
||||
"employee_name": {
|
||||
"type": "string",
|
||||
"description": "Staff member name"
|
||||
},
|
||||
"vendor_id": {
|
||||
"type": "string",
|
||||
"description": "Vendor ID who owns this employee"
|
||||
},
|
||||
"vendor_name": {
|
||||
"type": "string",
|
||||
"description": "Vendor name"
|
||||
},
|
||||
"certification_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Background Check",
|
||||
"RBS",
|
||||
"Food Handler"
|
||||
],
|
||||
"description": "Type of certification - all 3 are required for every employee"
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"current",
|
||||
"expiring_soon",
|
||||
"expired",
|
||||
"pending"
|
||||
],
|
||||
"default": "pending",
|
||||
"description": "Current status of certification"
|
||||
},
|
||||
"issue_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Date certification was issued"
|
||||
},
|
||||
"expiry_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Date certification expires"
|
||||
},
|
||||
"issuer": {
|
||||
"type": "string",
|
||||
"description": "Name of issuing authority"
|
||||
},
|
||||
"certificate_number": {
|
||||
"type": "string",
|
||||
"description": "Certificate number or ID"
|
||||
},
|
||||
"document_url": {
|
||||
"type": "string",
|
||||
"description": "URL to uploaded certificate document"
|
||||
},
|
||||
"days_until_expiry": {
|
||||
"type": "number",
|
||||
"description": "Auto-calculated days until expiry"
|
||||
},
|
||||
"alert_sent_30_days": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Has 30-day expiry alert been sent"
|
||||
},
|
||||
"last_alert_date": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "When last alert was sent"
|
||||
},
|
||||
"notes": {
|
||||
"type": "string",
|
||||
"description": "Additional notes about this certification"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"employee_id",
|
||||
"employee_name",
|
||||
"certification_type",
|
||||
"expiry_date"
|
||||
]
|
||||
}
|
||||
158
base44/entities/CompliancePackage.jsonc
Normal file
158
base44/entities/CompliancePackage.jsonc
Normal file
@@ -0,0 +1,158 @@
|
||||
{
|
||||
"name": "CompliancePackage",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"compliance_number": {
|
||||
"type": "string",
|
||||
"description": "Compliance Package Number format CP-#### (auto-generated)",
|
||||
"pattern": "^CP-[0-9]{4}$"
|
||||
},
|
||||
"entity_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Vendor",
|
||||
"Workforce",
|
||||
"Partner"
|
||||
],
|
||||
"description": "Type of entity this compliance package belongs to"
|
||||
},
|
||||
"entity_id": {
|
||||
"type": "string",
|
||||
"description": "ID of the vendor/worker/partner"
|
||||
},
|
||||
"entity_name": {
|
||||
"type": "string",
|
||||
"description": "Name of entity"
|
||||
},
|
||||
"package_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Vendor Onboarding",
|
||||
"Worker Onboarding",
|
||||
"Annual Review",
|
||||
"Audit"
|
||||
],
|
||||
"description": "Type of compliance package"
|
||||
},
|
||||
"required_documents": {
|
||||
"type": "array",
|
||||
"description": "Required document checklist",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"document_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"document_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"W9",
|
||||
"COI",
|
||||
"W2",
|
||||
"I9",
|
||||
"Background Check",
|
||||
"Drug Test",
|
||||
"Certification",
|
||||
"License",
|
||||
"Other"
|
||||
]
|
||||
},
|
||||
"is_required": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Not Started",
|
||||
"Pending",
|
||||
"Submitted",
|
||||
"Approved",
|
||||
"Rejected",
|
||||
"Expired"
|
||||
]
|
||||
},
|
||||
"document_url": {
|
||||
"type": "string"
|
||||
},
|
||||
"submitted_date": {
|
||||
"type": "string",
|
||||
"format": "date"
|
||||
},
|
||||
"approved_date": {
|
||||
"type": "string",
|
||||
"format": "date"
|
||||
},
|
||||
"expiry_date": {
|
||||
"type": "string",
|
||||
"format": "date"
|
||||
},
|
||||
"reviewer": {
|
||||
"type": "string"
|
||||
},
|
||||
"rejection_reason": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"overall_status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Not Started",
|
||||
"In Progress",
|
||||
"Pending Review",
|
||||
"Approved",
|
||||
"Rejected",
|
||||
"Expired"
|
||||
],
|
||||
"default": "Not Started",
|
||||
"description": "Overall package status"
|
||||
},
|
||||
"completion_percentage": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 100,
|
||||
"description": "Percentage of required documents completed"
|
||||
},
|
||||
"audit_trail": {
|
||||
"type": "array",
|
||||
"description": "Audit trail of changes",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"timestamp": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
"action": {
|
||||
"type": "string"
|
||||
},
|
||||
"performed_by": {
|
||||
"type": "string"
|
||||
},
|
||||
"details": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"next_review_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Next scheduled review date"
|
||||
},
|
||||
"compliance_officer": {
|
||||
"type": "string",
|
||||
"description": "Assigned compliance officer"
|
||||
},
|
||||
"notes": {
|
||||
"type": "string",
|
||||
"description": "Compliance notes"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"entity_type",
|
||||
"entity_id",
|
||||
"package_type"
|
||||
]
|
||||
}
|
||||
168
base44/entities/Contract.jsonc
Normal file
168
base44/entities/Contract.jsonc
Normal file
@@ -0,0 +1,168 @@
|
||||
{
|
||||
"name": "Contract",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"contract_number": {
|
||||
"type": "string",
|
||||
"description": "Contract Number format CT-#### (auto-generated)",
|
||||
"pattern": "^CT-[0-9]{4}$"
|
||||
},
|
||||
"contract_name": {
|
||||
"type": "string",
|
||||
"description": "Descriptive contract name"
|
||||
},
|
||||
"contract_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"MSA",
|
||||
"SOW",
|
||||
"Rate Agreement",
|
||||
"Service Agreement",
|
||||
"NDA",
|
||||
"Amendment"
|
||||
],
|
||||
"description": "Type of contract"
|
||||
},
|
||||
"vendor_id": {
|
||||
"type": "string",
|
||||
"description": "Vendor party to this contract"
|
||||
},
|
||||
"vendor_name": {
|
||||
"type": "string",
|
||||
"description": "Vendor name"
|
||||
},
|
||||
"client_id": {
|
||||
"type": "string",
|
||||
"description": "Client/Business ID party to this contract"
|
||||
},
|
||||
"client_name": {
|
||||
"type": "string",
|
||||
"description": "Client/Business name"
|
||||
},
|
||||
"sector_id": {
|
||||
"type": "string",
|
||||
"description": "Sector this contract falls under (if applicable)"
|
||||
},
|
||||
"sector_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"partner_id": {
|
||||
"type": "string",
|
||||
"description": "Partner ID (if partner-specific)"
|
||||
},
|
||||
"partner_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"procurement_manager": {
|
||||
"type": "string",
|
||||
"description": "Procurement manager who owns this contract"
|
||||
},
|
||||
"rate_card_id": {
|
||||
"type": "string",
|
||||
"description": "Reference to RateCard entity if rates are defined there"
|
||||
},
|
||||
"effective_start_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Contract effective start date"
|
||||
},
|
||||
"effective_end_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Contract end date"
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"draft",
|
||||
"pending_review",
|
||||
"active",
|
||||
"expiring",
|
||||
"expired",
|
||||
"terminated",
|
||||
"amended"
|
||||
],
|
||||
"default": "draft",
|
||||
"description": "Contract lifecycle status"
|
||||
},
|
||||
"billing_terms": {
|
||||
"type": "string",
|
||||
"description": "Net 15, Net 30, Net 45, Net 60, etc."
|
||||
},
|
||||
"payment_terms": {
|
||||
"type": "string",
|
||||
"description": "Payment terms and conditions"
|
||||
},
|
||||
"auto_renew": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Whether contract auto-renews"
|
||||
},
|
||||
"renewal_notice_days": {
|
||||
"type": "number",
|
||||
"description": "Days notice required before renewal/termination"
|
||||
},
|
||||
"document_url": {
|
||||
"type": "string",
|
||||
"description": "URL to the signed contract document"
|
||||
},
|
||||
"total_contract_value": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"description": "Total estimated contract value"
|
||||
},
|
||||
"signed_by_vendor": {
|
||||
"type": "string",
|
||||
"description": "Name of vendor signer"
|
||||
},
|
||||
"signed_by_client": {
|
||||
"type": "string",
|
||||
"description": "Name of client signer"
|
||||
},
|
||||
"signed_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Date contract was fully executed"
|
||||
},
|
||||
"amendments": {
|
||||
"type": "array",
|
||||
"description": "List of contract amendments",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"amendment_number": {
|
||||
"type": "number"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"effective_date": {
|
||||
"type": "string",
|
||||
"format": "date"
|
||||
},
|
||||
"document_url": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"compliance_requirements": {
|
||||
"type": "array",
|
||||
"description": "Compliance requirements tied to this contract",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"notes": {
|
||||
"type": "string",
|
||||
"description": "Additional notes"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"contract_name",
|
||||
"contract_type",
|
||||
"vendor_id",
|
||||
"client_id",
|
||||
"status"
|
||||
]
|
||||
}
|
||||
97
base44/entities/Conversation.jsonc
Normal file
97
base44/entities/Conversation.jsonc
Normal file
@@ -0,0 +1,97 @@
|
||||
{
|
||||
"name": "Conversation",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"participants": {
|
||||
"type": "array",
|
||||
"description": "Array of participant IDs/emails",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string"
|
||||
},
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"role": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"client",
|
||||
"vendor",
|
||||
"staff",
|
||||
"admin"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"conversation_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"client-vendor",
|
||||
"staff-client",
|
||||
"staff-admin",
|
||||
"vendor-admin",
|
||||
"client-admin",
|
||||
"group-staff",
|
||||
"group-event-staff"
|
||||
],
|
||||
"description": "Type of conversation"
|
||||
},
|
||||
"is_group": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Whether this is a group conversation"
|
||||
},
|
||||
"group_name": {
|
||||
"type": "string",
|
||||
"description": "Name of the group (e.g., 'All Active Staff', 'Event #123 Team')"
|
||||
},
|
||||
"related_to": {
|
||||
"type": "string",
|
||||
"description": "ID of related entity (event_id, order_id, etc.)"
|
||||
},
|
||||
"related_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"event",
|
||||
"staff",
|
||||
"business",
|
||||
"general"
|
||||
],
|
||||
"description": "Type of related entity"
|
||||
},
|
||||
"subject": {
|
||||
"type": "string",
|
||||
"description": "Conversation subject/title"
|
||||
},
|
||||
"last_message": {
|
||||
"type": "string",
|
||||
"description": "Preview of last message"
|
||||
},
|
||||
"last_message_at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "Timestamp of last message"
|
||||
},
|
||||
"unread_count": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Number of unread messages"
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"active",
|
||||
"archived",
|
||||
"closed"
|
||||
],
|
||||
"default": "active"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"participants",
|
||||
"conversation_type"
|
||||
]
|
||||
}
|
||||
107
base44/entities/DecisionQueue.jsonc
Normal file
107
base44/entities/DecisionQueue.jsonc
Normal file
@@ -0,0 +1,107 @@
|
||||
{
|
||||
"name": "DecisionQueue",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"memory_id": {
|
||||
"type": "string",
|
||||
"description": "Reference to the OperationalMemory this decision is based on"
|
||||
},
|
||||
"trigger_event_id": {
|
||||
"type": "string",
|
||||
"description": "Event that triggered this decision"
|
||||
},
|
||||
"title": {
|
||||
"type": "string",
|
||||
"description": "Short title for the decision"
|
||||
},
|
||||
"summary": {
|
||||
"type": "string",
|
||||
"description": "Human-readable summary of what the AI recommends and why"
|
||||
},
|
||||
"department": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"operations",
|
||||
"procurement",
|
||||
"finance",
|
||||
"vendor",
|
||||
"compliance",
|
||||
"executive"
|
||||
]
|
||||
},
|
||||
"agent_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"proposed_actions": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"action_type": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"auto_execute": {
|
||||
"type": "boolean"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"confidence_score": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 100
|
||||
},
|
||||
"risk_level": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"low",
|
||||
"medium",
|
||||
"high"
|
||||
],
|
||||
"default": "medium"
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"pending_approval",
|
||||
"approved",
|
||||
"rejected",
|
||||
"executed",
|
||||
"expired"
|
||||
],
|
||||
"default": "pending_approval"
|
||||
},
|
||||
"reviewer_id": {
|
||||
"type": "string",
|
||||
"description": "User who reviewed the decision"
|
||||
},
|
||||
"reviewer_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"review_notes": {
|
||||
"type": "string"
|
||||
},
|
||||
"reviewed_at": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
"expires_at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "When this decision becomes stale"
|
||||
},
|
||||
"context_snapshot": {
|
||||
"type": "object",
|
||||
"additionalProperties": true,
|
||||
"description": "Graph context for the reviewer to understand the decision"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"title",
|
||||
"department",
|
||||
"status"
|
||||
]
|
||||
}
|
||||
84
base44/entities/EmployeeDocument.jsonc
Normal file
84
base44/entities/EmployeeDocument.jsonc
Normal file
@@ -0,0 +1,84 @@
|
||||
{
|
||||
"name": "EmployeeDocument",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"employee_id": {
|
||||
"type": "string",
|
||||
"description": "Staff member ID"
|
||||
},
|
||||
"employee_name": {
|
||||
"type": "string",
|
||||
"description": "Staff member name"
|
||||
},
|
||||
"vendor_id": {
|
||||
"type": "string",
|
||||
"description": "Vendor ID"
|
||||
},
|
||||
"vendor_name": {
|
||||
"type": "string",
|
||||
"description": "Vendor name"
|
||||
},
|
||||
"document_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"W-4 Form",
|
||||
"I-9 Form",
|
||||
"State Tax Form",
|
||||
"Direct Deposit",
|
||||
"Background Check",
|
||||
"Food Handler",
|
||||
"RBS License",
|
||||
"ID Copy",
|
||||
"SSN Card",
|
||||
"Work Permit"
|
||||
],
|
||||
"description": "Type of document"
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"uploaded",
|
||||
"pending",
|
||||
"expiring",
|
||||
"expired",
|
||||
"rejected",
|
||||
"missing",
|
||||
"approved"
|
||||
],
|
||||
"default": "missing",
|
||||
"description": "Document status"
|
||||
},
|
||||
"document_url": {
|
||||
"type": "string",
|
||||
"description": "URL to uploaded document"
|
||||
},
|
||||
"upload_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "When document was uploaded"
|
||||
},
|
||||
"expiry_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Document expiration date"
|
||||
},
|
||||
"approved_by": {
|
||||
"type": "string",
|
||||
"description": "Name of user who approved this document"
|
||||
},
|
||||
"approved_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "When the document was approved"
|
||||
},
|
||||
"notes": {
|
||||
"type": "string",
|
||||
"description": "Additional notes"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"employee_id",
|
||||
"employee_name",
|
||||
"document_type"
|
||||
]
|
||||
}
|
||||
89
base44/entities/Enterprise.jsonc
Normal file
89
base44/entities/Enterprise.jsonc
Normal file
@@ -0,0 +1,89 @@
|
||||
{
|
||||
"name": "Enterprise",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"enterprise_number": {
|
||||
"type": "string",
|
||||
"description": "Enterprise Number format EN-#### (auto-generated)",
|
||||
"pattern": "^EN-[0-9]{4}$"
|
||||
},
|
||||
"enterprise_name": {
|
||||
"type": "string",
|
||||
"description": "Enterprise name (e.g., Compass)"
|
||||
},
|
||||
"enterprise_code": {
|
||||
"type": "string",
|
||||
"description": "Short code identifier"
|
||||
},
|
||||
"brand_family": {
|
||||
"type": "array",
|
||||
"description": "List of brands under this enterprise",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"headquarters_address": {
|
||||
"type": "string",
|
||||
"description": "HQ address"
|
||||
},
|
||||
"global_policies": {
|
||||
"type": "object",
|
||||
"description": "Global enterprise policies",
|
||||
"properties": {
|
||||
"minimum_wage": {
|
||||
"type": "number"
|
||||
},
|
||||
"overtime_rules": {
|
||||
"type": "string"
|
||||
},
|
||||
"uniform_standards": {
|
||||
"type": "string"
|
||||
},
|
||||
"background_check_required": {
|
||||
"type": "boolean"
|
||||
}
|
||||
}
|
||||
},
|
||||
"sector_registry": {
|
||||
"type": "array",
|
||||
"description": "List of sector IDs under this enterprise",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"rate_guardrails": {
|
||||
"type": "object",
|
||||
"description": "Rate limits and guardrails",
|
||||
"properties": {
|
||||
"minimum_markup_percentage": {
|
||||
"type": "number"
|
||||
},
|
||||
"maximum_markup_percentage": {
|
||||
"type": "number"
|
||||
},
|
||||
"minimum_bill_rate": {
|
||||
"type": "number"
|
||||
}
|
||||
}
|
||||
},
|
||||
"primary_contact_name": {
|
||||
"type": "string",
|
||||
"description": "Enterprise contact"
|
||||
},
|
||||
"primary_contact_email": {
|
||||
"type": "string",
|
||||
"format": "email",
|
||||
"description": "Enterprise contact email"
|
||||
},
|
||||
"is_active": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "Is enterprise active"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"enterprise_name",
|
||||
"enterprise_code",
|
||||
"enterprise_number"
|
||||
]
|
||||
}
|
||||
138
base44/entities/Equipment.jsonc
Normal file
138
base44/entities/Equipment.jsonc
Normal file
@@ -0,0 +1,138 @@
|
||||
{
|
||||
"name": "Equipment",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"equipment_id": {
|
||||
"type": "string",
|
||||
"description": "Equipment item ID"
|
||||
},
|
||||
"equipment_name": {
|
||||
"type": "string",
|
||||
"description": "Name of the equipment item"
|
||||
},
|
||||
"category": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"uniform",
|
||||
"kitchen",
|
||||
"service",
|
||||
"cleaning",
|
||||
"tech",
|
||||
"safety",
|
||||
"furniture",
|
||||
"bar",
|
||||
"other"
|
||||
],
|
||||
"description": "Equipment category"
|
||||
},
|
||||
"subcategory": {
|
||||
"type": "string",
|
||||
"description": "More specific type (e.g., chef coat, serving tray, POS tablet)"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"vendor_id": {
|
||||
"type": "string",
|
||||
"description": "Vendor that owns or provides this equipment"
|
||||
},
|
||||
"vendor_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"client_id": {
|
||||
"type": "string",
|
||||
"description": "Client/Business where equipment is assigned (if applicable)"
|
||||
},
|
||||
"client_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"site_id": {
|
||||
"type": "string",
|
||||
"description": "Site where equipment is located"
|
||||
},
|
||||
"shift_id": {
|
||||
"type": "string",
|
||||
"description": "Shift this equipment is assigned to (if temporary)"
|
||||
},
|
||||
"event_id": {
|
||||
"type": "string",
|
||||
"description": "Event this equipment is for"
|
||||
},
|
||||
"assigned_to_worker_id": {
|
||||
"type": "string",
|
||||
"description": "Worker currently assigned this equipment (for uniforms, tablets, etc.)"
|
||||
},
|
||||
"assigned_to_worker_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"quantity": {
|
||||
"type": "number",
|
||||
"default": 1,
|
||||
"description": "Quantity of this item"
|
||||
},
|
||||
"unit_cost": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"description": "Cost per unit"
|
||||
},
|
||||
"replacement_value": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"description": "Replacement value per unit"
|
||||
},
|
||||
"serial_number": {
|
||||
"type": "string",
|
||||
"description": "Serial or asset tag number"
|
||||
},
|
||||
"condition": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"new",
|
||||
"good",
|
||||
"fair",
|
||||
"poor",
|
||||
"damaged",
|
||||
"lost"
|
||||
],
|
||||
"default": "good"
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"available",
|
||||
"assigned",
|
||||
"in_use",
|
||||
"returned",
|
||||
"in_repair",
|
||||
"retired"
|
||||
],
|
||||
"default": "available",
|
||||
"description": "Current status of the equipment"
|
||||
},
|
||||
"purchase_date": {
|
||||
"type": "string",
|
||||
"format": "date"
|
||||
},
|
||||
"last_inspection_date": {
|
||||
"type": "string",
|
||||
"format": "date"
|
||||
},
|
||||
"next_inspection_date": {
|
||||
"type": "string",
|
||||
"format": "date"
|
||||
},
|
||||
"requires_cleaning": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Whether item needs cleaning before next use"
|
||||
},
|
||||
"notes": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"equipment_name",
|
||||
"category",
|
||||
"status"
|
||||
]
|
||||
}
|
||||
322
base44/entities/Event.jsonc
Normal file
322
base44/entities/Event.jsonc
Normal file
@@ -0,0 +1,322 @@
|
||||
{
|
||||
"name": "Event",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"event_name": {
|
||||
"type": "string",
|
||||
"description": "Name of the event"
|
||||
},
|
||||
"is_rapid": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Is this a RAPID/urgent order"
|
||||
},
|
||||
"is_recurring": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Is this a recurring event"
|
||||
},
|
||||
"is_multi_day": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Is this a multi-day event"
|
||||
},
|
||||
"recurrence_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"single",
|
||||
"date_range",
|
||||
"scatter"
|
||||
],
|
||||
"description": "Type of recurrence: single, date_range, or scatter"
|
||||
},
|
||||
"recurrence_start_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Start date for recurring events"
|
||||
},
|
||||
"recurrence_end_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "End date for recurring events"
|
||||
},
|
||||
"scatter_dates": {
|
||||
"type": "array",
|
||||
"description": "Array of specific dates for scatter recurring",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "date"
|
||||
}
|
||||
},
|
||||
"multi_day_start_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Start date for multi-day events"
|
||||
},
|
||||
"multi_day_end_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "End date for multi-day events"
|
||||
},
|
||||
"buffer_time_before": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Buffer time in minutes before event"
|
||||
},
|
||||
"buffer_time_after": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Buffer time in minutes after event"
|
||||
},
|
||||
"conflict_detection_enabled": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "Whether to check for conflicts"
|
||||
},
|
||||
"detected_conflicts": {
|
||||
"type": "array",
|
||||
"description": "Array of detected conflicts",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"conflict_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"staff_overlap",
|
||||
"venue_overlap",
|
||||
"time_buffer"
|
||||
]
|
||||
},
|
||||
"severity": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"low",
|
||||
"medium",
|
||||
"high",
|
||||
"critical"
|
||||
]
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"conflicting_event_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"staff_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"detected_at": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"business_id": {
|
||||
"type": "string",
|
||||
"description": "Associated business ID"
|
||||
},
|
||||
"business_name": {
|
||||
"type": "string",
|
||||
"description": "Business name"
|
||||
},
|
||||
"vendor_id": {
|
||||
"type": "string",
|
||||
"description": "Vendor ID if created by vendor"
|
||||
},
|
||||
"vendor_name": {
|
||||
"type": "string",
|
||||
"description": "Vendor name if created by vendor"
|
||||
},
|
||||
"hub": {
|
||||
"type": "string",
|
||||
"description": "Hub location for the event"
|
||||
},
|
||||
"event_location": {
|
||||
"type": "string",
|
||||
"description": "Event location address"
|
||||
},
|
||||
"contract_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"W2",
|
||||
"1099",
|
||||
"Temp",
|
||||
"Contract"
|
||||
],
|
||||
"description": "Type of contract"
|
||||
},
|
||||
"po_reference": {
|
||||
"type": "string",
|
||||
"description": "Purchase order reference number"
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Draft",
|
||||
"Active",
|
||||
"Pending",
|
||||
"Assigned",
|
||||
"Confirmed",
|
||||
"Completed",
|
||||
"Canceled"
|
||||
],
|
||||
"default": "Draft"
|
||||
},
|
||||
"date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Event date (for single events)"
|
||||
},
|
||||
"requested": {
|
||||
"type": "number",
|
||||
"description": "Total number of staff requested for this event",
|
||||
"default": 0
|
||||
},
|
||||
"assigned_staff": {
|
||||
"type": "array",
|
||||
"description": "Array of assigned staff members",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"staff_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"staff_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"email": {
|
||||
"type": "string"
|
||||
},
|
||||
"role": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"shifts": {
|
||||
"type": "array",
|
||||
"description": "Array of shifts for this event",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"shift_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"shift_contact": {
|
||||
"type": "string"
|
||||
},
|
||||
"location": {
|
||||
"type": "string"
|
||||
},
|
||||
"location_address": {
|
||||
"type": "string"
|
||||
},
|
||||
"roles": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"role": {
|
||||
"type": "string"
|
||||
},
|
||||
"department": {
|
||||
"type": "string"
|
||||
},
|
||||
"count": {
|
||||
"type": "number"
|
||||
},
|
||||
"start_time": {
|
||||
"type": "string"
|
||||
},
|
||||
"end_time": {
|
||||
"type": "string"
|
||||
},
|
||||
"hours": {
|
||||
"type": "number"
|
||||
},
|
||||
"uniform": {
|
||||
"type": "string"
|
||||
},
|
||||
"break_minutes": {
|
||||
"type": "number"
|
||||
},
|
||||
"cost_per_hour": {
|
||||
"type": "number"
|
||||
},
|
||||
"total_value": {
|
||||
"type": "number"
|
||||
},
|
||||
"vendor_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"vendor_id": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"addons": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"goal": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"text": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"portal_access": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"meal_provided": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"travel_time": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"tips": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"amount": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"total": {
|
||||
"type": "number",
|
||||
"description": "Total cost"
|
||||
},
|
||||
"client_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"client_email": {
|
||||
"type": "string"
|
||||
},
|
||||
"client_phone": {
|
||||
"type": "string"
|
||||
},
|
||||
"invoice_id": {
|
||||
"type": "string",
|
||||
"description": "Associated invoice ID"
|
||||
},
|
||||
"notes": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"event_name"
|
||||
]
|
||||
}
|
||||
200
base44/entities/FoodServiceOperation.jsonc
Normal file
200
base44/entities/FoodServiceOperation.jsonc
Normal file
@@ -0,0 +1,200 @@
|
||||
{
|
||||
"name": "FoodServiceOperation",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"operation_id": {
|
||||
"type": "string",
|
||||
"description": "Operation record ID"
|
||||
},
|
||||
"operation_name": {
|
||||
"type": "string",
|
||||
"description": "Name of the food service operation"
|
||||
},
|
||||
"service_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"breakfast",
|
||||
"lunch",
|
||||
"dinner",
|
||||
"catering",
|
||||
"concession",
|
||||
"cafe",
|
||||
"buffet",
|
||||
"banquet",
|
||||
"retail",
|
||||
"vending",
|
||||
"other"
|
||||
],
|
||||
"description": "Type of food service"
|
||||
},
|
||||
"client_id": {
|
||||
"type": "string",
|
||||
"description": "Client/Business ID this operation serves"
|
||||
},
|
||||
"client_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"site_id": {
|
||||
"type": "string",
|
||||
"description": "Site where operation takes place"
|
||||
},
|
||||
"location_name": {
|
||||
"type": "string",
|
||||
"description": "Location/dining area name"
|
||||
},
|
||||
"sector_id": {
|
||||
"type": "string",
|
||||
"description": "Sector this operation belongs to"
|
||||
},
|
||||
"sector_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"vendor_id": {
|
||||
"type": "string",
|
||||
"description": "Vendor operating this service"
|
||||
},
|
||||
"vendor_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"manager_id": {
|
||||
"type": "string",
|
||||
"description": "Manager Staff ID running this operation"
|
||||
},
|
||||
"manager_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"shift_id": {
|
||||
"type": "string",
|
||||
"description": "Shift this operation is tied to"
|
||||
},
|
||||
"event_id": {
|
||||
"type": "string",
|
||||
"description": "Event this operation is part of"
|
||||
},
|
||||
"operation_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Date of operation"
|
||||
},
|
||||
"service_start_time": {
|
||||
"type": "string",
|
||||
"description": "Service start time"
|
||||
},
|
||||
"service_end_time": {
|
||||
"type": "string",
|
||||
"description": "Service end time"
|
||||
},
|
||||
"meal_period": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"breakfast",
|
||||
"am_break",
|
||||
"lunch",
|
||||
"pm_break",
|
||||
"dinner",
|
||||
"late_night",
|
||||
"all_day"
|
||||
],
|
||||
"description": "Meal period"
|
||||
},
|
||||
"menu_type": {
|
||||
"type": "string",
|
||||
"description": "Menu style (e.g., American, Mediterranean, Asian, Custom)"
|
||||
},
|
||||
"covers_expected": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Expected number of covers/guests"
|
||||
},
|
||||
"covers_actual": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Actual covers served"
|
||||
},
|
||||
"staffing_level": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Number of staff assigned to this operation"
|
||||
},
|
||||
"kitchen_status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"closed",
|
||||
"prep",
|
||||
"service",
|
||||
"post_service",
|
||||
"cleanup",
|
||||
"deep_clean"
|
||||
],
|
||||
"default": "closed",
|
||||
"description": "Current kitchen/operation phase"
|
||||
},
|
||||
"equipment_assigned": {
|
||||
"type": "array",
|
||||
"description": "Equipment IDs assigned to this operation",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"equipment_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"equipment_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"quantity": {
|
||||
"type": "number"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"contract_id": {
|
||||
"type": "string",
|
||||
"description": "Contract governing this operation"
|
||||
},
|
||||
"invoice_id": {
|
||||
"type": "string",
|
||||
"description": "Invoice generated for this operation"
|
||||
},
|
||||
"compliance_status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"compliant",
|
||||
"pending_review",
|
||||
"non_compliant",
|
||||
"not_applicable"
|
||||
],
|
||||
"default": "compliant"
|
||||
},
|
||||
"quality_score": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 100,
|
||||
"description": "Quality/QA score for this operation"
|
||||
},
|
||||
"client_feedback": {
|
||||
"type": "string"
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"scheduled",
|
||||
"prep",
|
||||
"in_service",
|
||||
"completed",
|
||||
"cancelled",
|
||||
"no_show"
|
||||
],
|
||||
"default": "scheduled",
|
||||
"description": "Operation status"
|
||||
},
|
||||
"notes": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"operation_name",
|
||||
"service_type",
|
||||
"operation_date",
|
||||
"status"
|
||||
]
|
||||
}
|
||||
309
base44/entities/Invoice.jsonc
Normal file
309
base44/entities/Invoice.jsonc
Normal file
@@ -0,0 +1,309 @@
|
||||
{
|
||||
"name": "Invoice",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"invoice_number": {
|
||||
"type": "string",
|
||||
"description": "Unique invoice number (e.g., INV-619)"
|
||||
},
|
||||
"event_name": {
|
||||
"type": "string",
|
||||
"description": "Name of the event"
|
||||
},
|
||||
"event_id": {
|
||||
"type": "string",
|
||||
"description": "Related event ID"
|
||||
},
|
||||
"po_reference": {
|
||||
"type": "string",
|
||||
"description": "Purchase order reference"
|
||||
},
|
||||
"event_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Event date"
|
||||
},
|
||||
"from_company": {
|
||||
"type": "object",
|
||||
"description": "Vendor company information",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"address": {
|
||||
"type": "string"
|
||||
},
|
||||
"email": {
|
||||
"type": "string"
|
||||
},
|
||||
"phone": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"to_company": {
|
||||
"type": "object",
|
||||
"description": "Client company information",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"address": {
|
||||
"type": "string"
|
||||
},
|
||||
"email": {
|
||||
"type": "string"
|
||||
},
|
||||
"manager": {
|
||||
"type": "string"
|
||||
},
|
||||
"phone": {
|
||||
"type": "string"
|
||||
},
|
||||
"vendor_id": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"business_name": {
|
||||
"type": "string",
|
||||
"description": "Client/Business name"
|
||||
},
|
||||
"manager_name": {
|
||||
"type": "string",
|
||||
"description": "Manager name"
|
||||
},
|
||||
"vendor_name": {
|
||||
"type": "string",
|
||||
"description": "Vendor providing services"
|
||||
},
|
||||
"vendor_id": {
|
||||
"type": "string",
|
||||
"description": "Vendor ID"
|
||||
},
|
||||
"hub": {
|
||||
"type": "string",
|
||||
"description": "Hub location"
|
||||
},
|
||||
"cost_center": {
|
||||
"type": "string",
|
||||
"description": "Cost center or department"
|
||||
},
|
||||
"roles": {
|
||||
"type": "array",
|
||||
"description": "Grouped by role with staff details",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"role_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"staff_entries": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"staff_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"staff_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"date": {
|
||||
"type": "string",
|
||||
"format": "date"
|
||||
},
|
||||
"position": {
|
||||
"type": "string"
|
||||
},
|
||||
"check_in": {
|
||||
"type": "string"
|
||||
},
|
||||
"check_out": {
|
||||
"type": "string"
|
||||
},
|
||||
"worked_hours": {
|
||||
"type": "number"
|
||||
},
|
||||
"regular_hours": {
|
||||
"type": "number"
|
||||
},
|
||||
"ot_hours": {
|
||||
"type": "number"
|
||||
},
|
||||
"dt_hours": {
|
||||
"type": "number"
|
||||
},
|
||||
"regular_rate": {
|
||||
"type": "number"
|
||||
},
|
||||
"ot_rate": {
|
||||
"type": "number"
|
||||
},
|
||||
"dt_rate": {
|
||||
"type": "number"
|
||||
},
|
||||
"regular_value": {
|
||||
"type": "number"
|
||||
},
|
||||
"ot_value": {
|
||||
"type": "number"
|
||||
},
|
||||
"dt_value": {
|
||||
"type": "number"
|
||||
},
|
||||
"rate": {
|
||||
"type": "number"
|
||||
},
|
||||
"total": {
|
||||
"type": "number"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"role_subtotal": {
|
||||
"type": "number"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"subtotal": {
|
||||
"type": "number",
|
||||
"description": "Subtotal amount"
|
||||
},
|
||||
"other_charges": {
|
||||
"type": "number",
|
||||
"description": "Additional charges"
|
||||
},
|
||||
"amount": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"description": "Grand total invoice amount"
|
||||
},
|
||||
"tax_amount": {
|
||||
"type": "number",
|
||||
"description": "Tax amount"
|
||||
},
|
||||
"tax_rate": {
|
||||
"type": "number",
|
||||
"description": "Tax rate percentage"
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Draft",
|
||||
"Pending Review",
|
||||
"Approved",
|
||||
"Disputed",
|
||||
"Under Review",
|
||||
"Resolved",
|
||||
"Overdue",
|
||||
"Paid",
|
||||
"Reconciled",
|
||||
"Cancelled"
|
||||
],
|
||||
"default": "Draft",
|
||||
"description": "Current invoice status"
|
||||
},
|
||||
"issue_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Invoice issue date"
|
||||
},
|
||||
"due_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Payment due date"
|
||||
},
|
||||
"paid_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Date payment was received"
|
||||
},
|
||||
"payment_method": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Credit Card",
|
||||
"ACH",
|
||||
"Wire Transfer",
|
||||
"Check",
|
||||
"Cash"
|
||||
],
|
||||
"description": "Payment method used"
|
||||
},
|
||||
"payment_reference": {
|
||||
"type": "string",
|
||||
"description": "Payment reference/transaction ID"
|
||||
},
|
||||
"dispute_reason": {
|
||||
"type": "string",
|
||||
"description": "Reason for dispute"
|
||||
},
|
||||
"dispute_details": {
|
||||
"type": "string",
|
||||
"description": "Detailed dispute information"
|
||||
},
|
||||
"disputed_items": {
|
||||
"type": "array",
|
||||
"description": "List of disputed staff entry indices",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"role_index": {
|
||||
"type": "number"
|
||||
},
|
||||
"staff_index": {
|
||||
"type": "number"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"disputed_by": {
|
||||
"type": "string",
|
||||
"description": "User who disputed the invoice"
|
||||
},
|
||||
"disputed_date": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "When dispute was raised"
|
||||
},
|
||||
"resolution_notes": {
|
||||
"type": "string",
|
||||
"description": "Notes about dispute resolution"
|
||||
},
|
||||
"approved_by": {
|
||||
"type": "string",
|
||||
"description": "User who approved the invoice"
|
||||
},
|
||||
"approved_date": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "When invoice was approved"
|
||||
},
|
||||
"is_auto_generated": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Whether invoice was auto-generated from event"
|
||||
},
|
||||
"pdf_url": {
|
||||
"type": "string",
|
||||
"description": "URL to PDF version of invoice"
|
||||
},
|
||||
"notes": {
|
||||
"type": "string",
|
||||
"description": "Additional notes about the invoice"
|
||||
},
|
||||
"internal_notes": {
|
||||
"type": "string",
|
||||
"description": "Internal notes not visible to client"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"invoice_number",
|
||||
"business_name",
|
||||
"amount",
|
||||
"status",
|
||||
"issue_date",
|
||||
"due_date"
|
||||
]
|
||||
}
|
||||
132
base44/entities/InvoiceTemplate.jsonc
Normal file
132
base44/entities/InvoiceTemplate.jsonc
Normal file
@@ -0,0 +1,132 @@
|
||||
{
|
||||
"name": "InvoiceTemplate",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "Template name"
|
||||
},
|
||||
"client_name": {
|
||||
"type": "string",
|
||||
"description": "Client/Business name"
|
||||
},
|
||||
"from_company": {
|
||||
"type": "object",
|
||||
"description": "Vendor company info",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"address": {
|
||||
"type": "string"
|
||||
},
|
||||
"phone": {
|
||||
"type": "string"
|
||||
},
|
||||
"email": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"to_company": {
|
||||
"type": "object",
|
||||
"description": "Client company info",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"address": {
|
||||
"type": "string"
|
||||
},
|
||||
"phone": {
|
||||
"type": "string"
|
||||
},
|
||||
"email": {
|
||||
"type": "string"
|
||||
},
|
||||
"hub_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"manager_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"vendor_id": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hub": {
|
||||
"type": "string",
|
||||
"description": "Hub location"
|
||||
},
|
||||
"department": {
|
||||
"type": "string",
|
||||
"description": "Department"
|
||||
},
|
||||
"po_reference": {
|
||||
"type": "string",
|
||||
"description": "PO reference"
|
||||
},
|
||||
"payment_terms": {
|
||||
"type": "string",
|
||||
"description": "Payment terms"
|
||||
},
|
||||
"staff_entries": {
|
||||
"type": "array",
|
||||
"description": "Template staff entries (positions and rates)",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"position": {
|
||||
"type": "string"
|
||||
},
|
||||
"rate": {
|
||||
"type": "number"
|
||||
},
|
||||
"check_in": {
|
||||
"type": "string"
|
||||
},
|
||||
"check_out": {
|
||||
"type": "string"
|
||||
},
|
||||
"lunch": {
|
||||
"type": "number"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"charges": {
|
||||
"type": "array",
|
||||
"description": "Template charges",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"qty": {
|
||||
"type": "number"
|
||||
},
|
||||
"rate": {
|
||||
"type": "number"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"staff_count": {
|
||||
"type": "number",
|
||||
"description": "Number of staff entries"
|
||||
},
|
||||
"charges_count": {
|
||||
"type": "number",
|
||||
"description": "Number of charges"
|
||||
},
|
||||
"notes": {
|
||||
"type": "string",
|
||||
"description": "Template notes"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"name"
|
||||
]
|
||||
}
|
||||
147
base44/entities/JobApplication.jsonc
Normal file
147
base44/entities/JobApplication.jsonc
Normal file
@@ -0,0 +1,147 @@
|
||||
{
|
||||
"name": "JobApplication",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"job_posting_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"job_title": {
|
||||
"type": "string"
|
||||
},
|
||||
"applicant_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"applicant_email": {
|
||||
"type": "string",
|
||||
"format": "email"
|
||||
},
|
||||
"applicant_phone": {
|
||||
"type": "string"
|
||||
},
|
||||
"years_experience": {
|
||||
"type": "number",
|
||||
"default": 0
|
||||
},
|
||||
"english_level": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"None",
|
||||
"Basic",
|
||||
"Intermediate",
|
||||
"Fluent"
|
||||
],
|
||||
"default": "Basic"
|
||||
},
|
||||
"certifications": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"availability": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"employment_type_preference": {
|
||||
"type": "string"
|
||||
},
|
||||
"resume_url": {
|
||||
"type": "string"
|
||||
},
|
||||
"cover_letter": {
|
||||
"type": "string"
|
||||
},
|
||||
"linkedin_url": {
|
||||
"type": "string"
|
||||
},
|
||||
"references": {
|
||||
"type": "string"
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"applied",
|
||||
"ai_screened",
|
||||
"shortlisted",
|
||||
"interview",
|
||||
"hired",
|
||||
"rejected"
|
||||
],
|
||||
"default": "applied"
|
||||
},
|
||||
"ai_score": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 100
|
||||
},
|
||||
"ai_match_label": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Excellent Match",
|
||||
"Strong Match",
|
||||
"Good Match",
|
||||
"Weak Match",
|
||||
"Not a Match"
|
||||
]
|
||||
},
|
||||
"ai_summary": {
|
||||
"type": "string",
|
||||
"description": "AI-generated vetting summary"
|
||||
},
|
||||
"ai_strengths": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"ai_gaps": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"ai_recommendation": {
|
||||
"type": "string"
|
||||
},
|
||||
"score_breakdown": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"experience_score": {
|
||||
"type": "number"
|
||||
},
|
||||
"english_score": {
|
||||
"type": "number"
|
||||
},
|
||||
"reliability_score": {
|
||||
"type": "number"
|
||||
},
|
||||
"certifications_score": {
|
||||
"type": "number"
|
||||
},
|
||||
"availability_score": {
|
||||
"type": "number"
|
||||
}
|
||||
}
|
||||
},
|
||||
"assessment": {
|
||||
"type": "object",
|
||||
"description": "Full AI-generated structured assessment"
|
||||
},
|
||||
"rank": {
|
||||
"type": "number"
|
||||
},
|
||||
"vendor_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"notes": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"job_posting_id",
|
||||
"applicant_name",
|
||||
"applicant_email"
|
||||
]
|
||||
}
|
||||
144
base44/entities/JobPosting.jsonc
Normal file
144
base44/entities/JobPosting.jsonc
Normal file
@@ -0,0 +1,144 @@
|
||||
{
|
||||
"name": "JobPosting",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"title": {
|
||||
"type": "string",
|
||||
"description": "Job title"
|
||||
},
|
||||
"role_category": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Server",
|
||||
"Bartender",
|
||||
"Chef",
|
||||
"Line Cook",
|
||||
"Event Manager",
|
||||
"Security",
|
||||
"Busser",
|
||||
"Host",
|
||||
"Barback",
|
||||
"Runner",
|
||||
"Setup Crew",
|
||||
"Other"
|
||||
],
|
||||
"description": "Role category"
|
||||
},
|
||||
"description": {
|
||||
"type": "string",
|
||||
"description": "AI-generated or custom job description"
|
||||
},
|
||||
"responsibilities": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": "List of responsibilities"
|
||||
},
|
||||
"qualifications": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": "Required qualifications"
|
||||
},
|
||||
"nice_to_have": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": "Nice to have qualifications"
|
||||
},
|
||||
"custom_requirements": {
|
||||
"type": "string",
|
||||
"description": "Custom requirements added by admin/vendor"
|
||||
},
|
||||
"vetting_criteria": {
|
||||
"type": "object",
|
||||
"description": "Scoring weights for vetting",
|
||||
"properties": {
|
||||
"experience_weight": {
|
||||
"type": "number"
|
||||
},
|
||||
"english_weight": {
|
||||
"type": "number"
|
||||
},
|
||||
"reliability_weight": {
|
||||
"type": "number"
|
||||
},
|
||||
"certifications_weight": {
|
||||
"type": "number"
|
||||
},
|
||||
"availability_weight": {
|
||||
"type": "number"
|
||||
}
|
||||
}
|
||||
},
|
||||
"min_experience_years": {
|
||||
"type": "number",
|
||||
"default": 0
|
||||
},
|
||||
"english_required": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"None",
|
||||
"Basic",
|
||||
"Intermediate",
|
||||
"Fluent"
|
||||
],
|
||||
"default": "Basic"
|
||||
},
|
||||
"certifications_required": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"employment_types": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"pay_range_min": {
|
||||
"type": "number"
|
||||
},
|
||||
"pay_range_max": {
|
||||
"type": "number"
|
||||
},
|
||||
"location": {
|
||||
"type": "string"
|
||||
},
|
||||
"hub": {
|
||||
"type": "string"
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"draft",
|
||||
"active",
|
||||
"closed",
|
||||
"paused"
|
||||
],
|
||||
"default": "draft"
|
||||
},
|
||||
"vendor_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"vendor_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"total_applicants": {
|
||||
"type": "number",
|
||||
"default": 0
|
||||
},
|
||||
"ai_generated": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"title",
|
||||
"role_category"
|
||||
]
|
||||
}
|
||||
80
base44/entities/KrowEdgeAward.jsonc
Normal file
80
base44/entities/KrowEdgeAward.jsonc
Normal file
@@ -0,0 +1,80 @@
|
||||
{
|
||||
"name": "KrowEdgeAward",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"event_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"event_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"event_date": {
|
||||
"type": "string",
|
||||
"format": "date"
|
||||
},
|
||||
"award_mode": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"standard",
|
||||
"competitive",
|
||||
"krow_smart"
|
||||
]
|
||||
},
|
||||
"awarded_vendor_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"awarded_vendor_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"awarded_bid_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"final_score": {
|
||||
"type": "number"
|
||||
},
|
||||
"evaluation_method": {
|
||||
"type": "string"
|
||||
},
|
||||
"total_bids": {
|
||||
"type": "number"
|
||||
},
|
||||
"market_avg_price": {
|
||||
"type": "number"
|
||||
},
|
||||
"awarded_price": {
|
||||
"type": "number"
|
||||
},
|
||||
"savings_vs_market": {
|
||||
"type": "number"
|
||||
},
|
||||
"client_priority": {
|
||||
"type": "string"
|
||||
},
|
||||
"risk_tolerance": {
|
||||
"type": "string"
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"pending_review",
|
||||
"awarded",
|
||||
"disputed",
|
||||
"cancelled"
|
||||
],
|
||||
"default": "pending_review"
|
||||
},
|
||||
"awarded_by": {
|
||||
"type": "string"
|
||||
},
|
||||
"award_rationale": {
|
||||
"type": "string"
|
||||
},
|
||||
"procurement_notes": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"event_id",
|
||||
"award_mode"
|
||||
]
|
||||
}
|
||||
141
base44/entities/KrowEdgeBid.jsonc
Normal file
141
base44/entities/KrowEdgeBid.jsonc
Normal file
@@ -0,0 +1,141 @@
|
||||
{
|
||||
"name": "KrowEdgeBid",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"event_id": {
|
||||
"type": "string",
|
||||
"description": "Associated event ID"
|
||||
},
|
||||
"event_name": {
|
||||
"type": "string",
|
||||
"description": "Event name for reference"
|
||||
},
|
||||
"event_date": {
|
||||
"type": "string",
|
||||
"format": "date"
|
||||
},
|
||||
"award_mode": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"standard",
|
||||
"competitive",
|
||||
"krow_smart"
|
||||
],
|
||||
"default": "krow_smart",
|
||||
"description": "Award strategy selected by client"
|
||||
},
|
||||
"client_priority": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"cost_optimization",
|
||||
"balanced",
|
||||
"execution_certainty"
|
||||
],
|
||||
"default": "balanced"
|
||||
},
|
||||
"client_risk_tolerance": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"low",
|
||||
"medium",
|
||||
"aggressive"
|
||||
],
|
||||
"default": "low"
|
||||
},
|
||||
"transparency_mode": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"blind",
|
||||
"guided"
|
||||
],
|
||||
"default": "blind"
|
||||
},
|
||||
"vendor_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"vendor_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"price_per_hour": {
|
||||
"type": "number",
|
||||
"minimum": 0
|
||||
},
|
||||
"total_cost": {
|
||||
"type": "number",
|
||||
"minimum": 0
|
||||
},
|
||||
"execution_plan_score": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 100,
|
||||
"description": "Self-declared execution plan quality"
|
||||
},
|
||||
"confidence_level": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 100,
|
||||
"description": "Vendor self-declared confidence"
|
||||
},
|
||||
"notes": {
|
||||
"type": "string"
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"submitted",
|
||||
"under_review",
|
||||
"scored",
|
||||
"awarded",
|
||||
"rejected"
|
||||
],
|
||||
"default": "submitted"
|
||||
},
|
||||
"technical_score": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 100
|
||||
},
|
||||
"financial_score": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 100
|
||||
},
|
||||
"risk_score": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 100
|
||||
},
|
||||
"final_score": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 100
|
||||
},
|
||||
"rank": {
|
||||
"type": "number"
|
||||
},
|
||||
"evaluation_method": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"arithmetic_mean",
|
||||
"geometric_mean",
|
||||
"lowest_price",
|
||||
"krow_optimal"
|
||||
],
|
||||
"description": "Randomly selected evaluation method used"
|
||||
},
|
||||
"ai_insight": {
|
||||
"type": "string",
|
||||
"description": "AI-generated insight about this bid"
|
||||
},
|
||||
"market_deviation_pct": {
|
||||
"type": "number",
|
||||
"description": "% above or below market average"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"event_id",
|
||||
"vendor_id",
|
||||
"price_per_hour",
|
||||
"total_cost"
|
||||
]
|
||||
}
|
||||
62
base44/entities/Message.jsonc
Normal file
62
base44/entities/Message.jsonc
Normal file
@@ -0,0 +1,62 @@
|
||||
{
|
||||
"name": "Message",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"conversation_id": {
|
||||
"type": "string",
|
||||
"description": "ID of the conversation"
|
||||
},
|
||||
"sender_id": {
|
||||
"type": "string",
|
||||
"description": "ID of the sender"
|
||||
},
|
||||
"sender_name": {
|
||||
"type": "string",
|
||||
"description": "Name of the sender"
|
||||
},
|
||||
"sender_role": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"client",
|
||||
"vendor",
|
||||
"staff",
|
||||
"admin"
|
||||
],
|
||||
"description": "Role of the sender"
|
||||
},
|
||||
"content": {
|
||||
"type": "string",
|
||||
"description": "Message content"
|
||||
},
|
||||
"read_by": {
|
||||
"type": "array",
|
||||
"description": "Array of user IDs who have read the message",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"attachments": {
|
||||
"type": "array",
|
||||
"description": "Attached files",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"url": {
|
||||
"type": "string"
|
||||
},
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"conversation_id",
|
||||
"sender_name",
|
||||
"content"
|
||||
]
|
||||
}
|
||||
184
base44/entities/OperationalMemory.jsonc
Normal file
184
base44/entities/OperationalMemory.jsonc
Normal file
@@ -0,0 +1,184 @@
|
||||
{
|
||||
"name": "OperationalMemory",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"memory_id": {
|
||||
"type": "string",
|
||||
"description": "Unique memory identifier (MEM-timestamp-random)"
|
||||
},
|
||||
"trigger_event_id": {
|
||||
"type": "string",
|
||||
"description": "ID of the WorkforceEvent that triggered this memory"
|
||||
},
|
||||
"trigger_event_type": {
|
||||
"type": "string",
|
||||
"description": "Type of the triggering event"
|
||||
},
|
||||
"context_snapshot": {
|
||||
"type": "object",
|
||||
"description": "Graph state at decision time \u2014 entities, relationships, metrics",
|
||||
"additionalProperties": true
|
||||
},
|
||||
"decision": {
|
||||
"type": "object",
|
||||
"description": "The AI's decision/recommendation",
|
||||
"properties": {
|
||||
"prediction": {
|
||||
"type": "string"
|
||||
},
|
||||
"recommendation": {
|
||||
"type": "string"
|
||||
},
|
||||
"confidence_score": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 100
|
||||
},
|
||||
"proposed_actions": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"action_type": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"target_entity_type": {
|
||||
"type": "string"
|
||||
},
|
||||
"target_entity_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"auto_execute": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"executed": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"reasoning": {
|
||||
"type": "string",
|
||||
"description": "Full reasoning chain \u2014 why the AI made this decision"
|
||||
},
|
||||
"causal_chain": {
|
||||
"type": "array",
|
||||
"description": "Structured causal chain tracing WHY the outcome occurred \u2014 each factor connected to the next, ending at root cause(s)",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"step": {
|
||||
"type": "number",
|
||||
"description": "Order in the causal chain (1 = first contributing factor, last = root cause)"
|
||||
},
|
||||
"factor": {
|
||||
"type": "string",
|
||||
"description": "The contributing factor (e.g., 'Vendor A supplied fewer experienced cooks')"
|
||||
},
|
||||
"evidence": {
|
||||
"type": "string",
|
||||
"description": "Data-driven evidence supporting this factor"
|
||||
},
|
||||
"category": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"vendor",
|
||||
"operations",
|
||||
"workforce",
|
||||
"training",
|
||||
"demand",
|
||||
"external",
|
||||
"compliance",
|
||||
"finance",
|
||||
"equipment",
|
||||
"transportation",
|
||||
"system"
|
||||
],
|
||||
"description": "What area of the operation this factor belongs to"
|
||||
},
|
||||
"leads_to": {
|
||||
"type": "string",
|
||||
"description": "What this factor caused (the next link in the chain)"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"root_causes": {
|
||||
"type": "array",
|
||||
"description": "The root cause(s) identified at the end of the causal chain",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"similar_memories_consulted": {
|
||||
"type": "array",
|
||||
"description": "IDs of past memories used as reference",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"outcome": {
|
||||
"type": "string",
|
||||
"description": "What actually happened (filled in during outcome review)"
|
||||
},
|
||||
"outcome_score": {
|
||||
"type": "number",
|
||||
"description": "Did it work? (-100 = made things worse, 0 = no effect, 100 = helped significantly)"
|
||||
},
|
||||
"outcome_metrics": {
|
||||
"type": "object",
|
||||
"description": "Quantified outcome data (e.g., overtime_reduction_pct, cost_savings)",
|
||||
"additionalProperties": true
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"pending",
|
||||
"executed",
|
||||
"outcome_pending",
|
||||
"learned",
|
||||
"rejected"
|
||||
],
|
||||
"default": "pending"
|
||||
},
|
||||
"agent_name": {
|
||||
"type": "string",
|
||||
"description": "Which agent made this decision"
|
||||
},
|
||||
"department": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"operations",
|
||||
"procurement",
|
||||
"finance",
|
||||
"vendor",
|
||||
"compliance",
|
||||
"executive"
|
||||
],
|
||||
"description": "Department this memory belongs to"
|
||||
},
|
||||
"learned_at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "When the outcome was recorded and learning completed"
|
||||
},
|
||||
"tags": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"memory_id",
|
||||
"trigger_event_id",
|
||||
"department"
|
||||
]
|
||||
}
|
||||
169
base44/entities/Order.jsonc
Normal file
169
base44/entities/Order.jsonc
Normal file
@@ -0,0 +1,169 @@
|
||||
{
|
||||
"name": "Order",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"order_number": {
|
||||
"type": "string",
|
||||
"description": "Order Number format ORD-#### (auto-generated)",
|
||||
"pattern": "^ORD-[0-9]{4,6}$"
|
||||
},
|
||||
"partner_id": {
|
||||
"type": "string",
|
||||
"description": "Partner/Client ID"
|
||||
},
|
||||
"partner_name": {
|
||||
"type": "string",
|
||||
"description": "Partner/Client name"
|
||||
},
|
||||
"site_id": {
|
||||
"type": "string",
|
||||
"description": "Site/location ID"
|
||||
},
|
||||
"site_name": {
|
||||
"type": "string",
|
||||
"description": "Site/location name"
|
||||
},
|
||||
"site_address": {
|
||||
"type": "string",
|
||||
"description": "Event/site address"
|
||||
},
|
||||
"sector_id": {
|
||||
"type": "string",
|
||||
"description": "Sector ID"
|
||||
},
|
||||
"enterprise_id": {
|
||||
"type": "string",
|
||||
"description": "Enterprise ID"
|
||||
},
|
||||
"order_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Standard",
|
||||
"Last Minute",
|
||||
"Emergency",
|
||||
"Recurring"
|
||||
],
|
||||
"default": "Standard",
|
||||
"description": "Type of order"
|
||||
},
|
||||
"cost_center": {
|
||||
"type": "string",
|
||||
"description": "Cost center"
|
||||
},
|
||||
"po_number": {
|
||||
"type": "string",
|
||||
"description": "Purchase order number"
|
||||
},
|
||||
"roles_requested": {
|
||||
"type": "array",
|
||||
"description": "Roles and headcount requested",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"role": {
|
||||
"type": "string"
|
||||
},
|
||||
"department": {
|
||||
"type": "string"
|
||||
},
|
||||
"headcount": {
|
||||
"type": "number"
|
||||
},
|
||||
"start_date_time": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
"end_date_time": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
"pay_rate": {
|
||||
"type": "number"
|
||||
},
|
||||
"bill_rate": {
|
||||
"type": "number"
|
||||
},
|
||||
"uniform_required": {
|
||||
"type": "string"
|
||||
},
|
||||
"special_requirements": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"tags": {
|
||||
"type": "array",
|
||||
"description": "Order tags/labels",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"point_of_contact": {
|
||||
"type": "object",
|
||||
"description": "On-site contact",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"email": {
|
||||
"type": "string"
|
||||
},
|
||||
"phone": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"sla_targets": {
|
||||
"type": "object",
|
||||
"description": "Service Level Agreement targets",
|
||||
"properties": {
|
||||
"response_time_hours": {
|
||||
"type": "number"
|
||||
},
|
||||
"fill_rate_percentage": {
|
||||
"type": "number"
|
||||
},
|
||||
"on_time_arrival": {
|
||||
"type": "boolean"
|
||||
}
|
||||
}
|
||||
},
|
||||
"order_status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Draft",
|
||||
"Submitted",
|
||||
"Confirmed",
|
||||
"In Progress",
|
||||
"Completed",
|
||||
"Cancelled"
|
||||
],
|
||||
"default": "Draft",
|
||||
"description": "Order status"
|
||||
},
|
||||
"submitted_date": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "When order was submitted"
|
||||
},
|
||||
"confirmed_date": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "When order was confirmed"
|
||||
},
|
||||
"special_instructions": {
|
||||
"type": "string",
|
||||
"description": "Special instructions"
|
||||
},
|
||||
"total_estimated_cost": {
|
||||
"type": "number",
|
||||
"description": "Estimated total cost"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"order_number",
|
||||
"partner_id",
|
||||
"roles_requested"
|
||||
]
|
||||
}
|
||||
60
base44/entities/OrderVendorInvite.jsonc
Normal file
60
base44/entities/OrderVendorInvite.jsonc
Normal file
@@ -0,0 +1,60 @@
|
||||
{
|
||||
"name": "OrderVendorInvite",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"order_id": {
|
||||
"type": "string",
|
||||
"description": "Order ID"
|
||||
},
|
||||
"order_number": {
|
||||
"type": "string",
|
||||
"description": "Order number"
|
||||
},
|
||||
"vendor_id": {
|
||||
"type": "string",
|
||||
"description": "Vendor ID"
|
||||
},
|
||||
"vendor_name": {
|
||||
"type": "string",
|
||||
"description": "Vendor name"
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"pending",
|
||||
"accepted",
|
||||
"declined",
|
||||
"expired"
|
||||
],
|
||||
"default": "pending",
|
||||
"description": "Invite status"
|
||||
},
|
||||
"invited_at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "When vendor was invited"
|
||||
},
|
||||
"invited_by": {
|
||||
"type": "string",
|
||||
"description": "Who sent the invite"
|
||||
},
|
||||
"responded_at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "When vendor responded"
|
||||
},
|
||||
"response_note": {
|
||||
"type": "string",
|
||||
"description": "Vendor's response note"
|
||||
},
|
||||
"expires_at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "When invite expires"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"order_id",
|
||||
"vendor_id"
|
||||
]
|
||||
}
|
||||
116
base44/entities/Partner.jsonc
Normal file
116
base44/entities/Partner.jsonc
Normal file
@@ -0,0 +1,116 @@
|
||||
{
|
||||
"name": "Partner",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"partner_name": {
|
||||
"type": "string",
|
||||
"description": "Partner/client name (e.g., Google, Nvidia)"
|
||||
},
|
||||
"partner_number": {
|
||||
"type": "string",
|
||||
"description": "Partner Number format PN-#### (auto-generated)",
|
||||
"pattern": "^PN-[0-9]{4}$"
|
||||
},
|
||||
"partner_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Corporate",
|
||||
"Education",
|
||||
"Healthcare",
|
||||
"Sports & Entertainment",
|
||||
"Government"
|
||||
],
|
||||
"description": "Partner type"
|
||||
},
|
||||
"sector_id": {
|
||||
"type": "string",
|
||||
"description": "Sector ID this partner belongs to"
|
||||
},
|
||||
"sector_name": {
|
||||
"type": "string",
|
||||
"description": "Sector name"
|
||||
},
|
||||
"primary_contact_name": {
|
||||
"type": "string",
|
||||
"description": "Primary contact person"
|
||||
},
|
||||
"primary_contact_email": {
|
||||
"type": "string",
|
||||
"format": "email",
|
||||
"description": "Primary contact email"
|
||||
},
|
||||
"primary_contact_phone": {
|
||||
"type": "string",
|
||||
"description": "Primary contact phone"
|
||||
},
|
||||
"billing_address": {
|
||||
"type": "string",
|
||||
"description": "Billing address"
|
||||
},
|
||||
"sites": {
|
||||
"type": "array",
|
||||
"description": "List of partner sites/locations",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"site_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"address": {
|
||||
"type": "string"
|
||||
},
|
||||
"city": {
|
||||
"type": "string"
|
||||
},
|
||||
"state": {
|
||||
"type": "string"
|
||||
},
|
||||
"zip_code": {
|
||||
"type": "string"
|
||||
},
|
||||
"site_manager": {
|
||||
"type": "string"
|
||||
},
|
||||
"site_manager_email": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"allowed_vendors": {
|
||||
"type": "array",
|
||||
"description": "List of vendor IDs allowed for this partner",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"rate_exceptions": {
|
||||
"type": "array",
|
||||
"description": "Partner-specific rate exceptions",
|
||||
"items": {
|
||||
"type": "object"
|
||||
}
|
||||
},
|
||||
"cost_centers": {
|
||||
"type": "array",
|
||||
"description": "Cost centers/PO numbers",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"payment_terms": {
|
||||
"type": "string",
|
||||
"description": "Payment terms (e.g., Net 30)",
|
||||
"default": "Net 30"
|
||||
},
|
||||
"is_active": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "Is partner active"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"partner_name",
|
||||
"partner_number"
|
||||
]
|
||||
}
|
||||
162
base44/entities/PayrollRecord.jsonc
Normal file
162
base44/entities/PayrollRecord.jsonc
Normal file
@@ -0,0 +1,162 @@
|
||||
{
|
||||
"name": "PayrollRecord",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"pay_period_start": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Start of pay period"
|
||||
},
|
||||
"pay_period_end": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "End of pay period"
|
||||
},
|
||||
"vendor_id": {
|
||||
"type": "string",
|
||||
"description": "Vendor ID"
|
||||
},
|
||||
"vendor_name": {
|
||||
"type": "string",
|
||||
"description": "Vendor name"
|
||||
},
|
||||
"payroll_status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Draft",
|
||||
"Processing",
|
||||
"Approved",
|
||||
"Paid"
|
||||
],
|
||||
"default": "Draft",
|
||||
"description": "Overall payroll batch status"
|
||||
},
|
||||
"entries": {
|
||||
"type": "array",
|
||||
"description": "Individual employee payroll entries",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"staff_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"staff_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"email": {
|
||||
"type": "string"
|
||||
},
|
||||
"position": {
|
||||
"type": "string"
|
||||
},
|
||||
"regular_hours": {
|
||||
"type": "number"
|
||||
},
|
||||
"overtime_hours": {
|
||||
"type": "number"
|
||||
},
|
||||
"double_time_hours": {
|
||||
"type": "number"
|
||||
},
|
||||
"regular_rate": {
|
||||
"type": "number"
|
||||
},
|
||||
"overtime_rate": {
|
||||
"type": "number"
|
||||
},
|
||||
"double_time_rate": {
|
||||
"type": "number"
|
||||
},
|
||||
"regular_pay": {
|
||||
"type": "number"
|
||||
},
|
||||
"overtime_pay": {
|
||||
"type": "number"
|
||||
},
|
||||
"double_time_pay": {
|
||||
"type": "number"
|
||||
},
|
||||
"gross_pay": {
|
||||
"type": "number"
|
||||
},
|
||||
"timecard_status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"employee_pending",
|
||||
"employee_confirmed",
|
||||
"employee_edited",
|
||||
"approved",
|
||||
"paid"
|
||||
],
|
||||
"default": "employee_pending"
|
||||
},
|
||||
"timecard_sent_at": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
"employee_response_at": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
"employee_edit_notes": {
|
||||
"type": "string"
|
||||
},
|
||||
"approved_at": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
"approved_by": {
|
||||
"type": "string"
|
||||
},
|
||||
"paid_at": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
"shifts": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"event_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"date": {
|
||||
"type": "string",
|
||||
"format": "date"
|
||||
},
|
||||
"clock_in": {
|
||||
"type": "string"
|
||||
},
|
||||
"clock_out": {
|
||||
"type": "string"
|
||||
},
|
||||
"hours": {
|
||||
"type": "number"
|
||||
},
|
||||
"role": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"total_regular_pay": {
|
||||
"type": "number"
|
||||
},
|
||||
"total_overtime_pay": {
|
||||
"type": "number"
|
||||
},
|
||||
"total_gross_pay": {
|
||||
"type": "number"
|
||||
},
|
||||
"notes": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"pay_period_start",
|
||||
"pay_period_end"
|
||||
]
|
||||
}
|
||||
169
base44/entities/RateCard.jsonc
Normal file
169
base44/entities/RateCard.jsonc
Normal file
@@ -0,0 +1,169 @@
|
||||
{
|
||||
"name": "RateCard",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"rate_card_number": {
|
||||
"type": "string",
|
||||
"description": "Rate Card Number format RC-#### (auto-generated)",
|
||||
"pattern": "^RC-[0-9]{4}$"
|
||||
},
|
||||
"vendor_id": {
|
||||
"type": "string",
|
||||
"description": "Vendor ID"
|
||||
},
|
||||
"vendor_name": {
|
||||
"type": "string",
|
||||
"description": "Vendor name"
|
||||
},
|
||||
"partner_id": {
|
||||
"type": "string",
|
||||
"description": "Partner ID (if partner-specific)"
|
||||
},
|
||||
"partner_name": {
|
||||
"type": "string",
|
||||
"description": "Partner name (if partner-specific)"
|
||||
},
|
||||
"sector_id": {
|
||||
"type": "string",
|
||||
"description": "Sector ID (if sector-specific)"
|
||||
},
|
||||
"effective_start_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Rate card effective start date"
|
||||
},
|
||||
"effective_end_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Rate card effective end date"
|
||||
},
|
||||
"region": {
|
||||
"type": "string",
|
||||
"description": "Geographic region (e.g., 'San Francisco Bay Area')"
|
||||
},
|
||||
"state": {
|
||||
"type": "string",
|
||||
"description": "State"
|
||||
},
|
||||
"role": {
|
||||
"type": "string",
|
||||
"description": "Role/position"
|
||||
},
|
||||
"category": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Kitchen and Culinary",
|
||||
"Concessions",
|
||||
"Facilities",
|
||||
"Bartending",
|
||||
"Security",
|
||||
"Event Staff",
|
||||
"Management",
|
||||
"Technical",
|
||||
"Other"
|
||||
],
|
||||
"description": "Role category"
|
||||
},
|
||||
"pay_rate": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"description": "Worker pay rate per hour"
|
||||
},
|
||||
"bill_rate": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"description": "Client bill rate per hour"
|
||||
},
|
||||
"markup_amount": {
|
||||
"type": "number",
|
||||
"description": "Markup amount in dollars"
|
||||
},
|
||||
"markup_percentage": {
|
||||
"type": "number",
|
||||
"description": "Markup as percentage"
|
||||
},
|
||||
"overtime_pay_rate": {
|
||||
"type": "number",
|
||||
"description": "Overtime pay rate (typically 1.5x)"
|
||||
},
|
||||
"overtime_bill_rate": {
|
||||
"type": "number",
|
||||
"description": "Overtime bill rate"
|
||||
},
|
||||
"overtime_rules": {
|
||||
"type": "object",
|
||||
"description": "Overtime rules",
|
||||
"properties": {
|
||||
"daily_threshold_hours": {
|
||||
"type": "number"
|
||||
},
|
||||
"weekly_threshold_hours": {
|
||||
"type": "number"
|
||||
},
|
||||
"overtime_multiplier": {
|
||||
"type": "number",
|
||||
"default": 1.5
|
||||
}
|
||||
}
|
||||
},
|
||||
"exceptions": {
|
||||
"type": "array",
|
||||
"description": "Rate exceptions",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"condition": {
|
||||
"type": "string"
|
||||
},
|
||||
"exception_rate": {
|
||||
"type": "number"
|
||||
},
|
||||
"notes": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"minimum_hours": {
|
||||
"type": "number",
|
||||
"description": "Minimum billable hours"
|
||||
},
|
||||
"travel_rate": {
|
||||
"type": "number",
|
||||
"description": "Travel reimbursement rate"
|
||||
},
|
||||
"meal_allowance": {
|
||||
"type": "number",
|
||||
"description": "Meal allowance if applicable"
|
||||
},
|
||||
"uniform_charge": {
|
||||
"type": "number",
|
||||
"description": "Uniform charge if applicable"
|
||||
},
|
||||
"is_active": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "Is rate card currently active"
|
||||
},
|
||||
"approved_by": {
|
||||
"type": "string",
|
||||
"description": "Who approved this rate card"
|
||||
},
|
||||
"approved_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Approval date"
|
||||
},
|
||||
"notes": {
|
||||
"type": "string",
|
||||
"description": "Rate card notes"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"vendor_id",
|
||||
"role",
|
||||
"pay_rate",
|
||||
"bill_rate",
|
||||
"effective_start_date"
|
||||
]
|
||||
}
|
||||
68
base44/entities/ReputationEvent.jsonc
Normal file
68
base44/entities/ReputationEvent.jsonc
Normal file
@@ -0,0 +1,68 @@
|
||||
{
|
||||
"name": "ReputationEvent",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"worker_id": {
|
||||
"type": "string",
|
||||
"description": "ID of the workforce member"
|
||||
},
|
||||
"worker_name": {
|
||||
"type": "string",
|
||||
"description": "Name of the workforce member"
|
||||
},
|
||||
"event_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"shift_completed",
|
||||
"no_show",
|
||||
"late_arrival",
|
||||
"early_departure",
|
||||
"client_rated",
|
||||
"supervisor_rated",
|
||||
"certification_verified",
|
||||
"last_minute_cancel",
|
||||
"commendation"
|
||||
],
|
||||
"description": "Type of reputation event"
|
||||
},
|
||||
"event_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Date the event occurred"
|
||||
},
|
||||
"agency_id": {
|
||||
"type": "string",
|
||||
"description": "Agency that submitted this event"
|
||||
},
|
||||
"agency_name": {
|
||||
"type": "string",
|
||||
"description": "Name of submitting agency"
|
||||
},
|
||||
"rating": {
|
||||
"type": "number",
|
||||
"minimum": 1,
|
||||
"maximum": 5,
|
||||
"description": "Star rating (for client_rated / supervisor_rated events)"
|
||||
},
|
||||
"role": {
|
||||
"type": "string",
|
||||
"description": "Role worked during this event"
|
||||
},
|
||||
"verified": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "Whether KROW has verified this event"
|
||||
},
|
||||
"notes": {
|
||||
"type": "string",
|
||||
"description": "Optional non-sensitive note"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"worker_id",
|
||||
"worker_name",
|
||||
"event_type",
|
||||
"event_date",
|
||||
"agency_name"
|
||||
]
|
||||
}
|
||||
90
base44/entities/SaleRecord.jsonc
Normal file
90
base44/entities/SaleRecord.jsonc
Normal file
@@ -0,0 +1,90 @@
|
||||
{
|
||||
"name": "SaleRecord",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"invoice_id": {
|
||||
"type": "string",
|
||||
"description": "Linked invoice ID"
|
||||
},
|
||||
"invoice_number": {
|
||||
"type": "string",
|
||||
"description": "Invoice number"
|
||||
},
|
||||
"vendor_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"vendor_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"client_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"event_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"event_date": {
|
||||
"type": "string",
|
||||
"format": "date"
|
||||
},
|
||||
"gross_amount": {
|
||||
"type": "number",
|
||||
"description": "Total invoice amount (revenue)"
|
||||
},
|
||||
"vendor_fee_percentage": {
|
||||
"type": "number",
|
||||
"description": "Platform/network fee %"
|
||||
},
|
||||
"vendor_fee_amount": {
|
||||
"type": "number",
|
||||
"description": "Calculated fee amount"
|
||||
},
|
||||
"net_amount": {
|
||||
"type": "number",
|
||||
"description": "Net after vendor fee"
|
||||
},
|
||||
"payment_status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Unpaid",
|
||||
"Partial",
|
||||
"Paid"
|
||||
],
|
||||
"default": "Unpaid"
|
||||
},
|
||||
"amount_paid": {
|
||||
"type": "number",
|
||||
"default": 0
|
||||
},
|
||||
"balance_due": {
|
||||
"type": "number"
|
||||
},
|
||||
"payment_history": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"payment_date": {
|
||||
"type": "string",
|
||||
"format": "date"
|
||||
},
|
||||
"amount": {
|
||||
"type": "number"
|
||||
},
|
||||
"method": {
|
||||
"type": "string"
|
||||
},
|
||||
"reference": {
|
||||
"type": "string"
|
||||
},
|
||||
"recorded_by": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"invoice_id",
|
||||
"gross_amount"
|
||||
]
|
||||
}
|
||||
285
base44/entities/Scorecard.jsonc
Normal file
285
base44/entities/Scorecard.jsonc
Normal file
@@ -0,0 +1,285 @@
|
||||
{
|
||||
"name": "Scorecard",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"scorecard_number": {
|
||||
"type": "string",
|
||||
"description": "Scorecard Number format SC-#### (auto-generated)",
|
||||
"pattern": "^SC-[0-9]{4}$"
|
||||
},
|
||||
"vendor_id": {
|
||||
"type": "string",
|
||||
"description": "Vendor ID"
|
||||
},
|
||||
"vendor_name": {
|
||||
"type": "string",
|
||||
"description": "Vendor name"
|
||||
},
|
||||
"period_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Monthly",
|
||||
"Quarterly",
|
||||
"Annual",
|
||||
"All Time"
|
||||
],
|
||||
"description": "Reporting period"
|
||||
},
|
||||
"period_start": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Period start date"
|
||||
},
|
||||
"period_end": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Period end date"
|
||||
},
|
||||
"kpis": {
|
||||
"type": "object",
|
||||
"description": "Key Performance Indicators",
|
||||
"properties": {
|
||||
"fill_rate": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"value": {
|
||||
"type": "number"
|
||||
},
|
||||
"target": {
|
||||
"type": "number"
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Exceeds",
|
||||
"Meets",
|
||||
"Below"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"on_time_arrival": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"value": {
|
||||
"type": "number"
|
||||
},
|
||||
"target": {
|
||||
"type": "number"
|
||||
},
|
||||
"status": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"cancellation_rate": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"value": {
|
||||
"type": "number"
|
||||
},
|
||||
"target": {
|
||||
"type": "number"
|
||||
},
|
||||
"status": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"no_show_rate": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"value": {
|
||||
"type": "number"
|
||||
},
|
||||
"target": {
|
||||
"type": "number"
|
||||
},
|
||||
"status": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"average_rating": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"value": {
|
||||
"type": "number"
|
||||
},
|
||||
"target": {
|
||||
"type": "number"
|
||||
},
|
||||
"status": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response_time_hours": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"value": {
|
||||
"type": "number"
|
||||
},
|
||||
"target": {
|
||||
"type": "number"
|
||||
},
|
||||
"status": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"compliance_score": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"value": {
|
||||
"type": "number"
|
||||
},
|
||||
"target": {
|
||||
"type": "number"
|
||||
},
|
||||
"status": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"sla_results": {
|
||||
"type": "object",
|
||||
"description": "SLA Performance Results",
|
||||
"properties": {
|
||||
"orders_received": {
|
||||
"type": "number"
|
||||
},
|
||||
"orders_filled": {
|
||||
"type": "number"
|
||||
},
|
||||
"orders_partially_filled": {
|
||||
"type": "number"
|
||||
},
|
||||
"orders_unfilled": {
|
||||
"type": "number"
|
||||
},
|
||||
"total_shifts": {
|
||||
"type": "number"
|
||||
},
|
||||
"shifts_completed": {
|
||||
"type": "number"
|
||||
},
|
||||
"shifts_cancelled": {
|
||||
"type": "number"
|
||||
},
|
||||
"avg_response_time": {
|
||||
"type": "number"
|
||||
}
|
||||
}
|
||||
},
|
||||
"trends": {
|
||||
"type": "array",
|
||||
"description": "Performance trends over time",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"metric": {
|
||||
"type": "string"
|
||||
},
|
||||
"current_value": {
|
||||
"type": "number"
|
||||
},
|
||||
"previous_value": {
|
||||
"type": "number"
|
||||
},
|
||||
"change_percentage": {
|
||||
"type": "number"
|
||||
},
|
||||
"trend_direction": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Up",
|
||||
"Down",
|
||||
"Stable"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"overall_score": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 100,
|
||||
"description": "Overall performance score (0-100)"
|
||||
},
|
||||
"grade": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"A+",
|
||||
"A",
|
||||
"B+",
|
||||
"B",
|
||||
"C+",
|
||||
"C",
|
||||
"D",
|
||||
"F"
|
||||
],
|
||||
"description": "Performance grade"
|
||||
},
|
||||
"strengths": {
|
||||
"type": "array",
|
||||
"description": "Identified strengths",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"areas_for_improvement": {
|
||||
"type": "array",
|
||||
"description": "Areas needing improvement",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"action_items": {
|
||||
"type": "array",
|
||||
"description": "Recommended action items",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"item": {
|
||||
"type": "string"
|
||||
},
|
||||
"priority": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"High",
|
||||
"Medium",
|
||||
"Low"
|
||||
]
|
||||
},
|
||||
"due_date": {
|
||||
"type": "string",
|
||||
"format": "date"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"reviewed_by": {
|
||||
"type": "string",
|
||||
"description": "Who reviewed this scorecard"
|
||||
},
|
||||
"reviewed_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Review date"
|
||||
},
|
||||
"next_review_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Next scheduled review"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"vendor_id",
|
||||
"period_type",
|
||||
"period_start",
|
||||
"period_end"
|
||||
]
|
||||
}
|
||||
171
base44/entities/Sector.jsonc
Normal file
171
base44/entities/Sector.jsonc
Normal file
@@ -0,0 +1,171 @@
|
||||
{
|
||||
"name": "Sector",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"sector_number": {
|
||||
"type": "string",
|
||||
"description": "Sector Number format SN-#### (auto-generated)",
|
||||
"pattern": "^SN-[0-9]{4}$"
|
||||
},
|
||||
"customer_group": {
|
||||
"type": "string",
|
||||
"description": "Customer group name"
|
||||
},
|
||||
"sector_code": {
|
||||
"type": "string",
|
||||
"description": "Short code identifier"
|
||||
},
|
||||
"sector_name": {
|
||||
"type": "string",
|
||||
"description": "Sector/brand name (e.g., Bon App\u00e9tit, Flik, Eurest)"
|
||||
},
|
||||
"division_code": {
|
||||
"type": "string",
|
||||
"description": "Division code"
|
||||
},
|
||||
"division": {
|
||||
"type": "string",
|
||||
"description": "Division name"
|
||||
},
|
||||
"region_code": {
|
||||
"type": "string",
|
||||
"description": "Region code"
|
||||
},
|
||||
"region": {
|
||||
"type": "string",
|
||||
"description": "Region name"
|
||||
},
|
||||
"district_code": {
|
||||
"type": "string",
|
||||
"description": "District code"
|
||||
},
|
||||
"district": {
|
||||
"type": "string",
|
||||
"description": "District name"
|
||||
},
|
||||
"customer_code": {
|
||||
"type": "string",
|
||||
"description": "Customer code"
|
||||
},
|
||||
"customer": {
|
||||
"type": "string",
|
||||
"description": "Customer name"
|
||||
},
|
||||
"main_contact_address1": {
|
||||
"type": "string",
|
||||
"description": "Main contact address line 1"
|
||||
},
|
||||
"main_contact_address2": {
|
||||
"type": "string",
|
||||
"description": "Main contact address line 2"
|
||||
},
|
||||
"main_contact_city": {
|
||||
"type": "string",
|
||||
"description": "Main contact city"
|
||||
},
|
||||
"main_contact_state": {
|
||||
"type": "string",
|
||||
"description": "Main contact state"
|
||||
},
|
||||
"main_contact_postal_code": {
|
||||
"type": "string",
|
||||
"description": "Main contact postal/ZIP code"
|
||||
},
|
||||
"financial_code": {
|
||||
"type": "string",
|
||||
"description": "Financial code"
|
||||
},
|
||||
"account_manager": {
|
||||
"type": "string",
|
||||
"description": "Account manager name"
|
||||
},
|
||||
"account_manager_department": {
|
||||
"type": "string",
|
||||
"description": "Account manager department"
|
||||
},
|
||||
"division_manager": {
|
||||
"type": "string",
|
||||
"description": "Division manager name"
|
||||
},
|
||||
"division_manager_department": {
|
||||
"type": "string",
|
||||
"description": "Division manager department"
|
||||
},
|
||||
"business_channels": {
|
||||
"type": "array",
|
||||
"description": "Business channels for this sector",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"new_addition": {
|
||||
"type": "string",
|
||||
"description": "New addition flag or info"
|
||||
},
|
||||
"parent_enterprise_id": {
|
||||
"type": "string",
|
||||
"description": "Parent enterprise ID"
|
||||
},
|
||||
"parent_enterprise_name": {
|
||||
"type": "string",
|
||||
"description": "Parent enterprise name"
|
||||
},
|
||||
"sector_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Food Service",
|
||||
"Facilities",
|
||||
"Healthcare",
|
||||
"Education",
|
||||
"Corporate",
|
||||
"Sports & Entertainment"
|
||||
],
|
||||
"description": "Sector business type"
|
||||
},
|
||||
"client_portfolio": {
|
||||
"type": "array",
|
||||
"description": "List of partner/client IDs in this sector",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"sector_policies": {
|
||||
"type": "object",
|
||||
"description": "Sector-specific policies",
|
||||
"properties": {
|
||||
"uniform_requirements": {
|
||||
"type": "string"
|
||||
},
|
||||
"certification_requirements": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"special_training": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"approved_vendors": {
|
||||
"type": "array",
|
||||
"description": "List of approved vendor IDs for this sector",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"is_active": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "Is sector active"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"sector_name",
|
||||
"sector_code",
|
||||
"sector_number"
|
||||
]
|
||||
}
|
||||
93
base44/entities/Shift.jsonc
Normal file
93
base44/entities/Shift.jsonc
Normal file
@@ -0,0 +1,93 @@
|
||||
{
|
||||
"name": "Shift",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"event_id": {
|
||||
"type": "string",
|
||||
"description": "Associated event ID"
|
||||
},
|
||||
"shift_name": {
|
||||
"type": "string",
|
||||
"description": "Name of the shift"
|
||||
},
|
||||
"manager_id": {
|
||||
"type": "string",
|
||||
"description": "Manager staff ID"
|
||||
},
|
||||
"manager_name": {
|
||||
"type": "string",
|
||||
"description": "Manager name"
|
||||
},
|
||||
"location": {
|
||||
"type": "string",
|
||||
"description": "Shift location"
|
||||
},
|
||||
"start_date": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "Shift start date and time"
|
||||
},
|
||||
"end_date": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "Shift end date and time"
|
||||
},
|
||||
"unpaid_break": {
|
||||
"type": "number",
|
||||
"description": "Unpaid break duration in minutes"
|
||||
},
|
||||
"count": {
|
||||
"type": "number",
|
||||
"description": "Number of staff needed"
|
||||
},
|
||||
"assigned": {
|
||||
"type": "number",
|
||||
"description": "Number of staff assigned"
|
||||
},
|
||||
"uniform_type": {
|
||||
"type": "string",
|
||||
"description": "Required uniform type"
|
||||
},
|
||||
"price": {
|
||||
"type": "number",
|
||||
"description": "Price per staff member"
|
||||
},
|
||||
"amount": {
|
||||
"type": "number",
|
||||
"description": "Total amount for shift"
|
||||
},
|
||||
"assigned_staff": {
|
||||
"type": "array",
|
||||
"description": "List of assigned staff",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"staff_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"staff_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"role": {
|
||||
"type": "string"
|
||||
},
|
||||
"department": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"role": {
|
||||
"type": "string",
|
||||
"description": "Role for this shift"
|
||||
},
|
||||
"department": {
|
||||
"type": "string",
|
||||
"description": "Department"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"shift_name",
|
||||
"start_date"
|
||||
]
|
||||
}
|
||||
148
base44/entities/ShiftOutcome.jsonc
Normal file
148
base44/entities/ShiftOutcome.jsonc
Normal file
@@ -0,0 +1,148 @@
|
||||
{
|
||||
"name": "ShiftOutcome",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"event_id": {
|
||||
"type": "string",
|
||||
"description": "Associated event ID"
|
||||
},
|
||||
"event_name": {
|
||||
"type": "string",
|
||||
"description": "Event name for reference"
|
||||
},
|
||||
"event_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Date of the event"
|
||||
},
|
||||
"business_name": {
|
||||
"type": "string",
|
||||
"description": "Client business name"
|
||||
},
|
||||
"hub_location": {
|
||||
"type": "string",
|
||||
"description": "Location where shift occurred"
|
||||
},
|
||||
"event_type": {
|
||||
"type": "string",
|
||||
"description": "Type of event (lunch, dinner, VIP, etc.)"
|
||||
},
|
||||
"expected_covers": {
|
||||
"type": "number",
|
||||
"description": "Expected covers/volume for this event"
|
||||
},
|
||||
"actual_covers": {
|
||||
"type": "number",
|
||||
"description": "Actual covers served"
|
||||
},
|
||||
"staff_requested": {
|
||||
"type": "number",
|
||||
"description": "Staff requested for the event"
|
||||
},
|
||||
"staff_actual": {
|
||||
"type": "number",
|
||||
"description": "Staff who actually showed up"
|
||||
},
|
||||
"no_show_count": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Number of no-shows"
|
||||
},
|
||||
"late_arrival_count": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Number of late arrivals"
|
||||
},
|
||||
"ot_hours_total": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Total overtime hours across all staff"
|
||||
},
|
||||
"client_rating": {
|
||||
"type": "number",
|
||||
"minimum": 1,
|
||||
"maximum": 5,
|
||||
"description": "Client rating after shift (1-5 stars)"
|
||||
},
|
||||
"client_feedback": {
|
||||
"type": "string",
|
||||
"description": "Client written feedback"
|
||||
},
|
||||
"qa_score": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 100,
|
||||
"description": "Internal QA score (0-100)"
|
||||
},
|
||||
"issues_reported": {
|
||||
"type": "array",
|
||||
"description": "Issues reported during or after the shift",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"issue_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"late_food",
|
||||
"understaffed",
|
||||
"slow_service",
|
||||
"no_show",
|
||||
"quality",
|
||||
"communication",
|
||||
"other"
|
||||
]
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"severity": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"low",
|
||||
"medium",
|
||||
"high",
|
||||
"critical"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"prediction_matched": {
|
||||
"type": "boolean",
|
||||
"description": "Did the actual demand match the prediction?"
|
||||
},
|
||||
"predicted_staff": {
|
||||
"type": "number",
|
||||
"description": "How many staff KROW predicted were needed"
|
||||
},
|
||||
"was_overstaffed": {
|
||||
"type": "boolean",
|
||||
"description": "Was the event overstaffed?"
|
||||
},
|
||||
"was_understaffed": {
|
||||
"type": "boolean",
|
||||
"description": "Was the event understaffed?"
|
||||
},
|
||||
"vendor_id": {
|
||||
"type": "string",
|
||||
"description": "Vendor who staffed this event"
|
||||
},
|
||||
"vendor_name": {
|
||||
"type": "string",
|
||||
"description": "Vendor name"
|
||||
},
|
||||
"submitted_by": {
|
||||
"type": "string",
|
||||
"description": "Who submitted this outcome report"
|
||||
},
|
||||
"notes": {
|
||||
"type": "string",
|
||||
"description": "Internal notes about this outcome"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"event_id",
|
||||
"event_name",
|
||||
"event_date"
|
||||
]
|
||||
}
|
||||
101
base44/entities/ShiftProposal.jsonc
Normal file
101
base44/entities/ShiftProposal.jsonc
Normal file
@@ -0,0 +1,101 @@
|
||||
{
|
||||
"name": "ShiftProposal",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"event_id": {
|
||||
"type": "string",
|
||||
"description": "Event/shift being proposed"
|
||||
},
|
||||
"event_name": {
|
||||
"type": "string",
|
||||
"description": "Event name"
|
||||
},
|
||||
"staff_id": {
|
||||
"type": "string",
|
||||
"description": "Worker being proposed to"
|
||||
},
|
||||
"staff_name": {
|
||||
"type": "string",
|
||||
"description": "Worker name"
|
||||
},
|
||||
"vendor_id": {
|
||||
"type": "string",
|
||||
"description": "Vendor making the proposal"
|
||||
},
|
||||
"proposal_status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"PENDING_WORKER_CONFIRMATION",
|
||||
"ACCEPTED",
|
||||
"DECLINED",
|
||||
"EXPIRED",
|
||||
"CANCELLED"
|
||||
],
|
||||
"default": "PENDING_WORKER_CONFIRMATION",
|
||||
"description": "Status of the proposal"
|
||||
},
|
||||
"shift_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Date of shift"
|
||||
},
|
||||
"start_time": {
|
||||
"type": "string",
|
||||
"description": "Shift start time"
|
||||
},
|
||||
"end_time": {
|
||||
"type": "string",
|
||||
"description": "Shift end time"
|
||||
},
|
||||
"location": {
|
||||
"type": "string",
|
||||
"description": "Shift location"
|
||||
},
|
||||
"role": {
|
||||
"type": "string",
|
||||
"description": "Role/position"
|
||||
},
|
||||
"pay_rate": {
|
||||
"type": "number",
|
||||
"description": "Pay rate for shift"
|
||||
},
|
||||
"total_pay": {
|
||||
"type": "number",
|
||||
"description": "Total estimated pay"
|
||||
},
|
||||
"response_deadline": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "Deadline for worker response"
|
||||
},
|
||||
"proposed_at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "When proposal was sent"
|
||||
},
|
||||
"responded_at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "When worker responded"
|
||||
},
|
||||
"decline_reason": {
|
||||
"type": "string",
|
||||
"description": "Reason for declining"
|
||||
},
|
||||
"was_marked_unavailable": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Was worker marked unavailable when proposed"
|
||||
},
|
||||
"notification_sent": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Whether notification was sent"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"event_id",
|
||||
"staff_id",
|
||||
"shift_date"
|
||||
]
|
||||
}
|
||||
56
base44/entities/Site.jsonc
Normal file
56
base44/entities/Site.jsonc
Normal file
@@ -0,0 +1,56 @@
|
||||
{
|
||||
"name": "Site",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"site_name": {
|
||||
"type": "string",
|
||||
"description": "Site name"
|
||||
},
|
||||
"partner_id": {
|
||||
"type": "string",
|
||||
"description": "Partner ID this site belongs to"
|
||||
},
|
||||
"partner_name": {
|
||||
"type": "string",
|
||||
"description": "Partner name"
|
||||
},
|
||||
"address": {
|
||||
"type": "string",
|
||||
"description": "Site address"
|
||||
},
|
||||
"city": {
|
||||
"type": "string",
|
||||
"description": "City"
|
||||
},
|
||||
"state": {
|
||||
"type": "string",
|
||||
"description": "State"
|
||||
},
|
||||
"zip_code": {
|
||||
"type": "string",
|
||||
"description": "ZIP code"
|
||||
},
|
||||
"site_manager": {
|
||||
"type": "string",
|
||||
"description": "Site manager name"
|
||||
},
|
||||
"site_manager_email": {
|
||||
"type": "string",
|
||||
"format": "email",
|
||||
"description": "Site manager email"
|
||||
},
|
||||
"site_manager_phone": {
|
||||
"type": "string",
|
||||
"description": "Site manager phone"
|
||||
},
|
||||
"is_active": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "Is site active"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"site_name",
|
||||
"partner_id"
|
||||
]
|
||||
}
|
||||
259
base44/entities/Staff.jsonc
Normal file
259
base44/entities/Staff.jsonc
Normal file
@@ -0,0 +1,259 @@
|
||||
{
|
||||
"name": "Staff",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"employee_name": {
|
||||
"type": "string",
|
||||
"description": "Full name of the employee"
|
||||
},
|
||||
"vendor_id": {
|
||||
"type": "string",
|
||||
"description": "ID of the vendor this staff belongs to"
|
||||
},
|
||||
"vendor_name": {
|
||||
"type": "string",
|
||||
"description": "Name of the vendor company"
|
||||
},
|
||||
"manager": {
|
||||
"type": "string",
|
||||
"description": "Manager's name"
|
||||
},
|
||||
"contact_number": {
|
||||
"type": "string",
|
||||
"description": "Primary contact number"
|
||||
},
|
||||
"phone": {
|
||||
"type": "string",
|
||||
"description": "Additional phone number"
|
||||
},
|
||||
"email": {
|
||||
"type": "string",
|
||||
"format": "email",
|
||||
"description": "Employee email address"
|
||||
},
|
||||
"department": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Operations",
|
||||
"Sales",
|
||||
"HR",
|
||||
"Finance",
|
||||
"IT",
|
||||
"Marketing",
|
||||
"Customer Service",
|
||||
"Logistics"
|
||||
],
|
||||
"description": "Department"
|
||||
},
|
||||
"hub_location": {
|
||||
"type": "string"
|
||||
},
|
||||
"event_location": {
|
||||
"type": "string"
|
||||
},
|
||||
"track": {
|
||||
"type": "string"
|
||||
},
|
||||
"address": {
|
||||
"type": "string"
|
||||
},
|
||||
"city": {
|
||||
"type": "string"
|
||||
},
|
||||
"position": {
|
||||
"type": "string",
|
||||
"description": "Primary job position/skill"
|
||||
},
|
||||
"position_2": {
|
||||
"type": "string",
|
||||
"description": "Secondary job position/skill"
|
||||
},
|
||||
"initial": {
|
||||
"type": "string"
|
||||
},
|
||||
"profile_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Skilled",
|
||||
"Beginner",
|
||||
"Cross-Trained"
|
||||
]
|
||||
},
|
||||
"employment_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Full Time",
|
||||
"Part Time",
|
||||
"On call",
|
||||
"Weekends",
|
||||
"Specific Days",
|
||||
"Seasonal",
|
||||
"Medical Leave"
|
||||
]
|
||||
},
|
||||
"english": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Fluent",
|
||||
"Intermediate",
|
||||
"Basic",
|
||||
"None"
|
||||
]
|
||||
},
|
||||
"english_required": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"check_in": {
|
||||
"type": "string",
|
||||
"format": "date"
|
||||
},
|
||||
"replaced_by": {
|
||||
"type": "string"
|
||||
},
|
||||
"ro": {
|
||||
"type": "string"
|
||||
},
|
||||
"mon": {
|
||||
"type": "string"
|
||||
},
|
||||
"schedule_days": {
|
||||
"type": "string"
|
||||
},
|
||||
"invoiced": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"action": {
|
||||
"type": "string"
|
||||
},
|
||||
"notes": {
|
||||
"type": "string"
|
||||
},
|
||||
"accounting_comments": {
|
||||
"type": "string"
|
||||
},
|
||||
"pay_rate": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"description": "Employee base pay rate per hour"
|
||||
},
|
||||
"pay_rate_overtime": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"description": "Overtime pay rate per hour (1.5x)"
|
||||
},
|
||||
"pay_rate_double_time": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"description": "Double-time pay rate per hour (2x)"
|
||||
},
|
||||
"pay_rate_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Hourly",
|
||||
"Salary",
|
||||
"1099"
|
||||
],
|
||||
"default": "Hourly"
|
||||
},
|
||||
"pay_rate_effective_date": {
|
||||
"type": "string",
|
||||
"format": "date"
|
||||
},
|
||||
"position_pay_rates": {
|
||||
"type": "array",
|
||||
"description": "Per-position pay rates \u2014 different rates based on the role/position worked",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"position": {
|
||||
"type": "string",
|
||||
"description": "Position/role name"
|
||||
},
|
||||
"pay_rate": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"description": "Base pay for this position"
|
||||
},
|
||||
"pay_rate_overtime": {
|
||||
"type": "number",
|
||||
"minimum": 0
|
||||
},
|
||||
"pay_rate_double_time": {
|
||||
"type": "number",
|
||||
"minimum": 0
|
||||
},
|
||||
"notes": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"rating": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 5
|
||||
},
|
||||
"shift_coverage_percentage": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 100
|
||||
},
|
||||
"cancellation_count": {
|
||||
"type": "number",
|
||||
"minimum": 0
|
||||
},
|
||||
"no_show_count": {
|
||||
"type": "number",
|
||||
"minimum": 0
|
||||
},
|
||||
"total_shifts": {
|
||||
"type": "number",
|
||||
"minimum": 0
|
||||
},
|
||||
"reliability_score": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 100
|
||||
},
|
||||
"background_check_status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"pending",
|
||||
"cleared",
|
||||
"failed",
|
||||
"expired",
|
||||
"not_required"
|
||||
],
|
||||
"default": "pending"
|
||||
},
|
||||
"background_check_date": {
|
||||
"type": "string",
|
||||
"format": "date"
|
||||
},
|
||||
"certifications": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"issued_date": {
|
||||
"type": "string",
|
||||
"format": "date"
|
||||
},
|
||||
"expiry_date": {
|
||||
"type": "string",
|
||||
"format": "date"
|
||||
},
|
||||
"issuer": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"employee_name"
|
||||
]
|
||||
}
|
||||
124
base44/entities/Task.jsonc
Normal file
124
base44/entities/Task.jsonc
Normal file
@@ -0,0 +1,124 @@
|
||||
{
|
||||
"name": "Task",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"task_name": {
|
||||
"type": "string",
|
||||
"description": "Name of the task"
|
||||
},
|
||||
"description": {
|
||||
"type": "string",
|
||||
"description": "Task description"
|
||||
},
|
||||
"team_id": {
|
||||
"type": "string",
|
||||
"description": "ID of the team this task belongs to"
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"pending",
|
||||
"in_progress",
|
||||
"on_hold",
|
||||
"completed"
|
||||
],
|
||||
"default": "pending",
|
||||
"description": "Current status of the task"
|
||||
},
|
||||
"priority": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"low",
|
||||
"normal",
|
||||
"high"
|
||||
],
|
||||
"default": "normal",
|
||||
"description": "Task priority"
|
||||
},
|
||||
"due_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Due date"
|
||||
},
|
||||
"progress": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 100,
|
||||
"default": 0,
|
||||
"description": "Task completion percentage"
|
||||
},
|
||||
"assigned_members": {
|
||||
"type": "array",
|
||||
"description": "Team members assigned to this task",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"member_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"member_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"avatar_url": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"owner_id": {
|
||||
"type": "string",
|
||||
"description": "Task owner ID"
|
||||
},
|
||||
"owner_name": {
|
||||
"type": "string",
|
||||
"description": "Task owner name"
|
||||
},
|
||||
"files": {
|
||||
"type": "array",
|
||||
"description": "Attached files",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"file_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"file_url": {
|
||||
"type": "string"
|
||||
},
|
||||
"file_size": {
|
||||
"type": "number"
|
||||
},
|
||||
"uploaded_by": {
|
||||
"type": "string"
|
||||
},
|
||||
"uploaded_at": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"attachment_count": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Number of attachments"
|
||||
},
|
||||
"comment_count": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Number of comments"
|
||||
},
|
||||
"notes": {
|
||||
"type": "string",
|
||||
"description": "Additional notes"
|
||||
},
|
||||
"order_index": {
|
||||
"type": "number",
|
||||
"description": "Order within the column"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"task_name",
|
||||
"team_id"
|
||||
]
|
||||
}
|
||||
36
base44/entities/TaskComment.jsonc
Normal file
36
base44/entities/TaskComment.jsonc
Normal file
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"name": "TaskComment",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"task_id": {
|
||||
"type": "string",
|
||||
"description": "ID of the task this comment belongs to"
|
||||
},
|
||||
"author_id": {
|
||||
"type": "string",
|
||||
"description": "ID of the comment author"
|
||||
},
|
||||
"author_name": {
|
||||
"type": "string",
|
||||
"description": "Name of the comment author"
|
||||
},
|
||||
"author_avatar": {
|
||||
"type": "string",
|
||||
"description": "Avatar URL of the author"
|
||||
},
|
||||
"comment": {
|
||||
"type": "string",
|
||||
"description": "Comment text"
|
||||
},
|
||||
"is_system": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Is this a system message (e.g., status change)"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"task_id",
|
||||
"author_name",
|
||||
"comment"
|
||||
]
|
||||
}
|
||||
146
base44/entities/Team.jsonc
Normal file
146
base44/entities/Team.jsonc
Normal file
@@ -0,0 +1,146 @@
|
||||
{
|
||||
"name": "Team",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"team_name": {
|
||||
"type": "string",
|
||||
"description": "Name of the team"
|
||||
},
|
||||
"owner_id": {
|
||||
"type": "string",
|
||||
"description": "ID of the team owner (user)"
|
||||
},
|
||||
"owner_name": {
|
||||
"type": "string",
|
||||
"description": "Name of the team owner"
|
||||
},
|
||||
"owner_role": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"admin",
|
||||
"procurement",
|
||||
"operator",
|
||||
"sector",
|
||||
"client",
|
||||
"vendor",
|
||||
"workforce"
|
||||
],
|
||||
"description": "Role of the team owner"
|
||||
},
|
||||
"company_logo": {
|
||||
"type": "string",
|
||||
"description": "URL to company logo"
|
||||
},
|
||||
"full_name": {
|
||||
"type": "string",
|
||||
"description": "Full name of primary contact"
|
||||
},
|
||||
"email": {
|
||||
"type": "string",
|
||||
"format": "email",
|
||||
"description": "Contact email"
|
||||
},
|
||||
"phone": {
|
||||
"type": "string",
|
||||
"description": "Contact phone"
|
||||
},
|
||||
"address": {
|
||||
"type": "string",
|
||||
"description": "Company address"
|
||||
},
|
||||
"city": {
|
||||
"type": "string",
|
||||
"description": "City"
|
||||
},
|
||||
"zip_code": {
|
||||
"type": "string",
|
||||
"description": "ZIP code"
|
||||
},
|
||||
"vendor_id": {
|
||||
"type": "string",
|
||||
"description": "Vendor ID if applicable"
|
||||
},
|
||||
"departments": {
|
||||
"type": "array",
|
||||
"description": "List of departments available for this team",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"total_members": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Total team members"
|
||||
},
|
||||
"active_members": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Active team members"
|
||||
},
|
||||
"total_hubs": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Total hubs"
|
||||
},
|
||||
"favorite_staff": {
|
||||
"type": "array",
|
||||
"description": "Array of favorite staff IDs",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"staff_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"staff_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"position": {
|
||||
"type": "string"
|
||||
},
|
||||
"added_date": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"blocked_staff": {
|
||||
"type": "array",
|
||||
"description": "Array of blocked staff IDs",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"staff_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"staff_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"reason": {
|
||||
"type": "string"
|
||||
},
|
||||
"blocked_date": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"favorite_staff_count": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Number of favorite staff"
|
||||
},
|
||||
"blocked_staff_count": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Number of blocked staff"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"team_name",
|
||||
"owner_id",
|
||||
"owner_name",
|
||||
"owner_role"
|
||||
]
|
||||
}
|
||||
69
base44/entities/TeamHub.jsonc
Normal file
69
base44/entities/TeamHub.jsonc
Normal file
@@ -0,0 +1,69 @@
|
||||
{
|
||||
"name": "TeamHub",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"team_id": {
|
||||
"type": "string",
|
||||
"description": "ID of the team"
|
||||
},
|
||||
"hub_name": {
|
||||
"type": "string",
|
||||
"description": "Name of the hub/location (e.g., BVG 300)"
|
||||
},
|
||||
"address": {
|
||||
"type": "string",
|
||||
"description": "Hub address (e.g., 300 Bayview Dr, Mountain View, CA 94043)"
|
||||
},
|
||||
"city": {
|
||||
"type": "string",
|
||||
"description": "City"
|
||||
},
|
||||
"state": {
|
||||
"type": "string",
|
||||
"description": "State"
|
||||
},
|
||||
"zip_code": {
|
||||
"type": "string",
|
||||
"description": "ZIP code"
|
||||
},
|
||||
"manager_name": {
|
||||
"type": "string",
|
||||
"description": "Hub manager name"
|
||||
},
|
||||
"manager_email": {
|
||||
"type": "string",
|
||||
"format": "email",
|
||||
"description": "Hub manager email"
|
||||
},
|
||||
"departments": {
|
||||
"type": "array",
|
||||
"description": "Departments within this hub",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"department_name": {
|
||||
"type": "string",
|
||||
"description": "Department name (e.g., Catering FOH, Catering BOH)"
|
||||
},
|
||||
"cost_center": {
|
||||
"type": "string",
|
||||
"description": "Cost center code"
|
||||
},
|
||||
"manager_name": {
|
||||
"type": "string",
|
||||
"description": "Department manager"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"is_active": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "Whether the hub is active"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"team_id",
|
||||
"hub_name"
|
||||
]
|
||||
}
|
||||
66
base44/entities/TeamMember.jsonc
Normal file
66
base44/entities/TeamMember.jsonc
Normal file
@@ -0,0 +1,66 @@
|
||||
{
|
||||
"name": "TeamMember",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"team_id": {
|
||||
"type": "string",
|
||||
"description": "ID of the team this member belongs to"
|
||||
},
|
||||
"member_name": {
|
||||
"type": "string",
|
||||
"description": "Name of the team member"
|
||||
},
|
||||
"email": {
|
||||
"type": "string",
|
||||
"format": "email",
|
||||
"description": "Member email"
|
||||
},
|
||||
"phone": {
|
||||
"type": "string",
|
||||
"description": "Member phone"
|
||||
},
|
||||
"title": {
|
||||
"type": "string",
|
||||
"description": "Job title"
|
||||
},
|
||||
"role": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"admin",
|
||||
"manager",
|
||||
"member",
|
||||
"viewer"
|
||||
],
|
||||
"description": "Role in the team"
|
||||
},
|
||||
"department": {
|
||||
"type": "string",
|
||||
"description": "Department"
|
||||
},
|
||||
"hub": {
|
||||
"type": "string",
|
||||
"description": "Assigned hub"
|
||||
},
|
||||
"is_active": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "Whether the member is active"
|
||||
},
|
||||
"permissions": {
|
||||
"type": "array",
|
||||
"description": "Array of permissions",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"avatar_url": {
|
||||
"type": "string",
|
||||
"description": "URL to member avatar"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"team_id",
|
||||
"member_name",
|
||||
"email"
|
||||
]
|
||||
}
|
||||
72
base44/entities/TeamMemberInvite.jsonc
Normal file
72
base44/entities/TeamMemberInvite.jsonc
Normal file
@@ -0,0 +1,72 @@
|
||||
{
|
||||
"name": "TeamMemberInvite",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"team_id": {
|
||||
"type": "string",
|
||||
"description": "ID of the team"
|
||||
},
|
||||
"team_name": {
|
||||
"type": "string",
|
||||
"description": "Name of the team"
|
||||
},
|
||||
"invite_code": {
|
||||
"type": "string",
|
||||
"description": "Unique invite code"
|
||||
},
|
||||
"email": {
|
||||
"type": "string",
|
||||
"format": "email",
|
||||
"description": "Email of invited person"
|
||||
},
|
||||
"full_name": {
|
||||
"type": "string",
|
||||
"description": "Name of invited person"
|
||||
},
|
||||
"role": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"admin",
|
||||
"manager",
|
||||
"member",
|
||||
"viewer"
|
||||
],
|
||||
"description": "Proposed role"
|
||||
},
|
||||
"invited_by": {
|
||||
"type": "string",
|
||||
"description": "Who sent the invite"
|
||||
},
|
||||
"invite_status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"pending",
|
||||
"accepted",
|
||||
"expired",
|
||||
"cancelled"
|
||||
],
|
||||
"default": "pending",
|
||||
"description": "Invitation status"
|
||||
},
|
||||
"invited_date": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "When invite was sent"
|
||||
},
|
||||
"accepted_date": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "When invite was accepted"
|
||||
},
|
||||
"expires_at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "When invite expires"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"team_id",
|
||||
"email",
|
||||
"invited_by"
|
||||
]
|
||||
}
|
||||
149
base44/entities/Training.jsonc
Normal file
149
base44/entities/Training.jsonc
Normal file
@@ -0,0 +1,149 @@
|
||||
{
|
||||
"name": "Training",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"training_id": {
|
||||
"type": "string",
|
||||
"description": "Training record ID"
|
||||
},
|
||||
"training_name": {
|
||||
"type": "string",
|
||||
"description": "Name of the training program"
|
||||
},
|
||||
"training_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"food_safety",
|
||||
"alcohol_service",
|
||||
"customer_service",
|
||||
"safety",
|
||||
"onboarding",
|
||||
"culinary_skills",
|
||||
"equipment_operation",
|
||||
"compliance",
|
||||
"leadership",
|
||||
"other"
|
||||
],
|
||||
"description": "Type of training"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"workforce_id": {
|
||||
"type": "string",
|
||||
"description": "Worker enrolled in this training"
|
||||
},
|
||||
"workforce_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"staff_id": {
|
||||
"type": "string",
|
||||
"description": "Staff record ID (if different from workforce)"
|
||||
},
|
||||
"vendor_id": {
|
||||
"type": "string",
|
||||
"description": "Vendor sponsoring this training"
|
||||
},
|
||||
"vendor_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"client_id": {
|
||||
"type": "string",
|
||||
"description": "Client-specific training (if applicable)"
|
||||
},
|
||||
"client_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"instructor_name": {
|
||||
"type": "string",
|
||||
"description": "Instructor or training provider"
|
||||
},
|
||||
"training_format": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"in_person",
|
||||
"online",
|
||||
"hybrid",
|
||||
"on_the_job",
|
||||
"video"
|
||||
],
|
||||
"default": "online"
|
||||
},
|
||||
"duration_hours": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"description": "Total training duration in hours"
|
||||
},
|
||||
"enrollment_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "When worker was enrolled"
|
||||
},
|
||||
"start_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Training start date"
|
||||
},
|
||||
"completion_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Date training was completed"
|
||||
},
|
||||
"expiry_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "When this training expires and needs renewal"
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"not_started",
|
||||
"enrolled",
|
||||
"in_progress",
|
||||
"completed",
|
||||
"failed",
|
||||
"expired",
|
||||
"cancelled"
|
||||
],
|
||||
"default": "not_started",
|
||||
"description": "Training status"
|
||||
},
|
||||
"score": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 100,
|
||||
"description": "Score achieved (if graded)"
|
||||
},
|
||||
"passing_score": {
|
||||
"type": "number",
|
||||
"default": 70,
|
||||
"description": "Minimum passing score"
|
||||
},
|
||||
"certification_earned": {
|
||||
"type": "string",
|
||||
"description": "Name of certification earned upon completion"
|
||||
},
|
||||
"certification_id": {
|
||||
"type": "string",
|
||||
"description": "Reference to Certification entity if one was issued"
|
||||
},
|
||||
"cost": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"description": "Cost of this training"
|
||||
},
|
||||
"billable_to_client": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"notes": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"training_name",
|
||||
"training_type",
|
||||
"workforce_id",
|
||||
"status"
|
||||
]
|
||||
}
|
||||
139
base44/entities/Transportation.jsonc
Normal file
139
base44/entities/Transportation.jsonc
Normal file
@@ -0,0 +1,139 @@
|
||||
{
|
||||
"name": "Transportation",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"transport_id": {
|
||||
"type": "string",
|
||||
"description": "Transport record ID"
|
||||
},
|
||||
"transport_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"shuttle",
|
||||
"van",
|
||||
"carpool",
|
||||
"bus",
|
||||
"public_transit",
|
||||
"rideshare",
|
||||
"personal_vehicle",
|
||||
"walking"
|
||||
],
|
||||
"description": "Mode of transportation"
|
||||
},
|
||||
"shift_id": {
|
||||
"type": "string",
|
||||
"description": "Shift this transport serves"
|
||||
},
|
||||
"event_id": {
|
||||
"type": "string",
|
||||
"description": "Event this transport serves"
|
||||
},
|
||||
"workforce_id": {
|
||||
"type": "string",
|
||||
"description": "Worker being transported (if individual)"
|
||||
},
|
||||
"workforce_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"vendor_id": {
|
||||
"type": "string",
|
||||
"description": "Vendor providing/arranging transport"
|
||||
},
|
||||
"vendor_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"pickup_location": {
|
||||
"type": "string",
|
||||
"description": "Pickup address or landmark"
|
||||
},
|
||||
"dropoff_location": {
|
||||
"type": "string",
|
||||
"description": "Dropoff location (typically the site/client location)"
|
||||
},
|
||||
"site_id": {
|
||||
"type": "string",
|
||||
"description": "Destination Site ID"
|
||||
},
|
||||
"client_id": {
|
||||
"type": "string",
|
||||
"description": "Client/Business ID at the destination"
|
||||
},
|
||||
"client_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"scheduled_pickup_time": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "Scheduled pickup time"
|
||||
},
|
||||
"scheduled_dropoff_time": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "Scheduled dropoff time"
|
||||
},
|
||||
"actual_pickup_time": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
"actual_dropoff_time": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
"driver_name": {
|
||||
"type": "string",
|
||||
"description": "Driver name (if applicable)"
|
||||
},
|
||||
"driver_phone": {
|
||||
"type": "string"
|
||||
},
|
||||
"vehicle_identifier": {
|
||||
"type": "string",
|
||||
"description": "License plate or vehicle ID"
|
||||
},
|
||||
"capacity": {
|
||||
"type": "number",
|
||||
"description": "Number of workers this transport can carry"
|
||||
},
|
||||
"passenger_count": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Actual number of workers transported"
|
||||
},
|
||||
"cost_per_trip": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"description": "Cost per trip"
|
||||
},
|
||||
"billable_to_client": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Whether transport cost is billed to client"
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"scheduled",
|
||||
"in_progress",
|
||||
"completed",
|
||||
"cancelled",
|
||||
"no_show",
|
||||
"delayed"
|
||||
],
|
||||
"default": "scheduled",
|
||||
"description": "Transport status"
|
||||
},
|
||||
"distance_miles": {
|
||||
"type": "number",
|
||||
"description": "Distance in miles"
|
||||
},
|
||||
"notes": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"transport_type",
|
||||
"pickup_location",
|
||||
"dropoff_location",
|
||||
"status"
|
||||
]
|
||||
}
|
||||
185
base44/entities/User.jsonc
Normal file
185
base44/entities/User.jsonc
Normal file
@@ -0,0 +1,185 @@
|
||||
{
|
||||
"name": "User",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"full_name": {
|
||||
"type": "string",
|
||||
"description": "Full name of the user"
|
||||
},
|
||||
"user_role": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"admin",
|
||||
"procurement",
|
||||
"operator",
|
||||
"sector",
|
||||
"client",
|
||||
"vendor",
|
||||
"workforce"
|
||||
],
|
||||
"description": "User's role in the system"
|
||||
},
|
||||
"company_name": {
|
||||
"type": "string",
|
||||
"description": "Company or organization name"
|
||||
},
|
||||
"profile_picture": {
|
||||
"type": "string",
|
||||
"description": "URL to profile picture"
|
||||
},
|
||||
"phone": {
|
||||
"type": "string",
|
||||
"description": "Phone number"
|
||||
},
|
||||
"address": {
|
||||
"type": "string",
|
||||
"description": "Address"
|
||||
},
|
||||
"preferred_vendor_id": {
|
||||
"type": "string",
|
||||
"description": "ID of the client's preferred/default vendor"
|
||||
},
|
||||
"preferred_vendor_name": {
|
||||
"type": "string",
|
||||
"description": "Name of the client's preferred vendor"
|
||||
},
|
||||
"backup_vendor_ids": {
|
||||
"type": "array",
|
||||
"description": "List of backup vendor IDs",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"dashboard_layout": {
|
||||
"type": "object",
|
||||
"description": "User's customized dashboard layout preferences (legacy, kept for backward compatibility)",
|
||||
"properties": {
|
||||
"widgets": {
|
||||
"type": "array",
|
||||
"description": "Ordered list of visible widgets",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"hidden_widgets": {
|
||||
"type": "array",
|
||||
"description": "List of hidden widgets",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"layout_version": {
|
||||
"type": "string",
|
||||
"description": "Layout version for migration"
|
||||
}
|
||||
}
|
||||
},
|
||||
"dashboard_layout_client": {
|
||||
"type": "object",
|
||||
"description": "Client dashboard layout",
|
||||
"properties": {
|
||||
"widgets": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"hidden_widgets": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"layout_version": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"dashboard_layout_vendor": {
|
||||
"type": "object",
|
||||
"description": "Vendor dashboard layout",
|
||||
"properties": {
|
||||
"widgets": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"hidden_widgets": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"layout_version": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"dashboard_layout_operator": {
|
||||
"type": "object",
|
||||
"description": "Operator dashboard layout",
|
||||
"properties": {
|
||||
"widgets": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"hidden_widgets": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"layout_version": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"dashboard_layout_workforce": {
|
||||
"type": "object",
|
||||
"description": "Workforce dashboard layout",
|
||||
"properties": {
|
||||
"widgets": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"hidden_widgets": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"layout_version": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"preferences": {
|
||||
"type": "object",
|
||||
"description": "User preferences and settings",
|
||||
"properties": {
|
||||
"theme": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"light",
|
||||
"dark"
|
||||
],
|
||||
"default": "light"
|
||||
},
|
||||
"notifications_enabled": {
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"email_notifications": {
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": []
|
||||
}
|
||||
217
base44/entities/Vendor.jsonc
Normal file
217
base44/entities/Vendor.jsonc
Normal file
@@ -0,0 +1,217 @@
|
||||
{
|
||||
"name": "Vendor",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"vendor_number": {
|
||||
"type": "string",
|
||||
"description": "Vendor Number format VN-#### (auto-generated)",
|
||||
"pattern": "^VN-[0-9]{4}$"
|
||||
},
|
||||
"legal_name": {
|
||||
"type": "string",
|
||||
"description": "Legal business name"
|
||||
},
|
||||
"doing_business_as": {
|
||||
"type": "string",
|
||||
"description": "DBA / Trade name"
|
||||
},
|
||||
"region": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"National",
|
||||
"Bay Area",
|
||||
"Southern California",
|
||||
"Northern California",
|
||||
"West",
|
||||
"East",
|
||||
"Midwest",
|
||||
"South"
|
||||
],
|
||||
"description": "Geographic region vendor operates in"
|
||||
},
|
||||
"state": {
|
||||
"type": "string",
|
||||
"description": "Primary state (or 'Multiple' for multi-state)"
|
||||
},
|
||||
"city": {
|
||||
"type": "string",
|
||||
"description": "Primary city"
|
||||
},
|
||||
"service_specialty": {
|
||||
"type": "string",
|
||||
"description": "Service specialty (e.g., Event Staffing, Full Service Events, On-Demand Gig Platform)"
|
||||
},
|
||||
"workforce_count": {
|
||||
"type": "number",
|
||||
"description": "Total workforce/staff count available"
|
||||
},
|
||||
"platform_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Full Platform",
|
||||
"Building platform (KROW)",
|
||||
"Partial Tech",
|
||||
"Traditional"
|
||||
],
|
||||
"description": "Technology/platform integration level"
|
||||
},
|
||||
"tax_id": {
|
||||
"type": "string",
|
||||
"description": "Federal Tax ID / EIN"
|
||||
},
|
||||
"business_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Corporation",
|
||||
"LLC",
|
||||
"Partnership",
|
||||
"Sole Proprietorship"
|
||||
],
|
||||
"description": "Business entity type"
|
||||
},
|
||||
"primary_contact_name": {
|
||||
"type": "string",
|
||||
"description": "Primary contact person"
|
||||
},
|
||||
"primary_contact_email": {
|
||||
"type": "string",
|
||||
"format": "email",
|
||||
"description": "Primary contact email"
|
||||
},
|
||||
"primary_contact_phone": {
|
||||
"type": "string",
|
||||
"description": "Primary contact phone"
|
||||
},
|
||||
"billing_address": {
|
||||
"type": "string",
|
||||
"description": "Billing address"
|
||||
},
|
||||
"service_address": {
|
||||
"type": "string",
|
||||
"description": "Service/office address"
|
||||
},
|
||||
"coverage_regions": {
|
||||
"type": "array",
|
||||
"description": "Geographic regions vendor can service",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"eligible_roles": {
|
||||
"type": "array",
|
||||
"description": "Roles/positions vendor can provide",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"insurance_certificate": {
|
||||
"type": "string",
|
||||
"description": "URL to insurance certificate"
|
||||
},
|
||||
"insurance_expiry": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Insurance expiration date"
|
||||
},
|
||||
"w9_document": {
|
||||
"type": "string",
|
||||
"description": "URL to W9 form"
|
||||
},
|
||||
"coi_document": {
|
||||
"type": "string",
|
||||
"description": "URL to Certificate of Insurance"
|
||||
},
|
||||
"compliance_package_id": {
|
||||
"type": "string",
|
||||
"description": "Reference to compliance package"
|
||||
},
|
||||
"performance_scorecard_id": {
|
||||
"type": "string",
|
||||
"description": "Reference to performance scorecard"
|
||||
},
|
||||
"performance_requirements": {
|
||||
"type": "array",
|
||||
"description": "Customized KPIs and service standards the vendor must meet",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"metric": {
|
||||
"type": "string"
|
||||
},
|
||||
"target": {
|
||||
"type": "string"
|
||||
},
|
||||
"operator": {
|
||||
"type": "string"
|
||||
},
|
||||
"unit": {
|
||||
"type": "string"
|
||||
},
|
||||
"enabled": {
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"compliance_requirements": {
|
||||
"type": "array",
|
||||
"description": "Customized compliance and attestation requirements the vendor must acknowledge",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"title": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"required": {
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"vendor_fee_percentage": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 100,
|
||||
"description": "Vendor admin fee percentage set by procurement"
|
||||
},
|
||||
"approval_status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"pending",
|
||||
"approved",
|
||||
"suspended",
|
||||
"terminated"
|
||||
],
|
||||
"default": "pending",
|
||||
"description": "Vendor approval status"
|
||||
},
|
||||
"approved_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Date vendor was approved"
|
||||
},
|
||||
"approved_by": {
|
||||
"type": "string",
|
||||
"description": "User who approved vendor"
|
||||
},
|
||||
"is_active": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "Is vendor currently active"
|
||||
},
|
||||
"notes": {
|
||||
"type": "string",
|
||||
"description": "Internal notes about vendor"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"legal_name",
|
||||
"vendor_number",
|
||||
"primary_contact_email"
|
||||
]
|
||||
}
|
||||
31
base44/entities/VendorDefaultSettings.jsonc
Normal file
31
base44/entities/VendorDefaultSettings.jsonc
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"name": "VendorDefaultSettings",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"vendor_name": {
|
||||
"type": "string",
|
||||
"description": "Name of the vendor"
|
||||
},
|
||||
"default_markup_percentage": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 100,
|
||||
"description": "Default markup percentage for this vendor"
|
||||
},
|
||||
"default_vendor_fee_percentage": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 100,
|
||||
"description": "Default vendor fee percentage for this vendor"
|
||||
},
|
||||
"notes": {
|
||||
"type": "string",
|
||||
"description": "Additional notes about vendor defaults"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"vendor_name",
|
||||
"default_markup_percentage",
|
||||
"default_vendor_fee_percentage"
|
||||
]
|
||||
}
|
||||
147
base44/entities/VendorDocumentReview.jsonc
Normal file
147
base44/entities/VendorDocumentReview.jsonc
Normal file
@@ -0,0 +1,147 @@
|
||||
{
|
||||
"name": "VendorDocumentReview",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"vendor_id": {
|
||||
"type": "string",
|
||||
"description": "Vendor ID"
|
||||
},
|
||||
"vendor_name": {
|
||||
"type": "string",
|
||||
"description": "Vendor name"
|
||||
},
|
||||
"document_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Contract",
|
||||
"NDA",
|
||||
"W9",
|
||||
"COI",
|
||||
"Insurance",
|
||||
"Service Agreement",
|
||||
"Other"
|
||||
],
|
||||
"description": "Type of document being reviewed"
|
||||
},
|
||||
"document_url": {
|
||||
"type": "string",
|
||||
"description": "URL to the document PDF"
|
||||
},
|
||||
"document_name": {
|
||||
"type": "string",
|
||||
"description": "Name of the document"
|
||||
},
|
||||
"review_notes": {
|
||||
"type": "string",
|
||||
"description": "Notes taken by vendor during review"
|
||||
},
|
||||
"annotations": {
|
||||
"type": "array",
|
||||
"description": "Document annotations (highlights, comments, drawings)",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"highlight",
|
||||
"comment",
|
||||
"question",
|
||||
"emoji",
|
||||
"signature"
|
||||
]
|
||||
},
|
||||
"page_number": {
|
||||
"type": "number"
|
||||
},
|
||||
"selected_text": {
|
||||
"type": "string"
|
||||
},
|
||||
"comment": {
|
||||
"type": "string"
|
||||
},
|
||||
"emoji": {
|
||||
"type": "string"
|
||||
},
|
||||
"color": {
|
||||
"type": "string"
|
||||
},
|
||||
"position": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"x": {
|
||||
"type": "number"
|
||||
},
|
||||
"y": {
|
||||
"type": "number"
|
||||
}
|
||||
}
|
||||
},
|
||||
"created_date": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"questions": {
|
||||
"type": "array",
|
||||
"description": "Questions or concerns about the document",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"question": {
|
||||
"type": "string"
|
||||
},
|
||||
"page_number": {
|
||||
"type": "number"
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"open",
|
||||
"answered",
|
||||
"resolved"
|
||||
]
|
||||
},
|
||||
"answer": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"reviewed": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Has vendor reviewed this document"
|
||||
},
|
||||
"reviewed_date": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "When vendor marked as reviewed"
|
||||
},
|
||||
"acknowledged": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Has vendor acknowledged/accepted the document"
|
||||
},
|
||||
"acknowledged_date": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "When vendor acknowledged the document"
|
||||
},
|
||||
"time_spent_minutes": {
|
||||
"type": "number",
|
||||
"description": "Total time spent reviewing (in minutes)"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"vendor_name",
|
||||
"document_type",
|
||||
"document_url",
|
||||
"document_name"
|
||||
]
|
||||
}
|
||||
112
base44/entities/VendorInvite.jsonc
Normal file
112
base44/entities/VendorInvite.jsonc
Normal file
@@ -0,0 +1,112 @@
|
||||
{
|
||||
"name": "VendorInvite",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"invite_code": {
|
||||
"type": "string",
|
||||
"description": "Unique invite code (e.g., INV-XXXX)"
|
||||
},
|
||||
"company_name": {
|
||||
"type": "string",
|
||||
"description": "Vendor company name"
|
||||
},
|
||||
"primary_contact_name": {
|
||||
"type": "string",
|
||||
"description": "Point of contact name"
|
||||
},
|
||||
"primary_contact_email": {
|
||||
"type": "string",
|
||||
"format": "email",
|
||||
"description": "Point of contact email"
|
||||
},
|
||||
"vendor_admin_fee": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 100,
|
||||
"description": "Vendor admin fee percentage set by procurement"
|
||||
},
|
||||
"performance_requirements": {
|
||||
"type": "array",
|
||||
"description": "Customized KPIs and service standards the vendor must meet",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"metric": {
|
||||
"type": "string"
|
||||
},
|
||||
"target": {
|
||||
"type": "string"
|
||||
},
|
||||
"operator": {
|
||||
"type": "string"
|
||||
},
|
||||
"unit": {
|
||||
"type": "string"
|
||||
},
|
||||
"enabled": {
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"compliance_requirements": {
|
||||
"type": "array",
|
||||
"description": "Customized compliance and attestation requirements the vendor must acknowledge",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"title": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"required": {
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"invited_by": {
|
||||
"type": "string",
|
||||
"description": "Email of procurement admin who sent invite"
|
||||
},
|
||||
"invite_status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"pending",
|
||||
"accepted",
|
||||
"completed",
|
||||
"expired"
|
||||
],
|
||||
"default": "pending",
|
||||
"description": "Status of the invite"
|
||||
},
|
||||
"invite_sent_date": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "When the invite was sent"
|
||||
},
|
||||
"invite_accepted_date": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "When vendor accepted/started onboarding"
|
||||
},
|
||||
"vendor_id": {
|
||||
"type": "string",
|
||||
"description": "Vendor ID once they complete onboarding"
|
||||
},
|
||||
"notes": {
|
||||
"type": "string",
|
||||
"description": "Internal notes about this invite"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"company_name",
|
||||
"primary_contact_email",
|
||||
"vendor_admin_fee",
|
||||
"invited_by"
|
||||
]
|
||||
}
|
||||
119
base44/entities/VendorNetworkApproval.jsonc
Normal file
119
base44/entities/VendorNetworkApproval.jsonc
Normal file
@@ -0,0 +1,119 @@
|
||||
{
|
||||
"name": "VendorNetworkApproval",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"vendor_id": {
|
||||
"type": "string",
|
||||
"description": "ID of the approved vendor"
|
||||
},
|
||||
"vendor_name": {
|
||||
"type": "string",
|
||||
"description": "Name of the vendor"
|
||||
},
|
||||
"enterprise_network": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Compass",
|
||||
"Aramark",
|
||||
"Sodexo",
|
||||
"Foodbuy",
|
||||
"Bon App\u00e9tit",
|
||||
"Eurest"
|
||||
],
|
||||
"description": "Enterprise network vendor is approved for"
|
||||
},
|
||||
"approval_status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"pending",
|
||||
"approved",
|
||||
"rejected",
|
||||
"suspended"
|
||||
],
|
||||
"default": "pending",
|
||||
"description": "Current approval status"
|
||||
},
|
||||
"approved_by": {
|
||||
"type": "string",
|
||||
"description": "Procurement manager who approved"
|
||||
},
|
||||
"approved_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Date of approval"
|
||||
},
|
||||
"rate_book_id": {
|
||||
"type": "string",
|
||||
"description": "Associated rate book ID for this network"
|
||||
},
|
||||
"regions_approved": {
|
||||
"type": "array",
|
||||
"description": "Geographic regions vendor is approved to serve",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"categories_approved": {
|
||||
"type": "array",
|
||||
"description": "Service categories vendor is approved for",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"compliance_documents": {
|
||||
"type": "array",
|
||||
"description": "Required compliance documents",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"document_type": {
|
||||
"type": "string"
|
||||
},
|
||||
"document_url": {
|
||||
"type": "string"
|
||||
},
|
||||
"verified": {
|
||||
"type": "boolean"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"restrictions": {
|
||||
"type": "object",
|
||||
"description": "Any restrictions on vendor's approved status",
|
||||
"properties": {
|
||||
"max_order_size": {
|
||||
"type": "number"
|
||||
},
|
||||
"max_concurrent_events": {
|
||||
"type": "number"
|
||||
},
|
||||
"excluded_clients": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"valid_from": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Approval start date"
|
||||
},
|
||||
"valid_until": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Approval expiration date"
|
||||
},
|
||||
"notes": {
|
||||
"type": "string",
|
||||
"description": "Additional notes about approval"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"vendor_name",
|
||||
"enterprise_network",
|
||||
"approval_status"
|
||||
]
|
||||
}
|
||||
40
base44/entities/VendorPartnerLink.jsonc
Normal file
40
base44/entities/VendorPartnerLink.jsonc
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"name": "VendorPartnerLink",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"vendor_id": {
|
||||
"type": "string",
|
||||
"description": "Vendor ID"
|
||||
},
|
||||
"vendor_name": {
|
||||
"type": "string",
|
||||
"description": "Vendor name"
|
||||
},
|
||||
"partner_id": {
|
||||
"type": "string",
|
||||
"description": "Partner ID"
|
||||
},
|
||||
"partner_name": {
|
||||
"type": "string",
|
||||
"description": "Partner name"
|
||||
},
|
||||
"assigned_by": {
|
||||
"type": "string",
|
||||
"description": "Who assigned this link"
|
||||
},
|
||||
"assigned_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "When the link was created"
|
||||
},
|
||||
"is_active": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "Is this link active"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"vendor_id",
|
||||
"partner_id"
|
||||
]
|
||||
}
|
||||
248
base44/entities/VendorRate.jsonc
Normal file
248
base44/entities/VendorRate.jsonc
Normal file
@@ -0,0 +1,248 @@
|
||||
{
|
||||
"name": "VendorRate",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"vendor_id": {
|
||||
"type": "string",
|
||||
"description": "ID of the vendor this rate belongs to"
|
||||
},
|
||||
"vendor_name": {
|
||||
"type": "string",
|
||||
"description": "Name of the vendor"
|
||||
},
|
||||
"rate_book_name": {
|
||||
"type": "string",
|
||||
"description": "Name of the rate book (e.g., 'Default', 'Compass Approved', 'Google Caf\u00e9 7')"
|
||||
},
|
||||
"rate_book_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"default",
|
||||
"enterprise_network",
|
||||
"client_specific"
|
||||
],
|
||||
"description": "Type of rate book: default (vendor's own rates), enterprise_network (Compass/Aramark approved), or client_specific (negotiated)"
|
||||
},
|
||||
"enterprise_network": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Compass",
|
||||
"Aramark",
|
||||
"Sodexo",
|
||||
"Foodbuy",
|
||||
"Bon App\u00e9tit",
|
||||
"Eurest",
|
||||
"None"
|
||||
],
|
||||
"description": "Enterprise network this rate book belongs to (if applicable)"
|
||||
},
|
||||
"is_approved_rate": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Whether this is an approved procurement rate (locked for vendors)"
|
||||
},
|
||||
"approved_by_procurement": {
|
||||
"type": "string",
|
||||
"description": "Name of procurement manager who approved these rates"
|
||||
},
|
||||
"approved_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Date rates were approved"
|
||||
},
|
||||
"client_id": {
|
||||
"type": "string",
|
||||
"description": "Specific client ID if this is a client-specific rate book"
|
||||
},
|
||||
"client_name": {
|
||||
"type": "string",
|
||||
"description": "Specific client name if this is a client-specific rate book"
|
||||
},
|
||||
"category": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Kitchen and Culinary",
|
||||
"Concessions",
|
||||
"Facilities",
|
||||
"Bartending",
|
||||
"Security",
|
||||
"Event Staff",
|
||||
"Management",
|
||||
"Technical",
|
||||
"Other"
|
||||
],
|
||||
"description": "Service category"
|
||||
},
|
||||
"role_name": {
|
||||
"type": "string",
|
||||
"description": "Name of the role/position"
|
||||
},
|
||||
"region": {
|
||||
"type": "string",
|
||||
"description": "Geographic region (e.g., 'Bay Area', 'LA', 'National')"
|
||||
},
|
||||
"employee_wage": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"description": "Employee base wage per hour (must be >= minimum wage)"
|
||||
},
|
||||
"overtime_rate": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"description": "Overtime rate (typically 1.5x base wage)"
|
||||
},
|
||||
"double_time_rate": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"description": "Double-time rate (typically 2x base wage)"
|
||||
},
|
||||
"travel_rate": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"description": "Travel time rate per hour (if applicable)"
|
||||
},
|
||||
"markup_percentage": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 100,
|
||||
"description": "Markup percentage on employee wage"
|
||||
},
|
||||
"vendor_fee_percentage": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 100,
|
||||
"description": "Vendor fee as percentage on (wage + markup)"
|
||||
},
|
||||
"client_rate": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"description": "Final rate charged to client per hour"
|
||||
},
|
||||
"approved_cap_rate": {
|
||||
"type": "number",
|
||||
"description": "Maximum rate approved by enterprise network (vendors cannot exceed this)"
|
||||
},
|
||||
"discount_from_approved": {
|
||||
"type": "number",
|
||||
"description": "Dollar amount discount from approved cap rate (if vendor is offering lower rate)"
|
||||
},
|
||||
"discount_percentage": {
|
||||
"type": "number",
|
||||
"description": "Percentage discount from approved cap rate"
|
||||
},
|
||||
"is_discounted": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Whether vendor is offering a discount below approved rate"
|
||||
},
|
||||
"negotiation_allowed": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "Whether clients can request rate negotiations"
|
||||
},
|
||||
"is_active": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "Whether this rate is currently active"
|
||||
},
|
||||
"is_editable_by_vendor": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "Whether vendor can edit this rate (false for locked procurement rates)"
|
||||
},
|
||||
"minimum_wage_compliance": {
|
||||
"type": "boolean",
|
||||
"description": "Whether this rate meets minimum wage requirements"
|
||||
},
|
||||
"market_comparison": {
|
||||
"type": "object",
|
||||
"description": "Market comparison data",
|
||||
"properties": {
|
||||
"market_average": {
|
||||
"type": "number",
|
||||
"description": "Market average for this role"
|
||||
},
|
||||
"market_position": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"below_market",
|
||||
"at_market",
|
||||
"above_market",
|
||||
"significantly_above"
|
||||
],
|
||||
"description": "How this rate compares to market"
|
||||
},
|
||||
"competitiveness_score": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 100,
|
||||
"description": "Competitiveness score (0-100)"
|
||||
},
|
||||
"market_warning": {
|
||||
"type": "string",
|
||||
"description": "Warning if rate is significantly above or below market"
|
||||
}
|
||||
}
|
||||
},
|
||||
"compliance": {
|
||||
"type": "object",
|
||||
"description": "Compliance information",
|
||||
"properties": {
|
||||
"csta_compliant": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "California Staffing Agency compliance"
|
||||
},
|
||||
"minimum_wage_verified": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Minimum wage verification status"
|
||||
},
|
||||
"compliance_verified_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Date compliance was last verified"
|
||||
}
|
||||
}
|
||||
},
|
||||
"shift_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"regular",
|
||||
"night",
|
||||
"weekend",
|
||||
"holiday",
|
||||
"premium"
|
||||
],
|
||||
"default": "regular",
|
||||
"description": "Type of shift this rate applies to"
|
||||
},
|
||||
"valid_from": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Date this rate becomes valid"
|
||||
},
|
||||
"valid_until": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Date this rate expires"
|
||||
},
|
||||
"notes": {
|
||||
"type": "string",
|
||||
"description": "Additional notes about this rate"
|
||||
},
|
||||
"internal_notes": {
|
||||
"type": "string",
|
||||
"description": "Internal vendor notes (not visible to clients)"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"vendor_name",
|
||||
"rate_book_name",
|
||||
"rate_book_type",
|
||||
"category",
|
||||
"role_name",
|
||||
"employee_wage",
|
||||
"client_rate"
|
||||
]
|
||||
}
|
||||
113
base44/entities/VendorRateBook.jsonc
Normal file
113
base44/entities/VendorRateBook.jsonc
Normal file
@@ -0,0 +1,113 @@
|
||||
{
|
||||
"name": "VendorRateBook",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"vendor_id": {
|
||||
"type": "string",
|
||||
"description": "ID of the vendor who owns this rate book"
|
||||
},
|
||||
"vendor_name": {
|
||||
"type": "string",
|
||||
"description": "Name of the vendor"
|
||||
},
|
||||
"rate_book_name": {
|
||||
"type": "string",
|
||||
"description": "Name of the rate book (e.g., 'Default Rates', 'Compass Network', 'Google Special')"
|
||||
},
|
||||
"rate_book_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"default",
|
||||
"enterprise_network",
|
||||
"client_specific",
|
||||
"premium",
|
||||
"seasonal"
|
||||
],
|
||||
"description": "Type of rate book"
|
||||
},
|
||||
"enterprise_network": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Compass",
|
||||
"Aramark",
|
||||
"Sodexo",
|
||||
"Foodbuy",
|
||||
"Bon App\u00e9tit",
|
||||
"Eurest",
|
||||
"None"
|
||||
],
|
||||
"description": "Enterprise network if applicable"
|
||||
},
|
||||
"is_approved_by_procurement": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Whether this rate book is approved by procurement"
|
||||
},
|
||||
"approved_by": {
|
||||
"type": "string",
|
||||
"description": "Name of person who approved this rate book"
|
||||
},
|
||||
"approved_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Date of approval"
|
||||
},
|
||||
"is_locked": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Whether rates in this book are locked (cannot be edited by vendor)"
|
||||
},
|
||||
"is_active": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "Whether this rate book is currently active"
|
||||
},
|
||||
"client_assignments": {
|
||||
"type": "array",
|
||||
"description": "Clients assigned to use this rate book",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"client_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"client_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"assigned_date": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"valid_from": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Start date for rate book validity"
|
||||
},
|
||||
"valid_until": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "End date for rate book validity"
|
||||
},
|
||||
"description": {
|
||||
"type": "string",
|
||||
"description": "Description of this rate book"
|
||||
},
|
||||
"total_roles": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Total number of roles in this rate book"
|
||||
},
|
||||
"notes": {
|
||||
"type": "string",
|
||||
"description": "Additional notes"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"vendor_name",
|
||||
"rate_book_name",
|
||||
"rate_book_type"
|
||||
]
|
||||
}
|
||||
40
base44/entities/VendorSectorLink.jsonc
Normal file
40
base44/entities/VendorSectorLink.jsonc
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"name": "VendorSectorLink",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"vendor_id": {
|
||||
"type": "string",
|
||||
"description": "Vendor ID"
|
||||
},
|
||||
"vendor_name": {
|
||||
"type": "string",
|
||||
"description": "Vendor name"
|
||||
},
|
||||
"sector_id": {
|
||||
"type": "string",
|
||||
"description": "Sector ID"
|
||||
},
|
||||
"sector_name": {
|
||||
"type": "string",
|
||||
"description": "Sector name"
|
||||
},
|
||||
"assigned_by": {
|
||||
"type": "string",
|
||||
"description": "Who assigned this link"
|
||||
},
|
||||
"assigned_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "When the link was created"
|
||||
},
|
||||
"is_active": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "Is this link active"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"vendor_id",
|
||||
"sector_id"
|
||||
]
|
||||
}
|
||||
129
base44/entities/WorkerAvailability.jsonc
Normal file
129
base44/entities/WorkerAvailability.jsonc
Normal file
@@ -0,0 +1,129 @@
|
||||
{
|
||||
"name": "WorkerAvailability",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"staff_id": {
|
||||
"type": "string",
|
||||
"description": "Reference to Staff entity"
|
||||
},
|
||||
"staff_name": {
|
||||
"type": "string",
|
||||
"description": "Staff member name"
|
||||
},
|
||||
"availability_status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"CONFIRMED_AVAILABLE",
|
||||
"UNKNOWN",
|
||||
"BLOCKED"
|
||||
],
|
||||
"default": "UNKNOWN",
|
||||
"description": "Current availability status"
|
||||
},
|
||||
"predicted_availability_score": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 100,
|
||||
"default": 50,
|
||||
"description": "ML/rules-based prediction of availability (0-100)"
|
||||
},
|
||||
"need_work_index": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 100,
|
||||
"default": 0,
|
||||
"description": "How much worker needs hours (0-100)"
|
||||
},
|
||||
"scheduled_hours_this_period": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Hours scheduled in current period"
|
||||
},
|
||||
"desired_hours_this_period": {
|
||||
"type": "number",
|
||||
"default": 40,
|
||||
"description": "Hours worker wants in current period"
|
||||
},
|
||||
"last_shift_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Date of last completed shift"
|
||||
},
|
||||
"acceptance_rate": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 100,
|
||||
"default": 0,
|
||||
"description": "Historical acceptance rate percentage"
|
||||
},
|
||||
"utilization_percentage": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 100,
|
||||
"default": 0,
|
||||
"description": "Scheduled hours / desired hours * 100"
|
||||
},
|
||||
"days_since_last_shift": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Days since last shift"
|
||||
},
|
||||
"total_shifts_this_period": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Number of shifts in current period"
|
||||
},
|
||||
"available_dates": {
|
||||
"type": "array",
|
||||
"description": "Dates worker is confirmed available",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "date"
|
||||
}
|
||||
},
|
||||
"blocked_dates": {
|
||||
"type": "array",
|
||||
"description": "Dates worker is blocked/unavailable",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "date"
|
||||
}
|
||||
},
|
||||
"preferences": {
|
||||
"type": "object",
|
||||
"description": "Worker preferences",
|
||||
"properties": {
|
||||
"preferred_days": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"preferred_shift_types": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Morning",
|
||||
"Day",
|
||||
"Evening",
|
||||
"Night",
|
||||
"Overnight"
|
||||
]
|
||||
}
|
||||
},
|
||||
"max_commute_miles": {
|
||||
"type": "number"
|
||||
},
|
||||
"wants_more_hours": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"staff_id",
|
||||
"staff_name"
|
||||
]
|
||||
}
|
||||
99
base44/entities/WorkerReputationProfile.jsonc
Normal file
99
base44/entities/WorkerReputationProfile.jsonc
Normal file
@@ -0,0 +1,99 @@
|
||||
{
|
||||
"name": "WorkerReputationProfile",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"worker_id": {
|
||||
"type": "string",
|
||||
"description": "Linked workforce member ID"
|
||||
},
|
||||
"worker_name": {
|
||||
"type": "string",
|
||||
"description": "Full name"
|
||||
},
|
||||
"total_shifts": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Total verified completed shifts across all agencies"
|
||||
},
|
||||
"no_shows": {
|
||||
"type": "number",
|
||||
"default": 0
|
||||
},
|
||||
"late_arrivals": {
|
||||
"type": "number",
|
||||
"default": 0
|
||||
},
|
||||
"last_minute_cancels": {
|
||||
"type": "number",
|
||||
"default": 0
|
||||
},
|
||||
"attendance_rate": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 100,
|
||||
"description": "Attendance percentage (0-100)"
|
||||
},
|
||||
"avg_client_rating": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 5
|
||||
},
|
||||
"avg_supervisor_rating": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 5
|
||||
},
|
||||
"verified_skills": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": "Verified skill/role tags"
|
||||
},
|
||||
"verified_certifications": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"contributing_agencies": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Number of agencies that have contributed data"
|
||||
},
|
||||
"trust_score": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 100,
|
||||
"description": "Computed KROW trust score (0-100)"
|
||||
},
|
||||
"trust_tier": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Bronze",
|
||||
"Silver",
|
||||
"Gold",
|
||||
"Platinum"
|
||||
],
|
||||
"default": "Bronze"
|
||||
},
|
||||
"opted_in": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "Worker has opted into the reputation network"
|
||||
},
|
||||
"profile_visibility": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"public",
|
||||
"network_only",
|
||||
"private"
|
||||
],
|
||||
"default": "network_only"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"worker_id",
|
||||
"worker_name"
|
||||
]
|
||||
}
|
||||
244
base44/entities/Workforce.jsonc
Normal file
244
base44/entities/Workforce.jsonc
Normal file
@@ -0,0 +1,244 @@
|
||||
{
|
||||
"name": "Workforce",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"workforce_number": {
|
||||
"type": "string",
|
||||
"description": "Worker Number format WF-#### (auto-generated)",
|
||||
"pattern": "^WF-[0-9]{4,6}$"
|
||||
},
|
||||
"vendor_id": {
|
||||
"type": "string",
|
||||
"description": "Vendor who manages this worker"
|
||||
},
|
||||
"vendor_name": {
|
||||
"type": "string",
|
||||
"description": "Vendor name"
|
||||
},
|
||||
"first_name": {
|
||||
"type": "string",
|
||||
"description": "Worker first name"
|
||||
},
|
||||
"last_name": {
|
||||
"type": "string",
|
||||
"description": "Worker last name"
|
||||
},
|
||||
"email": {
|
||||
"type": "string",
|
||||
"format": "email",
|
||||
"description": "Worker email"
|
||||
},
|
||||
"phone": {
|
||||
"type": "string",
|
||||
"description": "Worker phone"
|
||||
},
|
||||
"address": {
|
||||
"type": "string",
|
||||
"description": "Worker address"
|
||||
},
|
||||
"city": {
|
||||
"type": "string",
|
||||
"description": "City"
|
||||
},
|
||||
"state": {
|
||||
"type": "string",
|
||||
"description": "State"
|
||||
},
|
||||
"zip_code": {
|
||||
"type": "string",
|
||||
"description": "ZIP code"
|
||||
},
|
||||
"date_of_birth": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Date of birth"
|
||||
},
|
||||
"ssn_last_four": {
|
||||
"type": "string",
|
||||
"description": "Last 4 digits of SSN",
|
||||
"pattern": "^[0-9]{4}$"
|
||||
},
|
||||
"employment_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"W2",
|
||||
"1099",
|
||||
"Temporary",
|
||||
"Contract"
|
||||
],
|
||||
"description": "Employment classification"
|
||||
},
|
||||
"skills": {
|
||||
"type": "array",
|
||||
"description": "Worker skills",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"roles_qualified": {
|
||||
"type": "array",
|
||||
"description": "Roles worker is qualified for",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"certifications": {
|
||||
"type": "array",
|
||||
"description": "Certifications",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"cert_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"cert_number": {
|
||||
"type": "string"
|
||||
},
|
||||
"issued_date": {
|
||||
"type": "string",
|
||||
"format": "date"
|
||||
},
|
||||
"expiry_date": {
|
||||
"type": "string",
|
||||
"format": "date"
|
||||
},
|
||||
"issuer": {
|
||||
"type": "string"
|
||||
},
|
||||
"document_url": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"background_check_status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Pending",
|
||||
"Cleared",
|
||||
"Failed",
|
||||
"Expired"
|
||||
],
|
||||
"description": "Background check status"
|
||||
},
|
||||
"background_check_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Background check completion date"
|
||||
},
|
||||
"drug_test_status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Pending",
|
||||
"Passed",
|
||||
"Failed",
|
||||
"Expired"
|
||||
],
|
||||
"description": "Drug test status"
|
||||
},
|
||||
"drug_test_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Drug test date"
|
||||
},
|
||||
"reliability_index": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 100,
|
||||
"description": "Reliability score (0-100)"
|
||||
},
|
||||
"total_assignments": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Total assignments completed"
|
||||
},
|
||||
"cancelled_assignments": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Cancelled assignments"
|
||||
},
|
||||
"no_shows": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "No-show count"
|
||||
},
|
||||
"average_rating": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 5,
|
||||
"description": "Average performance rating"
|
||||
},
|
||||
"languages": {
|
||||
"type": "array",
|
||||
"description": "Languages spoken",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"availability": {
|
||||
"type": "object",
|
||||
"description": "Worker availability",
|
||||
"properties": {
|
||||
"monday": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"tuesday": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"wednesday": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"thursday": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"friday": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"saturday": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"sunday": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"shift_preferences": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Morning",
|
||||
"Day",
|
||||
"Evening",
|
||||
"Night",
|
||||
"Overnight"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"is_active": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "Is worker active"
|
||||
},
|
||||
"hire_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Date worker was hired"
|
||||
},
|
||||
"termination_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "Termination date if applicable"
|
||||
},
|
||||
"notes": {
|
||||
"type": "string",
|
||||
"description": "Internal notes"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"vendor_id",
|
||||
"first_name",
|
||||
"last_name",
|
||||
"workforce_number"
|
||||
]
|
||||
}
|
||||
134
base44/entities/WorkforceEvent.jsonc
Normal file
134
base44/entities/WorkforceEvent.jsonc
Normal file
@@ -0,0 +1,134 @@
|
||||
{
|
||||
"name": "WorkforceEvent",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"event_id": {
|
||||
"type": "string",
|
||||
"description": "Unique event identifier (EVT-timestamp-random)"
|
||||
},
|
||||
"event_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"shift.completed",
|
||||
"shift.created",
|
||||
"shift.cancelled",
|
||||
"shift.no_show",
|
||||
"order.created",
|
||||
"order.updated",
|
||||
"order.cancelled",
|
||||
"order.filled",
|
||||
"assignment.created",
|
||||
"assignment.confirmed",
|
||||
"assignment.completed",
|
||||
"assignment.cancelled",
|
||||
"invoice.created",
|
||||
"invoice.approved",
|
||||
"invoice.paid",
|
||||
"invoice.overdue",
|
||||
"vendor.rate_changed",
|
||||
"vendor.onboarded",
|
||||
"vendor.compliance_updated",
|
||||
"worker.hired",
|
||||
"worker.availability_changed",
|
||||
"worker.certification_expired",
|
||||
"worker.clock_in",
|
||||
"worker.clock_out",
|
||||
"budget.threshold_exceeded",
|
||||
"compliance.flagged",
|
||||
"system.prediction",
|
||||
"system.anomaly_detected"
|
||||
],
|
||||
"description": "Type of workforce event"
|
||||
},
|
||||
"severity": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"info",
|
||||
"warning",
|
||||
"critical"
|
||||
],
|
||||
"default": "info"
|
||||
},
|
||||
"actor_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"worker",
|
||||
"vendor",
|
||||
"manager",
|
||||
"system",
|
||||
"agent",
|
||||
"client"
|
||||
],
|
||||
"description": "Who or what triggered the event"
|
||||
},
|
||||
"actor_id": {
|
||||
"type": "string",
|
||||
"description": "ID of the actor"
|
||||
},
|
||||
"actor_name": {
|
||||
"type": "string",
|
||||
"description": "Name of the actor"
|
||||
},
|
||||
"subject_entity_type": {
|
||||
"type": "string",
|
||||
"description": "Type of entity the event is about (Order, Assignment, Invoice, etc.)"
|
||||
},
|
||||
"subject_entity_id": {
|
||||
"type": "string",
|
||||
"description": "ID of the subject entity"
|
||||
},
|
||||
"subject_krow_id": {
|
||||
"type": "string",
|
||||
"description": "KROW universal ID of the subject"
|
||||
},
|
||||
"context_summary": {
|
||||
"type": "string",
|
||||
"description": "Human-readable summary of the event"
|
||||
},
|
||||
"related_entities": {
|
||||
"type": "array",
|
||||
"description": "Related entity references for graph traversal",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"entity_type": {
|
||||
"type": "string"
|
||||
},
|
||||
"entity_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"relationship": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"metadata": {
|
||||
"type": "object",
|
||||
"description": "Event-specific payload data",
|
||||
"additionalProperties": true
|
||||
},
|
||||
"reasoning_triggered": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Whether the reasoning engine has processed this event"
|
||||
},
|
||||
"memory_id": {
|
||||
"type": "string",
|
||||
"description": "ID of the OperationalMemory record created from reasoning about this event"
|
||||
},
|
||||
"tags": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": "Searchable tags (e.g., 'overtime', 'shortage', 'compliance')"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"event_id",
|
||||
"event_type",
|
||||
"subject_entity_type",
|
||||
"subject_entity_id"
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user