feat: watcher/CC system, SLA engine, and rich text comments
- Watcher system: ticket_watchers table, watch/unwatch endpoints, notifications to watchers on comments and updates, watcher/cc recipient sources in SendEmail scrip action, watch toggle and watcher avatars in ticket detail UI - SLA engine: sla_policies table, SLA deadline columns on tickets, CRUD routes, OnSlaBreach scrip condition, scheduler SLA calculation, deadlines set on create/reply, cleared on resolve, SLA indicators on ticket list and detail, SLA Policies tab in admin - Rich text: marked-based markdown rendering with XSS safety, Write/Preview toggle in comment composer, styled prose output
This commit is contained in:
9
drizzle/migrations/0019_watcher_tables.sql
Normal file
9
drizzle/migrations/0019_watcher_tables.sql
Normal file
@@ -0,0 +1,9 @@
|
||||
CREATE TABLE ticket_watchers (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
ticket_id INTEGER NOT NULL REFERENCES tickets(id) ON DELETE CASCADE,
|
||||
user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
UNIQUE(ticket_id, user_id)
|
||||
);
|
||||
CREATE INDEX ticket_watchers_ticket_id_idx ON ticket_watchers(ticket_id);
|
||||
CREATE INDEX ticket_watchers_user_id_idx ON ticket_watchers(user_id);
|
||||
Reference in New Issue
Block a user