feat: fulfill contribution rewards#3944
Conversation
|
🍹 The Update (preview) for dailydotdev/api/prod (at 3c588d0) was successful. ✨ Neo Code ReviewStandard image rollout deploying the contribution reward fulfillment feature, which adds Cores (Njord) and Plus-days reward types with supporting DB migrations. ✅ Low RiskThis is a routine application deployment rolling out the new contribution reward fulfillment feature (commit 🔵 Info — The new 🔵 Info — The reward fulfillment logic now immediately attempts to fulfill rewards (Cores via Njord, Plus days via subscription flags) at claim time rather than leaving them in a Resource Changes Name Type Operation
+ vpc-native-api-db-migration-29165a54 kubernetes:batch/v1:Job create
- vpc-native-api-clickhouse-migration-ede6fe3d kubernetes:batch/v1:Job delete
~ vpc-native-update-current-streak-cron kubernetes:batch/v1:CronJob update
~ vpc-native-validate-active-users-cron kubernetes:batch/v1:CronJob update
~ vpc-native-ws-deployment kubernetes:apps/v1:Deployment update
~ vpc-native-post-analytics-clickhouse-cron kubernetes:batch/v1:CronJob update
~ vpc-native-check-analytics-report-cron kubernetes:batch/v1:CronJob update
~ vpc-native-user-profile-analytics-history-clickhouse-cron kubernetes:batch/v1:CronJob update
~ vpc-native-clean-zombie-images-cron kubernetes:batch/v1:CronJob update
~ vpc-native-clean-zombie-users-cron kubernetes:batch/v1:CronJob update
~ vpc-native-update-trending-cron kubernetes:batch/v1:CronJob update
~ vpc-native-squad-posts-analytics-refresh-cron kubernetes:batch/v1:CronJob update
~ vpc-native-post-analytics-achievements-cron kubernetes:batch/v1:CronJob update
~ vpc-native-user-profile-analytics-clickhouse-cron kubernetes:batch/v1:CronJob update
~ vpc-native-clean-zombie-user-companies-cron kubernetes:batch/v1:CronJob update
~ vpc-native-update-source-public-threshold-cron kubernetes:batch/v1:CronJob update
~ vpc-native-channel-digests-cron kubernetes:batch/v1:CronJob update
~ vpc-native-clean-channel-highlights-cron kubernetes:batch/v1:CronJob update
- vpc-native-api-db-migration-ede6fe3d kubernetes:batch/v1:Job delete
~ vpc-native-rotate-daily-quests-cron kubernetes:batch/v1:CronJob update
~ vpc-native-materialize-monthly-best-post-archives-cron kubernetes:batch/v1:CronJob update
~ vpc-native-clean-gifted-plus-cron kubernetes:batch/v1:CronJob update
~ vpc-native-generate-search-invites-cron kubernetes:batch/v1:CronJob update
~ vpc-native-update-achievement-rarity-cron kubernetes:batch/v1:CronJob update
~ vpc-native-expire-super-agent-trial-cron kubernetes:batch/v1:CronJob update
~ vpc-native-clean-zombie-opportunities-cron kubernetes:batch/v1:CronJob update
~ vpc-native-sync-subscription-with-cio-cron kubernetes:batch/v1:CronJob update
~ vpc-native-calculate-top-readers-cron kubernetes:batch/v1:CronJob update
~ vpc-native-user-posts-analytics-refresh-cron kubernetes:batch/v1:CronJob update
~ vpc-native-rotate-weekly-quests-cron kubernetes:batch/v1:CronJob update
~ vpc-native-bg-deployment kubernetes:apps/v1:Deployment update
~ vpc-native-worker-job-deployment kubernetes:apps/v1:Deployment update
~ vpc-native-deployment kubernetes:apps/v1:Deployment update
~ vpc-native-generic-referral-reminder-cron kubernetes:batch/v1:CronJob update
+ vpc-native-api-clickhouse-migration-29165a54 kubernetes:batch/v1:Job create
~ vpc-native-update-tag-materialized-views-cron kubernetes:batch/v1:CronJob update
~ vpc-native-private-deployment kubernetes:apps/v1:Deployment update
~ vpc-native-post-analytics-history-day-clickhouse-cron kubernetes:batch/v1:CronJob update
~ vpc-native-daily-digest-cron kubernetes:batch/v1:CronJob update
~ vpc-native-clean-old-notifications-cron kubernetes:batch/v1:CronJob update
~ vpc-native-temporal-deployment kubernetes:apps/v1:Deployment update
... and 14 other changes |
What changed
coresandplus_days.UserTransactionfrom the system user and mark the claim fulfilled after transfer succeeds.subscriptionFlags, reusing the existing gifted Plus cleanup path.call,privilege,custom) continue to stay claimed until fulfilled through the private route.Why
Users could claim giveback rewards, but the claim only created a tracking row. Backend-supported rewards now actually grant the user benefit at claim time.
Validation
NODE_ENV=test npx jest __tests__/contributions.ts __tests__/routes/private/contributions.ts --testEnvironment=node --runInBandpnpm run buildpnpm run lintNote: the focused Jest run passed and still emitted the existing force-exit/open-handle warning after completion.