@ak--47/dungeon-master 1.4.4 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/skills/analyze-soup/SKILL.md +158 -0
- package/.claude/skills/create-dungeon/SKILL.md +464 -0
- package/.claude/skills/verify-dungeon/SKILL.md +157 -0
- package/.claude/skills/verify-dungeon/references/counting-semantics.md +161 -0
- package/.claude/skills/verify-dungeon/references/report-format.md +216 -0
- package/.claude/skills/verify-dungeon/references/sql-recipes.md +857 -0
- package/.claude/skills/write-hooks/SKILL.md +468 -0
- package/CHANGELOG.md +147 -0
- package/HOOKS.md +1243 -597
- package/README.md +140 -5
- package/dungeons/technical/ad-spend.js +1 -1
- package/dungeons/technical/anonymous-users.js +1 -1
- package/dungeons/technical/array-of-object-lookup.js +1 -1
- package/dungeons/technical/datagen-v15-verify.js +74 -0
- package/dungeons/technical/experiments.js +1 -1
- package/dungeons/technical/foobar.js +1 -1
- package/dungeons/technical/group-analytics.js +1 -1
- package/dungeons/technical/mirror-strategies.js +1 -1
- package/dungeons/technical/nested-objects.js +1 -1
- package/dungeons/technical/retention-cadence.js +1 -1
- package/dungeons/technical/sanity.js +1 -1
- package/dungeons/technical/scale-test.js +1 -1
- package/dungeons/technical/scd.js +1 -1
- package/dungeons/technical/simple.js +1 -1
- package/dungeons/technical/simplest.js +74 -20
- package/dungeons/technical/text-generation.js +1 -1
- package/dungeons/vertical/ai-platform.js +4 -0
- package/dungeons/vertical/community.js +9 -3
- package/dungeons/vertical/crypto.js +5 -0
- package/dungeons/vertical/dating.js +23 -10
- package/dungeons/vertical/devtools.js +10 -0
- package/dungeons/vertical/ecommerce.js +6 -0
- package/dungeons/vertical/education.js +11 -0
- package/dungeons/vertical/fintech.js +13 -0
- package/dungeons/vertical/fitness.js +10 -0
- package/dungeons/vertical/food-delivery.js +9 -0
- package/dungeons/vertical/gaming.js +10 -0
- package/dungeons/vertical/healthcare.js +5 -0
- package/dungeons/vertical/insurance-application.js +10 -0
- package/dungeons/vertical/logistics.js +8 -1
- package/dungeons/vertical/marketplace.js +7 -0
- package/dungeons/vertical/media.js +8 -0
- package/dungeons/vertical/real-estate.js +7 -1
- package/dungeons/vertical/sass.js +12 -0
- package/dungeons/vertical/social.js +9 -0
- package/dungeons/vertical/travel.js +5 -0
- package/index.js +45 -7
- package/lib/core/config-validator.js +270 -7
- package/lib/core/context.js +58 -0
- package/lib/core/dungeon-loader.js +2 -5
- package/lib/generators/events.js +12 -13
- package/lib/generators/funnels.js +72 -1
- package/lib/hook-helpers/index.js +1 -0
- package/lib/hook-helpers/inject.js +95 -0
- package/lib/orchestrators/mixpanel-sender.js +27 -1
- package/lib/orchestrators/user-loop.js +488 -29
- package/lib/templates/macro-presets.js +39 -9
- package/lib/utils/utils.js +16 -79
- package/lib/verify/counting.js +320 -0
- package/lib/verify/emulate-breakdown.js +512 -108
- package/lib/verify/funnel-engine.js +539 -0
- package/lib/verify/identity.js +78 -0
- package/lib/verify/index.js +19 -0
- package/lib/verify/verify-dungeon.js +58 -0
- package/package.json +4 -2
- package/types.d.ts +314 -4
- package/scripts/smoke-test-all.mjs +0 -162
|
@@ -459,6 +459,7 @@ const config = {
|
|
|
459
459
|
{
|
|
460
460
|
event: "checkout",
|
|
461
461
|
weight: 2,
|
|
462
|
+
isStrictEvent: false,
|
|
462
463
|
properties: {
|
|
463
464
|
currency: ["USD", "CAD", "EUR", "BTC", "ETH", "JPY"],
|
|
464
465
|
coupon: weighChoices(["none", "none", "none", "none", "10%OFF", "20%OFF", "10%OFF", "20%OFF", "30%OFF", "40%OFF", "50%OFF"]),
|
|
@@ -468,6 +469,7 @@ const config = {
|
|
|
468
469
|
{
|
|
469
470
|
event: "add to cart",
|
|
470
471
|
weight: 4,
|
|
472
|
+
isStrictEvent: false,
|
|
471
473
|
properties: {
|
|
472
474
|
item: makeProducts(1),
|
|
473
475
|
amount: weighNumRange(1, 100, 0.3),
|
|
@@ -484,6 +486,7 @@ const config = {
|
|
|
484
486
|
{
|
|
485
487
|
event: "view item",
|
|
486
488
|
weight: 8,
|
|
489
|
+
isStrictEvent: false,
|
|
487
490
|
properties: {
|
|
488
491
|
item: makeProducts(1),
|
|
489
492
|
amount: weighNumRange(1, 100, 0.3),
|
|
@@ -500,6 +503,7 @@ const config = {
|
|
|
500
503
|
{
|
|
501
504
|
event: "save item",
|
|
502
505
|
weight: 5,
|
|
506
|
+
isStrictEvent: false,
|
|
503
507
|
properties: {
|
|
504
508
|
item: makeProducts(1),
|
|
505
509
|
amount: weighNumRange(1, 100, 0.3),
|
|
@@ -516,6 +520,7 @@ const config = {
|
|
|
516
520
|
{
|
|
517
521
|
event: "page view",
|
|
518
522
|
weight: 10,
|
|
523
|
+
isStrictEvent: false,
|
|
519
524
|
properties: {
|
|
520
525
|
page: ["/", "/help", "/account", "/watch", "/listen", "/product", "/people", "/peace"],
|
|
521
526
|
}
|
|
@@ -523,6 +528,7 @@ const config = {
|
|
|
523
528
|
{
|
|
524
529
|
event: "watch video",
|
|
525
530
|
weight: 8,
|
|
531
|
+
isStrictEvent: false,
|
|
526
532
|
properties: {
|
|
527
533
|
watchTimeSec: weighNumRange(10, 600, .25),
|
|
528
534
|
quality: ["2160p", "1440p", "1080p", "720p", "480p", "360p", "240p"],
|
|
@@ -383,6 +383,7 @@ const config = {
|
|
|
383
383
|
conversionRate: 70,
|
|
384
384
|
timeToConvert: 4,
|
|
385
385
|
weight: 5,
|
|
386
|
+
reentry: true,
|
|
386
387
|
},
|
|
387
388
|
{
|
|
388
389
|
// Assessment flow: quizzes and assignments after studying
|
|
@@ -390,6 +391,7 @@ const config = {
|
|
|
390
391
|
conversionRate: 55,
|
|
391
392
|
timeToConvert: 8,
|
|
392
393
|
weight: 3,
|
|
394
|
+
reentry: true,
|
|
393
395
|
},
|
|
394
396
|
{
|
|
395
397
|
// Course completion journey: enroll → complete → earn certificate
|
|
@@ -443,6 +445,7 @@ const config = {
|
|
|
443
445
|
{
|
|
444
446
|
event: "course enrolled",
|
|
445
447
|
weight: 8,
|
|
448
|
+
isStrictEvent: false,
|
|
446
449
|
properties: {
|
|
447
450
|
"course_id": courseIds,
|
|
448
451
|
"course_category": ["CS", "Math", "Science", "Business", "Arts", "Languages"],
|
|
@@ -463,6 +466,7 @@ const config = {
|
|
|
463
466
|
{
|
|
464
467
|
event: "lecture completed",
|
|
465
468
|
weight: 14,
|
|
469
|
+
isStrictEvent: false,
|
|
466
470
|
properties: {
|
|
467
471
|
"course_id": courseIds,
|
|
468
472
|
"lecture_id": lectureIds,
|
|
@@ -474,6 +478,7 @@ const config = {
|
|
|
474
478
|
{
|
|
475
479
|
event: "quiz started",
|
|
476
480
|
weight: 10,
|
|
481
|
+
isStrictEvent: false,
|
|
477
482
|
properties: {
|
|
478
483
|
"course_id": courseIds,
|
|
479
484
|
"quiz_id": quizIds,
|
|
@@ -484,6 +489,7 @@ const config = {
|
|
|
484
489
|
{
|
|
485
490
|
event: "quiz completed",
|
|
486
491
|
weight: 8,
|
|
492
|
+
isStrictEvent: false,
|
|
487
493
|
properties: {
|
|
488
494
|
"course_id": courseIds,
|
|
489
495
|
"quiz_id": quizIds,
|
|
@@ -495,6 +501,7 @@ const config = {
|
|
|
495
501
|
{
|
|
496
502
|
event: "assignment submitted",
|
|
497
503
|
weight: 6,
|
|
504
|
+
isStrictEvent: false,
|
|
498
505
|
properties: {
|
|
499
506
|
"course_id": courseIds,
|
|
500
507
|
"assignment_id": assignmentIds,
|
|
@@ -517,6 +524,7 @@ const config = {
|
|
|
517
524
|
{
|
|
518
525
|
event: "discussion posted",
|
|
519
526
|
weight: 7,
|
|
527
|
+
isStrictEvent: false,
|
|
520
528
|
properties: {
|
|
521
529
|
"course_id": courseIds,
|
|
522
530
|
"post_type": ["question", "answer", "comment"],
|
|
@@ -526,6 +534,7 @@ const config = {
|
|
|
526
534
|
{
|
|
527
535
|
event: "certificate earned",
|
|
528
536
|
weight: 2,
|
|
537
|
+
isStrictEvent: false,
|
|
529
538
|
properties: {
|
|
530
539
|
"course_id": courseIds,
|
|
531
540
|
"completion_time_days": u.weighNumRange(7, 180, 0.5, 45),
|
|
@@ -535,6 +544,7 @@ const config = {
|
|
|
535
544
|
{
|
|
536
545
|
event: "study group joined",
|
|
537
546
|
weight: 4,
|
|
547
|
+
isStrictEvent: false,
|
|
538
548
|
properties: {
|
|
539
549
|
"group_id": groupIds,
|
|
540
550
|
"group_size": u.weighNumRange(3, 20, 0.7, 8),
|
|
@@ -587,6 +597,7 @@ const config = {
|
|
|
587
597
|
{
|
|
588
598
|
event: "practice problem solved",
|
|
589
599
|
weight: 12,
|
|
600
|
+
isStrictEvent: false,
|
|
590
601
|
properties: {
|
|
591
602
|
"course_id": courseIds,
|
|
592
603
|
"problem_id": problemIds,
|
|
@@ -463,6 +463,7 @@ const config = {
|
|
|
463
463
|
{
|
|
464
464
|
event: "app session",
|
|
465
465
|
weight: 20,
|
|
466
|
+
isStrictEvent: false,
|
|
466
467
|
properties: {
|
|
467
468
|
"session_duration_sec": u.weighNumRange(10, 600, 0.3, 60),
|
|
468
469
|
"pages_viewed": u.weighNumRange(1, 15, 0.5, 3),
|
|
@@ -471,6 +472,7 @@ const config = {
|
|
|
471
472
|
{
|
|
472
473
|
event: "balance checked",
|
|
473
474
|
weight: 15,
|
|
475
|
+
isStrictEvent: false,
|
|
474
476
|
properties: {
|
|
475
477
|
"account_balance": u.weighNumRange(0, 50000, 0.8, 2500),
|
|
476
478
|
"account_type": ["checking", "savings", "investment"],
|
|
@@ -479,6 +481,7 @@ const config = {
|
|
|
479
481
|
{
|
|
480
482
|
event: "transaction completed",
|
|
481
483
|
weight: 18,
|
|
484
|
+
isStrictEvent: false,
|
|
482
485
|
properties: {
|
|
483
486
|
"transaction_type": ["purchase", "atm", "direct_deposit", "refund"],
|
|
484
487
|
"amount": u.weighNumRange(1, 5000, 0.3, 50),
|
|
@@ -489,6 +492,7 @@ const config = {
|
|
|
489
492
|
{
|
|
490
493
|
event: "transfer sent",
|
|
491
494
|
weight: 8,
|
|
495
|
+
isStrictEvent: false,
|
|
492
496
|
properties: {
|
|
493
497
|
"transfer_type": ["internal", "external", "p2p", "wire"],
|
|
494
498
|
"amount": u.weighNumRange(10, 10000, 0.3, 200),
|
|
@@ -498,6 +502,7 @@ const config = {
|
|
|
498
502
|
{
|
|
499
503
|
event: "bill paid",
|
|
500
504
|
weight: 6,
|
|
505
|
+
isStrictEvent: false,
|
|
501
506
|
properties: {
|
|
502
507
|
"bill_type": ["rent", "utilities", "phone", "insurance", "subscription", "loan_payment"],
|
|
503
508
|
"amount": u.weighNumRange(20, 3000, 0.5, 150),
|
|
@@ -516,6 +521,7 @@ const config = {
|
|
|
516
521
|
{
|
|
517
522
|
event: "budget created",
|
|
518
523
|
weight: 3,
|
|
524
|
+
isStrictEvent: false,
|
|
519
525
|
properties: {
|
|
520
526
|
"category": ["food", "transport", "entertainment", "shopping", "bills", "savings"],
|
|
521
527
|
"monthly_limit": u.weighNumRange(50, 2000, 0.5, 300),
|
|
@@ -532,6 +538,7 @@ const config = {
|
|
|
532
538
|
{
|
|
533
539
|
event: "savings goal set",
|
|
534
540
|
weight: 3,
|
|
541
|
+
isStrictEvent: false,
|
|
535
542
|
properties: {
|
|
536
543
|
"goal_type": ["emergency", "vacation", "car", "home", "education", "retirement"],
|
|
537
544
|
"target_amount": u.weighNumRange(500, 50000, 0.3, 5000),
|
|
@@ -541,6 +548,7 @@ const config = {
|
|
|
541
548
|
{
|
|
542
549
|
event: "investment made",
|
|
543
550
|
weight: 4,
|
|
551
|
+
isStrictEvent: false,
|
|
544
552
|
properties: {
|
|
545
553
|
"investment_type": ["stocks", "etf", "crypto", "bonds", "mutual_fund"],
|
|
546
554
|
"amount": u.weighNumRange(10, 10000, 0.3, 250),
|
|
@@ -550,6 +558,7 @@ const config = {
|
|
|
550
558
|
{
|
|
551
559
|
event: "card locked",
|
|
552
560
|
weight: 2,
|
|
561
|
+
isStrictEvent: false,
|
|
553
562
|
properties: {
|
|
554
563
|
"reason": ["lost", "stolen", "suspicious_activity", "travel"],
|
|
555
564
|
}
|
|
@@ -557,6 +566,7 @@ const config = {
|
|
|
557
566
|
{
|
|
558
567
|
event: "dispute filed",
|
|
559
568
|
weight: 2,
|
|
569
|
+
isStrictEvent: false,
|
|
560
570
|
properties: {
|
|
561
571
|
"dispute_amount": u.weighNumRange(10, 2000, 0.5, 100),
|
|
562
572
|
"reason": ["unauthorized", "duplicate", "not_received", "damaged", "wrong_amount"],
|
|
@@ -582,6 +592,7 @@ const config = {
|
|
|
582
592
|
{
|
|
583
593
|
event: "premium upgraded",
|
|
584
594
|
weight: 2,
|
|
595
|
+
isStrictEvent: false,
|
|
585
596
|
properties: {
|
|
586
597
|
"old_tier": ["basic", "plus", "premium"],
|
|
587
598
|
"new_tier": ["plus", "premium", "premium"],
|
|
@@ -591,6 +602,7 @@ const config = {
|
|
|
591
602
|
{
|
|
592
603
|
event: "support contacted",
|
|
593
604
|
weight: 3,
|
|
605
|
+
isStrictEvent: false,
|
|
594
606
|
properties: {
|
|
595
607
|
"channel": ["chat", "phone", "email", "in_app"],
|
|
596
608
|
"issue_type": ["transaction", "account", "card", "transfer", "technical"],
|
|
@@ -608,6 +620,7 @@ const config = {
|
|
|
608
620
|
{
|
|
609
621
|
event: "reward redeemed",
|
|
610
622
|
weight: 4,
|
|
623
|
+
isStrictEvent: false,
|
|
611
624
|
properties: {
|
|
612
625
|
"reward_type": ["cashback", "points", "discount", "partner_offer"],
|
|
613
626
|
"value": u.weighNumRange(1, 100, 0.5, 10),
|
|
@@ -362,6 +362,7 @@ const config = {
|
|
|
362
362
|
{
|
|
363
363
|
event: "workout completed",
|
|
364
364
|
weight: 8,
|
|
365
|
+
isStrictEvent: false,
|
|
365
366
|
properties: {
|
|
366
367
|
duration_minutes: u.weighNumRange(10, 90, 0.5, 40),
|
|
367
368
|
calories_burned: u.weighNumRange(50, 800, 0.4, 300),
|
|
@@ -374,6 +375,7 @@ const config = {
|
|
|
374
375
|
{
|
|
375
376
|
event: "workout planned",
|
|
376
377
|
weight: 6,
|
|
378
|
+
isStrictEvent: false,
|
|
377
379
|
properties: {
|
|
378
380
|
planned_duration_minutes: u.weighNumRange(15, 90, 0.5, 45),
|
|
379
381
|
day_of_week: ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"],
|
|
@@ -393,6 +395,7 @@ const config = {
|
|
|
393
395
|
{
|
|
394
396
|
event: "challenge joined",
|
|
395
397
|
weight: 3,
|
|
398
|
+
isStrictEvent: false,
|
|
396
399
|
properties: {
|
|
397
400
|
challenge_type: ["steps", "calories", "streak", "strength", "team_relay"],
|
|
398
401
|
duration_days: [7, 14, 21, 30],
|
|
@@ -403,6 +406,7 @@ const config = {
|
|
|
403
406
|
{
|
|
404
407
|
event: "challenge completed",
|
|
405
408
|
weight: 2,
|
|
409
|
+
isStrictEvent: false,
|
|
406
410
|
properties: {
|
|
407
411
|
challenge_type: ["steps", "calories", "streak", "strength", "team_relay"],
|
|
408
412
|
final_rank: u.weighNumRange(1, 50, 0.3, 10),
|
|
@@ -413,6 +417,7 @@ const config = {
|
|
|
413
417
|
{
|
|
414
418
|
event: "achievement unlocked",
|
|
415
419
|
weight: 2,
|
|
420
|
+
isStrictEvent: false,
|
|
416
421
|
properties: {
|
|
417
422
|
achievement_type: ["streak_milestone", "weight_goal", "distance_record", "calories_target", "social_champion", "first_workout"],
|
|
418
423
|
streak_days_at_unlock: u.weighNumRange(1, 100, 0.3, 10),
|
|
@@ -421,6 +426,7 @@ const config = {
|
|
|
421
426
|
{
|
|
422
427
|
event: "friend added",
|
|
423
428
|
weight: 2,
|
|
429
|
+
isStrictEvent: false,
|
|
424
430
|
properties: {
|
|
425
431
|
source: ["search", "contacts", "challenge", "suggestion", "qr_code"],
|
|
426
432
|
},
|
|
@@ -436,6 +442,7 @@ const config = {
|
|
|
436
442
|
{
|
|
437
443
|
event: "progress checked",
|
|
438
444
|
weight: 5,
|
|
445
|
+
isStrictEvent: false,
|
|
439
446
|
properties: {
|
|
440
447
|
metric_viewed: ["weight", "body_fat", "steps", "calories_burned", "workout_count", "streaks"],
|
|
441
448
|
trend_direction: ["improving", "improving", "stable", "declining"],
|
|
@@ -445,6 +452,7 @@ const config = {
|
|
|
445
452
|
{
|
|
446
453
|
event: "coach session",
|
|
447
454
|
weight: 3,
|
|
455
|
+
isStrictEvent: false,
|
|
448
456
|
properties: {
|
|
449
457
|
session_type: ["live_video", "chat", "plan_review", "form_check"],
|
|
450
458
|
duration_minutes: u.weighNumRange(10, 60, 0.5, 30),
|
|
@@ -497,6 +505,7 @@ const config = {
|
|
|
497
505
|
{
|
|
498
506
|
event: "profile updated",
|
|
499
507
|
weight: 2,
|
|
508
|
+
isStrictEvent: false,
|
|
500
509
|
properties: {
|
|
501
510
|
field_updated: ["weight", "height", "goal", "avatar", "workout_preferences", "notification_settings"],
|
|
502
511
|
},
|
|
@@ -531,6 +540,7 @@ const config = {
|
|
|
531
540
|
order: "sequential",
|
|
532
541
|
timeToConvert: 48,
|
|
533
542
|
weight: 5,
|
|
543
|
+
reentry: true,
|
|
534
544
|
},
|
|
535
545
|
{
|
|
536
546
|
name: "Social Engagement",
|
|
@@ -446,6 +446,7 @@ const config = {
|
|
|
446
446
|
{
|
|
447
447
|
event: "restaurant viewed",
|
|
448
448
|
weight: 15,
|
|
449
|
+
isStrictEvent: false,
|
|
449
450
|
properties: {
|
|
450
451
|
"restaurant_id": restaurantIds,
|
|
451
452
|
"cuisine_type": [
|
|
@@ -466,6 +467,7 @@ const config = {
|
|
|
466
467
|
{
|
|
467
468
|
event: "item added to cart",
|
|
468
469
|
weight: 14,
|
|
470
|
+
isStrictEvent: false,
|
|
469
471
|
properties: {
|
|
470
472
|
"item_id": itemIds,
|
|
471
473
|
"item_category": ["entree", "appetizer", "drink", "dessert", "side"],
|
|
@@ -484,6 +486,7 @@ const config = {
|
|
|
484
486
|
{
|
|
485
487
|
event: "coupon applied",
|
|
486
488
|
weight: 4,
|
|
489
|
+
isStrictEvent: false,
|
|
487
490
|
properties: {
|
|
488
491
|
"coupon_code": couponCodes,
|
|
489
492
|
"discount_type": ["percent", "flat", "free_delivery"],
|
|
@@ -493,6 +496,7 @@ const config = {
|
|
|
493
496
|
{
|
|
494
497
|
event: "checkout started",
|
|
495
498
|
weight: 12,
|
|
499
|
+
isStrictEvent: false,
|
|
496
500
|
properties: {
|
|
497
501
|
"cart_total": u.weighNumRange(8, 150, 0.8, 40),
|
|
498
502
|
"items_count": u.weighNumRange(1, 8, 1.2, 20),
|
|
@@ -502,6 +506,7 @@ const config = {
|
|
|
502
506
|
{
|
|
503
507
|
event: "order placed",
|
|
504
508
|
weight: 10,
|
|
509
|
+
isStrictEvent: false,
|
|
505
510
|
properties: {
|
|
506
511
|
"order_id": orderIds,
|
|
507
512
|
"payment_method": ["credit_card", "apple_pay", "google_pay", "paypal", "cash"],
|
|
@@ -522,6 +527,7 @@ const config = {
|
|
|
522
527
|
{
|
|
523
528
|
event: "order delivered",
|
|
524
529
|
weight: 9,
|
|
530
|
+
isStrictEvent: false,
|
|
525
531
|
properties: {
|
|
526
532
|
"order_id": orderIds,
|
|
527
533
|
"actual_delivery_mins": u.weighNumRange(12, 90, 1.0, 40),
|
|
@@ -531,6 +537,7 @@ const config = {
|
|
|
531
537
|
{
|
|
532
538
|
event: "order rated",
|
|
533
539
|
weight: 7,
|
|
540
|
+
isStrictEvent: false,
|
|
534
541
|
properties: {
|
|
535
542
|
"order_id": orderIds,
|
|
536
543
|
"food_rating": u.weighNumRange(1, 5, 0.8, 30),
|
|
@@ -563,6 +570,7 @@ const config = {
|
|
|
563
570
|
{
|
|
564
571
|
event: "subscription started",
|
|
565
572
|
weight: 2,
|
|
573
|
+
isStrictEvent: false,
|
|
566
574
|
properties: {
|
|
567
575
|
"plan": ["quickbite_plus_monthly", "quickbite_plus_monthly", "quickbite_plus_annual"],
|
|
568
576
|
"price": [9.99, 9.99, 79.99],
|
|
@@ -588,6 +596,7 @@ const config = {
|
|
|
588
596
|
{
|
|
589
597
|
event: "reorder initiated",
|
|
590
598
|
weight: 6,
|
|
599
|
+
isStrictEvent: false,
|
|
591
600
|
properties: {
|
|
592
601
|
"order_id": orderIds,
|
|
593
602
|
"original_order_age_days": u.weighNumRange(1, 60, 1.5, 30),
|
|
@@ -435,6 +435,7 @@ const config = {
|
|
|
435
435
|
{
|
|
436
436
|
event: "quest turned in",
|
|
437
437
|
weight: 10,
|
|
438
|
+
isStrictEvent: false,
|
|
438
439
|
properties: {
|
|
439
440
|
"quest_id": questIds,
|
|
440
441
|
"reward_gold": u.weighNumRange(10, 500, 0.5, 100),
|
|
@@ -453,6 +454,7 @@ const config = {
|
|
|
453
454
|
{
|
|
454
455
|
event: "exit dungeon",
|
|
455
456
|
weight: 14,
|
|
457
|
+
isStrictEvent: false,
|
|
456
458
|
properties: {
|
|
457
459
|
"dungeon_id": dungeonIds,
|
|
458
460
|
"time_spent_mins": u.weighNumRange(5, 120, 0.6, 30),
|
|
@@ -462,6 +464,7 @@ const config = {
|
|
|
462
464
|
{
|
|
463
465
|
event: "find treasure",
|
|
464
466
|
weight: 16,
|
|
467
|
+
isStrictEvent: false,
|
|
465
468
|
properties: {
|
|
466
469
|
"treasure_type": ["Gold", "Weapon", "Armor", "Potion", "Scroll", "Rare Artifact"],
|
|
467
470
|
"treasure_value": u.weighNumRange(5, 1000, 1.2, 50),
|
|
@@ -488,6 +491,7 @@ const config = {
|
|
|
488
491
|
{
|
|
489
492
|
event: "item purchased",
|
|
490
493
|
weight: 11,
|
|
494
|
+
isStrictEvent: false,
|
|
491
495
|
properties: {
|
|
492
496
|
"item_id": itemIds,
|
|
493
497
|
"item_type": ["Weapon", "Armor", "Potion", "Scroll", "Mount", "Cosmetic"],
|
|
@@ -507,6 +511,7 @@ const config = {
|
|
|
507
511
|
{
|
|
508
512
|
event: "real money purchase",
|
|
509
513
|
weight: 3,
|
|
514
|
+
isStrictEvent: false,
|
|
510
515
|
properties: {
|
|
511
516
|
"product": [
|
|
512
517
|
"Premium Currency (1000)",
|
|
@@ -523,6 +528,7 @@ const config = {
|
|
|
523
528
|
{
|
|
524
529
|
event: "guild joined",
|
|
525
530
|
weight: 4,
|
|
531
|
+
isStrictEvent: false,
|
|
526
532
|
properties: {
|
|
527
533
|
"guild_size": u.weighNumRange(5, 100),
|
|
528
534
|
"guild_level": u.weighNumRange(1, 20),
|
|
@@ -538,6 +544,7 @@ const config = {
|
|
|
538
544
|
{
|
|
539
545
|
event: "inspect",
|
|
540
546
|
weight: 9,
|
|
547
|
+
isStrictEvent: false,
|
|
541
548
|
properties: {
|
|
542
549
|
"inspect_target": ["NPC", "Monster", "Treasure Chest", "Door", "Statue", "Bookshelf"],
|
|
543
550
|
}
|
|
@@ -545,6 +552,7 @@ const config = {
|
|
|
545
552
|
{
|
|
546
553
|
event: "search for clues",
|
|
547
554
|
weight: 8,
|
|
555
|
+
isStrictEvent: false,
|
|
548
556
|
properties: {
|
|
549
557
|
"location_type": ["Dungeon Entrance", "Hidden Room", "Quest Location", "Town Square"],
|
|
550
558
|
"clue_found": [false, false, true, true, true],
|
|
@@ -553,6 +561,7 @@ const config = {
|
|
|
553
561
|
{
|
|
554
562
|
event: "use item",
|
|
555
563
|
weight: 14,
|
|
564
|
+
isStrictEvent: false,
|
|
556
565
|
properties: {
|
|
557
566
|
"item_id": itemIds,
|
|
558
567
|
"item_type": [
|
|
@@ -574,6 +583,7 @@ const config = {
|
|
|
574
583
|
{
|
|
575
584
|
event: "combat completed",
|
|
576
585
|
weight: 18,
|
|
586
|
+
isStrictEvent: false,
|
|
577
587
|
properties: {
|
|
578
588
|
"outcome": ["Victory", "Defeat", "Fled"],
|
|
579
589
|
"loot_gained": [false, false, false, true, true, true, true, true, true, true],
|
|
@@ -354,6 +354,7 @@ const config = {
|
|
|
354
354
|
{
|
|
355
355
|
event: "appointment booked",
|
|
356
356
|
weight: 6,
|
|
357
|
+
isStrictEvent: false,
|
|
357
358
|
properties: {
|
|
358
359
|
doctor_id: chance.pickone.bind(chance, doctorIds),
|
|
359
360
|
clinic_id: chance.pickone.bind(chance, clinicIds),
|
|
@@ -365,6 +366,7 @@ const config = {
|
|
|
365
366
|
{
|
|
366
367
|
event: "consultation completed",
|
|
367
368
|
weight: 5,
|
|
369
|
+
isStrictEvent: false,
|
|
368
370
|
properties: {
|
|
369
371
|
doctor_id: chance.pickone.bind(chance, doctorIds),
|
|
370
372
|
consultation_mode: ["phone", "phone", "video"],
|
|
@@ -377,6 +379,7 @@ const config = {
|
|
|
377
379
|
{
|
|
378
380
|
event: "prescription issued",
|
|
379
381
|
weight: 4,
|
|
382
|
+
isStrictEvent: false,
|
|
380
383
|
properties: {
|
|
381
384
|
medication_type: ["antibiotic", "antiviral", "painkiller", "anti_inflammatory", "antidepressant", "inhaler", "topical", "chronic_maintenance"],
|
|
382
385
|
quantity: u.weighNumRange(1, 90, 0.3, 30),
|
|
@@ -387,6 +390,7 @@ const config = {
|
|
|
387
390
|
{
|
|
388
391
|
event: "prescription refill",
|
|
389
392
|
weight: 3,
|
|
393
|
+
isStrictEvent: false,
|
|
390
394
|
properties: {
|
|
391
395
|
medication_type: ["antibiotic", "antiviral", "painkiller", "anti_inflammatory", "antidepressant", "inhaler", "topical", "chronic_maintenance"],
|
|
392
396
|
quantity: u.weighNumRange(1, 90, 0.3, 30),
|
|
@@ -397,6 +401,7 @@ const config = {
|
|
|
397
401
|
{
|
|
398
402
|
event: "follow up scheduled",
|
|
399
403
|
weight: 3,
|
|
404
|
+
isStrictEvent: false,
|
|
400
405
|
properties: {
|
|
401
406
|
doctor_id: chance.pickone.bind(chance, doctorIds),
|
|
402
407
|
days_until_followup: u.weighNumRange(3, 30, 0.5, 7),
|
|
@@ -430,6 +430,7 @@ const config = {
|
|
|
430
430
|
{
|
|
431
431
|
event: "application started",
|
|
432
432
|
weight: 4,
|
|
433
|
+
isStrictEvent: false,
|
|
433
434
|
properties: {
|
|
434
435
|
coverage_level: ["basic", "standard", "premium"],
|
|
435
436
|
estimated_premium: u.weighNumRange(30, 800, 0.3, 150),
|
|
@@ -438,6 +439,7 @@ const config = {
|
|
|
438
439
|
{
|
|
439
440
|
event: "application step completed",
|
|
440
441
|
weight: 6,
|
|
442
|
+
isStrictEvent: false,
|
|
441
443
|
properties: {
|
|
442
444
|
step_name: [
|
|
443
445
|
"personal_info",
|
|
@@ -454,6 +456,7 @@ const config = {
|
|
|
454
456
|
{
|
|
455
457
|
event: "document uploaded",
|
|
456
458
|
weight: 3,
|
|
459
|
+
isStrictEvent: false,
|
|
457
460
|
properties: {
|
|
458
461
|
document_type: [
|
|
459
462
|
"drivers_license",
|
|
@@ -476,6 +479,7 @@ const config = {
|
|
|
476
479
|
{
|
|
477
480
|
event: "application approved",
|
|
478
481
|
weight: 2,
|
|
482
|
+
isStrictEvent: false,
|
|
479
483
|
properties: {
|
|
480
484
|
approved_premium: u.weighNumRange(30, 800, 0.3, 150),
|
|
481
485
|
approval_time_hours: u.weighNumRange(1, 72, 0.5, 24),
|
|
@@ -484,6 +488,7 @@ const config = {
|
|
|
484
488
|
{
|
|
485
489
|
event: "policy activated",
|
|
486
490
|
weight: 2,
|
|
491
|
+
isStrictEvent: false,
|
|
487
492
|
properties: {
|
|
488
493
|
policy_term_months: [6, 12, 12, 12, 24],
|
|
489
494
|
effective_date_offset_days: u.weighNumRange(0, 30, 0.5, 7),
|
|
@@ -492,6 +497,7 @@ const config = {
|
|
|
492
497
|
{
|
|
493
498
|
event: "claim filed",
|
|
494
499
|
weight: 2,
|
|
500
|
+
isStrictEvent: false,
|
|
495
501
|
properties: {
|
|
496
502
|
claim_type: [
|
|
497
503
|
"collision",
|
|
@@ -521,6 +527,7 @@ const config = {
|
|
|
521
527
|
{
|
|
522
528
|
event: "payment made",
|
|
523
529
|
weight: 5,
|
|
530
|
+
isStrictEvent: false,
|
|
524
531
|
properties: {
|
|
525
532
|
payment_method: ["credit_card", "bank_transfer", "auto_pay", "check"],
|
|
526
533
|
amount: u.weighNumRange(30, 800, 0.3, 150),
|
|
@@ -531,6 +538,7 @@ const config = {
|
|
|
531
538
|
{
|
|
532
539
|
event: "support ticket created",
|
|
533
540
|
weight: 4,
|
|
541
|
+
isStrictEvent: false,
|
|
534
542
|
properties: {
|
|
535
543
|
issue_category: [
|
|
536
544
|
"billing",
|
|
@@ -564,6 +572,7 @@ const config = {
|
|
|
564
572
|
{
|
|
565
573
|
event: "coverage reviewed",
|
|
566
574
|
weight: 4,
|
|
575
|
+
isStrictEvent: false,
|
|
567
576
|
properties: {
|
|
568
577
|
current_premium: u.weighNumRange(30, 800, 0.3, 150),
|
|
569
578
|
coverage_adequate: [true, true, true, false],
|
|
@@ -586,6 +595,7 @@ const config = {
|
|
|
586
595
|
{
|
|
587
596
|
event: "renewal completed",
|
|
588
597
|
weight: 2,
|
|
598
|
+
isStrictEvent: false,
|
|
589
599
|
properties: {
|
|
590
600
|
renewal_premium: u.weighNumRange(30, 800, 0.3, 150),
|
|
591
601
|
premium_change_pct: u.weighNumRange(-15, 20, 1, 3),
|
|
@@ -391,6 +391,7 @@ const config = {
|
|
|
391
391
|
{
|
|
392
392
|
event: "inventory checked",
|
|
393
393
|
weight: 8,
|
|
394
|
+
isStrictEvent: false,
|
|
394
395
|
properties: {
|
|
395
396
|
warehouse_id: chance.pickone.bind(chance, warehouseIds),
|
|
396
397
|
sku_category: ["electronics", "apparel", "food_beverage", "pharma", "raw_materials", "packaging", "automotive_parts"],
|
|
@@ -402,6 +403,7 @@ const config = {
|
|
|
402
403
|
{
|
|
403
404
|
event: "stockout alert",
|
|
404
405
|
weight: 5,
|
|
406
|
+
isStrictEvent: false,
|
|
405
407
|
properties: {
|
|
406
408
|
warehouse_id: chance.pickone.bind(chance, warehouseIds),
|
|
407
409
|
sku_category: ["electronics", "apparel", "food_beverage", "pharma", "raw_materials", "packaging"],
|
|
@@ -413,6 +415,7 @@ const config = {
|
|
|
413
415
|
{
|
|
414
416
|
event: "purchase order created",
|
|
415
417
|
weight: 5,
|
|
418
|
+
isStrictEvent: false,
|
|
416
419
|
properties: {
|
|
417
420
|
supplier_id: chance.pickone.bind(chance, supplierIds),
|
|
418
421
|
sku_category: ["electronics", "apparel", "food_beverage", "pharma", "raw_materials", "packaging", "automotive_parts"],
|
|
@@ -457,6 +460,7 @@ const config = {
|
|
|
457
460
|
{
|
|
458
461
|
event: "integration connected",
|
|
459
462
|
weight: 2,
|
|
463
|
+
isStrictEvent: false,
|
|
460
464
|
properties: {
|
|
461
465
|
integration_type: ["erp", "accounting", "shipping", "ecommerce", "crm", "bi_tool"],
|
|
462
466
|
integration_name: ["SAP", "QuickBooks", "ShipStation", "Shopify", "Salesforce", "NetSuite", "Xero"],
|
|
@@ -466,6 +470,7 @@ const config = {
|
|
|
466
470
|
{
|
|
467
471
|
event: "report generated",
|
|
468
472
|
weight: 4,
|
|
473
|
+
isStrictEvent: false,
|
|
469
474
|
properties: {
|
|
470
475
|
report_type: ["inventory_summary", "order_history", "supplier_performance", "cost_analysis", "forecast", "compliance"],
|
|
471
476
|
report_pages: u.weighNumRange(1, 50, 0.4, 20),
|
|
@@ -476,6 +481,7 @@ const config = {
|
|
|
476
481
|
{
|
|
477
482
|
event: "alert configured",
|
|
478
483
|
weight: 2,
|
|
484
|
+
isStrictEvent: false,
|
|
479
485
|
properties: {
|
|
480
486
|
alert_type: ["low_stock", "delivery_delay", "price_change", "quality_threshold", "expiry_warning"],
|
|
481
487
|
threshold_value: u.weighNumRange(1, 500, 0.4, 50),
|
|
@@ -569,6 +575,7 @@ const config = {
|
|
|
569
575
|
order: "sequential",
|
|
570
576
|
timeToConvert: 168,
|
|
571
577
|
weight: 5,
|
|
578
|
+
reentry: true,
|
|
572
579
|
},
|
|
573
580
|
{
|
|
574
581
|
name: "Supplier Management",
|
|
@@ -939,7 +946,7 @@ const config = {
|
|
|
939
946
|
if (invCheckCount >= 5 && invCheckCount <= 15) {
|
|
940
947
|
record.forEach(e => {
|
|
941
948
|
if (e.event === 'purchase order created' && typeof e.quantity === 'number') {
|
|
942
|
-
e.quantity = Math.round(e.quantity * 1.
|
|
949
|
+
e.quantity = Math.round(e.quantity * 1.4);
|
|
943
950
|
}
|
|
944
951
|
});
|
|
945
952
|
} else if (invCheckCount >= 16) {
|
|
@@ -354,6 +354,7 @@ const config = {
|
|
|
354
354
|
{
|
|
355
355
|
event: "item searched",
|
|
356
356
|
weight: 8,
|
|
357
|
+
isStrictEvent: false,
|
|
357
358
|
properties: {
|
|
358
359
|
search_query: ["laptop", "vintage jacket", "sneakers", "headphones", "phone case", "gaming console", "watch", "sunglasses", "backpack", "camera"],
|
|
359
360
|
results_count: u.weighNumRange(0, 50, 0.5),
|
|
@@ -363,6 +364,7 @@ const config = {
|
|
|
363
364
|
{
|
|
364
365
|
event: "item viewed",
|
|
365
366
|
weight: 7,
|
|
367
|
+
isStrictEvent: false,
|
|
366
368
|
properties: {
|
|
367
369
|
listing_id: chance.pickone.bind(chance, listingIds),
|
|
368
370
|
item_price: u.weighNumRange(5, 500, 0.3, 45),
|
|
@@ -383,6 +385,7 @@ const config = {
|
|
|
383
385
|
{
|
|
384
386
|
event: "purchase completed",
|
|
385
387
|
weight: 3,
|
|
388
|
+
isStrictEvent: false,
|
|
386
389
|
properties: {
|
|
387
390
|
listing_id: chance.pickone.bind(chance, listingIds),
|
|
388
391
|
total_amount: u.weighNumRange(10, 500, 0.3, 60),
|
|
@@ -394,6 +397,7 @@ const config = {
|
|
|
394
397
|
{
|
|
395
398
|
event: "listing created",
|
|
396
399
|
weight: 4,
|
|
400
|
+
isStrictEvent: false,
|
|
397
401
|
properties: {
|
|
398
402
|
listing_id: chance.pickone.bind(chance, listingIds),
|
|
399
403
|
store_id: chance.pickone.bind(chance, storeIds),
|
|
@@ -414,6 +418,7 @@ const config = {
|
|
|
414
418
|
{
|
|
415
419
|
event: "offer received",
|
|
416
420
|
weight: 3,
|
|
421
|
+
isStrictEvent: false,
|
|
417
422
|
properties: {
|
|
418
423
|
listing_id: chance.pickone.bind(chance, listingIds),
|
|
419
424
|
offer_amount: u.weighNumRange(5, 400, 0.3, 40),
|
|
@@ -423,6 +428,7 @@ const config = {
|
|
|
423
428
|
{
|
|
424
429
|
event: "offer accepted",
|
|
425
430
|
weight: 2,
|
|
431
|
+
isStrictEvent: false,
|
|
426
432
|
properties: {
|
|
427
433
|
listing_id: chance.pickone.bind(chance, listingIds),
|
|
428
434
|
final_price: u.weighNumRange(10, 500, 0.3, 55),
|
|
@@ -452,6 +458,7 @@ const config = {
|
|
|
452
458
|
{
|
|
453
459
|
event: "message sent",
|
|
454
460
|
weight: 5,
|
|
461
|
+
isStrictEvent: false,
|
|
455
462
|
properties: {
|
|
456
463
|
message_type: ["inquiry", "inquiry", "negotiation", "shipping_question", "complaint", "thank_you"],
|
|
457
464
|
recipient_type: ["seller", "seller", "buyer", "support"],
|