chore(autonomous-session): consolidate uncommitted work from prior session
Bundles the prior autonomous-session output that was sitting unstaged: - Em-dash sweep across src/ + tests/ (en-dash/em-dash to hyphen, ~2280 instances) - country-flag-icons rollout (CountryFlag component, replaces emoji glyphs that never rendered on Windows; lazy-loads the 3x2 SVG index as a single chunk after the per-subpath dynamic-import approach silently failed in webpack) - Admin IA Phase 1+2: 7-domain regroup, 41 to 38 pages, /admin/berths index, redirects (ocr to ai, reports to dashboard, invitations to users), docs/admin-ia-proposal.md - Per-template email tester (registry + endpoint + UI on Email admin page) - Cancel-document mode picker (delete-from-Documenso vs keep-for-audit) - Dashboard PDF report: 25 widgets, SVG charts, date-range picker, 11 resolvers - Customize-widgets per-region sortables at xl+ (charts/rails/feed); single flat sortable below xl when the layout stacks; per-viewport saved orders - Audit doc updates capturing each shipped item - Lint fixes: react-compiler immutability in DonutChart (reduce instead of let-reassign), set-state-in-effect disables in CountryFlag and UploadForSigning preview-bytes effect, unused 'confirm' destructures in interest contract + reservation tabs, unescaped apostrophe in test-template card copy
This commit is contained in:
@@ -44,10 +44,10 @@ export async function registerRecurringJobs(): Promise<void> {
|
||||
// Report scheduler - checks every minute for reports due to run
|
||||
{ queue: 'reports', name: 'report-scheduler', pattern: '* * * * *' },
|
||||
|
||||
// Notification digest — fires hourly globally; the worker checks each
|
||||
// Notification digest - fires hourly globally; the worker checks each
|
||||
// user's `notification_digest_paused_until` and unread-count threshold
|
||||
// before composing a digest, so most ticks are no-ops. Per-user time-
|
||||
// of-day scheduling is DEFERRED — implementing it requires a product
|
||||
// of-day scheduling is DEFERRED - implementing it requires a product
|
||||
// decision on UX (slider? time picker? per-channel toggles?) and adds
|
||||
// a per-user cron path that doesn't pay off until enough users are
|
||||
// actively customizing it. The hourly bucket aligns with how reps
|
||||
@@ -62,7 +62,7 @@ export async function registerRecurringJobs(): Promise<void> {
|
||||
|
||||
// Phase B: alert rule engine sweep
|
||||
{ queue: 'maintenance', name: 'alerts-evaluate', pattern: '*/5 * * * *' },
|
||||
// Phase 6: IMAP bounce poller — matches NDRs to document_sends rows
|
||||
// Phase 6: IMAP bounce poller - matches NDRs to document_sends rows
|
||||
// and fires email_bounced notifications. No-op when IMAP_* env unset.
|
||||
{ queue: 'maintenance', name: 'bounce-poll', pattern: '*/15 * * * *' },
|
||||
// Phase B: analytics snapshot warm
|
||||
@@ -74,18 +74,18 @@ export async function registerRecurringJobs(): Promise<void> {
|
||||
{ queue: 'maintenance', name: 'ai-usage-retention', pattern: '0 5 * * *' },
|
||||
// Migration 0040 contract: error_events older than 90 days get pruned.
|
||||
{ queue: 'maintenance', name: 'error-events-retention', pattern: '0 6 * * *' },
|
||||
// 90-day retention for audit_logs — mirrors error_events. Metadata
|
||||
// 90-day retention for audit_logs - mirrors error_events. Metadata
|
||||
// is masked at insert time but old rows still represent stale PII
|
||||
// exposure that has no operational value past the window.
|
||||
{ queue: 'maintenance', name: 'audit-logs-retention', pattern: '15 6 * * *' },
|
||||
// Raw website inquiry payloads — 180-day retention.
|
||||
// Raw website inquiry payloads - 180-day retention.
|
||||
{ queue: 'maintenance', name: 'website-submissions-retention', pattern: '0 7 * * *' },
|
||||
];
|
||||
|
||||
// BullMQ defaults `tz` to UTC. The cron patterns above are spelled
|
||||
// in port-local time (e.g. "0 8 * * *" = 8 AM local), so without an
|
||||
// explicit `tz` the jobs fire in UTC and silently drift across DST
|
||||
// — twice a year the local firing time shifts by an hour and admin
|
||||
// - twice a year the local firing time shifts by an hour and admin
|
||||
// docs ("daily check at 8 AM") break. datetime-auditor C2.
|
||||
//
|
||||
// The CRM is single-port today (Port Nimara, Europe/Warsaw); when
|
||||
|
||||
Reference in New Issue
Block a user