Partner-code credits arrive as a drip; unclaimed installments expire
Marty (2026-09-19): partner codes keep working with no monthly cap, but the credits stop being a dump. A fifth is paid the day the code is redeemed, then a fifth on each day the member finishes their daily ad set, five days in all, and whatever is unclaimed 30 days after redemption is never paid. Same headline number for the partner to promote; paid only to people who show up. 49 of the 52 PARTNER redemptions were still sitting on 500+ unspent. Every redemption now records the site the ?promo= link was opened from (iap.promoref cookie set from the Referer at link-open), so a code's traffic can be attributed to the partner page it was supposed to come from. Member-funded codes charge the funder one installment at a time; a short funder leaves the installment due, not lost. Pre-drip redemptions were paid in full up front and are marked paid=credits at start-up, so nothing is paid twice. Covered by a module test (13 checks: per-day cadence, gaps, rounding, expiry, pre-drip rows, declined payer) and an end-to-end HTTP test on a local copy (9 checks). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -156,6 +156,11 @@ async function bootstrap() {
|
||||
code VARCHAR(24) NOT NULL, email VARCHAR(190) NOT NULL, credits INT NOT NULL, via VARCHAR(12) NOT NULL, ts BIGINT NOT NULL,
|
||||
PRIMARY KEY (code, email)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4`);
|
||||
await alterSafe0('ALTER TABLE promo_redemptions ADD COLUMN paid INT NOT NULL DEFAULT 0'); // credits paid so far (the drip)
|
||||
await alterSafe0('ALTER TABLE promo_redemptions ADD COLUMN last_day CHAR(10) NULL'); // Central day of the last installment
|
||||
await alterSafe0('ALTER TABLE promo_redemptions ADD COLUMN expires BIGINT NOT NULL DEFAULT 0'); // unclaimed installments stop here; 0 = pre-drip row
|
||||
await alterSafe0('ALTER TABLE promo_redemptions ADD COLUMN ref VARCHAR(80) NULL'); // site the ?promo= link was opened from
|
||||
await q('UPDATE promo_redemptions SET paid=credits WHERE expires=0 AND paid<credits'); // pre-drip redemptions were paid in full at once
|
||||
await q(`CREATE TABLE IF NOT EXISTS page_hits (
|
||||
day CHAR(10) NOT NULL, host VARCHAR(80) NOT NULL, path VARCHAR(40) NOT NULL, n INT NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (day, host, path)
|
||||
|
||||
Reference in New Issue
Block a user