chore: remove DaxCompanySeeder (legacy demo data)
The DaxCompanySeeder created fake DAX-40 companies and transactions for development. We now use real data from the backend via the TransformDataPoolToProduction job, so this seeder is no longer needed.
This commit is contained in:
@@ -20,6 +20,7 @@ class DatabaseSeeder extends Seeder
|
||||
'email' => 'test@example.com',
|
||||
]);
|
||||
|
||||
$this->call(DaxCompanySeeder::class);
|
||||
// Note: Company and Transaction data is now synced from the backend
|
||||
// via TransformDataPoolToProduction job, not seeded manually
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,153 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\Company;
|
||||
use App\Models\Transaction;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Arr;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class DaxCompanySeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
$companies = [
|
||||
['name' => 'Adidas AG', 'legal_name' => 'adidas Aktiengesellschaft', 'ticker' => 'ADS', 'sector' => 'Konsumgüter (Zyklisch)', 'headquarters' => 'Herzogenaurach', 'summary' => 'Globaler Sportartikelhersteller mit Schwerpunkt auf Schuhen, Bekleidung und digitalen Services.', 'kyc_risk_level' => 'medium'],
|
||||
['name' => 'Airbus SE', 'legal_name' => 'Airbus Societas Europaea', 'ticker' => 'AIR', 'sector' => 'Industrie', 'headquarters' => 'Leiden', 'country' => 'NL', 'summary' => 'Luft- und Raumfahrtkonzern mit zivilen, militärischen und Raumfahrtaktivitäten.', 'kyc_risk_level' => 'medium'],
|
||||
['name' => 'Allianz SE', 'legal_name' => 'Allianz Societas Europaea', 'ticker' => 'ALV', 'sector' => 'Finanzen', 'headquarters' => 'München', 'summary' => 'Versicherung und Vermögensverwaltung mit globalem Risikoportfolio.', 'kyc_risk_level' => 'low'],
|
||||
['name' => 'BASF SE', 'legal_name' => 'BASF Societas Europaea', 'ticker' => 'BAS', 'sector' => 'Grundstoffe', 'headquarters' => 'Ludwigshafen', 'summary' => 'Chemiekonzern mit Aktivitäten in Materialien, Industrial Solutions und Agricultural Solutions.', 'kyc_risk_level' => 'medium'],
|
||||
['name' => 'Bayer AG', 'legal_name' => 'Bayer Aktiengesellschaft', 'ticker' => 'BAYN', 'sector' => 'Gesundheit', 'headquarters' => 'Leverkusen', 'summary' => 'Life-Science-Unternehmen mit den Segmenten Pharmaceuticals, Consumer Health und Crop Science.', 'kyc_risk_level' => 'medium'],
|
||||
['name' => 'Beiersdorf AG', 'legal_name' => 'Beiersdorf Aktiengesellschaft', 'ticker' => 'BEI', 'sector' => 'Konsumgüter (Defensiv)', 'headquarters' => 'Hamburg', 'summary' => 'Hautpflegeexperte mit Marken wie Nivea, Eucerin und Tesa.', 'kyc_risk_level' => 'low'],
|
||||
['name' => 'BMW AG', 'legal_name' => 'Bayerische Motoren Werke Aktiengesellschaft', 'ticker' => 'BMW', 'sector' => 'Konsumgüter (Zyklisch)', 'headquarters' => 'München', 'summary' => 'Hersteller von Premiumfahrzeugen mit den Marken BMW, MINI und Rolls-Royce.', 'kyc_risk_level' => 'medium'],
|
||||
['name' => 'Brenntag SE', 'legal_name' => 'Brenntag Societas Europaea', 'ticker' => 'BNR', 'sector' => 'Industrie', 'headquarters' => 'Essen', 'summary' => 'Weltweit führender Chemie- und Inhaltsstoffdistributor mit Value-Added Services.', 'kyc_risk_level' => 'medium'],
|
||||
['name' => 'Commerzbank AG', 'legal_name' => 'Commerzbank Aktiengesellschaft', 'ticker' => 'CBK', 'sector' => 'Finanzen', 'headquarters' => 'Frankfurt am Main', 'summary' => 'Universalbank mit Fokus auf Mittelstands- und Firmenkunden.', 'kyc_risk_level' => 'high'],
|
||||
['name' => 'Daimler Truck AG', 'legal_name' => 'Daimler Truck Holding Aktiengesellschaft', 'ticker' => 'DTG', 'sector' => 'Industrie', 'headquarters' => 'Leinfelden-Echterdingen', 'summary' => 'Hersteller von schweren Lkw und Bussen mit globalem Produktionsnetzwerk.', 'kyc_risk_level' => 'medium'],
|
||||
['name' => 'Deutsche Bank AG', 'legal_name' => 'Deutsche Bank Aktiengesellschaft', 'ticker' => 'DBK', 'sector' => 'Finanzen', 'headquarters' => 'Frankfurt am Main', 'summary' => 'Globales Investment- und Firmenkundengeschäft mit Vermögensverwaltung.', 'kyc_risk_level' => 'high'],
|
||||
['name' => 'Deutsche Börse AG', 'legal_name' => 'Deutsche Börse Aktiengesellschaft', 'ticker' => 'DB1', 'sector' => 'Finanzen', 'headquarters' => 'Eschborn', 'summary' => 'Marktinfrastrukturbetreiber für Handel, Clearing und Settlement.', 'kyc_risk_level' => 'low'],
|
||||
['name' => 'Deutsche Post AG', 'legal_name' => 'Deutsche Post Aktiengesellschaft', 'ticker' => 'DPW', 'sector' => 'Industrie', 'headquarters' => 'Bonn', 'summary' => 'Logistikkonzern der Deutsche Post DHL Group mit globaler Supply-Chain-Plattform.', 'kyc_risk_level' => 'medium'],
|
||||
['name' => 'Deutsche Telekom AG', 'legal_name' => 'Deutsche Telekom Aktiengesellschaft', 'ticker' => 'DTE', 'sector' => 'Kommunikation', 'headquarters' => 'Bonn', 'summary' => 'Integrierter Telekommunikationsanbieter mit Fokus auf Europa und USA.', 'kyc_risk_level' => 'low'],
|
||||
['name' => 'E.ON SE', 'legal_name' => 'E.ON Societas Europaea', 'ticker' => 'EOAN', 'sector' => 'Versorger', 'headquarters' => 'Essen', 'summary' => 'Energieversorger mit Schwerpunkt auf Energienetzen und Kundenlösungen.', 'kyc_risk_level' => 'medium'],
|
||||
['name' => 'Fresenius SE & Co. KGaA', 'legal_name' => 'Fresenius SE & Co. KGaA', 'ticker' => 'FRE', 'sector' => 'Gesundheit', 'headquarters' => 'Bad Homburg vor der Höhe', 'summary' => 'Gesundheitskonzern mit Kliniken, Medizintechnik und Dienstleistungen.', 'kyc_risk_level' => 'medium'],
|
||||
['name' => 'Hannover Rück SE', 'legal_name' => 'Hannover Rück Societas Europaea', 'ticker' => 'HNR1', 'sector' => 'Finanzen', 'headquarters' => 'Hannover', 'summary' => 'Rückversicherer mit Sparten in Schaden/Unfall und Leben/Kranken.', 'kyc_risk_level' => 'low'],
|
||||
['name' => 'Heidelberg Materials AG', 'legal_name' => 'Heidelberg Materials Aktiengesellschaft', 'ticker' => 'HEI', 'sector' => 'Grundstoffe', 'headquarters' => 'Heidelberg', 'summary' => 'Baustoffhersteller mit Schwerpunkt auf Zement, Zuschlagstoffen und Transportbeton.', 'kyc_risk_level' => 'medium'],
|
||||
['name' => 'Henkel AG & Co. KGaA', 'legal_name' => 'Henkel AG & Co. Kommanditgesellschaft auf Aktien', 'ticker' => 'HEN3', 'sector' => 'Konsumgüter (Defensiv)', 'headquarters' => 'Düsseldorf', 'summary' => 'Hersteller von Konsumgütern und Klebstofftechnologien mit globaler Präsenz.', 'kyc_risk_level' => 'low'],
|
||||
['name' => 'Infineon Technologies AG', 'legal_name' => 'Infineon Technologies Aktiengesellschaft', 'ticker' => 'IFX', 'sector' => 'Informationstechnologie', 'headquarters' => 'Neubiberg', 'summary' => 'Halbleiterhersteller für Mobilität, Energieeffizienz und Sicherheit.', 'kyc_risk_level' => 'medium'],
|
||||
['name' => 'Mercedes-Benz Group AG', 'legal_name' => 'Mercedes-Benz Group Aktiengesellschaft', 'ticker' => 'MBG', 'sector' => 'Konsumgüter (Zyklisch)', 'headquarters' => 'Stuttgart', 'summary' => 'Hersteller von Premium-Pkw und Vans mit starkem E-Mobility-Fokus.', 'kyc_risk_level' => 'medium'],
|
||||
['name' => 'Porsche SE', 'legal_name' => 'Porsche Automobil Holding Societas Europaea', 'ticker' => 'PAH3', 'sector' => 'Konsumgüter (Zyklisch)', 'headquarters' => 'Stuttgart', 'summary' => 'Strategische Beteiligungsgesellschaft mit Schwerpunkt Automobil- und Mobilitätssektor.', 'kyc_risk_level' => 'medium'],
|
||||
['name' => 'PUMA SE', 'legal_name' => 'PUMA Societas Europaea', 'ticker' => 'PUM', 'sector' => 'Konsumgüter (Zyklisch)', 'headquarters' => 'Herzogenaurach', 'summary' => 'Sportartikelunternehmen mit Performance- und Lifestyle-Sortiment.', 'kyc_risk_level' => 'medium'],
|
||||
['name' => 'Qiagen N.V.', 'legal_name' => 'Qiagen Naamloze Vennootschap', 'ticker' => 'QIA', 'sector' => 'Gesundheit', 'headquarters' => 'Venlo', 'country' => 'NL', 'summary' => 'Spezialist für molekulare Diagnostik und Probenaufbereitung.', 'kyc_risk_level' => 'medium'],
|
||||
['name' => 'RWE AG', 'legal_name' => 'RWE Aktiengesellschaft', 'ticker' => 'RWE', 'sector' => 'Versorger', 'headquarters' => 'Essen', 'summary' => 'Energieunternehmen in Transformation hin zu erneuerbaren Energien.', 'kyc_risk_level' => 'medium'],
|
||||
['name' => 'SAP SE', 'legal_name' => 'SAP Societas Europaea', 'ticker' => 'SAP', 'sector' => 'Informationstechnologie', 'headquarters' => 'Walldorf', 'summary' => 'Anbieter von Unternehmenssoftware für ERP und Cloud-Lösungen.', 'kyc_risk_level' => 'low'],
|
||||
['name' => 'Siemens AG', 'legal_name' => 'Siemens Aktiengesellschaft', 'ticker' => 'SIE', 'sector' => 'Industrie', 'headquarters' => 'München', 'summary' => 'Technologiekonzern mit Fokus auf Automatisierung, Digitalisierung und Infrastruktur.', 'kyc_risk_level' => 'low'],
|
||||
['name' => 'Siemens Healthineers AG', 'legal_name' => 'Siemens Healthineers Aktiengesellschaft', 'ticker' => 'SHL', 'sector' => 'Gesundheit', 'headquarters' => 'Erlangen', 'summary' => 'Medizintechnikanbieter für Bildgebung, Diagnostik und Therapie.', 'kyc_risk_level' => 'medium'],
|
||||
['name' => 'Symrise AG', 'legal_name' => 'Symrise Aktiengesellschaft', 'ticker' => 'SY1', 'sector' => 'Grundstoffe', 'headquarters' => 'Holzminden', 'summary' => 'Hersteller von Duft-, Geschmacks- und Nährstofflösungen.', 'kyc_risk_level' => 'medium'],
|
||||
['name' => 'Volkswagen AG', 'legal_name' => 'Volkswagen Aktiengesellschaft', 'ticker' => 'VOW', 'sector' => 'Konsumgüter (Zyklisch)', 'headquarters' => 'Wolfsburg', 'summary' => 'Automobilkonzern mit Markenportfolio von Volumen bis Luxus.', 'kyc_risk_level' => 'high'],
|
||||
];
|
||||
|
||||
$channels = [
|
||||
'SEPA-Überweisung',
|
||||
'Auslandsüberweisung',
|
||||
'SWIFT MT103',
|
||||
'Grenzüberschreitendes ACH',
|
||||
'Hochwertiges Clearing',
|
||||
'Handelsfinanzierungs-Abwicklung',
|
||||
];
|
||||
|
||||
$flaggedReasons = [
|
||||
'Gegenpartei erscheint auf konsolidierter Sanktionsliste.',
|
||||
'Transaktionsbetrag liegt 300 % über dem historischen Durchschnitt.',
|
||||
'Unüblicher Zahlungskorridor für das Branchensegment.',
|
||||
'Mehrere gestapelte Überweisungen im Monitoring erkannt.',
|
||||
'Begünstigte Bank sitzt in Hochrisiko-Jurisdiktion.',
|
||||
'Schnelle Mittelbewegungen über verschachtelte Konten.',
|
||||
'Negativmeldung zur Geschäftsleitung der Gegenpartei gefunden.',
|
||||
];
|
||||
|
||||
$analysts = ['AML-Radar', 'Sanktionswächter', 'Verhaltensanalyse', 'Netzwerk-Intelligence', 'Adverse-Media-Scan'];
|
||||
|
||||
$signalCatalog = [
|
||||
['type' => 'Sanktionsliste', 'value' => 'Treffer EU-Konsolidierte Liste'],
|
||||
['type' => 'PEP-Screening', 'value' => 'Politisch exponierte Person, Stufe 2'],
|
||||
['type' => 'Geo-Risiko', 'value' => 'Hochrisikoland: TR'],
|
||||
['type' => 'Transaktionsdichte', 'value' => '6 verknüpfte Zahlungen binnen 24h'],
|
||||
['type' => 'Strukturierung', 'value' => 'Hinweise auf Smurfing-Muster'],
|
||||
['type' => 'Negativnachrichten', 'value' => 'Aktuelle Betrugsermittlungen gemeldet'],
|
||||
['type' => 'Wirtschaftlich Berechtigter', 'value' => 'Intransparente Eigentümerstruktur'],
|
||||
['type' => 'Branchenabweichung', 'value' => 'Handelswert 210 % über Peergroup'],
|
||||
];
|
||||
|
||||
$statusPool = [
|
||||
Transaction::STATUS_TRUE_POSITIVE,
|
||||
Transaction::STATUS_FALSE_POSITIVE,
|
||||
Transaction::STATUS_FALSE_POSITIVE,
|
||||
Transaction::STATUS_CLEARED,
|
||||
Transaction::STATUS_CLEARED,
|
||||
Transaction::STATUS_CLEARED,
|
||||
];
|
||||
|
||||
$faker = fake('en_GB');
|
||||
$sequence = 1;
|
||||
|
||||
DB::transaction(function () use (
|
||||
$companies,
|
||||
$channels,
|
||||
$flaggedReasons,
|
||||
$analysts,
|
||||
$signalCatalog,
|
||||
$statusPool,
|
||||
$faker,
|
||||
&$sequence
|
||||
) {
|
||||
Transaction::query()->delete();
|
||||
Company::query()->delete();
|
||||
|
||||
foreach ($companies as $companyData) {
|
||||
$company = Company::create(array_merge(
|
||||
[
|
||||
'country' => $companyData['country'] ?? 'DE',
|
||||
],
|
||||
$companyData
|
||||
));
|
||||
|
||||
$transactionTotal = random_int(4, 7);
|
||||
|
||||
for ($i = 0; $i < $transactionTotal; $i++) {
|
||||
$status = Arr::random($statusPool);
|
||||
$riskScore = match ($status) {
|
||||
Transaction::STATUS_TRUE_POSITIVE => random_int(82, 95),
|
||||
Transaction::STATUS_FALSE_POSITIVE => random_int(48, 65),
|
||||
default => random_int(12, 28),
|
||||
};
|
||||
|
||||
$executedAt = Carbon::now()
|
||||
->subDays(random_int(1, 45))
|
||||
->setTime(random_int(7, 19), random_int(0, 59), random_int(0, 59));
|
||||
|
||||
$company->transactions()->create([
|
||||
'reference' => 'TRX-'.str_pad((string) $sequence++, 6, '0', STR_PAD_LEFT),
|
||||
'amount' => $faker->randomFloat(2, 8_500, 4_500_000),
|
||||
'currency' => Arr::random(['EUR', 'USD', 'GBP']),
|
||||
'counterparty' => $faker->company(),
|
||||
'counterparty_country' => Arr::random(['DE', 'DE', 'CH', 'AT', 'NL', 'GB', 'LU', 'SG']),
|
||||
'channel' => Arr::random($channels),
|
||||
'executed_at' => $executedAt,
|
||||
'risk_score' => $riskScore,
|
||||
'status' => $status,
|
||||
'requires_review' => true,
|
||||
'flagged_by' => Arr::random($analysts),
|
||||
'flagged_reason' => Arr::random($flaggedReasons),
|
||||
'signals' => array_values(Arr::random(
|
||||
$signalCatalog,
|
||||
random_int(1, min(3, count($signalCatalog)))
|
||||
)),
|
||||
]);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user