ڊيٽا ماڊل
سنڌ آءِ ٽي پورٽل — سهولت ڊيسڪ (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 جو منطقي ڊيٽا ماڊل مقرر ڪري ٿي. اها جدول جي نالن، ڪالمن، قسمن، پابندين، ۽ تعلقات لاءِ واحد مستند ماخذ آهي. انهي کي هيٺيون استعمال ڪن ٿا:
- انجنيئرنگ (Engineering) —
schema.prisma۽ Prisma مائيگريشن مرتب ڪرڻ لاءِ. - انضمام (Integrations) — هر ايڊاپٽر (NADRA/SECP/FBR/SRB/PSEB/e-Office) انهن جدولن ذريعي پڙهي/لکي ٿو.
- تجزيات (Analytics) — Metabase ماڊلز ۽ عوامي شفافيت ڊيش بورڊ انهن جدولن کي گڏ ڪن ٿا.
- سيڪيورٽي جائزو — §9 ذاتي سڃاڻپ واري معلومات (PII) کي درجه بندي ڪري ٿو ۽
/specs/sd/11-security-compliance/ڏانهن حوالو ڏئي ٿو.
هي ماڊل ڏهن ڊومينز ۾ ورهايل آهي. هر ڊومين ۾ (الف) هڪ 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 سڃاڻپ ڪندڙ ۽ متبادل ڪنجيون
- هر جدول ۾ هڪ متبادل
idڪالم هوندو آهي:BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY(ڪثيف، جوائن لاءِ موزون، ترتيب ڏيڻ جوڳو). - بامعنيٰ ڪاروباري سڃاڻپ ڪندڙ (ٽِڪيٽ
tracking_id = SITP-YYYY-<DEPT>-<NNNNNN>، CNIC، NTN، SECP رجسٽريشن نمبر) ثانوي منفرد ڪالم آهن، بنيادي ڪنجي ڪڏهن به ناهي، ته جيئن ضم/ورهائڻ/ٻيهر نمبر ڏيڻ ۽ مستقبل ۾ شارڊنگ ممڪن رهي. - UUIDs (عوامي ٽوڪنز، ويب هوڪ راز، QR تصديقي ڪوڊز)
CHAR(36)طور محفوظ ٿين ٿا ۽ MariaDB جيUUID()فنڪشن يا ايپليڪيشن-سائيڊ UUIDv7 ذريعي پيدا ڪيا وڃن ٿا؛ MariaDB ۾ ڪا به built-inUUIDقسم موجود ناهي.
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 نالو رکڻ جا اصول
- سڀ سڃاڻپ ڪندڙ
snake_caseآهن. جدول جمع اسم آهن (tickets،representatives). ڪالم مفرد آهن (status،due_at). - ٽائم اسٽيمپس
_atتي ختم ٿين ٿا (created_at،resolved_at،sla_due_at)؛ بولين کيis_،has_، ياrequires_اڳياڙي ڏنو وڃي ٿو (is_confidential،requires_approval). - غير ملڪي ڪنجيون
<مفرد_entity>_idآهن (org_id،dept_id،rep_id). مرتب FK ٻنهي ڪردارن جا نالا رکن ٿا (source_ticket_id،target_ticket_id). - Enums MariaDB
ENUM(...)طور محفوظ ٿين ٿا (free VARCHAR ناهي) انهن status/state/type/category ڪالمن لاءِ جن جو ڊومين بند ۽ ننڍو هجي. نيون قدر مائيگريشن طور ايندڙ آهن. - رقم
BIGINT۾ عددي معمولي اڪائين (PKR پيسو) طور محفوظ ٿيندي آهي، ڪڏهن به فلوٽنگ پوائنٽ ناهي، ڪالم ڪمنٽ ۾ واضح اسڪيل سان (/specs/sd/15-tech-architecture/§5.3 مطابق). SITP گهڻو ڪري فيس-فري آهي، تنهنڪري رقم جا ڪالم ناياب آهن. - JSON کي
LONGTEXTطور ماڊل ڪيو وڃي ٿو ۽ ضرورت پڄڻ تي Prisma$queryRawذريعي MariaDBJSON_*فنڪشنن سان تصديق ڪئي وڃي ٿي (Prisma MariaDB JSON جي خامين جي خودڪار شناخت ناهي ڪندو؛ tech-arch §5.2 جي تنبيهه ڏسو).
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 غير ملڪي ڪنجيون ۽ انڊيسنگ
- سڀ FK تعلقات
FOREIGN KEY ... REFERENCES ... ON DELETE RESTRICT ON UPDATE CASCADEطور بيان ڪيا وڃن ٿا جيستائين الڳدان نوٽ ناهي ڪيو ويو (ڪيسڪيڊ حذف ناياب ۽ هميشه واضح هوندا آهن). - هر FK ڪالم هڪ واضح ثانوي انڊيڪس رکي ٿو (MariaDB رڳو FK چائلڊ سائيڊ کي خود-انڊيڪس ڪري ٿو؛ many-to-many جوائن جدول ٻنهي سائيڊن کي انڊيڪس ڪن ٿا، اڪثر مرتب
UNIQUEطور). - نرم حذف ٿيل قطارون (
deleted_at IS NOT NULL) ايپليڪيشن استفسارن ۽ Prisma مڊلويئر ذريعي خارج ڪيون وڃن ٿيون (MariaDB فلٽرڊ انڊيڪس محدود آهن).
2.7 ORM ۽ تلاش
- ORM = Prisma MariaDB ڊرائيور تي.
schema.prismaهن دستاويز مان اخذ ڪئي وڃي ٿي؛ هڪdatasourceبلاڪ جنهن ۾provider = "mysql". مائيگريشن صرف اڳيان (forward-only) آهن ۽ CI-گیٽڊ آهن (§8 ڏسو). - مڪمل متن جي تلاش Meilisearch کي سونپي وئي آهي، MariaDB
FULLTEXTکي ناهي. MariaDBFULLTEXTرڳو هڪ لاطيني رسم الخط جي فل بيك طور استعمال ٿئي ٿو ايڊمن جي exact-phrase استفسارن لاءِ. گهڻ لساني (اردو/سنڌي) ٽوڪنائيزيشن، درجه بندي، ۽ مماثلت سڀ Meilisearch ۾ هلن ٿا (tech-arch §5.5 ۽ §8 مطابق). هڪ سرچ-انڊيڪسر وركر ڊومين واقعن کي ٻڌي ٿو ۽ redacted، locale-ٽيگ ٿيل دستاويزون Meilisearch ڏانهن موڪلي ٿو؛ رازداري/VIP ٽِڪيٽون انڊيسنگ کان اڳ خارج يا ماسڪ ڪيون وڃن ٿيون.
3. اعليٰ سطحي ERD (ڊومين مطابق)
هي ماڊل ڏهن Mermaid erDiagram بلاڪن ۾ ورهايل آهي ته جيئن هر هڪ پڙهڻ ۾ آسان رهي. ڪراس-ڊومين غير ملڪي ڪنجين جو ذڪر تحريري وضاحتن ۾ ڪيو ويو آهي ۽ جتي اهي ڊومين لاءِ مرڪزي حيثيت رکن ٿيون اتي ڏيکارايون ويون آهن.
3.1 سڃاڻپ ۽ ادارو (ڪمپنيون، نمائندا، تصديق)
تحريري وضاحت۔ هڪ 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 محڪما (حڪومتي تنظيمي وڻ، اوقات، چھٽيون)
تحريري وضاحت۔ 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
تحريري وضاحت۔ 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 ٽِڪيٽون ۽ ورڪ فلو
تحريري وضاحت۔ هڪ 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، اِسڪيليشن ۽ حل
تحريري وضاحت۔ 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 اي آءِ
تحريري وضاحت۔ 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 مواصلات ۽ اطلاعات
تحريري وضاحت۔ 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
تحريري وضاحت۔ هڪ 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 عهديدار ۽ ميڊيا، علم، مواد ۽ تربيت
تحريري وضاحت۔ علم جو بنياد (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 نظام ۽ تشڪيل
تحريري وضاحت۔ 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 ڏسو |
ticket_links
مقصد: ٻن ٽِڪيٽن وچ ۾ ٽائپ ٿيل تعلقات (ضم، ورهائڻ، متعلقه، نقل، 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. اهم تعلقات
سڀ کان اهم تعلقات، سادي ٻولي ۾:
-
ٽِڪيٽ ↔ ڪمپني / محڪمو / سيڪشن / عملو. هڪ
ticketsقطار فائلر (org_id+filer_rep_id) کي حل ڪندڙ رستي (dept_id→section_id→assigned_user_id) سان ٻَڌي ٿي. پيداوار ۾ هر قطار — "منهنجو ڪم"، "محڪمو قطار"، "ڪمپني ورڪ اسپيس"، "اِسڪيليشن انباڪس" — انهن چئن FKs ۽statusجي هڪ فلٽر ٿيل پراجيڪشن آهي.tracking_idصارف جي سامهون ايندڙ سڃاڻپ ڪندڙ آهي؛ متبادلidاندروني طور استعمال ٿيندڙ واحد جوائن ڪنجي آهي ته جيئن ضم/ورهائڻ/ٻيهر نمبر ڏيڻ ممڪن رهي. -
اِسڪيليشن زنجير.
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 ناهي. -
عهديدار-مدت جي تاريخ-آگاھي براءِ خطون. جڏهن سرشتو ڪو سرڪامي خط رينڊر ڪري ٿو، ته اهو
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 جو تاريخي درستگي وارو تقاضو آهي. ساڳيو تاريخ-آگاھ جوائن طئه ڪري ٿو ته ڪهڙي عهديدار جي تصوير/نالو ڪنهن رپورٽنگ مدت جي ڊيش بورڊ تي ظاهر ٿيندو. -
MoM ↔ ميٽنگ ↔ ٽِڪيٽ ↔ ايڪشن آئٽمز ↔ ذيلي ٽاسڪس. هڪ رڪيل
ticketsقطار هڪmeetingsقطار (typetri) پيدا ڪري ٿي. ميٽنگ بالڪل هڪmom(1:1) پيدا ڪري ٿي. MoM اپلوڊ تي، هڪai_runsقطار (featuremom_extract)extracted_action_itemsخارج ڪري ٿي. آفيسر هر آئٽم جي تصديق ڪري ٿو؛ تصديق تي، هڪticket_subtasksقطار ٺاهي ويندي آهي (چائلڊ ٽِڪيٽ کي والد سان ڳنڍڻ)،extracted_action_items.subtask_idسيٽ ٿي وڃي ٿو، ۽statusconvertedٿي وڃي ٿي. هي زنجير مڪمل طور تي تتبع جوڳو آهي ٽِڪيٽ → ميٽنگ → mom → ai_run → action_item → subtask. -
صارف ↔ ڪردار ↔ اوور رائڊ ↔ صلاحيت. اجازت
users→user_role_assignments→roles→role_template_permissionsذريعي بنيادي لائن لاءِ حل ٿئي ٿي، پوءِuser_permission_overrides(۽ ڪمپني سائيڊ لاءِrep_permission_overrides) في-صارف گرانٽس/منسوخين لاءِ، پوءِtickets.is_confidential/is_vipلاءِ هڪ ABAC گیٽ. نتيجو في درخواست ڪيش ٿئي ٿو. آئينو جدولrepresentatives→rep_role_assignments→rolesڪمپني سائيڊ تي ساڳيوئي نمونو رکن ٿا. -
تصديق ↔ اداري جو لائيف سائيڪل.
organizations.verification_statusتڏهن ئيprovisional → verifiedڏانهن منتقل ٿئي ٿي جڏهن سڀ لازميverification_jobs(في entity قسم في فراهم ڪندڙ هڪ)passedرپورٽ ڪن؛ ڪا بهfailedان کيon_holdڏانهن منتقل ڪري ٿي ۽ هڪappealsقطار داخل ڪري سگهجي ٿي.consentsاهو گیٽ ڪري ٿو ته ڪهڙا فراهم ڪندڙ استفسار ٿي سگهن ٿا.organizations.kyc_levelڪامياب چيڪس جي اونهائي سان وڌي ٿو؛ چُٽلre_atted_due_atverified → provisional → suspended جي تخفيف ڪري ٿو (ڪردار دستاويز §11.4 مطابق). -
فائلون ↔ رڪارڊز ↔ 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 ڪري، جڏهن ته ميٽا ڊيٽا قطارون آڊٽ تسلسل لاءِ برقرار رکي. -
فيچر فلگس ↔ هر صلاحيت. ڪابه صلاحيت بنا گیٽ جي شائع ناهي ٿيندي. ڪوڊ پاٿس
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 / گهڻ لساني
tickets.locale،users.locale،representatives.locale،notification_templates.localeگهٽ-cardinality ڪالم آهن جيڪي استفسار فلٽرز طور استعمال ٿين ٿا ۽ انڊيڪس ٿيل آهن؛ اهي مڪمل متن اردو/سنڌي تلاش لاءِ Meilisearch جي جاءِ ناهي وٺندا.- ٽي لساني متن ڪالم (
name_en/ur/sd،body_en/ur/sd،title_en/ur/sd) الڳ طبيعي ڪالم طور محفوظ آهن (JSON ناهي)، تنهنڪري ايپليڪيشن سڌو سنوان locale-مخصوص ڪالم چونڊي ٿي — هاٽ پاٿ تي في-قطار JSON پارسنگ ناهي.
6.5 مڪمل متن جي تلاش
- بنيادي پاٿ = Meilisearch. هڪ سرچ-انڊيڪسر وڪر هر ڊومين واقعي تي معياري، redacted، locale-ٽيگ ٿيل دستاويزون Meilisearch ڏانهن موڪلي ٿو؛ رازدارانہ/VIP ٽِڪيٽون انڊيسنگ کان اڳ خارج يا ماسڪ ڪيون وڃن ٿيون.
- MariaDB
FULLTEXTرڳوkb_articles.body_en،tickets.title+tickets.description، ۽documents.titleتي ٺاهيو وڃي ٿو، ايڊمن اوزارن لاءِ لاطيني رسم الخط جي exact-phrase فل بيك طور. اردو/سنڌي مڪمل متن MariaDB تي ڪوشش ناهي ڪيو ويو.
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 مائيگريشنز
- رڳو اڳيان، CI-گیٽڊ. هر اسڪيما تبديلي هڪ نمبر ٿيل Prisma مائيگريشن آهي جيڪا ريپو ۾ ڪمٽ ٿئي ٿي؛ مائيگريشنز CI ۾ هڪ pre-deploy، گیٽڊ مرحلي طور هلن ٿيون (
dev→staging→prod، prod کان اڳ دستي توثيق). رول بئڪ هڪ دانائيءَ واري، جائزو ورتل مائيگريشن آهي — ڪڏهن به خودڪار ريورٽ ناهي (tech-arch §19 مطابق). schema.prismaهن دستاويز مان اخذ ڪئي ويندي آهي. هڪdatasourceبلاڪ (provider = "mysql"،url = env("DATABASE_URL"))؛ هڪgeneratorبلاڪ (provider = "prisma-client-js"). جدولن کي// <-- module -->ڪمنٽس (Auth، Org، Tickets، Files، Notifications، AI، Comms، Analytics، Integrations، System) هيٺ منظم ڪيو وڃي ٿو. اختياري ماڊيول اڳياڙي (§2.5)@@map("tkt_tickets")انداز ميپنگز ذريعي مستقل لاگو ڪيا وڃن ٿا ته جيئن SQL پڙهڻ ۾ آسان رهي جڏهن ته Prisma ماڊل نالا صاف رهن.- backward-compatible تبديلي جو ضابطو. اضافي تبديليون (نئون ڪالم
NULL/ڊفالٽ، نئون جدول،ALGORITHM=INPLACE LOCK=NONEسان نئون انڊيڪس) آزاد شائع ٿين ٿيون. تباهه ڪندڙ تبديليون (نالو تبديل، ڊراپ، قسم تنگ) هڪ گهڻ-مرحلي مائيگريشن طور شائع ٿين ٿيون: نئون اضافو → dual-write → backfill → reads سوئچ → پراڻو ڊراپ، هر مرحلو پنهنجي تعيناتي.ENUMکي ويڪرو ڪرڻ آن لائن-محفوظ آهي؛ تنگ ڪرڻ ۾ احتياط گهرج. - وڏيون آن لائن مائيگريشنز (گهڻ-ملين قطار
ticketsتي نئون انڊيڪس)pt-online-schema-changeيا MariaDB جو native online DDL استعمال ڪن ٿيون، DBA پاران رابطو ڪيل، Prisma جو ڊفالٽALTERناهي.
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=1)، webhooks.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 آرڪائيويل پائيپ لائن هلائين ٿا:
- ايڪٽو ٽِڪيٽ ڊيٽا (ٽِڪيٽون، پيغام، منسلڪات، ثبوت): ايڪٽو ونڊو لاءِ آن لائن، پوءِ آرڪائيو؛ ٽِڪيٽ ميٽا ڊيٽا ڊگهي مدت برقرار (آڊٽ/RTI)؛ رازدارانہ/VIP ٽِڪيٽ مواد قانوني هولڊ هيٺ آزاد ٿيڻ تائين برقرار.
- PII (CNIC، رابطو): آخري ٽِڪيٽ/تعلق کان پوءِ قانوني مدت لاءِ برقرار، پوءِ هاٽ اسٽوريج مان purge (مرموز آرڪائيو قانون مطابق برقرار).
- آڊٽ لاگز: گهٽ ۾ گهٽ 36 مهينا آن لائن، لامحدود آرڪائيو.
- اي آءِ رن لاگز: 12 مهينا آن لائن، مجموعي لاگت ڊيٽا ڊگهي مدت برقرار.
- تصديقي خام payloads: سڀ کان مختصر عملي retention (ٻيهر تصديق ٻيهر آڻيندي آهي)؛ redacted
result_jsonاداري جي لائيف سائيڪل لاءِ برقرار.
سڀ purge ملازمتون پاڻ آڊٽ-لاگ (audit_logs، action data.purged) قطار ڳڻپ ۽ لاڳو retention قاعدي سان ٿين ٿيون، ته جيئن رڪارڊز جي تباهي RTI ۽ آڊٽ لاءِ قابلِ ثبوت هجي.
دستاويز جو اختتام.