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/sd/04-roles-permissions/ · /specs/sd/06-ticket-workflow/ · 09-ai-ocr-spec/en.md · /specs/sd/11-security-compliance/ · /specs/sd/12-api-contract/ · /specs/sd/15-tech-architecture/ · /specs/sd/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/sd/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/sd/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/sd/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/sd/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/sd/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/sd/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/sd/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/sd/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. فيچر فلگس ↔ هر صلاحيت. ڪابه صلاحيت بنا گیٽ جي شائع ناهي ٿيندي. ڪوڊ پاٿس 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/sd/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/sd/15-tech-architecture/ §16 مطابق). هي طبقو مرموز ڪاري، اي آءِ-انجن روٽنگ، Meilisearch انڊيسنگ، retention، ۽ رسائي لاگنگ هلائي ٿو. تفصيلي ڪنٽرولز /specs/sd/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/sd/11-security-compliance/ ۾ حتمي ٿين ٿيون ۽ سنڌ آرڪائيوز قاعدن (_context.md §6) مطابق آهن. اهي ڊفالٽس جيڪي §7 آرڪائيويل پائيپ لائن هلائين ٿا:

سڀ purge ملازمتون پاڻ آڊٽ-لاگ (audit_logs، action data.purged) قطار ڳڻپ ۽ لاڳو retention قاعدي سان ٿين ٿيون، ته جيئن رڪارڊز جي تباهي RTI ۽ آڊٽ لاءِ قابلِ ثبوت هجي.


دستاويز جو اختتام.