docs: add quixzoom-auth-core product to AAMOS
- Product documentation in docs/products/ - Updated MEMORY.md with product info - quiXzoom Auth Core as AAMOS Identity product
This commit is contained in:
@@ -0,0 +1,123 @@
|
||||
-- ═══════════════════════════════════════════════════════════════════════════
|
||||
-- AAMOS Admin v2 — Notifications & Reports Schema
|
||||
-- ═══════════════════════════════════════════════════════════════════════════
|
||||
|
||||
-- ── Notifications ──────────────────────────────────────────────────────────
|
||||
CREATE TABLE IF NOT EXISTS notifications (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
type TEXT NOT NULL, -- 'lead'|'invoice'|'payment'|'ticket'|'employee'|'contract'|'system'
|
||||
title TEXT NOT NULL,
|
||||
message TEXT NOT NULL,
|
||||
entity_type TEXT, -- 'customer'|'invoice'|'ticket'|'lead'|'employee'|'contract'
|
||||
entity_id UUID,
|
||||
priority TEXT NOT NULL DEFAULT 'normal', -- 'low'|'normal'|'high'|'urgent'
|
||||
read_at TIMESTAMPTZ,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_notifications_read ON notifications (read_at);
|
||||
CREATE INDEX IF NOT EXISTS idx_notifications_type ON notifications (type);
|
||||
CREATE INDEX IF NOT EXISTS idx_notifications_created ON notifications (created_at DESC);
|
||||
|
||||
-- ── Notification Settings ──────────────────────────────────────────────────
|
||||
CREATE TABLE IF NOT EXISTS notification_settings (
|
||||
id INTEGER PRIMARY KEY DEFAULT 1,
|
||||
settings JSONB NOT NULL DEFAULT '{
|
||||
"email_notifications": true,
|
||||
"push_notifications": true,
|
||||
"notify_on_new_lead": true,
|
||||
"notify_on_new_invoice": true,
|
||||
"notify_on_overdue_invoice": true,
|
||||
"notify_on_new_ticket": true,
|
||||
"notify_on_ticket_assigned": true,
|
||||
"notify_on_new_employee": true,
|
||||
"notify_on_contract_ending": true,
|
||||
"daily_summary": true,
|
||||
"weekly_summary": true
|
||||
}',
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
INSERT INTO notification_settings (id) VALUES (1) ON CONFLICT (id) DO NOTHING;
|
||||
|
||||
-- ── Module Settings ────────────────────────────────────────────────────────
|
||||
CREATE TABLE IF NOT EXISTS module_settings (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
module TEXT NOT NULL UNIQUE, -- 'crm'|'billing'|'ledger'|'support'|'hr'|'mail'|'automations'
|
||||
settings JSONB NOT NULL DEFAULT '{}',
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- Insert default settings for each module
|
||||
INSERT INTO module_settings (module, settings) VALUES
|
||||
('crm', '{
|
||||
"auto_convert_leads": false,
|
||||
"lead_assignment": "manual",
|
||||
"default_customer_type": "company",
|
||||
"require_org_nr": true
|
||||
}'),
|
||||
('billing', '{
|
||||
"default_payment_terms": 30,
|
||||
"default_vat_rate": 25,
|
||||
"invoice_prefix": "F-",
|
||||
"reminder_fee": 60,
|
||||
"interest_rate": 8
|
||||
}'),
|
||||
('ledger', '{
|
||||
"fiscal_year_start": "01-01",
|
||||
"base_currency": "SEK",
|
||||
"auto_reconcile": false,
|
||||
"require_approval": true
|
||||
}'),
|
||||
('support', '{
|
||||
"auto_assign": false,
|
||||
"default_priority": "medium",
|
||||
"sla_response_hours": 24,
|
||||
"sla_resolution_hours": 72
|
||||
}'),
|
||||
('hr', '{
|
||||
"probation_months": 6,
|
||||
"vacation_days": 25,
|
||||
"sick_days": 14,
|
||||
"notice_period_months": 3
|
||||
}'),
|
||||
('mail', '{
|
||||
"auto_create_leads": true,
|
||||
"forward_to_support": false,
|
||||
"archive_after_days": 90
|
||||
}'),
|
||||
('automations', '{
|
||||
"max_retries": 3,
|
||||
"retry_interval_minutes": 60,
|
||||
"log_retention_days": 30
|
||||
}')
|
||||
ON CONFLICT (module) DO NOTHING;
|
||||
|
||||
-- ── Scheduled Reports ──────────────────────────────────────────────────────
|
||||
CREATE TABLE IF NOT EXISTS scheduled_reports (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
name TEXT NOT NULL,
|
||||
report_type TEXT NOT NULL,
|
||||
frequency TEXT NOT NULL, -- 'daily'|'weekly'|'monthly'|'quarterly'
|
||||
recipients TEXT[] NOT NULL DEFAULT '{}',
|
||||
last_run_at TIMESTAMPTZ,
|
||||
next_run_at TIMESTAMPTZ,
|
||||
is_active BOOLEAN NOT NULL DEFAULT TRUE,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- ── Report History ─────────────────────────────────────────────────────────
|
||||
CREATE TABLE IF NOT EXISTS report_history (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
report_name TEXT NOT NULL,
|
||||
report_type TEXT NOT NULL,
|
||||
parameters JSONB NOT NULL DEFAULT '{}',
|
||||
result_url TEXT,
|
||||
status TEXT NOT NULL DEFAULT 'completed', -- 'running'|'completed'|'failed'
|
||||
error_message TEXT,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
completed_at TIMESTAMPTZ
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_report_history_type ON report_history (report_type);
|
||||
CREATE INDEX IF NOT EXISTS idx_report_history_created ON report_history (created_at DESC);
|
||||
Reference in New Issue
Block a user