*/ class DealFactory extends Factory { public function definition(): array { // received_at в текущем месяце — попадает в стартовую партицию deals_2026_05. // В тестах при выходе за границы существующих партиций нужно явно // указывать ->state(['received_at' => ...]). // tenant_id и project_id создаются независимыми factories (deals НЕ имеет // FK на tenants/projects из-за партиционирования). Тесты, требующие // согласованности, передают tenant_id и project_id явно. return [ 'tenant_id' => Tenant::factory(), 'project_id' => Project::factory(), 'source_crm_id' => fake()->unique()->numberBetween(100_000_000, 999_999_999), 'phone' => '7'.fake()->numerify('##########'), 'phones' => null, 'status' => 'new', 'contact_name' => fake()->firstName(), 'comment' => null, 'manager_id' => null, 'escalated_count' => 0, 'is_test' => false, 'received_at' => Carbon::now(), ]; } }