Gründer-Tickets: 50%-Rabatt-Weitergabe pro Gründer gedeckelt + Pro-Wording korrigiert
Rene: 'ungern jemandem auf ewig die Möglichkeit geben 50% Rabatt zu vergeben — bei 100 Gründern ein großer Faktor. Ich hätte jedem 25–50 Tickets gegeben.' - users.founder_referral_tickets (Default 25): Kontingent an 50%-Rabatten, die ein Gründer an Geworbene weitergeben kann. Technisch = die ersten N VERIFIZIERTEN Geworbenen (nach Anmeldedatum) bekommen 50%, danach 0. Unbestätigte verbrauchen kein Ticket. In scheduler.py (Rechnung) + admin.py (Vorschau) konsistent. - BUGFIX nebenbei: admin.py zeigte für referred_by_founder fälschlich 100% statt 50% (scheduler war korrekt) — jetzt beide 50%. - Admin: Grant-Formular bekommt Feld 'Gründer-Tickets' (0–200, Vorbelegung aus User-Stand); Endpoint /grant akzeptiert founder_tickets. - Gründer-Seite + Settings + Admin-Hilfe: 'sobald Bezahlfunktionen aktiv sind' raus (Pro kostet bereits); Vorteil 'lebenslang Pro gratis' + '25 Freunde zum halben Preis' (Ticket-Framing). - Tests: test_founder_tickets.py (Cap, Unverified-Schutz, 50%-Bugfix, Grant). Suite: 64 passed.
This commit is contained in:
parent
98ec6c36c6
commit
60fb866283
13 changed files with 154 additions and 35 deletions
|
|
@ -86,14 +86,14 @@
|
|||
<title>Ban Yaro</title>
|
||||
|
||||
<!-- Theme + theme-color Statusleiste vor CSS setzen -->
|
||||
<script src="/js/boot-early.js?v=1271"></script>
|
||||
<script src="/js/boot-early.js?v=1272"></script>
|
||||
|
||||
<!-- CSS: Reihenfolge ist wichtig — ?v= zwingt Browser zur Neuladung -->
|
||||
<link rel="stylesheet" href="/css/design-system.css?v=1271">
|
||||
<link rel="stylesheet" href="/css/layout.css?v=1271">
|
||||
<link rel="stylesheet" href="/css/components.css?v=1271">
|
||||
<link rel="stylesheet" href="/css/utilities.css?v=1271">
|
||||
<link rel="stylesheet" href="/css/lists.css?v=1271">
|
||||
<link rel="stylesheet" href="/css/design-system.css?v=1272">
|
||||
<link rel="stylesheet" href="/css/layout.css?v=1272">
|
||||
<link rel="stylesheet" href="/css/components.css?v=1272">
|
||||
<link rel="stylesheet" href="/css/utilities.css?v=1272">
|
||||
<link rel="stylesheet" href="/css/lists.css?v=1272">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
|
@ -620,11 +620,11 @@
|
|||
<div id="modal-container"></div>
|
||||
|
||||
<!-- JS: Reihenfolge ist wichtig — erst Basis, dann Features -->
|
||||
<script src="/js/api.js?v=1271"></script>
|
||||
<script src="/js/ui.js?v=1271"></script>
|
||||
<script src="/js/app.js?v=1271"></script>
|
||||
<script src="/js/worlds.js?v=1271"></script>
|
||||
<script src="/js/offline-indicator.js?v=1271"></script>
|
||||
<script src="/js/api.js?v=1272"></script>
|
||||
<script src="/js/ui.js?v=1272"></script>
|
||||
<script src="/js/app.js?v=1272"></script>
|
||||
<script src="/js/worlds.js?v=1272"></script>
|
||||
<script src="/js/offline-indicator.js?v=1272"></script>
|
||||
|
||||
<!-- Feature-Seiten werden lazy geladen -->
|
||||
|
||||
|
|
@ -634,7 +634,7 @@
|
|||
|
||||
|
||||
<!-- Boot: Offline-Banner + SW-Registration (extrahiert für CSP) -->
|
||||
<script src="/js/boot.js?v=1271"></script>
|
||||
<script src="/js/boot.js?v=1272"></script>
|
||||
|
||||
|
||||
</body>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue