Entscheidung 13.07.: verkauft wird nur, was sichtbar ist — max. 5 gleichzeitige Boosts je Startseite, 3 je Branchenseite (= die sichtbaren Plaetze; Hero-Slider damit vertagt). Neue Stufe Kategorie-Boost (nur Branchenseite, 6/10/18 Credits = 50 % aufgerundet); der Startseiten-Boost (12/20/35) erscheint weiter auf Start- UND Branchenseite. - boosts.placement (home/category, Bestand = home) + BoostPlacement-Enum; Preise/Slots in config/credits.php (boost_category, boost_slots) - BoostService::slotAvailability() je Ausgabe (Portal x Sprache, Kategorie zusaetzlich je Rubrik); ausgebucht -> soldOut-Exception mit fruehestem freien Termin; Verlaengerungen halten ihren Slot, Stufen verlaengern unabhaengig; Kategorie-Boost invalidiert nur Kategorie-Caches - Startseite zeigt nur Home-Boosts; Branchenseite: Kategorie-Boosts mit Vorrang (ihre 3 Slots sind die Garantie), Home-Boosts fuellen den Rest - Add-on-Panel der PM-Seite: zwei Boost-Angebote, bei vollem Inventar "Derzeit ausgebucht — frei ab" statt Kauf-Buttons (serverseitig gegated); Buchungsseiten-Preisliste um die Kategorie-Staffel ergaenzt Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
113 lines
3.5 KiB
PHP
113 lines
3.5 KiB
PHP
<?php
|
||
|
||
use App\Enums\Tier;
|
||
|
||
return [
|
||
|
||
/*
|
||
|--------------------------------------------------------------------------
|
||
| Credit-Ökonomie (Decision-Update Phase-2-Funktionen, Rev. 4)
|
||
|--------------------------------------------------------------------------
|
||
|
|
||
| 1 Credit = 1 €. Alle Preise sind die zur Kaufzeit aus dem aktiven Tier
|
||
| abgeleiteten Credit-Beträge (nicht statisch je Kauf gespeichert). Die
|
||
| zentrale Ableitung erfolgt in App\Services\Billing\CreditPricingService.
|
||
|
|
||
*/
|
||
|
||
/*
|
||
| Extra-PM (Kontingent-Nachkauf) — tier-gestaffelt. Treuevorteil:
|
||
| höheres Abo = günstigere Extra-PM (Einzel 19 … Agency 8).
|
||
*/
|
||
'extra_pm' => [
|
||
Tier::Einzel->value => 19,
|
||
Tier::Starter->value => 15,
|
||
Tier::Business->value => 12,
|
||
Tier::Pro->value => 10,
|
||
Tier::Agency->value => 8,
|
||
],
|
||
|
||
/*
|
||
| Startseiten-Boost (Platzierung Startseite + Branchenseite) — nach Dauer
|
||
| in Tagen. Pro-Tag-Preis sinkt mit der Dauer; Einstieg bleibt unter dem
|
||
| PM-Preis.
|
||
*/
|
||
'boost' => [
|
||
7 => 12,
|
||
14 => 20,
|
||
30 => 35,
|
||
],
|
||
|
||
/*
|
||
| Kategorie-Boost (nur Branchenseite) — 50 % vom Startseiten-Boost,
|
||
| aufgerundet (Entscheidung 13.07.2026).
|
||
*/
|
||
'boost_category' => [
|
||
7 => 6,
|
||
14 => 10,
|
||
30 => 18,
|
||
],
|
||
|
||
/*
|
||
| Slot-Inventar je Ausgabe (Portal × Sprache): mehr gleichzeitige Boosts
|
||
| als sichtbare Plätze werden nicht verkauft — das Kauf-Modal zeigt
|
||
| stattdessen „Derzeit ausgebucht" mit dem frühesten freien Termin.
|
||
| `home` gilt je Startseite, `category` je Branchenseite (Rubrik).
|
||
*/
|
||
'boost_slots' => [
|
||
'home' => 5,
|
||
'category' => 3,
|
||
],
|
||
|
||
/*
|
||
| Veröffentlichungsnachweis-PDF — pauschal pro PM (Impulskauf).
|
||
*/
|
||
'proof_pdf' => 3,
|
||
|
||
/*
|
||
| Credit-Pakete (Wallet-Topup über Stripe). 1 Credit = 1 € beim Ausgeben;
|
||
| größere Pakete enthalten Bonus-Credits (Volumenrabatt steckt im Paket).
|
||
| `price_cents` ist der Netto-Zahlbetrag, `credits` die Wallet-Gutschrift.
|
||
*/
|
||
'packs' => [
|
||
['key' => 'p10', 'price_cents' => 1000, 'credits' => 10],
|
||
['key' => 'p25', 'price_cents' => 2500, 'credits' => 27],
|
||
['key' => 'p50', 'price_cents' => 5000, 'credits' => 55],
|
||
['key' => 'p100', 'price_cents' => 10000, 'credits' => 115],
|
||
],
|
||
|
||
/*
|
||
| Depublizieren (Magic-Link-Pfad G) — bewusst am teuersten, mit Bedenkzeit.
|
||
*/
|
||
'depublish' => 35,
|
||
|
||
/*
|
||
| Kostenpflichtige Magic-Link-Pfade C/D (Phase 2, Anker „zu bestätigen").
|
||
*/
|
||
'paths' => [
|
||
'correction' => 8, // C – inhaltliche Korrektur
|
||
'update' => 4, // D – Update/Ergänzung
|
||
],
|
||
|
||
/*
|
||
|--------------------------------------------------------------------------
|
||
| Prüfzähler / Prüfkontingent (Decision-Update §4.2/§4.3)
|
||
|--------------------------------------------------------------------------
|
||
|
|
||
| Eigener Zähler, getrennt von der Wallet. Tier-gestaffelte Freiprüfungen
|
||
| pro Account/Monat (aggregiert, nicht pro PM). Burst-Schutz per Tageslimit.
|
||
| Overflow: leerer Zähler → je weitere Prüfung 1 Credit aus der Wallet.
|
||
*/
|
||
'review' => [
|
||
'free_per_month' => [
|
||
Tier::Einzel->value => 4,
|
||
Tier::Starter->value => 12,
|
||
Tier::Business->value => 30,
|
||
Tier::Pro->value => 60,
|
||
Tier::Agency->value => 120,
|
||
],
|
||
'daily_limit' => 10,
|
||
'overflow_cost' => 1,
|
||
],
|
||
|
||
];
|