feat(scheduling): persist notifications, batch notify flow, dedup protection
- Add tab_scheduling_notifications table with bootstrap via ensureSchedulingTables() - Notify endpoint rewritten: dedup by (suggestion_id, candidate_plate), history list, PATCH /:id for execute/cancel lifecycle - Batch notify endpoint returns success/skipped/failed counts - Suggestions response now carries notificationId + notificationStatus per candidate (joined from active-notification map) - UI: select mode with checkboxes, floating action bar, confirmation modal listing each swap; already-notified items are dimmed and skipped - Detail view badges show sent/executed state, preventing duplicate notify Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -65,7 +65,10 @@ export default function SuggestionDetail({ suggestion: s, onClose, onNotifySucce
|
||||
};
|
||||
|
||||
const renderCandidate = (c: CandidateVehicle) => {
|
||||
const sent = sentPlates.has(c.plateNumber);
|
||||
const sent =
|
||||
sentPlates.has(c.plateNumber) ||
|
||||
c.notificationStatus === 'sent' ||
|
||||
c.notificationStatus === 'executed';
|
||||
return (
|
||||
<div key={c.plateNumber} className="rounded-xl border border-slate-200 overflow-hidden bg-white">
|
||||
<div className="flex items-center justify-between px-3 py-2">
|
||||
|
||||
Reference in New Issue
Block a user