Files
worker/database.md
2025-10-24 11:31:48 +07:00

416 lines
11 KiB
Markdown

classDiagram
direction BT
class audit_logs {
varchar(50) user_id
varchar(100) action
varchar(50) entity_type
varchar(50) entity_id
jsonb old_value
jsonb new_value
inet ip_address
text user_agent
timestamp with time zone timestamp
bigint log_id
}
class cart_items {
varchar(50) cart_id
varchar(50) product_id
numeric(12,2) quantity
numeric(12,2) unit_price
numeric(12,2) subtotal
timestamp with time zone added_at
varchar(50) cart_item_id
}
class carts {
varchar(50) user_id
numeric(12,2) total_amount
boolean is_synced
timestamp with time zone last_modified
timestamp with time zone created_at
varchar(50) cart_id
}
class chat_messages {
varchar(50) chat_room_id
varchar(50) sender_id
content_type content_type
text content
varchar(500) attachment_url
varchar(50) product_reference
boolean is_read
boolean is_edited
boolean is_deleted
jsonb read_by
timestamp with time zone timestamp
timestamp with time zone edited_at
varchar(50) message_id
}
class chat_rooms {
room_type room_type
varchar(50) related_quote_id
varchar(50) related_order_id
jsonb participants
varchar(100) room_name
boolean is_active
timestamp with time zone last_activity
timestamp with time zone created_at
varchar(50) created_by
varchar(50) chat_room_id
}
class design_requests {
varchar(50) user_id
varchar(200) project_name
project_type project_type
numeric(10,2) area
varchar(100) style
numeric(12,2) budget
text current_situation
text requirements
text notes
jsonb attachments
design_status status
varchar(100) assigned_designer
varchar(500) final_design_link
text feedback
integer rating
date estimated_completion
timestamp with time zone created_at
timestamp with time zone completed_at
timestamp with time zone updated_at
varchar(50) request_id
}
class gift_catalog {
varchar(200) name
text description
varchar(500) image_url
gift_category category
integer points_cost
numeric(12,2) cash_value
integer quantity_available
integer quantity_redeemed
text terms_conditions
boolean is_active
date valid_from
date valid_until
timestamp with time zone created_at
timestamp with time zone updated_at
varchar(50) catalog_id
}
class invoices {
varchar(50) invoice_number
varchar(50) user_id
varchar(50) order_id
invoice_type invoice_type
date issue_date
date due_date
varchar(3) currency
numeric(12,2) subtotal_amount
numeric(12,2) tax_amount
numeric(12,2) discount_amount
numeric(12,2) shipping_amount
numeric(12,2) total_amount
numeric(12,2) amount_paid
numeric(12,2) amount_remaining
invoice_status status
text payment_terms
text notes
varchar(50) erpnext_invoice
timestamp with time zone created_at
timestamp with time zone updated_at
timestamp with time zone last_reminder_sent
varchar(50) invoice_id
}
class loyalty_point_entries {
varchar(50) user_id
integer points
entry_type entry_type
entry_source source
text description
varchar(50) reference_id
varchar(50) reference_type
jsonb complaint
complaint_status complaint_status
integer balance_after
date expiry_date
timestamp with time zone timestamp
varchar(50) erpnext_entry_id
varchar(50) entry_id
}
class notifications {
varchar(50) user_id
varchar(50) type
varchar(200) title
text message
jsonb data
boolean is_read
boolean is_pushed
timestamp with time zone created_at
timestamp with time zone read_at
varchar(50) notification_id
}
class order_items {
varchar(50) order_id
varchar(50) product_id
numeric(12,2) quantity
numeric(12,2) unit_price
numeric(5,2) discount_percent
numeric(12,2) subtotal
text notes
varchar(50) order_item_id
}
class orders {
varchar(50) order_number
varchar(50) user_id
order_status status
numeric(12,2) total_amount
numeric(12,2) discount_amount
numeric(12,2) tax_amount
numeric(12,2) shipping_fee
numeric(12,2) final_amount
jsonb shipping_address
jsonb billing_address
date expected_delivery_date
date actual_delivery_date
text notes
text cancellation_reason
varchar(50) erpnext_sales_order
timestamp with time zone created_at
timestamp with time zone updated_at
varchar(50) order_id
}
class payment_lines {
varchar(50) invoice_id
varchar(50) payment_number
date payment_date
numeric(12,2) amount
payment_method payment_method
varchar(100) bank_name
varchar(50) bank_account
varchar(100) reference_number
text notes
payment_status status
varchar(500) receipt_url
varchar(50) erpnext_payment_entry
timestamp with time zone created_at
timestamp with time zone processed_at
varchar(50) payment_line_id
}
class payment_reminders {
varchar(50) invoice_id
varchar(50) user_id
reminder_type reminder_type
varchar(200) subject
text message
boolean is_read
boolean is_sent
timestamp with time zone scheduled_at
timestamp with time zone sent_at
timestamp with time zone read_at
varchar(50) reminder_id
}
class points_records {
varchar(50) user_id
varchar(100) invoice_number
varchar(200) store_name
date transaction_date
numeric(12,2) invoice_amount
text notes
jsonb attachments
points_status status
text reject_reason
integer points_earned
timestamp with time zone submitted_at
timestamp with time zone processed_at
varchar(50) processed_by
varchar(50) record_id
}
class products {
varchar(200) name
text description
numeric(12,2) base_price
jsonb images
jsonb image_captions
varchar(500) link_360
jsonb specifications
varchar(100) category
varchar(50) brand
varchar(20) unit
boolean is_active
boolean is_featured
varchar(50) erpnext_item_code
timestamp with time zone created_at
timestamp with time zone updated_at
varchar(50) product_id
}
class project_submissions {
varchar(50) user_id
varchar(200) project_name
text project_address
numeric(12,2) project_value
project_type project_type
jsonb before_photos
jsonb after_photos
jsonb invoices
submission_status status
text review_notes
text rejection_reason
integer points_earned
timestamp with time zone submitted_at
timestamp with time zone reviewed_at
varchar(50) reviewed_by
varchar(50) submission_id
}
class quote_items {
varchar(50) quote_id
varchar(50) product_id
numeric(12,2) quantity
numeric(12,2) original_price
numeric(12,2) negotiated_price
numeric(5,2) discount_percent
numeric(12,2) subtotal
text notes
varchar(50) quote_item_id
}
class quotes {
varchar(50) quote_number
varchar(50) user_id
quote_status status
numeric(12,2) total_amount
numeric(12,2) discount_amount
numeric(12,2) final_amount
varchar(200) project_name
jsonb delivery_address
text payment_terms
text notes
date valid_until
varchar(50) converted_order_id
varchar(50) erpnext_quotation
timestamp with time zone created_at
timestamp with time zone updated_at
varchar(50) quote_id
}
class redeemed_gifts {
varchar(50) user_id
varchar(50) catalog_id
varchar(200) name
text description
varchar(50) voucher_code
varchar(500) qr_code_image
gift_category gift_type
integer points_cost
numeric(12,2) cash_value
date expiry_date
gift_status status
timestamp with time zone redeemed_at
timestamp with time zone used_at
varchar(200) used_location
varchar(100) used_reference
varchar(50) gift_id
}
class showroom_products {
numeric(10,2) quantity_used
varchar(50) showroom_id
varchar(50) product_id
}
class showrooms {
varchar(200) title
text description
varchar(500) cover_image
varchar(500) link_360
numeric(10,2) area
varchar(100) style
varchar(200) location
jsonb gallery_images
integer view_count
boolean is_featured
boolean is_active
timestamp with time zone published_at
varchar(50) created_by
varchar(50) showroom_id
}
class stock_levels {
numeric(12,2) available_qty
numeric(12,2) reserved_qty
numeric(12,2) ordered_qty
varchar(50) warehouse_code
timestamp with time zone last_updated
varchar(50) product_id
}
class system_settings {
jsonb setting_value
text description
boolean is_public
timestamp with time zone updated_at
varchar(50) updated_by
varchar(100) setting_key
}
class user_sessions {
varchar(50) user_id
varchar(100) device_id
varchar(50) device_type
varchar(100) device_name
inet ip_address
text user_agent
varchar(500) refresh_token
timestamp with time zone expires_at
timestamp with time zone created_at
timestamp with time zone last_activity
varchar(100) session_id
}
class users {
varchar(20) phone_number
varchar(255) password_hash
varchar(100) full_name
varchar(100) email
user_role role
user_status status
loyalty_tier loyalty_tier
integer total_points
jsonb company_info
varchar(20) cccd
jsonb attachments
text address
varchar(500) avatar_url
varchar(20) referral_code
varchar(50) referred_by
varchar(50) erpnext_customer_id
timestamp with time zone created_at
timestamp with time zone updated_at
timestamp with time zone last_login_at
varchar(50) user_id
}
cart_items --> carts : cart_id
cart_items --> products : product_id
carts --> users : user_id
chat_messages --> chat_rooms : chat_room_id
chat_messages --> products : product_reference:product_id
chat_messages --> users : sender_id:user_id
chat_rooms --> orders : related_order_id:order_id
chat_rooms --> quotes : related_quote_id:quote_id
chat_rooms --> users : created_by:user_id
design_requests --> users : user_id
invoices --> orders : order_id
invoices --> users : user_id
loyalty_point_entries --> users : user_id
notifications --> users : user_id
order_items --> orders : order_id
order_items --> products : product_id
orders --> users : user_id
payment_lines --> invoices : invoice_id
payment_reminders --> invoices : invoice_id
payment_reminders --> users : user_id
points_records --> users : user_id
project_submissions --> users : user_id
quote_items --> products : product_id
quote_items --> quotes : quote_id
quotes --> orders : converted_order_id:order_id
quotes --> users : user_id
redeemed_gifts --> gift_catalog : catalog_id
redeemed_gifts --> users : user_id
showroom_products --> products : product_id
showroom_products --> showrooms : showroom_id
showrooms --> users : created_by:user_id
stock_levels --> products : product_id
user_sessions --> users : user_id
users --> users : referred_by:user_id