Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 45 additions & 2 deletions src/fabric/datagen/business_growth_logic.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,12 +61,55 @@ def calculate_business_phase(current_date: datetime, start_date: datetime, end_d

def get_market_event_multiplier(current_date: datetime) -> Tuple[str, float, float]:
"""
Simple market events - minimal seasonal variation for smooth trends.
Calculate market event multipliers based on the date.

Includes:
- Memorial Day Sale (Fri–Mon around last Monday of May): 1.4x frequency, 1.2x size
- Black Friday / Cyber Monday (Fri after Thanksgiving through Cyber Monday): 1.8x frequency, 1.3x size
- Holiday Rush (Dec 10–24): 1.5x frequency, 1.25x size
- Christmas Day (Dec 25): 1.1x frequency, 1.1x size

Returns:
Tuple[str, float, float]: (event_name, order_frequency_multiplier, order_size_multiplier)
"""
# Keep it simple - just normal business operations
month = current_date.month
day = current_date.day
current_date_only = datetime(current_date.year, current_date.month, current_date.day)

# 1. Memorial Day Weekend (Friday before to Monday of Last Monday in May)
if month == 5:
# Find last Monday in May
memorial_monday_dt = None
for d in range(31, 23, -1):
dt = datetime(current_date.year, 5, d)
if dt.weekday() == 0: # Monday
memorial_monday_dt = dt
break
if memorial_monday_dt and (memorial_monday_dt - timedelta(days=3)) <= current_date_only <= memorial_monday_dt:
return "Memorial Day Sale", 1.4, 1.2

# 2. Black Friday / Cyber Monday (Friday after Thanksgiving to Cyber Monday)
# Thanksgiving is 4th Thursday in November. Cyber Monday can overflow into December.
if month == 11 or month == 12:
thursdays = []
for d in range(1, 31):
dt = datetime(current_date.year, 11, d)
if dt.weekday() == 3: # Thursday
thursdays.append(dt)
thanksgiving_dt = thursdays[3]
black_friday_dt = thanksgiving_dt + timedelta(days=1)
cyber_monday_dt = thanksgiving_dt + timedelta(days=4)

if black_friday_dt <= current_date_only <= cyber_monday_dt:
return "Black Friday / Cyber Monday", 1.8, 1.3

# 3. Holiday Rush / Christmas (December 10 to December 24)
if month == 12:
if 10 <= day <= 24:
return "Holiday Rush", 1.5, 1.25
elif day == 25:
return "Christmas Day", 1.1, 1.1

return "Normal", 1.0, 1.0

def get_customer_tier_multiplier(customer_relationship_type: str, base_multiplier: float) -> float:
Expand Down
1,026 changes: 513 additions & 513 deletions src/fabric/datagen/output/finance/camping/Account_Samples_Camping.csv

Large diffs are not rendered by default.

17,017 changes: 8,519 additions & 8,498 deletions src/fabric/datagen/output/finance/camping/Invoice_Samples_Camping.csv

Large diffs are not rendered by default.

17,017 changes: 8,519 additions & 8,498 deletions src/fabric/datagen/output/finance/camping/Payment_Samples_Camping.csv

Large diffs are not rendered by default.

18,929 changes: 9,573 additions & 9,356 deletions src/fabric/datagen/output/finance/kitchen/Invoice_Samples_Kitchen.csv

Large diffs are not rendered by default.

18,929 changes: 9,573 additions & 9,356 deletions src/fabric/datagen/output/finance/kitchen/Payment_Samples_Kitchen.csv

Large diffs are not rendered by default.

2,948 changes: 1,458 additions & 1,490 deletions src/fabric/datagen/output/finance/ski/Invoice_Samples_Ski.csv

Large diffs are not rendered by default.

2,948 changes: 1,458 additions & 1,490 deletions src/fabric/datagen/output/finance/ski/Payment_Samples_Ski.csv

Large diffs are not rendered by default.

42,854 changes: 21,427 additions & 21,427 deletions src/fabric/datagen/output/sales/camping/OrderLine_Samples_Camping.csv

Large diffs are not rendered by default.

17,017 changes: 8,519 additions & 8,498 deletions src/fabric/datagen/output/sales/camping/OrderPayment_Camping.csv

Large diffs are not rendered by default.

17,017 changes: 8,519 additions & 8,498 deletions src/fabric/datagen/output/sales/camping/Order_Samples_Camping.csv

Large diffs are not rendered by default.

56,903 changes: 28,905 additions & 27,998 deletions src/fabric/datagen/output/sales/kitchen/OrderLine_Samples_Kitchen.csv

Large diffs are not rendered by default.

18,929 changes: 9,573 additions & 9,356 deletions src/fabric/datagen/output/sales/kitchen/OrderPayment_Kitchen.csv

Large diffs are not rendered by default.

18,929 changes: 9,573 additions & 9,356 deletions src/fabric/datagen/output/sales/kitchen/Order_Samples_Kitchen.csv

Large diffs are not rendered by default.

7,448 changes: 3,654 additions & 3,794 deletions src/fabric/datagen/output/sales/ski/OrderLine_Samples_Ski.csv

Large diffs are not rendered by default.

2,948 changes: 1,458 additions & 1,490 deletions src/fabric/datagen/output/sales/ski/OrderPayment_Ski.csv

Large diffs are not rendered by default.

2,948 changes: 1,458 additions & 1,490 deletions src/fabric/datagen/output/sales/ski/Order_Samples_Ski.csv

Large diffs are not rendered by default.

24 changes: 12 additions & 12 deletions src/fabric/datagen/output/sample_sales_data_summary.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,27 @@
# Sales Data Generation Summary

**Generated**: 2026-04-07 14:39:32
**Generated**: 2026-06-18 13:00:45
**Date Range**: 2025-01-01 to 2026-04-30
**Duration**: 485 days

## 📊 Generation Overview

### **Total Summary**
- **Orders**: 19,344
- **Order Lines**: 53,219
- **Sales Payments**: 19,344
- **Invoices**: 19,344
- **Finance Payments**: 19,344
- **Orders**: 19,550
- **Order Lines**: 53,986
- **Sales Payments**: 19,550
- **Invoices**: 19,550
- **Finance Payments**: 19,550
- **Customer Accounts**: 1,539
- **Total Sales Value**: $32,651,205.39
- **Total Sales Value**: $33,253,352.55

### **Domain Performance**

| Domain | Orders | Total Sales | Avg Order Value |
|--------|--------|-------------|----------------|
| 🏕️ Camping | 8,498 | $8,738,526.77 | $1028.30 |
| 🍳 Kitchen | 9,356 | $21,430,728.20 | $2290.59 |
| ⛷️ Ski | 1,490 | $2,481,950.42 | $1665.74 |
| 🏕️ Camping | 8,519 | $8,766,028.32 | $1029.00 |
| 🍳 Kitchen | 9,573 | $22,155,271.94 | $2314.35 |
| ⛷️ Ski | 1,458 | $2,332,052.29 | $1599.49 |


## 🎯 Key Metrics
Expand All @@ -33,7 +33,7 @@
- **Financial Completeness**: Full order-to-payment lifecycle with invoicing

### **Data Volume**
- **Average Orders per Day**: 39.9
- **Average Order Value**: $1687.92
- **Average Orders per Day**: 40.3
- **Average Order Value**: $1700.94
- **Order Line Items**: 2.8 items per order average
- **Customer Coverage**: 1539 accounts across all domains