Scale demo seed data down for tutorial recordings

Customers: 100 → 27 (15 commercial across auto/industrial/architectural/
fitness/marine/energy, including 2 tax-exempt govts; 12 individuals)

Quotes: 75 → 20; date range extended to 4-6 months (was 90 days);
status distribution adjusted proportionally (2 draft, 3 sent, 10 approved,
3 rejected, 2 expired)

Jobs: fixed 50-loop → per-customer 0-5 jobs (~32 total); jobIdx cycles
all 16 statuses globally so every status is visible; creation dates spread
across 1-5 months for in-progress/early jobs, 2-6 months for completed jobs

SeededCustomerEmails updated to match new 27-customer set (added
gnelson@email.com and carol.evans@email.com)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-10 21:56:32 -04:00
parent 72382a5dd5
commit 01f6897d08
4 changed files with 165 additions and 247 deletions
@@ -164,26 +164,26 @@ public partial class SeedDataService
_ => ("Flat Black", true, false, 35, 10.0m)
};
// Maps quote index to a status code following the distribution plan above.
// APPROVED is the majority (35/75) to give SeedJobsAsync enough approved quotes to link jobs to.
// Maps quote index to a status code.
// APPROVED is the majority (10/20) to give SeedJobsAsync enough approved quotes to link jobs to.
static string StatusFor(int i) => i switch
{
< 8 => "DRAFT",
< 20 => "SENT",
< 55 => "APPROVED",
< 65 => "REJECTED",
< 2 => "DRAFT",
< 5 => "SENT",
< 15 => "APPROVED",
< 18 => "REJECTED",
_ => "EXPIRED"
};
var quotes = new List<Quote>();
for (int i = 0; i < 75; i++)
for (int i = 0; i < 20; i++)
{
var customer = customers[i % customers.Count];
var statusCode = StatusFor(i);
// Spread creation dates over the past 90 days; older first
var daysAgo = 90 - (int)(i * 1.2);
// Spread creation dates over the past 120180 days (4-6 months); older first
var daysAgo = 180 - (int)(i * 9.0);
var quoteDate = now.AddDays(-daysAgo);
var expireDate = quoteDate.AddDays(30);