Add Feedback domain module: public submission flow, admin CRUD, reporting #7
Reference in New Issue
Block a user
Delete Branch "feature/feedback-module"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Implements integrations/salesforce.service.ts per the plan's §5.6 seam (syncNewsletterSignup(signupId)), against the real contract now that the Salesforce side exists (see the nk-salesforce repo's feature/newsletter-signup-integration branch): OAuth2 client-credentials auth, POST to /services/apexrest/newsletter/signup with {firstName, lastName, email, eventName}, response gives back which object (Lead or Person Account) and its id. Token is cached in memory with a conservative TTL and refreshed on a 401 rather than trusting expires_in, which Salesforce's client-credentials token response doesn't reliably return. submissions.service.ts now captures the newsletter_signups insert's id and fires syncNewsletterSignup after commit, fire-and-forget - the one piece that was previously entirely missing, so flipping SALESFORCE_ENABLED=true would have left every signup stuck at PENDING forever with nothing to process it (found during an earlier review pass). Replaced the placeholder SALESFORCE_API_TOKEN env var with SALESFORCE_CLIENT_ID/SALESFORCE_CLIENT_SECRET in .env.example and CLAUDE.md, matching the real auth mechanism instead of the static-token guess from before the contract was known. Also fixed CLAUDE.md's stale "still scaffolding-only" note about the Feedback domain. Not yet covered by tests - the Salesforce-side contract was validated end-to-end against a real sandbox, but this file has no unit tests yet. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.