41 lines
1.5 KiB
PHP
41 lines
1.5 KiB
PHP
<?php
|
|
|
|
return [
|
|
'otp_ttl_minutes' => (int) env('OTP_TTL_MINUTES', 5),
|
|
'otp_max_attempts' => (int) env('OTP_MAX_ATTEMPTS', 5),
|
|
'otp_rate_limit_per_phone' => (int) env('OTP_RATE_LIMIT_PER_PHONE', 3), // per 10 minutes
|
|
'pairing_token_ttl_minutes' => (int) env('PAIRING_TOKEN_TTL_MINUTES', 30),
|
|
|
|
'wa_otp_driver' => env('WA_OTP_DRIVER', 'log'),
|
|
|
|
'pairing' => [
|
|
// Balanced target seats: 4 slots (BEGINNER treated as HIGH-like by default)
|
|
'balanced_target' => ['LOW', 'MID', 'MID', 'HIGH'],
|
|
|
|
// Seat fill order
|
|
'seat_order' => [1,2,3,4],
|
|
|
|
// Pace-of-play guardrails
|
|
'max_high_like_per_flight' => 2,
|
|
|
|
// Course balancing: spread assigned seats across A/B unless course_pref is set
|
|
'course_balance' => true,
|
|
|
|
// Semi-hard course preference:
|
|
// true => always try preferred course first; only fallback if no seats exist on preferred.
|
|
// false => treat as soft preference (score-based).
|
|
'course_pref_semi_hard' => true,
|
|
|
|
// Hole bottleneck guardrail:
|
|
// Distribute HIGH/BEGINNER across start holes (shotgun) to avoid stacking slow flights on same hole.
|
|
'hole_balance_high_like' => true,
|
|
// Penalty weight for assigning high-like players onto already high-like-heavy holes.
|
|
'hole_high_like_penalty' => 12,
|
|
],
|
|
|
|
'xendit' => [
|
|
'api_key' => env('XENDIT_API_KEY', ''),
|
|
'webhook_token' => env('XENDIT_WEBHOOK_TOKEN', ''),
|
|
],
|
|
];
|