567 lines
13 KiB
Plaintext
567 lines
13 KiB
Plaintext
erDiagram
|
|
users ||--o{ workflow_requests : initiates
|
|
users ||--o{ approval_levels : approves
|
|
users ||--o{ participants : participates
|
|
users ||--o{ work_notes : posts
|
|
users ||--o{ documents : uploads
|
|
users ||--o{ activities : performs
|
|
users ||--o{ notifications : receives
|
|
users ||--o{ user_sessions : has
|
|
workflow_requests ||--|{ approval_levels : has
|
|
workflow_requests ||--o{ participants : involves
|
|
workflow_requests ||--o{ documents : contains
|
|
workflow_requests ||--o{ work_notes : has
|
|
workflow_requests ||--o{ activities : logs
|
|
workflow_requests ||--o{ tat_tracking : monitors
|
|
workflow_requests ||--o{ notifications : triggers
|
|
workflow_requests ||--|| conclusion_remarks : concludes
|
|
workflow_requests ||--|| dealer_claim_details : claim_details
|
|
workflow_requests ||--|| dealer_proposal_details : proposal_details
|
|
dealer_proposal_details ||--o{ dealer_proposal_cost_items : cost_items
|
|
workflow_requests ||--|| dealer_completion_details : completion_details
|
|
workflow_requests ||--|| internal_orders : internal_order
|
|
workflow_requests ||--|| claim_budget_tracking : budget_tracking
|
|
workflow_requests ||--|| claim_invoices : claim_invoice
|
|
workflow_requests ||--|| claim_credit_notes : claim_credit_note
|
|
work_notes ||--o{ work_note_attachments : has
|
|
|
|
workflow_requests ||--o{ report_cache : caches
|
|
workflow_requests ||--o{ audit_logs : audits
|
|
workflow_requests ||--o{ workflow_templates : templates
|
|
users ||--o{ system_settings : updates
|
|
workflow_requests ||--o{ dealer_claim_history : has_history
|
|
workflow_requests ||--o{ tat_alerts : triggers
|
|
workflow_requests ||--|| request_summaries : summarizes
|
|
request_summaries ||--o{ shared_summaries : shared_as
|
|
users ||--o{ shared_summaries : shares
|
|
users ||--o{ subscriptions : has_device
|
|
users ||--o{ holidays : manages
|
|
users ||--o{ activity_types : manages
|
|
|
|
users {
|
|
uuid user_id PK
|
|
varchar employee_id
|
|
varchar okta_sub
|
|
varchar email
|
|
varchar first_name
|
|
varchar last_name
|
|
varchar display_name
|
|
varchar department
|
|
varchar designation
|
|
varchar phone
|
|
varchar manager
|
|
varchar second_email
|
|
text job_title
|
|
varchar employee_number
|
|
varchar postal_address
|
|
varchar mobile_phone
|
|
jsonb ad_groups
|
|
jsonb location
|
|
boolean is_active
|
|
enum role
|
|
timestamp last_login
|
|
timestamp created_at
|
|
timestamp updated_at
|
|
}
|
|
|
|
workflow_requests {
|
|
uuid request_id PK
|
|
varchar request_number
|
|
uuid initiator_id FK
|
|
varchar template_type
|
|
varchar title
|
|
text description
|
|
enum priority
|
|
enum status
|
|
integer current_level
|
|
integer total_levels
|
|
decimal total_tat_hours
|
|
timestamp submission_date
|
|
timestamp closure_date
|
|
text conclusion_remark
|
|
text ai_generated_conclusion
|
|
boolean is_draft
|
|
boolean is_deleted
|
|
timestamp created_at
|
|
timestamp updated_at
|
|
}
|
|
|
|
approval_levels {
|
|
uuid level_id PK
|
|
uuid request_id FK
|
|
integer level_number
|
|
varchar level_name
|
|
uuid approver_id FK
|
|
varchar approver_email
|
|
varchar approver_name
|
|
decimal tat_hours
|
|
integer tat_days
|
|
enum status
|
|
timestamp level_start_time
|
|
timestamp level_end_time
|
|
timestamp action_date
|
|
text comments
|
|
text rejection_reason
|
|
boolean is_final_approver
|
|
decimal elapsed_hours
|
|
decimal remaining_hours
|
|
decimal tat_percentage_used
|
|
timestamp created_at
|
|
timestamp updated_at
|
|
}
|
|
|
|
participants {
|
|
uuid participant_id PK
|
|
uuid request_id FK
|
|
uuid user_id FK
|
|
varchar user_email
|
|
varchar user_name
|
|
enum participant_type
|
|
boolean can_comment
|
|
boolean can_view_documents
|
|
boolean can_download_documents
|
|
boolean notification_enabled
|
|
uuid added_by FK
|
|
timestamp added_at
|
|
boolean is_active
|
|
}
|
|
|
|
documents {
|
|
uuid document_id PK
|
|
uuid request_id FK
|
|
uuid uploaded_by FK
|
|
varchar file_name
|
|
varchar original_file_name
|
|
varchar file_type
|
|
varchar file_extension
|
|
bigint file_size
|
|
varchar file_path
|
|
varchar storage_url
|
|
varchar mime_type
|
|
varchar checksum
|
|
boolean is_google_doc
|
|
varchar google_doc_url
|
|
enum category
|
|
integer version
|
|
uuid parent_document_id
|
|
boolean is_deleted
|
|
integer download_count
|
|
timestamp uploaded_at
|
|
}
|
|
|
|
work_notes {
|
|
uuid note_id PK
|
|
uuid request_id FK
|
|
uuid user_id FK
|
|
varchar user_name
|
|
varchar user_role
|
|
text message
|
|
varchar message_type
|
|
boolean is_priority
|
|
boolean has_attachment
|
|
uuid parent_note_id
|
|
uuid[] mentioned_users
|
|
jsonb reactions
|
|
boolean is_edited
|
|
boolean is_deleted
|
|
timestamp created_at
|
|
timestamp updated_at
|
|
}
|
|
|
|
work_note_attachments {
|
|
uuid attachment_id PK
|
|
uuid note_id FK
|
|
varchar file_name
|
|
varchar file_type
|
|
bigint file_size
|
|
varchar file_path
|
|
varchar storage_url
|
|
boolean is_downloadable
|
|
integer download_count
|
|
timestamp uploaded_at
|
|
}
|
|
|
|
activities {
|
|
uuid activity_id PK
|
|
uuid request_id FK
|
|
uuid user_id FK
|
|
varchar user_name
|
|
varchar activity_type
|
|
text activity_description
|
|
varchar activity_category
|
|
varchar severity
|
|
jsonb metadata
|
|
boolean is_system_event
|
|
varchar ip_address
|
|
text user_agent
|
|
timestamp created_at
|
|
}
|
|
|
|
notifications {
|
|
uuid notification_id PK
|
|
uuid user_id FK
|
|
uuid request_id FK
|
|
varchar notification_type
|
|
varchar title
|
|
text message
|
|
boolean is_read
|
|
enum priority
|
|
varchar action_url
|
|
boolean action_required
|
|
jsonb metadata
|
|
varchar[] sent_via
|
|
boolean email_sent
|
|
boolean sms_sent
|
|
boolean push_sent
|
|
timestamp read_at
|
|
timestamp expires_at
|
|
timestamp created_at
|
|
}
|
|
|
|
tat_tracking {
|
|
uuid tracking_id PK
|
|
uuid request_id FK
|
|
uuid level_id FK
|
|
varchar tracking_type
|
|
enum tat_status
|
|
decimal total_tat_hours
|
|
decimal elapsed_hours
|
|
decimal remaining_hours
|
|
decimal percentage_used
|
|
boolean threshold_50_breached
|
|
timestamp threshold_50_alerted_at
|
|
boolean threshold_80_breached
|
|
timestamp threshold_80_alerted_at
|
|
boolean threshold_100_breached
|
|
timestamp threshold_100_alerted_at
|
|
integer alert_count
|
|
timestamp last_calculated_at
|
|
}
|
|
|
|
conclusion_remarks {
|
|
uuid conclusion_id PK
|
|
uuid request_id FK
|
|
text ai_generated_remark
|
|
varchar ai_model_used
|
|
decimal ai_confidence_score
|
|
text final_remark
|
|
uuid edited_by FK
|
|
boolean is_edited
|
|
integer edit_count
|
|
jsonb approval_summary
|
|
jsonb document_summary
|
|
text[] key_discussion_points
|
|
timestamp generated_at
|
|
timestamp finalized_at
|
|
}
|
|
|
|
audit_logs {
|
|
uuid audit_id PK
|
|
uuid user_id FK
|
|
varchar entity_type
|
|
uuid entity_id
|
|
varchar action
|
|
varchar action_category
|
|
jsonb old_values
|
|
jsonb new_values
|
|
text changes_summary
|
|
varchar ip_address
|
|
text user_agent
|
|
varchar session_id
|
|
varchar request_method
|
|
varchar request_url
|
|
integer response_status
|
|
integer execution_time_ms
|
|
timestamp created_at
|
|
}
|
|
|
|
user_sessions {
|
|
uuid session_id PK
|
|
uuid user_id FK
|
|
varchar session_token
|
|
varchar refresh_token
|
|
varchar ip_address
|
|
text user_agent
|
|
varchar device_type
|
|
varchar browser
|
|
varchar os
|
|
timestamp login_at
|
|
timestamp last_activity_at
|
|
timestamp logout_at
|
|
timestamp expires_at
|
|
boolean is_active
|
|
varchar logout_reason
|
|
}
|
|
|
|
|
|
|
|
system_settings {
|
|
uuid setting_id PK
|
|
varchar setting_key
|
|
text setting_value
|
|
varchar setting_type
|
|
varchar setting_category
|
|
text description
|
|
boolean is_editable
|
|
boolean is_sensitive
|
|
jsonb validation_rules
|
|
text default_value
|
|
uuid updated_by FK
|
|
timestamp created_at
|
|
timestamp updated_at
|
|
}
|
|
|
|
workflow_templates {
|
|
uuid template_id PK
|
|
varchar template_name
|
|
text template_description
|
|
varchar template_category
|
|
jsonb approval_levels_config
|
|
decimal default_tat_hours
|
|
boolean is_active
|
|
integer usage_count
|
|
uuid created_by FK
|
|
timestamp created_at
|
|
timestamp updated_at
|
|
}
|
|
|
|
report_cache {
|
|
uuid cache_id PK
|
|
varchar report_type
|
|
jsonb report_params
|
|
jsonb report_data
|
|
uuid generated_by FK
|
|
timestamp generated_at
|
|
timestamp expires_at
|
|
integer access_count
|
|
timestamp last_accessed_at
|
|
}
|
|
|
|
dealer_claim_details {
|
|
uuid claim_id PK
|
|
uuid request_id
|
|
varchar activity_name
|
|
varchar activity_type
|
|
varchar dealer_code
|
|
varchar dealer_name
|
|
varchar dealer_email
|
|
varchar dealer_phone
|
|
text dealer_address
|
|
date activity_date
|
|
varchar location
|
|
date period_start_date
|
|
date period_end_date
|
|
timestamp created_at
|
|
timestamp updated_at
|
|
}
|
|
|
|
dealer_proposal_details {
|
|
uuid proposal_id PK
|
|
uuid request_id
|
|
string proposal_document_path
|
|
string proposal_document_url
|
|
decimal total_estimated_budget
|
|
string timeline_mode
|
|
date expected_completion_date
|
|
int expected_completion_days
|
|
text dealer_comments
|
|
date submitted_at
|
|
timestamp created_at
|
|
timestamp updated_at
|
|
}
|
|
|
|
dealer_proposal_cost_items {
|
|
uuid cost_item_id PK
|
|
uuid proposal_id FK
|
|
uuid request_id FK
|
|
string item_description
|
|
decimal amount
|
|
int item_order
|
|
timestamp created_at
|
|
timestamp updated_at
|
|
}
|
|
|
|
dealer_completion_details {
|
|
uuid completion_id PK
|
|
uuid request_id
|
|
date activity_completion_date
|
|
int number_of_participants
|
|
decimal total_closed_expenses
|
|
date submitted_at
|
|
timestamp created_at
|
|
timestamp updated_at
|
|
}
|
|
|
|
dealer_completion_expenses {
|
|
uuid expense_id PK
|
|
uuid request_id
|
|
uuid completion_id
|
|
string description
|
|
decimal amount
|
|
timestamp created_at
|
|
timestamp updated_at
|
|
}
|
|
|
|
internal_orders {
|
|
uuid io_id PK
|
|
uuid request_id
|
|
string io_number
|
|
text io_remark
|
|
decimal io_available_balance
|
|
decimal io_blocked_amount
|
|
decimal io_remaining_balance
|
|
uuid organized_by FK
|
|
date organized_at
|
|
string sap_document_number
|
|
enum status
|
|
timestamp created_at
|
|
timestamp updated_at
|
|
}
|
|
|
|
claim_budget_tracking {
|
|
uuid budget_id PK
|
|
uuid request_id
|
|
decimal initial_estimated_budget
|
|
decimal proposal_estimated_budget
|
|
date proposal_submitted_at
|
|
decimal approved_budget
|
|
date approved_at
|
|
uuid approved_by FK
|
|
decimal io_blocked_amount
|
|
date io_blocked_at
|
|
decimal closed_expenses
|
|
date closed_expenses_submitted_at
|
|
decimal final_claim_amount
|
|
date final_claim_amount_approved_at
|
|
uuid final_claim_amount_approved_by FK
|
|
decimal credit_note_amount
|
|
date credit_note_issued_at
|
|
enum budget_status
|
|
string currency
|
|
decimal variance_amount
|
|
decimal variance_percentage
|
|
uuid last_modified_by FK
|
|
date last_modified_at
|
|
text modification_reason
|
|
timestamp created_at
|
|
timestamp updated_at
|
|
}
|
|
|
|
claim_invoices {
|
|
uuid invoice_id PK
|
|
uuid request_id
|
|
string invoice_number
|
|
date invoice_date
|
|
string dms_number
|
|
decimal amount
|
|
string status
|
|
text description
|
|
timestamp created_at
|
|
timestamp updated_at
|
|
}
|
|
|
|
claim_credit_notes {
|
|
uuid credit_note_id PK
|
|
uuid request_id
|
|
string credit_note_number
|
|
date credit_note_date
|
|
decimal credit_note_amount
|
|
string status
|
|
text reason
|
|
text description
|
|
timestamp created_at
|
|
timestamp updated_at
|
|
}
|
|
|
|
dealers {
|
|
uuid dealer_id PK
|
|
varchar sales_code
|
|
varchar service_code
|
|
varchar dealer_name
|
|
varchar region
|
|
varchar state
|
|
varchar city
|
|
varchar location
|
|
boolean is_active
|
|
timestamp created_at
|
|
timestamp updated_at
|
|
}
|
|
|
|
dealer_claim_history {
|
|
uuid history_id PK
|
|
uuid request_id FK
|
|
uuid approval_level_id FK
|
|
integer version
|
|
enum snapshot_type
|
|
jsonb snapshot_data
|
|
text change_reason
|
|
uuid changed_by FK
|
|
timestamp created_at
|
|
}
|
|
|
|
holidays {
|
|
uuid holiday_id PK
|
|
date holiday_date
|
|
varchar holiday_name
|
|
enum holiday_type
|
|
boolean is_active
|
|
uuid created_by FK
|
|
timestamp created_at
|
|
timestamp updated_at
|
|
}
|
|
|
|
activity_types {
|
|
uuid activity_type_id PK
|
|
varchar title
|
|
varchar item_code
|
|
varchar taxation_type
|
|
boolean is_active
|
|
uuid created_by FK
|
|
timestamp created_at
|
|
timestamp updated_at
|
|
}
|
|
|
|
tat_alerts {
|
|
uuid alert_id PK
|
|
uuid request_id FK
|
|
uuid level_id FK
|
|
uuid approver_id FK
|
|
enum alert_type
|
|
boolean is_breached
|
|
timestamp alert_sent_at
|
|
timestamp created_at
|
|
}
|
|
|
|
request_summaries {
|
|
uuid summary_id PK
|
|
uuid request_id FK
|
|
uuid initiator_id FK
|
|
varchar title
|
|
text description
|
|
text closing_remarks
|
|
boolean is_ai_generated
|
|
timestamp created_at
|
|
timestamp updated_at
|
|
}
|
|
|
|
shared_summaries {
|
|
uuid shared_summary_id PK
|
|
uuid summary_id FK
|
|
uuid shared_by FK
|
|
uuid shared_with FK
|
|
boolean is_read
|
|
timestamp shared_at
|
|
timestamp created_at
|
|
}
|
|
|
|
subscriptions {
|
|
uuid subscription_id PK
|
|
uuid user_id FK
|
|
varchar endpoint
|
|
varchar p256dh
|
|
varchar auth
|
|
timestamp created_at
|
|
}
|
|
|
|
|