|
|
8f955a0ff9
|
feat(07.1-05): user-tz on shared client components
- DetailModal: thread tz through resolveLabel(...) module helper +
default export's 3 inline date/time calls.
- IntegrationStatusTabs: thread tz through fmtDate helper +
VeeamTab sub-component prop.
- SyncScheduler: thread tz into closure-scoped formatDate helper.
- audit-log-table, user-table, user-sessions, active-sessions: inline
toLocale calls in component body.
- analysis-view: useUserTimezone in AnalysisView; thread tz into 4
toLocaleString calls.
- resolution-trend, volume-trend (recharts): module-scope fmtDate(iso)
→ fmtDate(iso, tz); useUserTimezone in named export; thread tz into
axis tickFormatter + tooltip labelFormatter.
- ticket-detail-modal: thread tz into formatDate arrow inside
TicketDetailModal.
- TimelineView: useUserTimezone; thread tz into 4 toLocale*String calls
(hour/day/month/event-time formatters).
- ScoreCard: useUserTimezone in AggregateScoreCard; thread tz into the
date-range latest call.
- addigy-tab: useUserTimezone in AddigyTab; thread tz into 2 inline calls.
- activity-sparkline: module-scope fmtHour(iso) → fmtHour(iso, tz);
useUserTimezone in ActivitySparkline; update 3 callsites in title/aria.
- compliance-detail-table: thread tz from ComplianceDetailTable into
ContractCoverageModal sub-component (2 inline date calls).
- company-backup-detail: module-scope formatDate(d) → formatDate(d, tz);
useUserTimezone in CompanyBackupDetail; update 3 callsites.
Migrates 31 of 81 audit leak callsites.
|
2026-05-07 08:43:27 -04:00 |
|
|
|
1112a06afe
|
feat: RMM Overshell, IT Glue audit/write-back, LogLift, link-aware bundles, dashboard overhaul
- RMM Overshell (migration 077): admin page, dispatch UI, executor/worker, target
resolver, script registry (AD/DHCP/DNS/event-log/services/software/network/loglift)
- LogLift evidence pipeline (migration 078): upload webhook, B2 storage client,
receiver/matcher, EventLogCollector PowerShell script
- IT Glue audit + write-back (migrations 075, 076): asset-audit runner, ticket
xrefs, applications/configurations browse pages + apply/revert/audit endpoints
- Link-aware analyzer bundles (migration 073) + provider toggle (migration 074):
link-discovery service, OpenRouter LLM provider, related-tickets/itglue-suggestion
panels, analyze-bundle endpoint
- Endpoint data model + device-link reconciliation (migrations 079, 080): conflicts
admin page, reconciler service, resolve endpoints
- Dashboard overhaul: integration-health service + alerts, overview/health endpoints
- Permissions: add itglue + rmm scopes; middleware: public /api/rmm/loglift route
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-03 07:13:18 -04:00 |
|
root
|
f117210c9d
|
feat: add scheduled sync system with admin UI
Implements comprehensive scheduled sync system using node-cron with
full admin interface for configuration and monitoring.
Features:
- Configurable sync schedules with cron expressions
- Enable/disable schedules without deletion
- Manual trigger for testing
- Status monitoring (last run, next run, success/failure)
- Error tracking and display
- Incremental and full sync support
- Multiple concurrent schedules
- Admin UI with schedule management
Components:
1. Sync Scheduler Service (lib/services/sync-scheduler.ts)
- node-cron integration for scheduling
- Database-backed schedule configuration
- Automatic initialization on startup
- Prevents concurrent runs of same schedule
- Calculates next run times
- Tracks execution status and errors
2. Database Schema (sync_schedules table)
- Schedule configuration storage
- Execution history tracking
- Last run status and errors
- Next run calculation
3. API Endpoints
- GET /api/sync/schedules - List all schedules
- POST /api/sync/schedules - Create schedule
- GET /api/sync/schedules/[id] - Get schedule
- PATCH /api/sync/schedules/[id] - Update schedule
- DELETE /api/sync/schedules/[id] - Delete schedule
- POST /api/sync/schedules/[id]/trigger - Manual trigger
4. Admin UI (components/admin/SyncScheduler.tsx)
- View all schedules with status
- Create/edit/delete schedules
- Enable/disable toggle
- Manual trigger button
- Cron expression presets
- Real-time status updates
- Error message display
- Next run countdown
5. Default Schedules (created on first startup, disabled)
- Daily Incremental: 2 AM daily (0 2 * * *)
- Weekly Full: 3 AM Sunday (0 3 * * 0)
Admin Interface:
- New 'Schedules' tab in sync page
- Schedule cards with status badges
- Enable/disable with play/pause button
- Manual trigger with clock button
- Edit dialog with cron presets
- Create dialog for new schedules
- Real-time status (running, next run, last run)
- Success/failure indicators
- Error message alerts
Cron Features:
- Full cron expression support
- Validation before saving
- Common presets (daily, weekly, hourly)
- Next run time calculation
- Automatic schedule restart on config change
Monitoring:
- Last run timestamp
- Next run countdown (e.g., 'in 2h 15m')
- Success/failure status with icons
- Error messages for failed syncs
- Running indicator (animated badge)
- Schedule validity check
Dependencies:
- node-cron: ^3.0.3
- @types/node-cron: ^3.0.11
UI Components:
- Alert component added (components/ui/alert.tsx)
- Integrated into sync page tabs
- Responsive design
Documentation:
- Complete guide (docs/SCHEDULED_SYNCS.md)
- Cron expression reference
- Best practices
- Troubleshooting guide
- API reference
- Database schema
Use Cases:
1. Daily incremental sync for recent changes
2. Weekly full sync for data integrity
3. Custom schedules for specific needs
4. Off-peak hour automation
5. Backup for webhook failures
Benefits:
- No manual intervention required
- Consistent data freshness
- Flexible scheduling
- Easy monitoring
- Error tracking
- Manual override available
Next Steps:
1. Restart application to initialize scheduler
2. Navigate to Admin → Sync → Schedules tab
3. Enable default schedules or create custom ones
4. Monitor first runs for success
5. Adjust schedules as needed
Files Added/Modified:
- lib/services/sync-scheduler.ts (new)
- app/api/sync/schedules/route.ts (new)
- app/api/sync/schedules/[id]/route.ts (new)
- app/api/sync/schedules/[id]/trigger/route.ts (new)
- components/admin/SyncScheduler.tsx (new)
- components/ui/alert.tsx (new)
- app/admin/sync/page.tsx (modified - added Schedules tab)
- docs/SCHEDULED_SYNCS.md (new)
- package.json (node-cron added)
|
2026-01-26 10:24:58 -05:00 |
|