Sindh IT Portal — Facilitation DeskSpecification documents
Englishاردوسنڌي
← All documents

ڈیٹا ماڈل

سندھ آئی ٹی پورٹل — سہولت ڈیسک (SITP) کا مستند منطقی اسکیما: ہر جدول، اس کے کالم، پابندیاں، تعلقات، انڈیکسنگ، آرکائیول، مائیگریشن، اور ڈیٹا درجہ بندی کے قواعد، جو MariaDB 10.11 کو ہدف بناتے ہوئے Prisma (بطور ORM) کے ساتھ مرتب کیے گئے ہیں۔

فیلڈ قدر
دستاویز آئی ڈی 05
حیثیت مسودہ
مالک S&ITD / MAAHIR
زبانیں EN (مرجع) · UR · SD
ڈیٹا بیس MariaDB 10.11.14 (InnoDB، utf8mb4) — PostgreSQL نہیں
ORM Prisma (MySQL/MariaDB ڈرائیور)
تلاش Meilisearch (کثیر لسانی مکمل متن)
متعلقہ دستاویزات /specs/ur/04-roles-permissions/ · /specs/ur/06-ticket-workflow/ · 09-ai-ocr-spec/en.md · /specs/ur/11-security-compliance/ · /specs/ur/12-api-contract/ · /specs/ur/15-tech-architecture/ · /specs/ur/21-mom-meetings/

1. دائرہ کار اور اس دستاویز کو پڑھنے کا طریقہ

یہ دستاویز SITP کا منطقی ڈیٹا ماڈل متعین کرتی ہے۔ یہ جدول کے ناموں، کالموں، اقسام، پابندیوں، اور تعلقات کے لیے واحد مستند ماخذ ہے۔ اسے درج ذیل استعمال کرتے ہیں:

یہ ماڈل دس ڈومینز میں تقسیم کیا گیا ہے۔ ہر ڈومین میں (الف) ایک Mermaid erDiagram، (ب) تحریری وضاحت، اور (ج) ہر جدول کے لیے ایک ذیلی سیکشن شامل ہے۔ سیکشن §4 تمام جدول کی تعریفیں رکھتا ہے؛ §5 سب سے اہم کراس-ٹیبل تعلقات واضح کرتا ہے؛ §6 تا §9 انڈیکسنگ، آرکائیول، مائیگریشن، اور ڈیٹا درجہ بندی کا احاطہ کرتے ہیں۔

جدول کی تعداد: 10 ڈومینز میں 74 جداول۔ ڈایاگرام کی تعداد: 10 Mermaid erDiagram بلاکس (ہر ڈومین کے لیے ایک)۔


2. ضابطے

یہ ضابطے یکساں طور پر لاگو ہوتے ہیں۔ انہیں ہر کالم پر دہرایا نہیں جاتا۔

2.1 اسٹوریج انجن اور کریکٹر سیٹ

پہلو قاعدہ
انجن ہر جدول پر InnoDB (ٹرانزیکشنز، FK پابندیاں، قطار-سطح لاکنگ)۔ MyISAM کبھی استعمال نہیں ہوتا۔
کریکٹر سیٹ ڈیٹا بیس، ہر جدول، ہر متن کالم، اور کنکشن (Prisma ڈیٹاسورس URL + MariaDB صارف ڈیفالٹ) پر utf8mb4۔ روایتی 3-بائٹ utf8 ممنوع ہے — یہ تمام سندھی/اردو عربی رسم الخط کے کوڈ پوائنٹس محفوظ نہیں کر سکتا۔
کولیشن utf8mb4_unicode_ci دستاویزی ڈیفالٹ ہے۔ پروڈکشن میں UCA-بنیاد utf8mb4_unicode_520_ci تجویز کیا جاتا ہے (/specs/ur/15-tech-architecture/ §5.4 کے مطابق) تاکہ اردو/سندھی ترتیب زیادہ درست رہے؛ دونوں قابلِ قبول ہیں، ایک بار منتخب کر کے مستقل طور پر لاگو کریں۔
سرور سیٹنگز character_set_server=utf8mb4، collation_server=utf8mb4_unicode_ci (یا _520_ci

2.2 شناخت کنندے اور متبادل کلیدیں

2.3 معیاری آڈٹ کالم

ہر جدول بلا استثنا ان کالموں کو رکھتا ہے۔ ذیلی جدول کے کالم فہرستوں میں انہیں ایک واحد قطار کے طور پر مختصر کیا گیا ہے جو اس سیکشن کا حوالہ دیتی ہے تاکہ فہرستیں پڑھنے میں آسان رہیں۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY متبادل بنیادی کلید۔
created_at DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) UTC داخلہ وقت، مائیکرو سیکنڈ درستگی۔
updated_at DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6) UTC آخری تحریر وقت۔
created_by BIGINT UNSIGNED NULL، FK → users.id وہ اداکار جس نے قطار بنائی۔ سسٹم/سیڈ قطاروں کے لیے NULL۔
updated_by BIGINT UNSIGNED NULL، FK → users.id وہ اداکار جس نے قطار میں آخری تحریر کی۔
deleted_at DATETIME(6) NULL نرم حذف کا نشان۔ صارف کے سامنے آنے والے، آڈٹ کے قابل، اور PII رکھنے والے جدولوں پر موجود؛ صرف اضافہ (append-only) یا خالص تلاش (lookup) والے جدولوں پر غیر موجود (جہاں ایسا ہو واضح طور پر نوٹ کیا گیا)۔

2.4 نام رکھنے کے اصول

2.5 ماڈیول کے سابقے (اختیاری، schema.prisma میں لاگو)

/specs/ur/15-tech-architecture/ §5.3 کے مطابق، تعینات اسکیما جدولوں کو ماڈیول کے سابقے سے شروع کر سکتا ہے (org_، usr_، tkt_، sla_، fil_، ai_، com_، not_، mtg_، ofc_، kb_، trn_، sys_، aud_، int_) تاکہ ماڈیول کی ملکیت ڈیٹا بیس کو تقسیم کیے بغیر ظاہر ہو۔ یہ دستاویز پڑھنے کی سہولت کے لیے غیر-سابقہ شدہ منطقی نام استعمال کرتی ہے (جیسا کہ بریف میں شمار کیے گئے)؛ سابقہ ایک نفاذ کی تفصیل ہے جو schema.prisma میں مستقل طور پر لاگو ہوتی ہے اور تعلقات کو تبدیل نہیں کرتا۔

2.6 غیر ملکی کلیدیں اور انڈیکسنگ

2.7 ORM اور تلاش


3. اعلیٰ سطحی ERD (بذریعہ ڈومین)

یہ ماڈل دس Mermaid erDiagram بلاکس میں تقسیم کیا گیا ہے تاکہ ہر ایک پڑھنے میں آسان رہے۔ کراس-ڈومین غیر ملکی کلیدیوں کا ذکر تحریری وضاحتوں میں کیا گیا ہے اور جہاں وہ ڈومین کے لیے مرکزی حیثیت رکھتی ہیں وہاں دکھائی گئی ہیں۔

3.1 شناخت اور ادارہ (کمپنیاں، نمائندے، تصدیق)

erDiagram ORGANIZATIONS ||--o{ ORGANIZATION_LOCATIONS : "has" ORGANIZATIONS ||--o{ REPRESENTATIVES : "has" ORGANIZATIONS ||--o{ VERIFICATION_JOBS : "undergoes" ORGANIZATIONS ||--o{ CONSENTS : "records" REPRESENTATIVES ||--o{ REP_ROLE_ASSIGNMENTS : "holds" REPRESENTATIVES ||--o{ REP_PERMISSION_OVERRIDES : "has" REP_ROLE_ASSIGNMENTS }o--|| ROLES : "template" REPRESENTATIVES ||--o| USERS : "login identity 1:1" VERIFICATION_JOBS ||--o{ VERIFICATION_DOCUMENTS : "consumes" VERIFICATION_DOCUMENTS }o--|| ORGANIZATIONS : "belongs to" ORGANIZATIONS { bigint id PK varchar entity_type "ENUM" varchar legal_name varchar secp_registration_no varchar verification_status "ENUM" tinyint kyc_level char locale "en/ur/sd" } REPRESENTATIVES { bigint id PK bigint org_id FK char cnic varchar designation varchar role_at_company varchar email varchar mobile_e164 varchar whatsapp_e164 char locale varchar two_fa_method "ENUM" varchar status "ENUM" } VERIFICATION_JOBS { bigint id PK bigint org_id FK varchar provider "ENUM SECP/FBR/SRB/PSEB/NADRA/DOMAIN" varchar status "ENUM" longtext result_json longtext raw_payload }

تحریری وضاحت۔ ایک organization (پانچ entity اقسام میں سے ایک — SECP کمپنی، انفرادی مالک/شراکت، فری لینسر، غیر ملکی شاخ، ابتدائی اسٹارٹ اپ) ایک یا زیادہ representatives اور ایک یا زیادہ organization_locations کا مالک ہوتا ہے۔ بالکل ایک نمائندہ بنیادی مجاز نمائندہ کا کردار رکھتا ہے (ایپلیکیشن پرت کے ساتھ ساتھ rep_role_assignments پر partial unique انڈیکس جہاں role = Primary ہو، کے ذریعے نافذ)۔ ہر نمائندہ لاگ ان شناخت کے لیے ایک users قطار سے 1:1 میپ ہوتا ہے۔ رجسٹریشن فائل-فرسٹ ہے: ایک organization کو verification_status = provisional، kyc_level = 0 کے ساتھ بنایا جاتا ہے، اور یہ فوراً ٹکٹ دائر کر سکتا ہے؛ بیک گراؤنڈ چیکس verification_jobs کے طور پر چلتے ہیں (ہر فراہم کنندہ کے لیے ایک: SECP، FBR/NTN، SRB، PSEB، NADRA، domain-email) جو verification_documents استعمال کرتے ہیں۔ تمام چیکس کامیاب ہونے پر ادارہ verified کی طرف بڑھتا ہے اور kyc_level بڑھ جاتا ہے؛ ناکامی پر یہ on_hold کی طرف بڑھتا ہے اور اپیل دائر کی جا سکتی ہے۔ consents ادارے کی ڈیٹا پروسیسنگ اور ہر انضمام لوک اپ کے لیے رضامندی ریکارڈ کرتا ہے۔

3.2 محکمات (حکومتی تنظیمی درخت، اوقات، چھٹیاں)

erDiagram DEPARTMENTS ||--o{ DEPARTMENTS : "parent_id self-ref tree" DEPARTMENTS ||--o{ DEPARTMENT_SECTIONS : "has" DEPARTMENTS ||--o{ BUSINESS_HOURS : "has" DEPARTMENTS ||--o{ DEPARTMENT_HOLIDAYS : "observes" HOLIDAY_CALENDAR ||--o{ DEPARTMENT_HOLIDAYS : "specialized by" DEPARTMENTS { bigint id PK bigint parent_id FK "NULL = top-level" varchar code "LBR, SITD" varchar name_en varchar name_ur varchar name_sd tinyint is_owner_dept varchar status "ENUM active/inactive" } DEPARTMENT_SECTIONS { bigint id PK bigint dept_id FK bigint parent_section_id FK "NULL" varchar code varchar name_en } DEPARTMENT_HOLIDAYS { bigint id PK bigint dept_id FK bigint holiday_id FK tinyint observes } HOLIDAY_CALENDAR { bigint id PK date holiday_date varchar name_en varchar name_ur varchar name_sd varchar region "Sindh" } BUSINESS_HOURS { bigint id PK bigint dept_id FK tinyint weekday "0..6" time opens_at time closes_at tinyint is_working_day }

تحریری وضاحت۔ departments parent_id کے ذریعے ایک خود-حوالہ درخت ہے: اعلیٰ سطح کا نوڈ ایک محکمہ (لیبر، خزانہ، S&ITD، …) ہے؛ اس کے نیچے کوئی بھی نوڈ ایک سیکشن / ذیلی محکمہ ہے اور کسی بھی گہرائی میں آزادانہ طور پر نسٹ کر سکتا ہے۔ department_sections ان leaf یونٹس کے لیے ایک سہولت پروجیکشن ہے جو آزادانہ طور پر تفویض کے قابل ہوں۔ مالک محکمہ S&ITD کو is_owner_dept = 1 سے نشان زد کیا گیا ہے۔ holiday_calendar سندھ کی عوامی چھٹیاں رکھتا ہے (SLA کو روکنے کے لیے استعمال ہوتا ہے — _context.md §5 دیکھیں)؛ department_holidays کسی محکمے کو اوور رائڈ کرنے کی اجازت دیتا ہے (اضافی چھٹی منانا یا فہرست شدہ چھٹی کو چھوڑنا)۔ business_hours ہر محکمے کے لیے ہر ہفتے کے دن کے کام کے اوقات متعین کرتا ہے؛ SLA ٹائمرز صرف کام کے دنوں میں کام کے اوقات کے اندر چلتے ہیں۔

3.3 صارفین، کردار اور عہدیداروں کا CMS

erDiagram USERS ||--o{ USER_ROLE_ASSIGNMENTS : "has" USERS ||--o{ USER_PERMISSION_OVERRIDES : "has" USERS ||--o| REPRESENTATIVES : "company login 1:1" ROLES ||--o{ USER_ROLE_ASSIGNMENTS : "template" ROLES ||--o{ ROLE_TEMPLATE_PERMISSIONS : "grants" ROLES ||--o{ REP_ROLE_ASSIGNMENTS : "company-side templates" OFFICIALS ||--o{ OFFICIAL_TERMS : "date-scoped tenure" OFFICIALS }o--|| DEPARTMENTS : "affiliated" MEDIA_LIBRARY ||--o{ OFFICIALS : "portrait" USERS }o--|| DEPARTMENTS : "staff belong to" USERS { bigint id PK char keycloak_sub "OIDC UUID UNIQUE" varchar display_name varchar email "UNIQUE" char locale varchar two_fa_method varchar status "ENUM" tinyint is_certified bigint dept_id FK "staff" bigint rep_id FK "company" } ROLES { bigint id PK varchar code "SUPER_ADMIN, OFFICER, PRIMARY_REP" varchar side "ENUM gov/company/oversight/other" varchar name_en } OFFICIALS { bigint id PK varchar title "ENUM Minister/Secretary/DG/SACM" varchar full_name_en varchar full_name_ur varchar full_name_sd bigint portrait_media_id FK longtext message_en tinyint is_current } OFFICIAL_TERMS { bigint id PK bigint official_id FK date effective_from date effective_to "NULL = open" varchar designation }

تحریری وضاحت۔ users متحدہ لاگ ان شناخت ہے۔ حکومتی عملے کے پاس ایک dept_id ہوتا ہے؛ کمپنی کے نمائندوں کے پاس ایک rep_id (1:1 to representatives) ہوتا ہے۔ ہر صارف کے پاس ایک یا زیادہ user_role_assignments ہوتے ہیں جو ایک roles ٹیمپلیٹ کا حوالہ دیتے ہیں (SUPER_ADMIN، SITD_FACILITATION_OFFICER، DEPT_ADMIN، OFFICER، DG، SECRETARY، MINISTER، READONLY_AUDITOR، PRIMARY_REP، ADMIN_REP، FILER، VIEWER، NOTIFY_ONLY، CITIZEN، SERVICE_ACCOUNT)۔ کردار ٹیمپلیٹ role_template_permissions کے ذریعے ایک بنیادی لائن دیتا ہے؛ فی صارف گرانٹس یا منسوخیاں user_permission_overrides میں محفوظ ہوتی ہیں (دقیق-اوور رائڈ پرت، /specs/ur/04-roles-permissions/ §6 تا §7 دیکھیں)۔ عہدیداروں کا CMS (officials، official_terms، media_library) وزیر/SACM، سیکریٹری، اور DG کی date-scoped ریکارڈز رکھتا ہے تاکہ سرکاری خطوط اور ڈیش بورڈز خط جاری ہونے کی تاریخ کے لیے درست نام دکھائیں — تاریخی درستگی official_terms.effective_from/effective_to پر جواینٹ کرنے سے نافذ کی جاتی ہے۔

3.4 ٹکٹ اور ورک فلو

erDiagram TICKETS ||--o{ TICKET_THREADS : "has" TICKETS ||--o{ TICKET_SUBTASKS : "decomposes into" TICKETS ||--o{ TICKET_LINKS : "source" TICKETS ||--o{ TICKET_LINKS : "target" TICKETS ||--o{ TICKET_WATCHERS : "watched by" TICKETS ||--o{ TICKET_ATTACHMENTS : "carries" TICKETS ||--o{ TICKET_HISTORY : "audited in" TICKETS ||--o{ RESOLUTION_EVIDENCE : "proven by" TICKETS ||--o{ APPEALS : "may be appealed" TICKETS ||--o{ CSAT_RESPONSES : "rated by" TICKETS }o--|| ORGANIZATIONS : "filed by company" TICKETS }o--|| DEPARTMENTS : "routed to" TICKETS }o--|| DEPARTMENT_SECTIONS : "assigned to section" TICKETS }o--|| TICKET_CATEGORIES : "classified as" TICKETS }o--|| REPRESENTATIVES : "filer_rep_id" TICKET_THREADS ||--o{ TICKET_MESSAGES : "contains" TICKET_MESSAGES ||--o{ TICKET_ATTACHMENTS : "may attach" TICKETS { bigint id PK varchar tracking_id "SITP-YYYY-DEPT-NNNNNN UNIQUE" varchar status "ENUM" varchar priority "ENUM" bigint category_id FK bigint dept_id FK bigint section_id FK bigint org_id FK bigint filer_rep_id FK char locale tinyint is_confidential tinyint is_vip datetime sla_due_at datetime sla_paused_until datetime resolved_at datetime closed_at } TICKET_THREADS { bigint id PK bigint ticket_id FK varchar visibility "ENUM public/internal" } TICKET_MESSAGES { bigint id PK bigint thread_id FK bigint author_user_id FK longtext body varchar source "ENUM web/email/sms/whatsapp/ivr" } TICKET_LINKS { bigint id PK bigint source_ticket_id FK bigint target_ticket_id FK varchar link_type "ENUM merge/split/relate/blocks/duplicate" }

تحریری وضاحت۔ ایک ticket مرکزی وجود ہے۔ اس کا tracking_id (SITP-2026-LBR-000123) صارف کے سامنے آنے والا شناخت کنندہ ہے؛ متبادل id جواینٹ کلید ہے۔ ایک ٹکٹ ایک organization (فائلر) سے تعلق رکھتا ہے، ایک department اور اختیاری طور پر ایک section کی طرف روٹ ہوتا ہے، ایک ticket_category سے درجہ بند ہوتا ہے، اور ایک representative (filer_rep_id) کی طرف سے دائر کیا جاتا ہے۔ ایک ٹکٹ کے دو ticket_threads ہوتے ہیں: ایک public (کمپنی کو نظر آنے والا) اور ایک internal (صرف حکومت کے لیے)؛ ہر تھریڈ ticket_messages رکھتا ہے جن کا source انٹیک چینل (web، email، SMS، WhatsApp، IVR) ریکارڈ کرتا ہے۔ ticket_subtasks تقسیم شدہ ٹکٹس کو ماڈل کرتے ہیں؛ ticket_links ضم/تقسیم/متعلقہ/نقل/بلاکنگ تعلقات ماڈل کرتے ہیں (ایک قطار source_ticket_id اور target_ticket_id دونوں کا حوالہ ایک link_type کے ساتھ دیتی ہے)۔ ticket_watchers CC/اسکیلیشن میں شامل کردہ سامعین کو ریکارڈ کرتا ہے۔ ہر حالت تبدیل کرنے والا ایونٹ ticket_history میں شامل کیا جاتا ہے (فی ٹکٹ آڈٹ؛ عالمی آڈٹ audit_logs ہے)۔ حل کے لیے resolution_evidence (حل کے ثبوت کا گیٹ) درکار ہوتا ہے؛ اپیلز اور CSAT لائف سائیکل کو بند کرتے ہیں۔

3.5 SLA، اسکیلیشن اور حل

erDiagram SLA_DEFINITIONS ||--o{ TICKETS : "governs" ESCALATION_RULES ||--o{ ESCALATION_EVENTS : "fires" TICKETS ||--o{ ESCALATION_EVENTS : "escalated by" TICKETS ||--o{ SLA_PAUSE_EVENTS : "paused by" SLA_DEFINITIONS }o--|| DEPARTMENTS : "per dept" SLA_DEFINITIONS }o--|| TICKET_CATEGORIES : "per category" ESCALATION_RULES }o--|| ROLES : "target oversight role" SLA_DEFINITIONS { bigint id PK bigint dept_id FK bigint category_id FK "NULL = dept default" varchar priority "ENUM" int first_response_hours int resolution_hours tinyint pauses_on_await tinyint pauses_on_holiday } ESCALATION_RULES { bigint id PK bigint dept_id FK tinyint tier "1=DG 2=Sec 3=Min" int days_after_open bigint target_role_id FK varchar mode "ENUM notify/notify+action" } ESCALATION_EVENTS { bigint id PK bigint ticket_id FK bigint rule_id FK bigint target_user_id FK datetime fired_at varchar outcome } SLA_PAUSE_EVENTS { bigint id PK bigint ticket_id FK varchar reason "ENUM await/weekend/holiday/manual" datetime paused_at datetime resumed_at int paused_seconds }

تحریری وضاحت۔ sla_definitions ہر (department, category, priority) کے لیے پہلے جواب اور حل کے اہداف متعین کرتا ہے؛ پلیٹ فارم ڈیفالٹس 2/5/10 دن ہیں (_context.md §5 دیکھیں)، جو یہاں مکمل طور پر اوور رائڈ کے قابل ہیں۔ escalation_rules ہر محکمے کے لیے ٹیئر لیڈر متعین کرتا ہے — بالعموم ٹیئر 1 → دن 2 پر DG، ٹیئر 2 → دن 7 پر سیکریٹری (2+5)، ٹیئر 3 → دن 17 پر وزیر/SACM (2+5+10)، ہر ایک ایک target_role اور ایک mode (notify یا notify+action، /specs/ur/04-roles-permissions/ §9 میں تشکیل کے قابل نگرانی کے اختیارات کا عکس) کی نشاندہی کرتا ہے۔ جب کوئی ٹیئر چلتا ہے، ایک escalation_events قطار لکھی جاتی ہے اور ہدف صارف کو بطور watcher شامل کر دیا جاتا ہے۔ sla_pause_events ہر SLA گھڑی کے روکنے/دوبارہ شروع کرنے (await-company، ویک اینڈ، سندھ عوامی چھٹی، دستی) کو مدت کے ساتھ ریکارڈ کرتا ہے تاکہ مؤثر SLA کو فارنسیکل طریقے سے دوبارہ تشکیل دیا جا سکے۔ resolution_evidence ثبوت کے گیٹ کو نافذ کرتا ہے؛ appeals اور csat_responses ٹکٹ سے منسلک ہیں (§3.4 میں دکھائے گئے)۔

3.6 اے آئی

erDiagram AI_ENGINE_CONFIGS ||--o{ AI_RUNS : "executed by" AI_RUNS ||--o{ EXTRACTED_ACTION_ITEMS : "produces" TICKETS ||--o{ AI_RUNS : "routing/summary/redaction" MOM ||--o{ AI_RUNS : "action-item extraction" EXTRACTED_ACTION_ITEMS ||--o{ TICKET_SUBTASKS : "confirmed into" AI_ENGINE_CONFIGS { bigint id PK varchar feature "ocr/summary/routing/.../mom_extract" varchar provider "ENUM azure/google/aws/ollama/tesseract/whisper" varchar model varchar api_endpoint tinyint is_cloud tinyint enabled varchar sensitivity_class "ENUM public/internal/confidential/restricted" } AI_RUNS { bigint id PK bigint engine_config_id FK varchar feature varchar input_ref "ticket:123 / mom:45" longtext input_summary "redacted" longtext output_json int prompt_tokens int completion_tokens decimal cost_usd varchar status "ENUM ok/fallback/failed/redacted" tinyint was_redacted int latency_ms } EXTRACTED_ACTION_ITEMS { bigint id PK bigint ai_run_id FK bigint mom_id FK varchar owner_text bigint owner_user_id FK date due_date varchar action_text varchar status "ENUM proposed/confirmed/converted/rejected" bigint subtask_id FK }

تحریری وضاحت۔ ai_engine_configs پلگ ایبل انجن رجسٹری ہے: 11 اے آئی صلاحیتوں (+ transcription) میں سے ہر ایک کے لیے، ایک یا زیادہ (provider, model, is_cloud) قطاریں تشکیل دی جاتی ہیں، ہر ایک کو ڈیٹا-حساسیت کے اس طبقے سے ٹیگ کیا جاتا ہے جس کی خدمت کرنے کی اسے اجازت ہے (کلاؤڈ انجنز کبھی restricted/confidential خام PII کی خدمت نہیں کرتے — /specs/ur/15-tech-architecture/ §6 دیکھیں)۔ ai_runs ہر اے آئی اطلاق کو ریکارڈ کرتا ہے: فیچر، حل شدہ انجن، ایک redacted ان پٹ اسنیپ شاٹ، ساختی آؤٹ پٹ، ٹوکن گنتی، لاگت، لیٹنسی، حیثیت (ok/fallback/failed/redacted)، اور ایک was_redacted پرچم۔ extracted_action_items MoM ایکشن-آئٹم نکالنے کا ساختی آؤٹ پٹ رکھتا ہے (مالک متن + حل شدہ صارف، تاریخِ واجب الادا، ایکشن متن، حیثیت)؛ جب کوئی افسر کسی آئٹم کی تصدیق کرتا ہے، تو اسے ایک ticket_subtasks قطار میں تبدیل کر دیا جاتا ہے اور status converted ہو جاتی ہے۔

3.7 مواصلات اور اطلاعات

erDiagram USERS ||--o{ MESSAGES : "DM author" USERS ||--o{ CHANNEL_MEMBERSHIPS : "joins" CHANNELS ||--o{ CHANNEL_MEMBERSHIPS : "has" CHANNELS ||--o{ CHANNEL_MESSAGES : "contains" CHANNEL_MESSAGES ||--o{ THREADED_REPLIES : "replies" CHANNEL_MESSAGES ||--o{ MESSAGE_READS : "read receipts" USERS ||--o{ NOTIFICATIONS : "receives" NOTIFICATION_TEMPLATES ||--o{ NOTIFICATIONS : "rendered from" USERS ||--o{ NOTIFICATION_PREFERENCES : "configures" INBOUND_REPLIES }o--|| TICKETS : "appended to" CHANNELS { bigint id PK varchar code varchar type "ENUM dm/group/channel" bigint dept_id FK varchar name_en } CHANNEL_MESSAGES { bigint id PK bigint channel_id FK bigint author_user_id FK bigint parent_message_id FK longtext body } NOTIFICATIONS { bigint id PK bigint user_id FK bigint template_id FK varchar channel "ENUM email/sms/whatsapp/in_app" varchar event_key longtext payload_json char locale varchar status "ENUM queued/sent/delivered/failed" datetime sent_at } NOTIFICATION_TEMPLATES { bigint id PK varchar event_key char locale varchar channel varchar subject longtext body } INBOUND_REPLIES { bigint id PK varchar source "ENUM email/whatsapp/sms" varchar from_address varchar external_message_id bigint ticket_id FK longtext body bigint created_message_id FK }

تحریری وضاحت۔ 3-ٹیئر اندرونی مواصلات کا ماڈل دو جدول خاندانوں سے میپ ہوتا ہے: DMs اور گروپ DMs messages (org-wide inbox، سادہ) استعمال کرتے ہیں، اور مکمل چینل-بنیاد چیٹ (channels، channel_memberships، channel_messages) تھریڈڈ جوابات (threaded_replies، channel_messages کے parent_message_id کی خود-حوالہ کاری کے طور پر ماڈل) اور پڑھنے کی رسیدوں (message_reads) کے ساتھ۔ اطلاعات کی پائپ لائن الگ ہے: notification_templates event_key + locale + channel کے ذریعے کلیدی شدہ کثیر لسانی ٹیمپلیٹس رکھتا ہے؛ notifications ہر باہر جانے والی اطلاع فی صارف/چینل کے ساتھ ترسیل کی حیثیت ریکارڈ کرتا ہے؛ notification_preferences فی صارف ترجیحات کا مرکز ہے (چینل آپٹ-ان، ڈائجسٹ کی رفتار، خاموش اوقات)۔ inbound_replies دو طرفہ جوابات (Mailjet inbound parse کے ذریعے email، ویب ہوک کے ذریعے WhatsApp، SMS) کو پکڑتا ہے، انہیں اصل ticket میں پارس کرتا ہے اور بطور ticket_message ظاہر کرتا ہے۔

3.8 میٹنگز، TRI اور MoM

erDiagram TICKETS ||--o{ MEETINGS : "stalled ticket to TRI" MEETINGS ||--o{ MEETING_ATTENDEES : "attended by" MEETINGS ||--|| MOM : "produces 1:1" MEETINGS ||--o{ MEETING_RECORDINGS : "recorded as" MOM ||--o{ MOM_APPROVALS : "approved by" MOM ||--o{ MOM_DISTRIBUTIONS : "shared to" MOM ||--o{ MOM_ACKNOWLEDGMENTS : "acked by" MOM ||--o{ AI_RUNS : "OCR + extract" MOM ||--o{ EXTRACTED_ACTION_ITEMS : "yields" MEETINGS { bigint id PK bigint ticket_id FK varchar type "ENUM tri/hearing/internal" varchar modality "ENUM virtual/physical/hybrid" varchar video_provider "ENUM zoom/meet/teams/null" varchar join_url datetime scheduled_at datetime started_at datetime ended_at bigint dept_id FK } MEETING_ATTENDEES { bigint id PK bigint meeting_id FK bigint user_id FK varchar name varchar party "ENUM company/sitd/department/external" varchar attendance_status } MOM { bigint id PK bigint meeting_id FK int version varchar status "ENUM draft/approved/published" tinyint sensitive_requires_approval longtext body_en longtext body_ur longtext body_sd bigint uploaded_by FK datetime published_at } MOM_APPROVALS { bigint id PK bigint mom_id FK bigint approver_user_id FK varchar decision "ENUM approved/rejected/changes_requested" longtext note } MEETING_RECORDINGS { bigint id PK bigint meeting_id FK bigint media_id FK int duration_seconds tinyint transcribed }

تحریری وضاحت۔ ایک meeting کسی رکے ہوئے ticket سے متحرک ہوتی ہے (TRI = کمپنی + S&ITD فیسلیٹیٹر + متعلقہ محکمہ)، یا ایک سماعت یا اندرونی میٹنگ کے طور پر شیڈول ہوتی ہے۔ طریقہ virtual/physical/hybrid ہے؛ virtual/hybrid کے لیے video_provider (Zoom/Meet/Teams) اور وقت-محدود join_url محفوظ کیے جاتے ہیں۔ ہر میٹنگ بالکل ایک mom (1:1) پیدا کرتی ہے، جو ورژن شدہ ہے (version ترمیم پر بڑھتا ہے) اور draft → approved → published تک منتقل ہوتا ہے۔ حساس/VIP ٹکٹس کے لیے sensitive_requires_approval پرچم شائع سے پہلے چیئر/DG کی ایک mom_approvals قطار لازمی کرتا ہے؛ عام ٹکٹس کے لیے اپلوڈر براہ راست شائع کرتا ہے۔ شائع کرنے پر، mom_distributions ہر چینل شیئر (email + in-app + SMS/WhatsApp) ریکارڈ کرتا ہے اور mom_acknowledgments ٹریک کرتا ہے کس نے تسلیم کیا۔ meeting_recordings ریکارڈنگ blob اور یہ کہ اس کی تحریر بندی کی گئی یا نہیں، سے منسلک کرتا ہے۔ MoM اپلوڈ-فرسٹ ہے (PDF/Word/تصاویر)؛ اپلوڈ پر، OCR + اے آئی نکالنے (ai_runs، feature = mom_extract) extracted_action_items پیدا کرتے ہیں جس کی افسر ticket_subtasks میں تصدیق کرتا ہے (§3.6 دیکھیں)۔

3.9 عہدیدار و میڈیا، علم، مواد اور تربیت

erDiagram MEDIA_LIBRARY ||--o{ KB_ARTICLES : "inline images" MEDIA_LIBRARY ||--o{ OFFICIALS : "portrait" DEPARTMENTS ||--o{ KB_ARTICLES : "owned by" DEPARTMENTS ||--o{ SERVICE_CATALOG_ENTRIES : "offered by" KB_ARTICLES ||--o{ DOCUMENTS : "attached forms" TRAINING_COURSES ||--o{ COURSE_ENROLLMENTS : "taken via" TRAINING_COURSES ||--o{ TRAINING_EXAMS : "assessed by" TRAINING_EXAMS ||--o{ EXAM_ATTEMPTS : "attempted" COURSE_ENROLLMENTS ||--o{ CERTIFICATIONS : "yields" USERS ||--o{ COURSE_ENROLLMENTS : "enrollee" USERS ||--o{ EXAM_ATTEMPTS : "examinee" KB_ARTICLES { bigint id PK varchar slug int version varchar status "ENUM draft/review/published/archived" varchar title_en longtext body_en longtext body_ur longtext body_sd bigint dept_id FK tinyint is_featured } SERVICE_CATALOG_ENTRIES { bigint id PK bigint dept_id FK varchar code varchar name_en bigint default_sla_definition_id FK } SOP_DOCUMENTS { bigint id PK bigint dept_id FK int version varchar status bigint doc_id FK } CIRCULARS { bigint id PK varchar title_en datetime published_at tinyint is_pinned } DOCUMENTS { bigint id PK varchar kind "ENUM form/sop/circular/repository/letter" varchar title bigint media_id FK char checksum_sha256 } TRAINING_COURSES { bigint id PK varchar code varchar title_en int duration_minutes tinyint required_for_role } TRAINING_EXAMS { bigint id PK bigint course_id FK int pass_threshold_pct int time_limit_minutes } EXAM_ATTEMPTS { bigint id PK bigint exam_id FK bigint user_id FK int score_pct varchar result "ENUM pass/fail/incomplete" datetime started_at datetime finished_at } CERTIFICATIONS { bigint id PK bigint user_id FK bigint course_id FK bigint attempt_id FK varchar certificate_code "UNIQUE" date issued_on date expires_on tinyint is_valid }

تحریری وضاحت۔ علم کا قاعدہ (kb_articles) ورژن شدہ اور تین لسانی ہے (title_en/body_en/.../_sd)، فی department ملکیت ہے، اور draft → review → published → archived سے گزرتا ہے۔ sop_documents، service_catalog_entries، circulars، اور عام documents ذخیرہ (forms، SOPs، circulars، ڈاؤن لوڈ قابل repository آئٹمز) ماڈیول J (KB + SOPs) اور ماڈیول N (تجاویز و مواد پورٹل) کا احاطہ کرتے ہیں۔ تربیتی LMS-lite (training_courses، course_enrollments، training_exams، exam_attempts، certifications) امتحان-گیٹڈ سرٹیفکیشن (ماڈیول O) کو نافذ کرتا ہے جو تمام حکومتی عملے کو users.is_certified پرچم لگنے اور لائیو ٹکٹ تک رسائی کھلنے سے پہلے پاس کرنا ضروری ہے (/specs/ur/04-roles-permissions/ §14 دیکھیں)۔ سرٹیفکیشنز میں issued_on/expires_on بار بار دوبارہ سرٹیفکیشن کے لیے ہیں (بالعموم سالانہ)۔ media_library مشترکہ اثاثہ اسٹور ہے (MinIO میں اپلوڈز میٹا ڈیٹا کے ساتھ) جس کا حوالہ عہدیداروں، KB، اور ان لائن آرٹیکل تصاویر دیتی ہیں۔

3.10 نظام اور تشکیل

erDiagram FEATURE_FLAGS ||--o{ FEATURE_FLAGS : "scope override chain" USERS ||--o{ AUDIT_LOGS : "actor" INTEGRATIONS_CONFIGS ||--o{ WEBHOOKS : "fires" QR_VERIFIABLE_DOCUMENTS }o--|| DOCUMENTS : "proves" SYSTEM_SETTINGS }o--|| NOTIFICATION_TEMPLATES : "renders via" FEATURE_FLAGS { bigint id PK varchar flag_key "UNIQUE" tinyint enabled varchar scope "ENUM platform/dept/env/user_segment" bigint dept_id FK varchar env "ENUM dev/staging/prod" tinyint default_value varchar description } AUDIT_LOGS { bigint id PK bigint actor_user_id FK varchar action varchar entity_type bigint entity_id longtext before_json longtext after_json varchar ip_address char request_id datetime occurred_at } INTEGRATIONS_CONFIGS { bigint id PK varchar provider "ENUM nadra/secp/fbr/srb/pseb/eoffice/oidc/mailjet/sms/whatsapp" varchar base_url varchar vault_ref "secret path never the secret" tinyint enabled int timeout_ms varchar env } WEBHOOKS { bigint id PK varchar event_key varchar target_url char secret_hash tinyint enabled varchar last_status datetime last_fired_at } OPEN_DATA_EXPORTS { bigint id PK varchar dataset varchar format "ENUM csv/xlsx/json/pdf" bigint media_id FK datetime generated_at char hash_sha256 } QR_VERIFIABLE_DOCUMENTS { bigint id PK bigint document_id FK char qr_token "UNIQUE" char payload_hash datetime issued_at datetime expires_at tinyint revoked } SYSTEM_SETTINGS { bigint id PK varchar setting_key "UNIQUE" longtext value varchar category "ENUM smtp/mailjet/sms/whatsapp/general/branding" tinyint is_secret }

تحریری وضاحت۔ feature_flags رن ٹائم ٹوگل جدول ہے؛ ایک فلیگ کی مؤثر قدر چین platform-default → department-override → env-override → user-segment-override → off (پہلا میچ جیتتا ہے) سے حل کی جاتی ہے، Redis میں کیش ہوتی ہے اور تبدیلی پر آڈٹ-لاگ ہوتی ہے (/specs/ur/15-tech-architecture/ §11 دیکھیں)۔ audit_logs صرف اضافہ (append-only) عالمی آڈٹ ہے (کبھی UPDATE یا DELETE نہیں؛ ماہانہ تقسیم — §7 دیکھیں)؛ ہر حالت تبدیل کرنے والا مراعات والا عمل before/after JSON، اداکار، IP، اور درخواست id کے ساتھ ایک قطار لکھتا ہے تاکہ مربوط بنایا جا سکے۔ integrations_configs NADRA/SECP/FBR/SRB/PSEB/NITB e-Office/OIDC/Mailjet/SMS/WhatsApp کے لیے فی-فراہم کنندہ سیٹنگز رکھتا ہے، رازات صرف vault_ref راہ کے طور پر رکھے جاتے ہیں — راز خود کبھی نہیں۔ webhooks باہر جانے والے ویب ہوک سبسکرپشنز (HMAC-سائن شدہ) متعین کرتا ہے۔ open_data_exports ہر شفافیت-ڈیش بورڈ / اوپن ڈیٹا ایکسپورٹ blob ریکارڈ کرتا ہے۔ qr_verifiable_documents ایک پیدا کردہ سرکاری خط (documents) کو QR ٹوکن + مواد ہیش سے باندھتا ہے تاکہ عوام خط کی اصالت کی تصدیق کر سکے اور جعلسازی کا پتہ چل سکے۔ system_settings عام key-value اسٹور ہے (SMTP، Mailjet، SMS گیٹ وے، WhatsApp، برانڈنگ) جس میں is_secret ان قطاروں کو نشان زد کرتا ہے جن کی قدر صرف والٹ میں رہتی ہے۔


4. جدول کی تعریفیں

نوٹیشن: ہر جدول معیاری آڈٹ کالم (§2.3) شامل کرتا ہے۔ ہر جدول میں _(standard audit)_ قطار اس بلاک کا حوالہ دیتی ہے تاکہ فہرستیں پڑھنے میں آسان رہیں۔ FK = غیر ملکی کلید؛ UQ = منفرد؛ NN = not null؛ PK = بنیادی کلید۔

4.1 شناخت اور ادارہ

organizations

مقصد: ایک رجسٹرڈ وجود (کمپنی/فرد) جو ٹکٹ دائر کرتا ہے۔ پانچ entity اقسام ایک مشروط فارم چلاتی ہیں؛ فائل-فرسٹ، متوازی تصدیق کا لائف سائیکل۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT متبادل۔
entity_type ENUM('secp_company','sole_proprietor','freelancer','foreign_branch','early_startup') NN مشروط کالم چلاتا ہے۔
legal_name VARCHAR(255) NN رجسٹرڈ نام۔
trading_name VARCHAR(255) NULL اختیاری DBA۔
secp_registration_no VARCHAR(32) NULL, UQ صرف SECP کمپنیوں کے لیے۔
ntn VARCHAR(20) NULL, UQ FBR نیشنل ٹیکس نمبر۔
srb_tax_id VARCHAR(32) NULL سندھ ریونیو بورڈ۔
pseb_membership_no VARCHAR(32) NULL PSEB ممبرشپ۔
domain_email_domain VARCHAR(255) NULL نمائندے کے email ثبوت کے لیے تصدیق شدہ ڈومین۔
verification_status ENUM('provisional','verified','on_hold','suspended','dissolved') NN DEFAULT 'provisional' لائف سائیکل۔
kyc_level TINYINT UNSIGNED NN DEFAULT 0 کامیاب چیکس کی گہرائی۔
primary_rep_id BIGINT UNSIGNED NULL, FK → representatives.id غیر معیاری شدہ بالکل-ایک پوائنٹر؛ منتقلی پر برقرار رکھا جاتا ہے۔
locale CHAR(3) NN DEFAULT 'en' en/ur/sd۔
registered_at DATETIME(6) NN جب ادارے کا اکاؤنٹ بنا۔
re_atted_due_at DATE NULL اگلی دورانیاتی دوبارہ تصدیق۔
(standard audit) §2.3 دیکھیں +deleted_at (نرم حذف)۔

organization_locations

مقصد: ہر ادارے کے لیے ایک یا زیادہ طبعی پتے۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
org_id BIGINT UNSIGNED NN, FK → organizations.id, indexed
label VARCHAR(64) NULL مثلاً "ہیڈ آفس"، "کراچی شاخ"۔
address_line1 VARCHAR(255) NN
address_line2 VARCHAR(255) NULL
city VARCHAR(64) NN
district VARCHAR(64) NULL GIS ہیٹ میپ کے لیے۔
province VARCHAR(64) NN DEFAULT 'Sindh'
postal_code VARCHAR(16) NULL
country VARCHAR(64) NN DEFAULT 'Pakistan'
geo_lat DECIMAL(10,7) NULL اختیاری پن۔
geo_lng DECIMAL(10,7) NULL اختیاری پن۔
is_primary TINYINT(1) NN DEFAULT 0 ہر ادارے کے لیے ایک بنیادی۔
(standard audit) §2.3 دیکھیں +deleted_at۔

representatives

مقصد: ہر ادارے کے لیے متعدد مجاز نمائندے؛ ایک بنیادی لازمی۔ ہر ایک ایک لاگ ان users قطار سے 1:1 میپ ہوتا ہے۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
org_id BIGINT UNSIGNED NN, FK → organizations.id, indexed
user_id BIGINT UNSIGNED NULL, UQ, FK → users.id لاگ ان شناخت (1:1)۔
cnic CHAR(15) NULL 13-ہندسی + فارمیٹ؛ PII — مرموز (§9 دیکھیں)۔
full_name VARCHAR(255) NN
designation VARCHAR(128) NULL عنوان۔
role_at_company VARCHAR(128) NULL فعلی کردار، آزاد متن۔
email VARCHAR(255) NN, UQ جہاں قابلِ اطلاق ہو ڈومین تصدیق شدہ۔
mobile_e164 VARCHAR(16) NN E.164۔
whatsapp_e164 VARCHAR(16) NULL اختیاری، WhatsApp چینل کے لیے۔
locale CHAR(3) NN DEFAULT 'en'
two_fa_method ENUM('totp','sms','none') NN DEFAULT 'totp'
status ENUM('invited','active','revoked','transferred') NN DEFAULT 'invited'
is_primary TINYINT(1) NN DEFAULT 0 تیز چیکس کے لیے کردار تفویض کا عکس۔
accepted_at DATETIME(6) NULL
(standard audit) §2.3 دیکھیں +deleted_at۔

rep_role_assignments

مقصد: ایک نمائندے کو کمپنی-سائڈ کردار ٹیمپلیٹ (Primary/Admin/Filer/Viewer/Notify) سے باندھتا ہے۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
rep_id BIGINT UNSIGNED NN, FK → representatives.id, indexed
role_id BIGINT UNSIGNED NN, FK → roles.id کمپنی-سائڈ ٹیمپلیٹ۔
assigned_by BIGINT UNSIGNED NULL, FK → users.id
assigned_at DATETIME(6) NN
revoked_at DATETIME(6) NULL
reason_code VARCHAR(64) NULL آڈٹ وجہ۔
(standard audit) §2.3 دیکھیں

rep_permission_overrides

مقصد: فی نمائندہ انفرادی صلاحیتوں پر دقیق grant/revoke (کردار دستاویز §7 دیکھیں)۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
rep_id BIGINT UNSIGNED NN, FK → representatives.id, indexed
capability_key VARCHAR(64) NN مثلاً ticket.file، company.export۔
effect ENUM('grant','revoke') NN
scope_json LONGTEXT NULL اختیاری scope باریکی۔
reason VARCHAR(255) NULL آڈٹ بنیاد۔
(standard audit) §2.3 دیکھیں

verification_jobs

مقصد: کسی ادارے یا نمائندے کے خلاف ایک بیک گراؤنڈ تصدیقی لوک اپ (SECP/FBR/SRB/PSEB/NADRA/domain-email)۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
org_id BIGINT UNSIGNED NN, FK → organizations.id, indexed
rep_id BIGINT UNSIGNED NULL, FK → representatives.id نمائندے پر NADRA CNIC چیکس کے لیے۔
provider ENUM('secp','fbr','srb','pseb','nadra','domain_email') NN
status ENUM('queued','running','passed','failed','error') NN DEFAULT 'queued'
result_json LONGTEXT NULL معیاری شدہ نتیجہ (redacted PII)۔
raw_payload LONGTEXT NULL خام ردِعمل (مرموز؛ PII — §9 دیکھیں)۔
provider_reference VARCHAR(128) NULL بیرونی ٹرانزیکشن id۔
started_at DATETIME(6) NULL
finished_at DATETIME(6) NULL
error_message TEXT NULL
(standard audit) §2.3 دیکھیں

verification_documents

مقصد: رجسٹریشن / دوبارہ تصدیق کے دوران ثبوت کے طور پر جمع کردہ دستاویزات (مثلاً SECP سرٹیفکیٹ، بینک خط)۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
org_id BIGINT UNSIGNED NN, FK → organizations.id, indexed
verification_job_id BIGINT UNSIGNED NULL, FK → verification_jobs.id اگر کسی چیک سے منسلک ہو۔
media_id BIGINT UNSIGNED NN, FK → media_library.id اپلوڈ شدہ blob حوالہ۔
doc_type VARCHAR(64) NN مثلاً secp_certificate، bank_proof۔
status ENUM('pending','verified','rejected') NN DEFAULT 'pending'
notes TEXT NULL
(standard audit) §2.3 دیکھیں +deleted_at۔

consents

مقصد: فی ادارہ/نمائندہ رضامندی (ڈیٹا پروسیسنگ، انضمام لوک اپس، مارکیٹنگ) ریکارڈ کرتا ہے، ٹائم اسٹیمپ اور ورژن کے ساتھ۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
org_id BIGINT UNSIGNED NULL, FK → organizations.id
rep_id BIGINT UNSIGNED NULL, FK → representatives.id
consent_type VARCHAR(64) NN مثلاً data_processing، nadra_lookup، marketing۔
granted TINYINT(1) NN 1=دی گئی، 0=واپس لی گئی۔
policy_version VARCHAR(32) NN پرائیویسی پالیسی ورژن۔
consented_at DATETIME(6) NN
withdrawn_at DATETIME(6) NULL
(standard audit) §2.3 دیکھیں

4.2 محکمات

departments

مقصد: حکومتی تنظیمی درخت۔ اعلیٰ سطح = محکمہ؛ نسٹ شدہ = سیکشن/ذیلی محکمہ۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
parent_id BIGINT UNSIGNED NULL, FK → departments.id, indexed NULL = اعلیٰ سطح محکمہ۔
code VARCHAR(8) NN, UQ مختصر کوڈ مثلاً LBR، SITD، FIN۔
name_en VARCHAR(255) NN
name_ur VARCHAR(255) NULL
name_sd VARCHAR(255) NULL
description TEXT NULL
is_owner_dept TINYINT(1) NN DEFAULT 0 S&ITD کے لیے 1۔
depth TINYINT UNSIGNED NN DEFAULT 0 درخت گہرائی کیش۔
path VARCHAR(512) NULL مادی راہ /1/4/9/ ذیلی درخت استفسارات کے لیے۔
status ENUM('active','inactive') NN DEFAULT 'active'
sort_order INT NN DEFAULT 0
(standard audit) §2.3 دیکھیں +deleted_at۔

department_sections

مقصد: کسی محکمے کے تحت leaf تفویض کے قابل سیکشنز کے لیے سہولت پروجیکشن / واضح میٹا ڈیٹا۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
dept_id BIGINT UNSIGNED NN, FK → departments.id, indexed والد محکمہ۔
section_dept_id BIGINT UNSIGNED NN, FK → departments.id ذیلی-نوڈ قطار خود۔
code VARCHAR(16) NULL سیکشن کوڈ۔
name_en VARCHAR(255) NN
parent_section_id BIGINT UNSIGNED NULL, FK → department_sections.id
is_assignable TINYINT(1) NN DEFAULT 1 ٹکٹ وصول کر سکتا ہے۔
(standard audit) §2.3 دیکھیں

holiday_calendar

مقصد: سندھ عوامی چھٹیاں (اور قومی) جو SLA روکنے کے لیے استعمال ہوتی ہیں۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
holiday_date DATE NN
name_en VARCHAR(128) NN
name_ur VARCHAR(128) NULL
name_sd VARCHAR(128) NULL
region VARCHAR(64) NN DEFAULT 'Sindh'
holiday_type ENUM('public','bank','optional') NN DEFAULT 'public'
(standard audit) §2.3 دیکھیں

department_holidays

مقصد: مشترکہ چھٹی کیلنڈر کا فی-محکمہ اوور رائڈ۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
dept_id BIGINT UNSIGNED NN, FK → departments.id, indexed
holiday_id BIGINT UNSIGNED NULL, FK → holiday_calendar.id مشترکہ کیلنڈر کا حوالہ۔
override_date DATE NULL محکمہ-مخصوص تاریخ۔
observes TINYINT(1) NN DEFAULT 1 1=مناتا ہے، 0=واضح طور پر چھوڑتا ہے۔
(standard audit) §2.3 دیکھیں

business_hours

مقصد: ہر محکمے کے لیے ہر ہفتے کے دن کام کے اوقات؛ SLA گھڑی صرف ان ونڈوز کے اندر چلتی ہے۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
dept_id BIGINT UNSIGNED NN, FK → departments.id, indexed
weekday TINYINT UNSIGNED NN 0=اتوار … 6=ہفتہ۔
opens_at TIME NULL
closes_at TIME NULL
is_working_day TINYINT(1) NN DEFAULT 1
timezone VARCHAR(32) NN DEFAULT 'Asia/Karachi'
(standard audit) §2.3 دیکھیں

4.3 صارفین، کردار اور عہدیدار

users

مقصد: تمام اداکاروں (حکومتی عملہ، کمپنی نمائندے، شہری، سروس اکاؤنٹس) کے لیے متحدہ لاگ ان شناخت۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
keycloak_sub CHAR(36) NN, UQ OIDC subject UUID۔
display_name VARCHAR(255) NN
email VARCHAR(255) NULL, UQ سروس اکاؤنٹس کے لیے NULL۔
mobile_e164 VARCHAR(16) NULL
locale CHAR(3) NN DEFAULT 'en'
two_fa_method ENUM('totp','sms','none') NN DEFAULT 'totp'
status ENUM('active','suspended','training','deactivated') NN DEFAULT 'active'
is_certified TINYINT(1) NN DEFAULT 0 لائیو ٹکٹ گیٹ (ماڈیول O)۔
dept_id BIGINT UNSIGNED NULL, FK → departments.id, indexed صرف حکومتی عملہ۔
rep_id BIGINT UNSIGNED NULL, UQ, FK → representatives.id صرف کمپنی سائڈ (1:1)۔
is_service_account TINYINT(1) NN DEFAULT 0 انضمام/ملازمتیں۔
last_login_at DATETIME(6) NULL
(standard audit) §2.3 دیکھیں +deleted_at۔

roles

مقصد: کردار ٹیمپلیٹس (حکومت، کمپنی، نگرانی، دیگر)۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
code VARCHAR(64) NN, UQ مثلاً SUPER_ADMIN، OFFICER، PRIMARY_REP۔
side ENUM('gov','company','oversight','other') NN
name_en VARCHAR(128) NN
name_ur VARCHAR(128) NULL
name_sd VARCHAR(128) NULL
description TEXT NULL
is_system TINYINT(1) NN DEFAULT 0 سیڈ شدہ، غیر-قابلِ حذف۔
(standard audit) §2.3 دیکھیں

role_template_permissions

مقصد: ایک کردار ٹیمپلیٹ کے ذریعے دی گئی بنیادی صلاحیتیں (کردار دستاویز §8 کی میٹرکس)۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
role_id BIGINT UNSIGNED NN, FK → roles.id, indexed
capability_key VARCHAR(64) NN مثلاً ticket.file، sla.override۔
effect ENUM('allow','conditional') NN DEFAULT 'allow' conditional = میٹرکس میں ◐۔
(standard audit) §2.3 دیکھیں
منفرد (role_id, capability_key) UNIQUE

user_role_assignments

مقصد: ایک صارف کو ایک یا زیادہ کردار ٹیمپلیٹس سے باندھتا ہے (scope/محکمہ کے ساتھ)۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
user_id BIGINT UNSIGNED NN, FK → users.id, indexed
role_id BIGINT UNSIGNED NN, FK → roles.id
scope_dept_id BIGINT UNSIGNED NULL, FK → departments.id DA/Officer/DG/Sec کے لیے محکمہ scope۔
assigned_at DATETIME(6) NN
revoked_at DATETIME(6) NULL
assigned_by BIGINT UNSIGNED NULL, FK → users.id
(standard audit) §2.3 دیکھیں

user_permission_overrides

مقصد: فی صارف انفرادی صلاحیتوں پر دقیق grant/revoke۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
user_id BIGINT UNSIGNED NN, FK → users.id, indexed
capability_key VARCHAR(64) NN
effect ENUM('grant','revoke') NN
scope_dept_id BIGINT UNSIGNED NULL, FK → departments.id اختیاری محکمہ-محدود اوور رائڈ۔
reason VARCHAR(255) NULL
(standard audit) §2.3 دیکھیں
منفرد (user_id, capability_key, scope_dept_id) UNIQUE

officials

مقصد: برانڈ و عہدیداروں کے CMS ریکارڈز (وزیر/SACM، سیکریٹری، DG/ڈائریکٹر) جو سائٹ، خطوط، ڈیش بورڈز پر دکھائے جاتے ہیں۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
title ENUM('minister','sacm','secretary','dg','director') NN
full_name_en VARCHAR(255) NN
full_name_ur VARCHAR(255) NULL
full_name_sd VARCHAR(255) NULL
dept_id BIGINT UNSIGNED NULL, FK → departments.id منسلک محکمہ۔
portrait_media_id BIGINT UNSIGNED NULL, FK → media_library.id
message_en LONGTEXT NULL عوامی پیغام۔
message_ur LONGTEXT NULL
message_sd LONGTEXT NULL
is_current TINYINT(1) NN DEFAULT 1 سہولت پرچم۔
(standard audit) §2.3 دیکھیں +deleted_at۔

official_terms

مقصد: تاریخی درستگی کے لیے date-scoped مدت (خطوط جاری کرنے کی تاریخ کے لیے درست عہدیدار رینڈر کرتے ہیں)۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
official_id BIGINT UNSIGNED NN, FK → officials.id, indexed
designation VARCHAR(128) NN مثلاً "سیکریٹری S&ITD"۔
effective_from DATE NN
effective_to DATE NULL NULL = کھلا / موجودہ۔
metadata_json LONGTEXT NULL اضافی حقائق (اطلاع حوالہ)۔
(standard audit) §2.3 دیکھیں

media_library

مقصد: مشترکہ اثاثہ رجسٹری (MinIO blobs: تصاویر، KB امیجز، منسلکات، پیدا کردہ دستاویزات، ایکسپورٹس)۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
bucket VARCHAR(64) NN uploads/generated-docs/moms/avatars/exports۔
object_key VARCHAR(255) NN MinIO کلید۔
mime_type VARCHAR(128) NN
size_bytes BIGINT UNSIGNED NN
checksum_sha256 CHAR(64) NULL ڈیڈپ / سالمیت۔
av_status ENUM('pending','clean','infected','error') NN DEFAULT 'pending' ClamAV اسکین۔
is_encrypted TINYINT(1) NN DEFAULT 1 at-rest مرموز کاری پرچم۔
extracted_text LONGTEXT NULL OCR آؤٹ پٹ (انڈیکسنگ کے لیے)۔
owner_user_id BIGINT UNSIGNED NULL, FK → users.id اپلوڈر۔
expires_at DATETIME(6) NULL retention-محصول purge۔
(standard audit) §2.3 دیکھیں +deleted_at۔

4.4 ٹکٹ اور ورک فلو

tickets

مقصد: مرکزی وجود؛ SLA، اسکیلیشن، رازداری، اور حل کے گیٹ کے ساتھ مکمل لائف سائیکل۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT متبادل جواینٹ کلید۔
tracking_id VARCHAR(32) NN, UQ SITP-YYYY-DEPT-NNNNNN۔
title VARCHAR(255) NN
description LONGTEXT NN
status ENUM('new','triaged','assigned','in_progress','resolved','closed','reopened','appealed','withdrawn') NN DEFAULT 'new'
priority ENUM('low','normal','high','urgent','vip') NN DEFAULT 'normal'
category_id BIGINT UNSIGNED NULL, FK → ticket_categories.id, indexed
dept_id BIGINT UNSIGNED NULL, FK → departments.id, indexed
section_id BIGINT UNSIGNED NULL, FK → department_sections.id, indexed
assigned_user_id BIGINT UNSIGNED NULL, FK → users.id حل کرنے والا افسر۔
org_id BIGINT UNSIGNED NN, FK → organizations.id, indexed دائر کرنے والی کمپنی۔
filer_rep_id BIGINT UNSIGNED NN, FK → representatives.id دائر کرنے والا نمائندہ۔
filer_user_id BIGINT UNSIGNED NULL, FK → users.id دائر کرنے والا لاگ ان صارف۔
locale CHAR(3) NN DEFAULT 'en'
is_confidential TINYINT(1) NN DEFAULT 0 ABAC گیٹ۔
is_vip TINYINT(1) NN DEFAULT 0 VIP بندش گیٹ۔
is_anonymous TINYINT(1) NN DEFAULT 0 وہسٹل بلوور چینل۔
is_rti TINYINT(1) NN DEFAULT 0 RTI قانونی آخری تاریخ۔
sla_due_at DATETIME(6) NULL, indexed مؤثر آخری تاریخ۔
sla_paused_until DATETIME(6) NULL فعال روک کا اختتام۔
first_response_at DATETIME(6) NULL
resolved_at DATETIME(6) NULL
closed_at DATETIME(6) NULL
resolution_note TEXT NULL حل پر لازمی۔
merged_into_ticket_id BIGINT UNSIGNED NULL, FK → tickets.id اگر ضم کیا گیا ہو۔
(standard audit) §2.3 دیکھیں +deleted_at (نایاب؛ قانونی ہولڈ)۔

ticket_categories

مقصد: درجہ بندی ٹیکسونومی (فی محکمہ، نسٹ کے قابل)۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
parent_id BIGINT UNSIGNED NULL, FK → ticket_categories.id درخت۔
dept_id BIGINT UNSIGNED NULL, FK → departments.id, indexed
code VARCHAR(32) NN
name_en VARCHAR(255) NN
name_ur VARCHAR(255) NULL
name_sd VARCHAR(255) NULL
default_sla_definition_id BIGINT UNSIGNED NULL, FK → sla_definitions.id
is_rti_category TINYINT(1) NN DEFAULT 0
sort_order INT NN DEFAULT 0
(standard audit) §2.3 دیکھیں

ticket_threads

مقصد: کسی ٹکٹ پر گفتگو کا کنٹینر (عوامی بمقابلہ اندرونی)۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
ticket_id BIGINT UNSIGNED NN, FK → tickets.id, indexed
visibility ENUM('public','internal') NN
(standard audit) §2.3 دیکھیں
منفرد (ticket_id, visibility) UNIQUE

ticket_messages

مقصد: کسی تھریڈ میں انفرادی پیغامات (web، email، SMS، WhatsApp، IVR مآخذ)۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
thread_id BIGINT UNSIGNED NN, FK → ticket_threads.id, indexed
author_user_id BIGINT UNSIGNED NULL, FK → users.id inbound/system کے لیے NULL۔
author_display VARCHAR(255) NULL بیرونی/گمنام کے لیے۔
body LONGTEXT NN رینڈر شدہ markdown/HTML سینیٹائزڈ۔
body_plain LONGTEXT NULL SMS/تلاش کے لیے اسٹرپ شدہ۔
source ENUM('web','email','sms','whatsapp','ivr','system','api') NN DEFAULT 'web'
source_ref VARCHAR(128) NULL بیرونی پیغام id۔
is_internal_note TINYINT(1) NN DEFAULT 0
is_redacted TINYINT(1) NN DEFAULT 0 PII redaction لاگو۔
sent_at DATETIME(6) NULL
(standard audit) §2.3 دیکھیں

ticket_attachments

مقصد: کسی ٹکٹ پیغام (یا براہ راست ٹکٹ) سے منسلک فائلیں۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
ticket_id BIGINT UNSIGNED NN, FK → tickets.id, indexed
message_id BIGINT UNSIGNED NULL, FK → ticket_messages.id اگر کسی پیغام سے منسلک ہو۔
media_id BIGINT UNSIGNED NN, FK → media_library.id blob۔
display_name VARCHAR(255) NN
uploaded_by_user_id BIGINT UNSIGNED NULL, FK → users.id
is_evidence TINYINT(1) NN DEFAULT 0 ثبوت گیٹ میں شمار ہوتا ہے۔
visibility ENUM('public','internal') NN DEFAULT 'public'
(standard audit) §2.3 دیکھیں

ticket_watchers

مقصد: کسی ٹکٹ پر CC / اسکیلیشن میں شامل کردہ سامعین۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
ticket_id BIGINT UNSIGNED NN, FK → tickets.id, indexed
user_id BIGINT UNSIGNED NN, FK → users.id
added_by_user_id BIGINT UNSIGNED NULL, FK → users.id
reason ENUM('cc','escalation','triage','break_glass','manual') NN DEFAULT 'manual'
added_at DATETIME(6) NN
removed_at DATETIME(6) NULL
(standard audit) §2.3 دیکھیں
منفرد (ticket_id, user_id) UNIQUE

ticket_subtasks

مقصد: ایک والد ٹکٹ کی تقسیم سے پیدا شدہ چائلڈ ٹکٹ (یا کسی تصدیق شدہ MoM ایکشن آئٹم سے)۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
parent_ticket_id BIGINT UNSIGNED NN, FK → tickets.id, indexed
child_ticket_id BIGINT UNSIGNED NN, UQ, FK → tickets.id ذیلی ٹکٹ۔
extracted_action_item_id BIGINT UNSIGNED NULL, FK → extracted_action_items.id اگر MoM سے ہو۔
title VARCHAR(255) NN
due_date DATE NULL
status ENUM('open','in_progress','done','cancelled') NN DEFAULT 'open'
(standard audit) §2.3 دیکھیں

مقصد: دو ٹکٹوں کے درمیان ٹائپ شدہ تعلقات (ضم، تقسیم، متعلقہ، نقل، blocks)۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
source_ticket_id BIGINT UNSIGNED NN, FK → tickets.id, indexed
target_ticket_id BIGINT UNSIGNED NN, FK → tickets.id, indexed
link_type ENUM('merge','split','relate','duplicate','blocks') NN
note VARCHAR(255) NULL
(standard audit) §2.3 دیکھیں
منفرد (source_ticket_id, target_ticket_id, link_type) UNIQUE

ticket_history

مقصد: صرف اضافہ (append-only) فی ٹکٹ ایونٹ لاگ (حالت، تفویض، SLA، ترجیح کی تبدیلیاں)۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
ticket_id BIGINT UNSIGNED NN, FK → tickets.id, indexed
actor_user_id BIGINT UNSIGNED NULL, FK → users.id سسٹم کے لیے NULL۔
event_type VARCHAR(64) NN مثلاً status.changed، sla.paused۔
from_value VARCHAR(255) NULL
to_value VARCHAR(255) NULL
metadata_json LONGTEXT NULL
occurred_at DATETIME(6) NN

4.5 SLA، اسکیلیشن اور حل

sla_definitions

مقصد: فی (محکمہ، زمرہ، ترجیح) قابلِ تشکیل SLA۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
dept_id BIGINT UNSIGNED NN, FK → departments.id, indexed
category_id BIGINT UNSIGNED NULL, FK → ticket_categories.id NULL = محکمہ-وسیع ڈیفالٹ۔
priority ENUM('low','normal','high','urgent','vip') NN
first_response_hours INT UNSIGNED NN کام-اوقات گھڑی۔
resolution_hours INT UNSIGNED NN کام-اوقات گھڑی۔
pauses_on_await TINYINT(1) NN DEFAULT 1 کمپنی کے انتظار میں روکیں۔
pauses_on_weekend TINYINT(1) NN DEFAULT 1
pauses_on_holiday TINYINT(1) NN DEFAULT 1 سندھ کیلنڈر۔
is_active TINYINT(1) NN DEFAULT 1
(standard audit) §2.3 دیکھیں
منفرد (dept_id, category_id, priority) UNIQUE

escalation_rules

مقصد: فی محکمہ 2/5/10-دن کا ٹیئر لیڈر، ہدف کردار، اور mode۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
dept_id BIGINT UNSIGNED NN, FK → departments.id, indexed
tier TINYINT UNSIGNED NN 1=DG(2د)، 2=Sec(7د)، 3=Min(17د)۔
days_after_open INT UNSIGNED NN مجموعی دن۔
target_role_id BIGINT UNSIGNED NN, FK → roles.id نگرانی کردار۔
mode ENUM('notify','notify_plus_action') NN DEFAULT 'notify' نگرانی اختیارات کا عکس۔
is_active TINYINT(1) NN DEFAULT 1
(standard audit) §2.3 دیکھیں

escalation_events

مقصد: کسی ٹکٹ پر ہر اسکیلیشن ٹیئر کے چلنے کا ریکارڈ۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
ticket_id BIGINT UNSIGNED NN, FK → tickets.id, indexed
rule_id BIGINT UNSIGNED NN, FK → escalation_rules.id
target_user_id BIGINT UNSIGNED NULL, FK → users.id حل شدہ ہدف۔
fired_at DATETIME(6) NN
outcome VARCHAR(64) NULL مثلاً notified، watcher_added۔
(standard audit) §2.3 دیکھیں

sla_pause_events

مقصد: ہر SLA گھڑی کا روکنا/دوبارہ شروع کرنا، تاکہ مؤثر SLA فارنسیکل طریقے سے دوبارہ تشکیل دیا جا سکے۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
ticket_id BIGINT UNSIGNED NN, FK → tickets.id, indexed
reason ENUM('await_company','weekend','holiday','manual','tri_meeting') NN
paused_at DATETIME(6) NN
resumed_at DATETIME(6) NULL NULL = ابھی بھی روکا ہوا۔
paused_seconds INT UNSIGNED NULL دوبارہ شروع کرنے پر کمپیوٹڈ۔
note VARCHAR(255) NULL
actor_user_id BIGINT UNSIGNED NULL, FK → users.id

resolution_evidence

مقصد: حل کے ثبوت کا گیٹ — resolved تک منتقلی کے لیے کم از کم ایک قطار لازمی۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
ticket_id BIGINT UNSIGNED NN, FK → tickets.id, indexed
attachment_id BIGINT UNSIGNED NULL, FK → ticket_attachments.id ثبوت فائل۔
note TEXT NN حل کا نوٹ۔
submitted_by_user_id BIGINT UNSIGNED NN, FK → users.id
submitted_at DATETIME(6) NN
approval_status ENUM('pending','approved','rejected','auto') NN DEFAULT 'auto' حساس/VIP کے لیے approved درکار۔
approved_by_user_id BIGINT UNSIGNED NULL, FK → users.id VIP کے لیے چیئر/DG۔
approved_at DATETIME(6) NULL
(standard audit) §2.3 دیکھیں

appeals

مقصد: کمپنی یا شہری کی طرف سے کسی حل یا رد کے خلاف اپیل۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
ticket_id BIGINT UNSIGNED NN, FK → tickets.id, indexed
appealed_by_user_id BIGINT UNSIGNED NN, FK → users.id
reason TEXT NN
tier TINYINT UNSIGNED NN DEFAULT 1 اپیل ٹیئر (CPGRAMS انداز)۔
status ENUM('filed','under_review','upheld','rejected','escalated') NN DEFAULT 'filed'
reviewer_user_id BIGINT UNSIGNED NULL, FK → users.id
decision_note TEXT NULL
decided_at DATETIME(6) NULL
(standard audit) §2.3 دیکھیں

csat_responses

مقصد: حل کے بعد صارف اطمینان کی درجہ بندی۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
ticket_id BIGINT UNSIGNED NN, UQ, FK → tickets.id ہر ٹکٹ کے لیے ایک۔
submitted_by_user_id BIGINT UNSIGNED NN, FK → users.id
rating TINYINT UNSIGNED NN 1..5۔
comment TEXT NULL
submitted_at DATETIME(6) NN

4.6 اے آئی

ai_engine_configs

مقصد: 11 اے آئی صلاحیتوں + transcription کے لیے پلگ ایبل انجن رجسٹری۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
feature VARCHAR(48) NN ocr،summary،routing،urgency،draft_reply،translation،duplicate،chatbot،redaction،trends،mom_extract،transcribe۔
provider ENUM('azure','google','aws','ollama_vllm','tesseract','whisper') NN
model VARCHAR(64) NULL مثلاً gpt-4o، llama3-70b۔
api_endpoint VARCHAR(255) NULL
is_cloud TINYINT(1) NN کلاؤڈ بمقابلہ آن-پریمائز۔
sensitivity_class ENUM('public','internal','confidential','restricted') NN DEFAULT 'internal' زیادہ سے زیادہ ڈیٹا طبقہ جس کی خدمت کر سکے۔
priority TINYINT UNSIGNED NN DEFAULT 100 کمتر = ترجیحی۔
enabled TINYINT(1) NN DEFAULT 1
env ENUM('dev','staging','prod') NN DEFAULT 'prod'
config_json LONGTEXT NULL اضافی پیرامیٹرز (temperature، وغیرہ)۔
(standard audit) §2.3 دیکھیں

ai_runs

مقصد: ہر اے آئی اطلاق کا آڈٹ (انجن، ٹوکنز، لاگت، لیٹنسی، redaction)۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
engine_config_id BIGINT UNSIGNED NN, FK → ai_engine_configs.id, indexed
feature VARCHAR(48) NN استفسار کے لیے غیر معیاری شدہ۔
input_ref_type VARCHAR(32) NULL ticket،mom،message،kb، وغیرہ۔
input_ref_id BIGINT UNSIGNED NULL
input_summary LONGTEXT NULL redacted اسنیپ شاٹ۔
output_json LONGTEXT NULL ساختی نتیجہ۔
prompt_tokens INT UNSIGNED NULL
completion_tokens INT UNSIGNED NULL
cost_usd DECIMAL(12,4) NULL USD مائیکرو-لاگت میں۔
latency_ms INT UNSIGNED NULL
status ENUM('ok','fallback','failed','redacted') NN
was_redacted TINYINT(1) NN DEFAULT 0
error_message TEXT NULL
started_at DATETIME(6) NN
finished_at DATETIME(6) NULL
(standard audit) §2.3 دیکھیں

extracted_action_items

مقصد: MoM ایکشن-آئٹم نکالنے کا ساختی آؤٹ پٹ؛ ذیلی ٹاسکس میں تصدیق شدہ۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
ai_run_id BIGINT UNSIGNED NN, FK → ai_runs.id, indexed
mom_id BIGINT UNSIGNED NULL, FK → mom.id
action_text TEXT NN
owner_text VARCHAR(255) NULL جیسا نکالا گیا مالک۔
owner_user_id BIGINT UNSIGNED NULL, FK → users.id حل شدہ افسر۔
due_date DATE NULL
priority ENUM('low','normal','high','urgent') NULL
status ENUM('proposed','confirmed','converted','rejected') NN DEFAULT 'proposed'
subtask_id BIGINT UNSIGNED NULL, FK → ticket_subtasks.id تبدیل ہونے پر سیٹ۔
confirmed_by_user_id BIGINT UNSIGNED NULL, FK → users.id
confirmed_at DATETIME(6) NULL
(standard audit) §2.3 دیکھیں

4.7 مواصلات

channels

مقصد: 3-ٹیئر اندرونی مواصلات کے لیے DM/گروپ/چینل کنٹینرز۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
code VARCHAR(64) NULL
type ENUM('dm','group','channel') NN
name_en VARCHAR(255) NULL
dept_id BIGINT UNSIGNED NULL, FK → departments.id محدود چینل۔
is_private TINYINT(1) NN DEFAULT 0
last_message_at DATETIME(6) NULL
(standard audit) §2.3 دیکھیں +deleted_at۔

channel_memberships

مقصد: صارفین کی چینلز میں ممبرشپ (کردار کے ساتھ: ممبر/ایڈمن/مالک)۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
channel_id BIGINT UNSIGNED NN, FK → channels.id, indexed
user_id BIGINT UNSIGNED NN, FK → users.id, indexed
role ENUM('member','admin','owner') NN DEFAULT 'member'
joined_at DATETIME(6) NN
left_at DATETIME(6) NULL
muted_until DATETIME(6) NULL
(standard audit) §2.3 دیکھیں
منفرد (channel_id, user_id) UNIQUE

channel_messages

مقصد: کسی چینل میں پیغامات (parent_message_id کے ذریعے تھریڈڈ جوابات سمیت)۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
channel_id BIGINT UNSIGNED NN, FK → channels.id, indexed
author_user_id BIGINT UNSIGNED NN, FK → users.id
parent_message_id BIGINT UNSIGNED NULL, FK → channel_messages.id تھریڈ روٹ۔
body LONGTEXT NN
is_pinned TINYINT(1) NN DEFAULT 0
edited_at DATETIME(6) NULL
sent_at DATETIME(6) NN
(standard audit) §2.3 دیکھیں +deleted_at۔

messages

مقصد: DM اور گروپ-DM انباکس پیغامات (org-wide، سادہ راستہ)۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
from_user_id BIGINT UNSIGNED NN, FK → users.id, indexed
to_user_id BIGINT UNSIGNED NULL, FK → users.id DM وصول کنندہ۔
channel_id BIGINT UNSIGNED NULL, FK → channels.id گروپ/DM چینل۔
body LONGTEXT NN
sent_at DATETIME(6) NN
read_at DATETIME(6) NULL
(standard audit) §2.3 دیکھیں +deleted_at۔

threaded_replies

مقصد: چینل پیغامات پر واضح تھریڈ جواب میٹا ڈیٹا (خود-حوالہ کے علاوہ)۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
root_message_id BIGINT UNSIGNED NN, FK → channel_messages.id, indexed
reply_message_id BIGINT UNSIGNED NN, UQ, FK → channel_messages.id

message_reads

مقصد: فی صارف فی چینل پیغام پڑھنے کی رسیدیں۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
channel_message_id BIGINT UNSIGNED NN, FK → channel_messages.id, indexed
user_id BIGINT UNSIGNED NN, FK → users.id, indexed
read_at DATETIME(6) NN
منفرد (channel_message_id, user_id) UNIQUE

4.8 اطلاعات

notifications

مقصد: ترسیل کی حیثیت کے ساتھ فی صارف/چینل باہر جانے والی اطلاع۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
user_id BIGINT UNSIGNED NN, FK → users.id, indexed
template_id BIGINT UNSIGNED NULL, FK → notification_templates.id
channel ENUM('email','sms','whatsapp','in_app') NN
event_key VARCHAR(64) NN, indexed مثلاً ticket.escalated.tier2۔
entity_type VARCHAR(32) NULL
entity_id BIGINT UNSIGNED NULL
payload_json LONGTEXT NULL رینڈر ویری ایبلز۔
locale CHAR(3) NN DEFAULT 'en'
subject VARCHAR(255) NULL رینڈر شدہ۔
body LONGTEXT NULL رینڈر شدہ۔
status ENUM('queued','sent','delivered','failed','suppressed') NN DEFAULT 'queued'
provider_message_id VARCHAR(128) NULL
sent_at DATETIME(6) NULL
delivered_at DATETIME(6) NULL
error_message TEXT NULL
(standard audit) §2.3 دیکھیں

notification_templates

مقصد: event + locale + channel کے ذریعے کلیدی شدہ کثیر لسانی ٹیمپلیٹس۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
event_key VARCHAR(64) NN, indexed
locale CHAR(3) NN
channel ENUM('email','sms','whatsapp','in_app') NN
subject VARCHAR(255) NULL SMS کے لیے نہیں۔
body LONGTEXT NN Handlebars/Mustache۔
is_active TINYINT(1) NN DEFAULT 1
(standard audit) §2.3 دیکھیں
منفرد (event_key, locale, channel) UNIQUE

notification_preferences

مقصد: فی صارف ترجیحات کا مرکز (چینل آپٹ-ان، ڈائجسٹس، خاموش اوقات)۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
user_id BIGINT UNSIGNED NN, UQ, FK → users.id
email_enabled TINYINT(1) NN DEFAULT 1
sms_enabled TINYINT(1) NN DEFAULT 1
whatsapp_enabled TINYINT(1) NN DEFAULT 1
in_app_enabled TINYINT(1) NN DEFAULT 1
digest_frequency ENUM('immediate','hourly','daily','weekly','off') NN DEFAULT 'immediate'
quiet_hours_start TIME NULL مقامی وقت۔
quiet_hours_end TIME NULL
muted_event_keys_json LONGTEXT NULL خاموش ایونٹس کی صف۔
(standard audit) §2.3 دیکھیں

inbound_replies

مقصد: دو طرفہ آنے والے جوابات (email/WA/SMS) جو کسی ٹکٹ میں پارس واپس کیے جاتے ہیں۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
source ENUM('email','whatsapp','sms') NN
from_address VARCHAR(255) NN بھیجنے والا۔
external_message_id VARCHAR(128) NULL فراہم کنندہ id۔
ticket_id BIGINT UNSIGNED NN, FK → tickets.id, indexed حل شدہ ہدف۔
subject VARCHAR(255) NULL
body LONGTEXT NN
created_message_id BIGINT UNSIGNED NULL, FK → ticket_messages.id نتیجے میں پیغام۔
received_at DATETIME(6) NN
(standard audit) §2.3 دیکھیں

4.9 میٹنگز، TRI اور MoM

meetings

مقصد: کسی ٹکٹ سے متحرک TRI / سماعت / اندرونی میٹنگز، virtual/physical/hybrid۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
ticket_id BIGINT UNSIGNED NULL, FK → tickets.id, indexed محرک۔
type ENUM('tri','hearing','internal') NN
modality ENUM('virtual','physical','hybrid') NN
video_provider ENUM('zoom','meet','teams') NULL
join_url VARCHAR(512) NULL وقت-محدود presigned۔
location_address VARCHAR(255) NULL طبعی کے لیے۔
dept_id BIGINT UNSIGNED NULL, FK → departments.id متعلقہ محکمہ۔
scheduled_at DATETIME(6) NN
started_at DATETIME(6) NULL
ended_at DATETIME(6) NULL
status ENUM('scheduled','in_progress','completed','cancelled') NN DEFAULT 'scheduled'
agenda_json LONGTEXT NULL اے آئی ڈرافٹ شدہ ایجنڈا۔
(standard audit) §2.3 دیکھیں +deleted_at۔

meeting_attendees

مقصد: فی میٹنگ شرکاء (اندرونی صارفین + بیرونی فریقین)۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
meeting_id BIGINT UNSIGNED NN, FK → meetings.id, indexed
user_id BIGINT UNSIGNED NULL, FK → users.id اندرونی۔
name VARCHAR(255) NULL بیرونی شرکاء۔
party ENUM('company','sitd','department','external') NN
role VARCHAR(64) NULL مثلاً "چیئر"۔
attendance_status ENUM('invited','accepted','declined','attended','absent') NN DEFAULT 'invited'
(standard audit) §2.3 دیکھیں

mom

مقصد: اجلاس کی روداد، ورژن شدہ، حساس-تصدیق گیٹنگ کے ساتھ۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
meeting_id BIGINT UNSIGNED NN, UQ, FK → meetings.id 1:1۔
version INT UNSIGNED NN DEFAULT 1
status ENUM('draft','approved','published','revised') NN DEFAULT 'draft'
sensitive_requires_approval TINYINT(1) NN DEFAULT 0 تصدیق لازمی کرتا ہے۔
source_media_id BIGINT UNSIGNED NULL, FK → media_library.id اپلوڈ شدہ MoM فائل۔
body_en LONGTEXT NULL
body_ur LONGTEXT NULL
body_sd LONGTEXT NULL
summary_ai TEXT NULL اے آئی خلاصہ۔
uploaded_by_user_id BIGINT UNSIGNED NULL, FK → users.id
published_at DATETIME(6) NULL
(standard audit) §2.3 دیکھیں +deleted_at۔

mom_approvals

مقصد: حساس/VIP MoM کے لیے شائع سے پہلے چیئر/DG تصدیقات لازمی۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
mom_id BIGINT UNSIGNED NN, FK → mom.id, indexed
approver_user_id BIGINT UNSIGNED NN, FK → users.id
decision ENUM('approved','rejected','changes_requested') NN
note TEXT NULL
decided_at DATETIME(6) NN

mom_distributions

مقصد: MoM شائع کرنے پر ہر چینل شیئر کا ریکارڈ۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
mom_id BIGINT UNSIGNED NN, FK → mom.id, indexed
recipient_user_id BIGINT UNSIGNED NULL, FK → users.id
recipient_address VARCHAR(255) NULL بیرونی رابطہ۔
channel ENUM('email','sms','whatsapp','in_app') NN
notification_id BIGINT UNSIGNED NULL, FK → notifications.id
sent_at DATETIME(6) NN

mom_acknowledgments

مقصد: ٹریک کریں کس نے شائع شدہ MoM تسلیم کیا۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
mom_id BIGINT UNSIGNED NN, FK → mom.id, indexed
user_id BIGINT UNSIGNED NN, FK → users.id
acknowledged_at DATETIME(6) NN
منفرد (mom_id, user_id) UNIQUE

meeting_recordings

مقصد: فی میٹنگ ریکارڈنگ blobs، transcription پرچم کے ساتھ۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
meeting_id BIGINT UNSIGNED NN, FK → meetings.id, indexed
media_id BIGINT UNSIGNED NN, FK → media_library.id
duration_seconds INT UNSIGNED NULL
transcribed TINYINT(1) NN DEFAULT 0
transcript_media_id BIGINT UNSIGNED NULL, FK → media_library.id
(standard audit) §2.3 دیکھیں

4.10 علم اور مواد

kb_articles

مقصد: ورژن شدہ، تین لسانی علم-قاعدہ مضامین۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
slug VARCHAR(255) NN
version INT UNSIGNED NN DEFAULT 1
status ENUM('draft','review','published','archived') NN DEFAULT 'draft'
title_en VARCHAR(255) NN
title_ur VARCHAR(255) NULL
title_sd VARCHAR(255) NULL
body_en LONGTEXT NULL
body_ur LONGTEXT NULL
body_sd LONGTEXT NULL
summary TEXT NULL
dept_id BIGINT UNSIGNED NULL, FK → departments.id
category VARCHAR(64) NULL
is_featured TINYINT(1) NN DEFAULT 0
helpful_count INT NN DEFAULT 0 "کیا یہ مددگار تھا"۔
not_helpful_count INT NN DEFAULT 0
published_at DATETIME(6) NULL
(standard audit) §2.3 دیکھیں +deleted_at۔

sop_documents

مقصد: فی محکمہ ورژن شدہ معیاری آپریٹنگ طریقہ کار دستاویزات۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
dept_id BIGINT UNSIGNED NN, FK → departments.id
title_en VARCHAR(255) NN
version VARCHAR(32) NN مثلاً "2.1"۔
status ENUM('draft','review','published','archived') NN DEFAULT 'draft'
doc_id BIGINT UNSIGNED NULL, FK → documents.id فائل۔
effective_from DATE NULL
effective_to DATE NULL
(standard audit) §2.3 دیکھیں

service_catalog_entries

مقصد: ہر محکمے کی طرف سے پیش کردہ خدمات کی فہرست (ڈیفالٹ SLA کے ساتھ)۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
dept_id BIGINT UNSIGNED NN, FK → departments.id
code VARCHAR(32) NN
name_en VARCHAR(255) NN
name_ur VARCHAR(255) NULL
name_sd VARCHAR(255) NULL
description TEXT NULL
default_sla_definition_id BIGINT UNSIGNED NULL, FK → sla_definitions.id
default_category_id BIGINT UNSIGNED NULL, FK → ticket_categories.id
form_doc_id BIGINT UNSIGNED NULL, FK → documents.id
is_active TINYINT(1) NN DEFAULT 1
(standard audit) §2.3 دیکھیں

circulars

مقصد: تجاویز و مواد پورٹل پر شائع کردہ اعلانات / سرکولرز۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
title_en VARCHAR(255) NN
title_ur VARCHAR(255) NULL
title_sd VARCHAR(255) NULL
body_en LONGTEXT NULL
body_ur LONGTEXT NULL
body_sd LONGTEXT NULL
dept_id BIGINT UNSIGNED NULL, FK → departments.id
is_pinned TINYINT(1) NN DEFAULT 0
published_at DATETIME(6) NULL
(standard audit) §2.3 دیکھیں +deleted_at۔

documents

مقصد: عام دستاویز ذخیرہ (forms، SOPs، circulars، repository آئٹمز، سرکاری خطوط)۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
kind ENUM('form','sop','circular','repository','letter','other') NN
title VARCHAR(255) NN
media_id BIGINT UNSIGNED NN, FK → media_library.id
version VARCHAR(32) NULL
checksum_sha256 CHAR(64) NULL
is_public TINYINT(1) NN DEFAULT 0
description TEXT NULL
(standard audit) §2.3 دیکھیں +deleted_at۔

suggestion_submissions

مقصد: عوامی تجویز باکس جمع کردہ۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
submitter_user_id BIGINT UNSIGNED NULL, FK → users.id اگر گمنام ہو تو NULL۔
submitter_name VARCHAR(255) NULL
submitter_email VARCHAR(255) NULL
subject VARCHAR(255) NN
body LONGTEXT NN
category VARCHAR(64) NULL
status ENUM('submitted','under_review','accepted','rejected','implemented') NN DEFAULT 'submitted'
is_public TINYINT(1) NN DEFAULT 0
(standard audit) §2.3 دیکھیں

4.11 تربیت اور سرٹیفکیشن

training_courses

مقصد: حکومتی عملے کے لیے LMS-lite کورس فہرست۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
code VARCHAR(32) NN, UQ
title_en VARCHAR(255) NN
title_ur VARCHAR(255) NULL
title_sd VARCHAR(255) NULL
description TEXT NULL
duration_minutes INT UNSIGNED NN
target_roles_json LONGTEXT NULL کردار کوڈز کی صف۔
is_required TINYINT(1) NN DEFAULT 0 سرٹیفکیشن گیٹ۔
(standard audit) §2.3 دیکھیں

course_enrollments

مقصد: پیش رفت کے ساتھ کسی کورس میں صارف کی انرولمنٹ۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
course_id BIGINT UNSIGNED NN, FK → training_courses.id, indexed
user_id BIGINT UNSIGNED NN, FK → users.id, indexed
progress_pct TINYINT UNSIGNED NN DEFAULT 0
status ENUM('enrolled','in_progress','completed','dropped') NN DEFAULT 'enrolled'
completed_at DATETIME(6) NULL
(standard audit) §2.3 دیکھیں
منفرد (course_id, user_id) UNIQUE

training_exams

مقصد: کسی کورس سے منسلک امتحان کی تعریف (سرٹیفکیشن گیٹ)۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
course_id BIGINT UNSIGNED NN, FK → training_courses.id
title_en VARCHAR(255) NN
pass_threshold_pct TINYINT UNSIGNED NN DEFAULT 70
time_limit_minutes INT UNSIGNED NULL
max_attempts TINYINT UNSIGNED NULL
questions_json LONGTEXT NULL سوال بینک۔
(standard audit) §2.3 دیکھیں

exam_attempts

مقصد: کسی صارف کا امتحان میں کوشش، اسکور اور نتیجے کے ساتھ۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
exam_id BIGINT UNSIGNED NN, FK → training_exams.id, indexed
user_id BIGINT UNSIGNED NN, FK → users.id, indexed
score_pct TINYINT UNSIGNED NULL
result ENUM('pass','fail','incomplete') NN DEFAULT 'incomplete'
answers_json LONGTEXT NULL
started_at DATETIME(6) NN
finished_at DATETIME(6) NULL

certifications

مقصد: جاری (اور ختم ہونے والی) سرٹیفکیشنز جو لائیو ٹکٹ تک رسائی کھولتی ہیں۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
user_id BIGINT UNSIGNED NN, FK → users.id, indexed
course_id BIGINT UNSIGNED NN, FK → training_courses.id
attempt_id BIGINT UNSIGNED NN, FK → exam_attempts.id کامیاب کوشش۔
certificate_code VARCHAR(64) NN, UQ عوامی کوڈ۔
issued_on DATE NN
expires_on DATE NULL NULL = کوئی میعاد نہیں۔
is_valid TINYINT(1) NN DEFAULT 1
(standard audit) §2.3 دیکھیں

4.12 نظام اور تشکیل

feature_flags

مقصد: رن ٹائم صلاحیت ٹوگلز، platform/dept/env/user-segment کے ذریعے محدود۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
flag_key VARCHAR(128) NN, UQ مثلاً ai.enabled، mom.transcription۔
scope ENUM('platform','dept','env','user_segment') NN DEFAULT 'platform'
dept_id BIGINT UNSIGNED NULL, FK → departments.id جب scope = dept ہو۔
env ENUM('dev','staging','prod') NULL جب scope = env ہو۔
enabled TINYINT(1) NN DEFAULT 0 اس scope پر مؤثر قدر۔
default_value TINYINT(1) NN DEFAULT 0 پلیٹ فارم بنیادی لائن۔
description VARCHAR(255) NULL
(standard audit) §2.3 دیکھیں

audit_logs

مقصد: ہر حالت تبدیل کرنے والے مراعات والے عمل کا صرف اضافہ (append-only) عالمی آڈٹ۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
actor_user_id BIGINT UNSIGNED NULL, FK → users.id NULL = سسٹم۔
action VARCHAR(64) NN, indexed مثلاً role.override.created۔
entity_type VARCHAR(32) NN
entity_id BIGINT UNSIGNED NULL
before_json LONGTEXT NULL
after_json LONGTEXT NULL
ip_address VARCHAR(45) NULL IPv4/IPv6۔
user_agent VARCHAR(255) NULL
request_id CHAR(36) NULL مربوطگی۔
step_up_auth TINYINT(1) NN DEFAULT 0 عمل کے وقت دوبارہ تصدیق۔
occurred_at DATETIME(6) NN

کبھی UPDATE یا DELETE نہ کریں۔ ماہانہ تقسیم کیا گیا (§7 دیکھیں)۔

integrations_configs

مقصد: فی-فراہم کنندہ انضمام سیٹنگز؛ رازات صرف vault حوالوں کے طور پر۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
provider ENUM('nadra','secp','fbr','srb','pseb','eoffice','oidc','mailjet','sms','whatsapp','video') NN
base_url VARCHAR(255) NULL
api_version VARCHAR(32) NULL
vault_ref VARCHAR(255) NN راز والٹ میں راہ — راز کبھی نہیں۔
timeout_ms INT UNSIGNED NN DEFAULT 30000
retry_max TINYINT UNSIGNED NN DEFAULT 3
enabled TINYINT(1) NN DEFAULT 0
env ENUM('dev','staging','prod') NN DEFAULT 'prod'
config_json LONGTEXT NULL غیر-رازی پیرامیٹرز۔
(standard audit) §2.3 دیکھیں
منفرد (provider, env) UNIQUE

webhooks

مقصد: باہر جانے والے ویب ہوک سبسکرپشنز (HMAC-سائن شدہ)۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
event_key VARCHAR(64) NN, indexed
target_url VARCHAR(512) NN
secret_hash CHAR(64) NN HMAC راز کا sha256۔
content_type VARCHAR(64) NN DEFAULT 'application/json'
enabled TINYINT(1) NN DEFAULT 1
last_status VARCHAR(16) NULL
last_fired_at DATETIME(6) NULL
(standard audit) §2.3 دیکھیں

open_data_exports

مقصد: شفافیت-ڈیش بورڈ اور اوپن ڈیٹا ایکسپورٹ موجودات۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
dataset VARCHAR(64) NN مثلاً tickets_public،moms_public،officials،sla_perf۔
format ENUM('csv','xlsx','json','pdf') NN
period_from DATE NULL
period_to DATE NULL
media_id BIGINT UNSIGNED NN, FK → media_library.id ایکسپورٹ blob۔
generated_at DATETIME(6) NN
row_count INT UNSIGNED NULL
hash_sha256 CHAR(64) NULL
(standard audit) §2.3 دیکھیں

qr_verifiable_documents

مقصد: سرکاری خطوط کے لیے QR-ٹوکن باندھنا (جعلسازی-رود عوامی تصدیق)۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
document_id BIGINT UNSIGNED NN, FK → documents.id, indexed
qr_token CHAR(36) NN, UQ عوامی تصدیق ٹوکن۔
payload_hash CHAR(64) NN خط کے مواد کا sha256۔
issued_by_user_id BIGINT UNSIGNED NULL, FK → users.id
issued_at DATETIME(6) NN
expires_at DATETIME(6) NULL
revoked TINYINT(1) NN DEFAULT 0
revoked_at DATETIME(6) NULL

system_settings

مقصد: عام key-value تشکیل (SMTP، Mailjet، SMS، WhatsApp، برانڈنگ)۔

کالم قسم پابندیاں نوٹس
id BIGINT UNSIGNED PK, NN, AUTO_INCREMENT
setting_key VARCHAR(128) NN, UQ
value LONGTEXT NULL
category ENUM('smtp','mailjet','sms','whatsapp','general','branding','security') NN
is_secret TINYINT(1) NN DEFAULT 0 1 ⇒ قدر صرف والٹ میں رہتی ہے۔
description VARCHAR(255) NULL
(standard audit) §2.3 دیکھیں

5. اہم تعلقات

سب سے اہم تعلقات، سادہ زبان میں:

  1. ٹکٹ ↔ کمپنی / محکمہ / سیکشن / عملہ۔ ایک tickets قطار فائلر (org_id + filer_rep_id) کو حل کرنے والے راستے (dept_idsection_idassigned_user_id) سے باندھتی ہے۔ پروڈکٹ میں ہر قطار — "میرا کام"، "محکمہ قطار"، "کمپنی ورک اسپیس"، "اسکیلیشن انباکس" — ان چاروں FKs اور status کی ایک فلٹرڈ پروجیکشن ہے۔ tracking_id صارف کے سامنے آنے والا شناخت کنندہ ہے؛ متبادل id اندرونی طور پر استعمال ہونے والی واحد جواینٹ کلید ہے تاکہ ضم/تقسیم/دوبارہ نمبر دینا ممکن رہے۔

  2. اسکیلیشن چین۔ escalation_rules فی-محکمہ ٹیئر لیڈر متعین کرتا ہے؛ ایک شیڈول شدہ BullMQ ورکر tickets WHERE status NOT IN (resolved,closed,withdrawn) AND sla_due_at < NOW() کو سکین کرتا ہے اور، فی escalation_rules.days_after_open، escalation_events لکھتا ہے، ہدف صارف کو بطور ticket_watchers قطار شامل کرتا ہے، اور اطلاعات بھیجتا ہے۔ sla_pause_events اور holiday_calendar / business_hours مؤثر گھڑی کو ایڈجسٹ کرتے ہیں تاکہ سکین کام کی آخری تاریخوں کا استعمال کرے، wall-clock نہیں۔

  3. عہدیدار-مدت کی تاریخ-آگاہی برائے خطوط۔ جب نظام کوئی سرکاری خط رینڈر کرتا ہے، تو یہ officials کو براہ راست نہیں پڑھتا؛ یہ official_terms WHERE effective_from <= :issue_date AND (effective_to IS NULL OR effective_to >= :issue_date) سے جواینٹ کرتا ہے تاکہ 2024 کا مؤرخ خط 2025 کی منتقلی کے بعد بھی 2024 کا سیکریٹری دکھائے۔ یہ /specs/ur/04-roles-permissions/ §3 اور _context.md §5 کا تاریخی درستگی کا تقاضا ہے۔ یہی تاریخ-آگاہ جواینٹ طے کرتی ہے کہ کس عہدیدار کی تصویر/نام کسی رپورٹنگ مدت کے ڈیش بورڈ پر ظاہر ہوگا۔

  4. MoM ↔ میٹنگ ↔ ٹکٹ ↔ ایکشن آئٹمز ↔ ذیلی ٹاسکس۔ ایک رکا ہوا tickets قطار ایک meetings قطار (type tri) پیدا کرتی ہے۔ میٹنگ بالکل ایک mom (1:1) پیدا کرتی ہے۔ MoM اپلوڈ پر، ایک ai_runs قطار (feature mom_extract) extracted_action_items خارج کرتا ہے۔ افسر ہر آئٹم کی تصدیق کرتا ہے؛ تصدیق پر، ایک ticket_subtasks قطار بنائی جاتی ہے (چائلڈ ٹکٹ کو والد سے منسلک کرتے ہوئے)، extracted_action_items.subtask_id سیٹ ہو جاتا ہے، اور status converted ہو جاتی ہے۔ یہ چین مکمل طور پر قابلِ تتبع ہے ٹکٹ → میٹنگ → mom → ai_run → action_item → subtask۔

  5. صارف ↔ کردار ↔ اوور رائڈ ↔ صلاحیت۔ اجازت usersuser_role_assignmentsrolesrole_template_permissions کے ذریعے بنیادی لائن کے لیے حل ہوتی ہے، پھر user_permission_overrides (اور کمپنی سائڈ کے لیے rep_permission_overrides) فی-صارف گرانٹس/منسوخیوں کے لیے، پھر tickets.is_confidential / is_vip کے لیے ایک ABAC گیٹ۔ نتیجہ فی درخواست کیش ہوتا ہے۔ آئینہ جدول representativesrep_role_assignmentsroles کمپنی سائڈ پر یکساں پیٹرن رکھتے ہیں۔

  6. تصدیق ↔ ادارے کا لائف سائیکل۔ organizations.verification_status تب ہی provisional → verified منتقل ہوتا ہے جب تمام لازمی verification_jobs (فی entity قسم فی فراہم کنندہ ایک) passed رپورٹ کریں؛ کوئی بھی failed اسے on_hold منتقل کرتا ہے اور ایک appeals قطار دائر کی جا سکتی ہے۔ consents یہ گیٹ کرتا ہے کہ کون سے فراہم کنندگان استفسار کیے جا سکتے ہیں۔ organizations.kyc_level کامیاب چیکس کی گہرائی کے ساتھ بڑھتا ہے؛ چھوٹا ہوا re_atted_due_at verified → provisional → suspended کی تخفیف کرتا ہے (کردار دستاویز §11.4 کے مطابق)۔

  7. فائلیں ↔ ریکارڈز ↔ retention۔ ہر blob ایک media_library قطار ہے (bucket، key، checksum، AV حیثیت، میعاد)۔ مواد ریکارڈز FK کے ذریعے اس کا حوالہ دیتے ہیں (ticket_attachments.media_id، verification_documents.media_id، mom.source_media_id، documents.media_id، meeting_recordings.media_id، officials.portrait_media_id، open_data_exports.media_id)۔ ایک شیڈول شدہ صفائی ورکر media_library.expires_at اور ڈیٹا-کلاس retention پالیسی (§9) استعمال کرتا ہے تاکہ لنکس منسوخ کرے اور MinIO سے آبجیکٹ purge کرے، جبکہ میٹا ڈیٹا قطاریں آڈٹ تسلسل کے لیے برقرار رکھے۔

  8. فیچر فلیگز ↔ ہر صلاحیت۔ کوئی صلاحیت بغیر گیٹ کے شائع نہیں ہوتی۔ کوڈ پاتھs feature_flags سے ایک پتلے کلائنٹ (Redis میں کیش) کے ذریعے مشورہ کرتے ہیں؛ ریزولوشن چین (platform → dept → env → user_segment → off) سپر ایڈمن کو بغیر ری ڈیپلائے کسی بھی ماحول کے لیے کچھ بھی ٹوگل کرنے دیتی ہے۔ تبدیلیاں audit_logs میں آڈٹ-لاگ ہوتی ہیں۔


6. انڈیکسنگ حکمتِ عملی

MariaDB صرف FK کے چائلڈ سائڈ کو خود-انڈیکس کرتا ہے؛ ہم ہر FK پر اور ہر ہاٹ ایکسیس پاتھ پر واضح ثانوی انڈیکس کا اعلان کرتے ہیں۔ انڈیکس کا季度ی جائزہ EXPLAIN ANALYZE کے ذریعے لیا جاتا ہے۔

6.1 منفرد کاروباری شناخت کنندے (مساوات لوک اپس)

جدول کالم(ز) انڈیکس
tickets tracking_id UNIQUE
users keycloak_sub، email UNIQUE (دو)
organizations secp_registration_no، ntn UNIQUE (partial — NULL کی اجازت)
representatives email، user_id UNIQUE
roles code UNIQUE
feature_flags flag_key UNIQUE
system_settings setting_key UNIQUE
certifications certificate_code UNIQUE
qr_verifiable_documents qr_token UNIQUE
media_library checksum_sha256 non-unique (ڈیڈپ اسکین)

6.2 ٹکٹ قطار ہاٹ پاتھس (مرتب)

جدول مرتب انڈیکس خدمت کرتا ہے
tickets (status, dept_id, sla_due_at) محکمہ قطار + اسکیلیشن سکین۔
tickets (org_id, status, updated_at) کمپنی ورک اسپیس ("میرے ٹکٹس")۔
tickets (assigned_user_id, status) کسی افسر کے لیے "میرا کام" قطار۔
tickets (dept_id, priority, status) نگرانی ڈیش بورڈ (DG/سیکریٹری)۔
tickets (is_confidential, dept_id) ABAC رازدارانہ فلٹرنگ۔
tickets (sla_due_at) اسٹینڈ ایلون اسکیلیشن/اوور ڈو cron سکین۔

6.3 غیر ملکی کلید ثانوی انڈیکسز

§4 میں ہر FK کالم جو "indexed" درج ہے وہ ایک واضح INDEX رکھتا ہے۔ نمایاں اعلیٰ-cardinality والے: ticket_messages.thread_id، ticket_attachments.ticket_id، notifications.user_id، notifications.event_key، audit_logs.action، ai_runs.engine_config_id، meeting_attendees.meeting_id، channel_messages.channel_id، sla_pause_events.ticket_id، escalation_events.ticket_id۔

6.4 locale / کثیر لسانی

6.5 مکمل متن کی تلاش


7. تقسیم اور آرکائیول

تین جدولوں کا ڈیزائن کے مطابق بے تحاشا اضافہ ہوتا ہے اور انہیں §9 کی retention پالیسی اور _context.md §6 میں حوالہ شدہ سندھ آرکائیوز قواعد کے مطابق واضح تقسیم + آرکائیول منصوبے کی ضرورت ہے۔

جدول اضافہ حکمتِ عملی
ticket_messages زیادہ (ہر جواب، آنے والا email/WA/SMS شامل) created_at پر RANGE کے ذریعے تقسیم (ماہانہ)۔ ایکٹو ونڈو سے پرانی پارٹیشنز (مثلاً 18 ماہ) سستی اسٹوریج پر archive ٹیبل اسپیس میں منتقل کی جاتی ہیں اور/یا Metabase ہسٹری کے لیے MinIO میں Parquet کے طور پر ایکسپورٹ کی جاتی ہیں؛ قطاریں قابلِ استفسار رہتی ہیں مگر ہاٹ پارٹیشنز سے باہر۔ OPTIMIZE PARTITION سارانی چلتا ہے۔
audit_logs صرف اضافہ، کبھی UPDATE/DELETE نہیں occurred_at پر RANGE کے ذریعے تقسیم (ماہانہ)۔ آن لائن retention (مثلاً 36 ماہ) سے پرانی پارٹیشنز آف-ہوسٹ آبجیکٹ اسٹوریج میں ایکسپورٹ کی جاتی ہیں (خاموشی پیمائش کے لیے ہیش-چین شدہ، tech-arch §16 کے مطابق) اور پھر DROP PARTITION۔ آرکائیو سندھ آرکائیوز قواعد کے مطابق برقرار رکھی جاتی ہے۔
ai_runs زیادہ (ہر اے آئی کال ایک قطار لکھتی ہے) started_at پر RANGE کے ذریعے تقسیم (ماہانہ)۔ لاگت/ٹوکن کالمز کو ڈیش بورڈز کے لیے روزانہ ai_cost_daily مجموعی (materilized view) میں بھی رول کیا جاتا ہے؛ 12 ماہ سے پرانی خام قطاریں MinIO میں آرکائیو اور ڈراپ کی جاتی ہیں۔
ticket_history، sla_pause_events، escalation_events، notifications درمیانہ ان کے ٹائم اسٹیمپ (occurred_at / paused_at / fired_at / sent_at) پر ماہانہ RANGE تقسیم؛ ویسا ہی archive-and-drop رفتار، فارنسیکل جدولوں (ticket_history، sla_pause_events) کے لیے لمبی retention۔
channel_messages، message_reads درمیانہ-زیادہ sent_at / read_at پر ماہانہ RANGE تقسیم؛ نرم حذف کے ساتھ 24-ماہ آن لائن ونڈو قبل از آرکائیول۔

آرکائیول پائپ لائن۔ ایک شیڈول شدہ BullMQ ملازمت (فی جدول) ونڈو سے پرانی قطاریں MinIO میں کمپریسڈ Parquet کے طور پر (اسکیما شامل) منتقل کرتی ہے، ایک open_data_exports انداز کی manifest قطار لکھتی ہے، پھر سورس پارٹیشن ڈراپ کرتی ہے۔ بحالیاں (RTI / آڈٹ / قانونی ہولڈ) Parquet کو عارضی جدول میں دوبارہ لوڈ کرتی ہیں۔ retention نمبرز §9 اور سیکیورٹی دستاویز کی ڈیٹا-درجہ بندی پالیسی کے خلاف تصدیق شدہ ہیں۔


8. مائیگریشن کا طریقہ

8.1 Prisma مائیگریشنز

8.2 سیڈ ڈیٹا

درج ذیل lookup/bootstrap قطاریں مائیگریشنز اور prisma db seed کے ذریعے سیڈ کی جاتی ہیں، idempotent اور version-controlled:

سیڈ سیٹ مثالیں
roles SUPER_ADMIN، SITD_FACILITATION_OFFICER، DEPT_ADMIN، OFFICER، DG، SECRETARY، MINISTER، SACM، READONLY_AUDITOR، PRIMARY_REP، ADMIN_REP، FILER، VIEWER، NOTIFY_ONLY، CITIZEN، SERVICE_ACCOUNT۔
role_template_permissions /specs/ur/04-roles-permissions/ §8 کی 67-صلاحیت میٹرکس، (role_code, capability_key, effect) کے طور پر انکوڈڈ۔
departments مالک محکمہ S&ITD (code='SITD'، is_owner_dept=1) اس کے ساتھ بڑے GoS محکمے (لیبر LBR، انویسٹمنٹ، خزانہ FIN، ایکسائز و ٹیکسیشن، ریونیو، بورڈ آف ریونیو، وغیرہ)، ہر ایک نسٹ کے لیے تیار اعلیٰ سطح نوڈ کے طور پر سیڈ۔
ticket_categories فی محکمہ ایک اسٹارٹر ٹیکسونومی (RTI، عدمِ تسکین، سروس درخواست، معلومات، سہولت)۔
sla_definitions فی ترجیح پلیٹ فارم ڈیفالٹس: 2-دن پہلا جواب / 5-دن / 10-دن حل ٹیئرز، S&ITD اور ہر سیڈ شدہ محکمے سے میپ۔
escalation_rules 2/5/10-دن ٹیئر لیڈر (ٹیئر 1 → DG @ 2د، ٹیئر 2 → سیکریٹری @ 7د، ٹیئر 3 → وزیر/SACM @ 17د) فی محکمہ، mode='notify'۔
holiday_calendar موجودہ اور اگلے گریگوری/Hijri سال کے لیے سندھ عوامی چھٹیاں (GoS نوٹیفکیشن سے سیڈ؛ سپر ایڈمن کے ذریعے قابلِ ترمیم)۔
business_hours ڈیفالٹ 09:00–17:00 پیر–جمعہ، Asia/Karachi، فی سیڈ شدہ محکمہ۔
feature_flags بوٹسٹریپ فلیگز (مثلاً ai.enabled=true، mom.transcription=false، inbound.email=true، inbound.whatsapp=false) فی ماحول ایک معروف ڈیفالٹ حالت میں۔
notification_templates بنیادی ایونٹ کلیدز (ticket.created، ticket.assigned، ticket.escalated.tier1/2/3، ticket.resolved، mom.published، verification.passed/failed) تینوں locales (en/ur/sd) اور تمام چار چینلز میں۔
integrations_configs تمام فراہم کنندگان سیڈ enabled=0 ایک پلیس ہولڈر vault_ref کے ساتھ؛ آپریٹر کے ذریعے فی ماحول enabled + vault راہ سیٹ۔
system_settings برانڈنگ ڈیفالٹس (پورٹل نام، ٹیگ لائن، فوٹر لائن) _context.md §1 کے مطابق؛ SMTP/Mailjet/SMS/WhatsApp سیڈ is_secret=1 والٹ بھرنے کا انتظار۔
ai_engine_configs فی فیچر ایک اسٹارٹر سیٹ (کلاؤڈ-ترجیحی + آن-پریمائز فل بیک)، تمام enabled=0 یہاں تک کہ آپریٹر انہیں ڈیٹا-درجہ بندی پالیسی کے مطابق آن کرے۔

8.3 ماحول بوٹسٹریپنگ

ایک تازہ ماحول چلاتا ہے (1) prisma migrate deploy (تمام مائیگریشنز)، پھر (2) prisma db seed (اوپر کا سیڈ سیٹ)، پھر (3) ایک آپریٹر رن بک integrations_configs.vault_ref اور رازات والٹ کو بھرنے، مطلوبہ feature_flags کو فعال کرنے، اور پہلا SUPER_ADMIN صارف بنانے کے لیے۔ کوئی راز کبھی کمٹ نہیں ہوتا؛ سیڈ صرف غیر-رازی ڈیفالٹس اور والٹ حوالے لکھتا ہے۔


9. ڈیٹا کی درجہ بندی

ہر جدول کو ایک ڈیٹا طبقے (Public / Internal / Confidential / Restricted) کے ساتھ ٹیگ کیا جاتا ہے (/specs/ur/15-tech-architecture/ §16 کے مطابق)۔ یہ طبقہ مرموز کاری، اے آئی-انجن روٹنگ، Meilisearch انڈیکسنگ، retention، اور رسائی لاگنگ چلاتا ہے۔ تفصیلی کنٹرولز /specs/ur/11-security-compliance/ میں ہیں؛ یہ سیکشن ان سے حوالہ دیتا ہے۔

9.1 PII-رکھنے والے جدول (اعلیٰ حساسیت)

جدول PII کالم طبقہ سلوک
representatives cnic، email، mobile_e164، whatsapp_e164، full_name Restricted cnic اور موبائلز کے لیے کالم-سطح مرموز کاری؛ رسائی لاگڈ؛ Meilisearch کے ذریعے کبھی انڈیکس نہیں؛ SELECT صرف خود، اسی ادارے کے Primary/Admin Rep، S&ITD فیسلیٹیشن، سپر ایڈمن تک محدود (ABAC)۔ CNIC فارمیٹ-تصدیق شدہ؛ خام قدر مرموز، logs میں صرف آخری-4۔
organizations secp_registration_no، ntn، srb_tax_id، pseb_membership_no، domain_email_domain Confidential ٹیکس IDs کو رازدارانہ سمجھا جاتا ہے؛ ادارے کے نمائندوں، تفویض شدہ محکمہ عملے، سپر ایڈمن کو نظر انداز۔
users email، mobile_e164، keycloak_sub Confidential Email/موبائل رازدارانہ؛ keycloak_sub مستحکم شناخت ہے (راز نہیں)۔
verification_jobs raw_payload (NADRA/SECP/FBR ردِعمل) Restricted raw_payload at-rest مرموز؛ تجزیات کے لیے redacted result_json استعمال؛ کلاؤڈ اے آئی کو کبھی نہیں بھیجا؛ خام PII کے لیے صرف آن-پریمائز انجنز۔
verification_documents اپلوڈ کردہ CNIC/بینک ثبوت Restricted MinIO SSE-مرموز blob؛ AV-اسکین شدہ؛ صرف presigned URLs؛ retention پالیسی کے مطابق پھر purge۔
media_library اپلوڈ کردہ دستاویزات (CNIC اسکینز، ثبوت) Restricted/Confidential at-rest مرموز؛ av_status='clean' قبل AV اسکین؛ رازدارانہ/VIP ٹکٹ منسلکات Meilisearch extracted-text انڈیکسنگ سے خارج۔
inbound_replies from_address Confidential ٹکٹ حل کرنے کے لیے استعمال؛ پتا کبھی کراس-ٹیننٹ ظاہر نہیں۔
notification_preferences، consents فی-صارف سیٹنگز Confidential صرف مالک + سپر ایڈمن۔

9.2 ٹکٹ مواد (سیاق و سباق-منحصر)

جدول حساسیت کا محرک طبقہ سلوک
tickets is_confidential، is_vip، is_anonymous پرچم بالعموم Internal؛ فلگ ہونے پر Confidential/VIP/Restricted ABAC مرئیت گیٹ؛ رازدارانہ/VIP کو ڈیفالٹ محکمہ reads اور کراس-محکمہ ڈیش بورڈز سے خارج؛ گمنام وہسٹل بلوور ٹکٹس میں کوئی cleartext رپورٹر شناخت محفوظ نہیں۔
ticket_messages، ticket_attachments ٹکٹ پرچم وراثت Internal → Restricted کسی بھی کلاؤڈ اے آئی کال سے پہلے باڈی redacted (is_redacted=1)؛ رازدارانہ ٹکٹس پر منسلکات کبھی آن-پریمائز اسٹوریج/اے آئی سے باہر نہیں۔

9.3 آپریشنل / آڈٹ (سالمیت-حساس)

جدول طبقہ سلوک
audit_logs Confidential (پلیٹ فارم) صرف اضافہ؛ ہیش-چین شدہ؛ ماہانہ تقسیم؛ آف-ہوسٹ ایکسپورٹ؛ رسائی صرف Read-only Auditor + سپر ایڈمن۔
ticket_history، sla_pause_events، escalation_events Internal صرف اضافہ؛ آرکائیول منصوبے کے مطابق retention (§7)۔
integrations_configs، system_settings (is_secret=1webhooks.secret_hash Restricted کوئی رازی قدر کبھی DB میں محفوظ نہیں — صرف vault_ref یا ہیش؛ رازات والٹ واحد ماخذ ہے۔
ai_runs Confidential input_summary صرف redacted اسنیپ شاٹ ہے؛ خام ان پٹس یہاں کبھی محفوظ نہیں؛ لاگت/ٹوکن ڈیٹا تجزیات کے لیے Internal ہے۔

9.4 عوامی / کم-حساسیت

جدول طبقہ سلوک
departments، holiday_calendar، business_hours، ticket_categories، service_catalog_entries، circulars، kb_articles (شائع شدہ)، officials، official_terms Public/Internal عوامی سائٹ اور شفافیت ڈیش بورڈ پر دکھانا محفوظ؛ عہدیدار مدتیں تاریخی خط درستگی کے لیے ضروری۔
open_data_exports Public (مجموعی) صرف گمنام مجموعی؛ کوئی PII نہیں؛ خاموشی پیمائش کے لیے ہیش-شائع۔

9.5 retention (سیکیورٹی دستاویز 11 کراس-ریفرنس)

retention ونڈوز /specs/ur/11-security-compliance/ میں حتمی ہوتی ہیں اور سندھ آرکائیوز قواعد (_context.md §6) کے مطابق ہیں۔ وہ ڈیفالٹس جو §7 آرکائیول پائپ لائن چلاتے ہیں:

تمام purge ملازمتیں خود آڈٹ-لاگ (audit_logs، action data.purged) قطار گنتی اور لاگو retention قاعدے کے ساتھ ہوتی ہیں، تاکہ ریکارڈز کی تباہی RTI اور آڈٹ کے لیے قابلِ ثبوت ہو۔


*دستاویز کا اختتام۔