Introduce DB-backed Promo Manager; improve SSHV, health checks, and persistence - #84
Conversation
|
CodeAnt AI is reviewing your PR. Thanks for using CodeAnt! 🎉We're free for open-source projects. if you're enjoying it, help us grow by sharing. Share on X · |
|
Warning Rate limit exceeded
⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. 📒 Files selected for processing (4)
📝 WalkthroughWalkthroughThis PR introduces a database-backed promo management system, replacing ad-hoc in-memory handling with persistent storage via Changes
Sequence DiagramssequenceDiagram
actor User
participant PromoMgr as Promo Manager
participant DB as promo-manager-db.json
participant Eligibility as Eligibility Check
User->>PromoMgr: Request active promos
PromoMgr->>DB: Load promoManagerStore
DB-->>PromoMgr: Return promos list
PromoMgr->>Eligibility: evaluatePromoEligibility(user, promo)
Eligibility-->>PromoMgr: { eligible, reasons }
alt Eligible
PromoMgr-->>User: Render promo for user
else Ineligible
PromoMgr-->>User: Return eligibility failure reasons
end
sequenceDiagram
actor User
participant PromoMgr as Promo Manager
participant Store as promoManagerStore
participant DB as promo-manager-db.json
User->>PromoMgr: Claim promo (or auto-approve)
PromoMgr->>Store: Create claim entry with status
Store-->>PromoMgr: Claim created
PromoMgr->>DB: savePromoManagerDb()
DB-->>PromoMgr: Persisted
PromoMgr-->>User: Claim confirmed
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
Suggested labels
Poem
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Nitpicks 🔍
|
|
CodeAnt AI finished reviewing your PR. |
User description
Motivation
/sshv) behavior with better error hints and safer editor save handling so operators get clearer diagnostics in restricted sandboxes.Description
promoManagerStorewith persistent filedata/promo-manager-db.jsonand helper functionssavePromoManagerDbandloadPromoManagerDband migrate promo logic to DB-backed promos vianormalizePromoManagerPromo,evaluatePromoEligibility,listActivePromos,getPromoById,renderPromoForUser,countPromoClaimsand related helpers.promoStore/promoCodeStoreflows and admin UI paths with a Promo Manager UI and new admin actions (admin_pm_create,admin_pm_edit,admin_pm_pause_toggle,admin_pm_delete,admin_pm_stats,admin_pm_preview,admin_pm_queue) plus admin commands/pmapproveand/pmdenyfor claim approval workflows; update user-facing promo commands to use the new manager and persist claims inpromoManagerStore.claims./sshvinteractions: addbuildSshvSandboxRestrictionHintto append helpful messages when filesystem/sandbox errors occur, wrap editor save intry/catchwith error logging, and add admin logging for ctrl actions; make the SSHV GC timer ref-able viasshvGcTimer.unref().isHealthTlsEnabled()and usehttp/httpsclients accordingly; add runtime persistence calls to save the promo manager DB frompersistRuntimeStateand load it inloadPersistentData..dockerignoreand.gitignoreto exclude runtime JSON and backups, update.env.exampleto documentWEBAPP_HMAC_KEY, switch several parse modes toMarkdownfor editor replies, and change many admin labels/menus to reflect Promo Manager.Testing
CI=true node -e "require('./index.js')"which completed without uncaught exceptions.loadPromoManagerDb/savePromoManagerDbpaths during startup/persist cycles in automated smoke tests to confirm no file parse errors.Codex Task
CodeAnt-AI Description
Introduce DB-backed Promo Manager, admin workflows, and harden SSHV & health checks
What Changed
Impact
✅ Clearer promo claims and statuses for users✅ Fewer lost or untracked promo claims (persistent storage)✅ Faster admin approvals via explicit approve/deny commands✅ Clearer SSHV error messages when filesystem/sandbox restrictions occur💡 Usage Guide
Checking Your Pull Request
Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.
Talking to CodeAnt AI
Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:
This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.
Example
Preserve Org Learnings with CodeAnt
You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:
This helps CodeAnt AI learn and adapt to your team's coding style and standards.
Example
Retrigger review
Ask CodeAnt AI to review the PR again, by typing:
Check Your Repository Health
To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.
Summary by CodeRabbit
Release Notes
New Features
Documentation
Chores