"""One-off seed: Hindi (hi) translations for the 313 "help" namespace keys
registered by seed_translations_help_phase2.py (the ~145-page Phase 2
PageInfoButton rollout). Run seed_translations_help_phase2.py FIRST so these
keys already exist — this script only inserts translation_values, it does
not create translation_keys.

Usage: docker compose exec api python seed_translations_help_phase2_hi.py
"""
import asyncio
import uuid
from datetime import datetime, timezone

from sqlalchemy import text
from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_async_engine

from ams.core.config import settings

NAMESPACE = "help"

PAGES_HI = {
    # finance
    "capitalization-queue": ("एसेट कैपिटलाइज़ेशन क्यू", [
        "कमीशनिंग के लिए लंबित एसेट, जिन्हें सक्रिय मूल्यह्रास लेजर में कैपिटलाइज़ किया जाना है।",
    ]),
    "capitalization-review": ("कैपिटलाइज़ेशन रिव्यू", [
        "कमीशनिंग के लिए लंबित एसेट की विस्तृत समीक्षा, पूरे लाइफसाइकिल इतिहास के साथ।",
    ]),
    "depreciation-exceptions": ("मूल्यह्रास मिलान (Reconciliation)", [
        "किसी अवधि के लिए तीनों मूल्यह्रास बुक में नेट बुक वैल्यू की तुलना करें और अपवाद (exceptions) सामने लाएं।",
    ]),
    "depreciation-master": ("मूल्यह्रास मास्टर", [
        "एसेट क्लास, बुक और वित्तीय वर्ष के अनुसार सरकार द्वारा निर्धारित मूल्यह्रास दरें।",
    ]),
    "depreciation-run-wizard": ("मूल्यह्रास रन", [
        "मासिक अवधि के लिए तीन-बुक मूल्यह्रास चलाएं।",
        "इडेमपोटेंट — उसी अवधि को दोबारा चलाने पर एंट्रियां फिर से कैलकुलेट होकर ओवरराइट हो जाती हैं।",
    ]),
    "finance-dashboard": ("फाइनेंस", [
        "मूल्यह्रास, जर्नल, बजट और निवेश योजना।",
        "प्रति-एसेट वित्तीय कार्रवाइयां संबंधित एसेट के 'Financials' टैब में उपलब्ध हैं।",
    ]),
    "financial-reconciliation": ("मूल्यह्रास बुक मिलान", [
        "Companies Act, Income Tax और Ind AS बुक में क्लोजिंग नेट बुक वैल्यू और मूल्यह्रास की तुलना करें।",
    ]),
    "journal-export": ("जर्नल एक्सपोर्ट", [
        "किसी अवधि और बुक के लिए मूल्यह्रास और वित्तीय जर्नल एंट्रियां एक्सपोर्ट करें।",
    ]),
    "nbv-dashboard": ("नेट बुक वैल्यू — PPE मूवमेंट", [
        "किसी वित्तीय वर्ष के लिए प्रत्येक एसेट क्लास की ओपनिंग नेट बुक वैल्यू, एडिशन, डिस्पोज़ल, मूल्यह्रास और क्लोजिंग वैल्यू।",
    ]),

    # dashboard — ExecutiveDashboardView's 4 tabs
    "executive-dashboard": ("एग्ज़िक्यूटिव मैनेजमेंट डैशबोर्ड", [
        "संचित मूल्यह्रास, बजट उपयोग (utilisation), ISO 55001 तैयारी और एक्सपायर्ड वारंटी की संख्या को मिलाकर बना KPI अवलोकन, जो CFO और ऑडिटर डैशबोर्ड API से लाइव लिया जाता है।",
        "मौजूदा अवधि के लिए CFO डैशबोर्ड डाउनलोड करने हेतु 'Export Dashboard' का उपयोग करें।",
    ]),
    "asset-value-analysis": ("एसेट वैल्यूएशन एवं मूल्यह्रास सुइट", [
        "एसेट क्लास के अनुसार विभाजित नेट बुक वैल्यू, कुल संचित मूल्यह्रास (Companies Act) और अभी भी कमीशनिंग के लिए लंबित एसेट के साथ।",
        "पुनर्मूल्यांकन (revaluations) या शेड्यूल में बदलाव के लिए समर्पित मूल्यह्रास मॉड्यूल खोलने हेतु 'Manage Depreciation Master' का उपयोग करें।",
    ]),
    "budget-utilization": ("बजट उपयोग डैशबोर्ड", [
        "स्वीकृत बजट की तुलना वास्तविक खर्च से करता है और पूरे संगठन में परिणामी उपयोग प्रतिशत दिखाता है।",
        "प्रति-विभाग बजट लाइनों में विस्तार से देखने के लिए 'Manage Department-Level Budget Allocations' का उपयोग करें।",
    ]),
    "compliance-status": ("अनुपालन स्थिति डैशबोर्ड", [
        "ISO 55001 तैयारी स्कोर, बिना कस्टडी वाले एसेट की संख्या, और 30 दिनों के भीतर एक्सपायर होने वाले दस्तावेज़, साथ ही अगले 30 दिनों की आगामी अनुपालन समय-सीमाओं की तालिका।",
        "व्यक्तिगत अनुपालन इवेंट और साक्ष्य (evidence) प्रबंधित करने के लिए 'Open Compliance Center' का उपयोग करें।",
    ]),

    # custody
    "custody-acknowledgements": ("लंबित पावती (Acknowledgements)", [
        "वे एसेट जिन्हें इस वित्तीय वर्ष में कस्टोडियन ने अभी तक दोबारा पावती (re-acknowledge) नहीं दी है।",
    ]),
    "asset-transfer": ("कस्टडी ट्रांसफर वर्कफ़्लो", [
        "दोहरी सहमति (dual sign-off) से ट्रांसफर: पहले ट्रांसफर शुरू करें, फिर वर्तमान कस्टोडियन इसे रिलीज़ करेगा और नया कस्टोडियन इसे स्वीकार करेगा।",
    ]),
    "custody-assigned-assets": ("असाइन किए गए एसेट", [
        "किसी कस्टोडियन को अब तक असाइन किए गए सभी एसेट, उनकी वर्तमान स्थिति सहित।",
    ]),
    "custody-bulk-reassign": ("बल्क कस्टडी री-असाइन", [
        "एक ही क्रिया में कई एसेट को एक कस्टोडियन से दूसरे कस्टोडियन को स्थानांतरित करें।",
    ]),
    "custody-history": ("कस्टडी हिस्ट्री", [
        "चयनित एसेट की पूरी कस्टडी चेन (chain-of-custody)।",
    ]),
    "custody-investigations": ("ऑडिट जांच (Investigations)", [
        "कस्टडी विवाद, बेमेल (mismatch) मामले, और अन्य फ़्लैग किए गए एसेट संबंधी घटनाएं।",
    ]),
    "custody-liability-report": ("किसी व्यक्ति के पास मौजूद एसेट", [
        "यह व्यक्ति वर्तमान में जो कुछ भी रखे हुए है, और हर आइटम की कीमत क्या है।",
    ]),
    "custody-temp-assignments": ("अस्थायी कस्टडी असाइनमेंट", [
        "स्वतः समाप्ति तिथि (auto-expiry) के साथ अल्पकालिक कस्टडी असाइन करें।",
    ]),

    # dashboard remainder
    "asset-portfolio": ("एसेट पोर्टफोलियो", [
        "वैल्यूएशन और जोखिम प्रोफ़ाइल सहित एंटरप्राइज़ के भौतिक एसेट का लाइव लेजर व्यू।",
    ]),
    "auditor-dashboard": ("ऑडिटर डैशबोर्ड", [
        "अनुपालन, ऑडिट लॉग, और ISO 55001 तैयारी — केवल पढ़ने योग्य (read-only)।",
    ]),
    "ca-dashboard": ("CA फाइनेंशियल डैशबोर्ड", [
        "एसेट-वार वैल्यूएशन, तीनों वैधानिक बहियों (statutory books) में डेप्रिसिएशन, और अनुपालन तैयारी — केवल पढ़ने योग्य (read-only)।",
    ]),
    "custodian-dashboard": ("कस्टोडियन डैशबोर्ड", [
        "आपके असाइन किए गए एसेट, लंबित ट्रांसफर, और बकाया पावती।",
        "नीचे रिकॉर्ड देखने के लिए किसी भी कार्ड पर क्लिक करें।",
    ]),
    "planning-dashboard": ("प्लानिंग डैशबोर्ड", [
        "एसेट पोर्टफोलियो की रणनीतिक योजना, लाइफ़साइकल परिदृश्य (scenario) निर्माण, और वित्तीय पूर्वानुमान।",
    ]),
    "scenario-comparison": ("कैपेक्स परिदृश्य (Scenario) तुलना", [
        "साथ-साथ तुलना करने के लिए अधिकतम 3 दर्ज कैपेक्स परिदृश्य चुनें।",
    ]),

    # audit-compliance
    "ai-intelligence": ("AAMS AI इंटेलिजेंस", [
        "प्रेडिक्टिव मेंटेनेंस, एनोमली डिटेक्शन, और एसेट लाइफ़साइकल इंटेलिजेंस।",
    ]),
    "verification-plans": ("फिज़िकल वेरिफ़िकेशन प्लान", [
        "रिकॉर्ड के मुकाबले एसेट की भौतिक जांच के लिए वेरिफ़िकेशन प्लान बनाएं, और पुष्टि करें कि ऑडिट लॉग की अखंडता (integrity) से छेड़छाड़ नहीं हुई है।",
    ]),
    "asset-audit-findings": ("ऑडिट निष्कर्ष (Findings)", [
        "ऑडिट निष्कर्षों — अवलोकन, गंभीरता (severity), और सुधारात्मक कार्रवाई — को हल होने तक दर्ज और ट्रैक करें।",
    ]),
    "audit-history-registry": ("ऑडिट हिस्ट्री रजिस्ट्री", [
        "हर ऑडिट लॉग घटना का खोजने योग्य रिकॉर्ड, साथ ही सैनिटाइज़्ड कॉपी निर्यात (export) करने के टूल।",
    ]),
    "audit-timeline": ("ऑडिट टाइमलाइन", [
        "ऑडिट घटनाओं की कालानुक्रमिक (chronological) टाइमलाइन, जिसे रिसोर्स प्रकार के अनुसार फ़िल्टर किया जा सकता है।",
    ]),
    "compliance-center": ("कंप्लायंस सेंटर", [
        "दस्तावेज़ एक्सपायरी मॉनिटरिंग, वैधानिक (statutory) कैलेंडर, और ISO 55001 संगठनात्मक तैयारी।",
    ]),
    "iso-55001-readiness": ("ISO 55001 रेडीनेस चेकलिस्ट", [
        "ISO 55001 एसेट प्रबंधन मानक के मुकाबले स्कोर वाली अनुपालन चेकलिस्ट से प्रगति ट्रैक करें।",
    ]),
    "risk-assets": ("जोखिम वाले एसेट", [
        "उच्च-गंभीरता वाले एसेट (क्रिटिकैलिटी स्कोर 3 या उससे अधिक) जिन पर ध्यान देना आवश्यक है।",
    ]),
    "security-vapt": ("सुरक्षा एवं VAPT गवर्नेंस", [
        "वल्नरेबिलिटी निष्कर्ष, स्कैन, फ्रेमवर्क आकलन, सुरक्षा नियंत्रण, और लॉगिन/सेशन घटनाएं।",
    ]),

    # master-data remainder
    "dashboard-config": ("डैशबोर्ड कॉन्फ़िगरेशन", [
        "अपने एग्ज़ीक्यूटिव डैशबोर्ड का लेआउट अपनी पसंद के अनुसार बनाएं।",
        "यह इस ब्राउज़र में सेव होता है।",
    ]),
    "department-masters": ("विभाग (Departments)", [
        "विभाग एक ऐसा ऑर्गनाइज़ेशन यूनिट है जिसका प्रकार \"department\" है।",
    ]),
    "generic-masters": ("जेनेरिक मास्टर", [
        "किसी भी जेनेरिक मास्टर टेबल को देखें और मैनेज करें — इस पेज पर सेलेक्टर से एक चुनें।",
    ]),
    "master-dashboard": ("मास्टर डेटा डैशबोर्ड", [
        "मास्टर डेटा श्रेणियों में लाइव रिकॉर्ड संख्या।",
        "उसके रिकॉर्ड देखने के लिए कोई श्रेणी चुनें।",
    ]),

    # investment-planning + budget
    "capital-plan": ("कैपिटल प्लान रजिस्टर", [
        "10/20/30-वर्षीय दीर्घकालिक CapEx पूर्वानुमान परिदृश्य (scenarios)।",
    ]),
    "create-scenario": ("निवेश परिदृश्य बनाएं", [
        "चुनी गई अवधि (horizon) में एसेट के एक समूह के लिए रिपेयर-बनाम-रिप्लेस NPV/TCO विश्लेषण चलाएं।",
    ]),
    "npv-analysis": ("रिन्यूअल सिफारिशें", [
        "खराब या नाज़ुक स्थिति वाले उच्च-क्रिटिकैलिटी एसेट — रिपेयर-बनाम-रिप्लेस NPV विश्लेषण के लिए संभावित उम्मीदवार।",
    ]),
    "scenario-review": ("निवेश परिदृश्य समीक्षा", [
        "प्रति-एसेट रिपेयर-बनाम-रिप्लेस परिणाम, साथ ही ISO 55001-अनुरूप SAMP कैपिटल प्लान एक्सपोर्ट।",
    ]),
    "tco-analysis": ("टोटल कॉस्ट ऑफ ओनरशिप (TCO)", [
        "किसी परिदृश्य के एसेट के लिए रिपेयर/रिप्लेस विकल्पों में TCO तुलना।",
    ]),
    "budget-allocation": ("बजट आवंटन", [
        "बजट लाइनें बनाएं और उन्हें स्वीकृत करें।",
        "मेकर-चेकर — अनुमोदक (approver), निर्माता (creator) से अलग होना चाहिए।",
    ]),
    "budget-impact": ("बजट प्रभाव", [
        "वर्ष-अंत पूर्वानुमान (year-to-date actuals + commitments + burn rate) और बजट-बनाम-वास्तविक अंतर (variance)।",
    ]),
    "virement-approvals": ("बजट वायरमेंट", [
        "स्वीकृत बजट को दो मदों (heads) के बीच स्थानांतरित करने का अनुरोध करें — किसी अन्य यूज़र को इसे स्वीकृत करना होगा।",
        "इसमें PFMS सिंक और ज़ीरो-बेस्ड बजटिंग टूल भी शामिल हैं।",
    ]),

    # vendor-contracts
    "create-grn": ("माल प्राप्ति नोट", [
        "किसी खुले खरीद आदेश के विरुद्ध वास्तव में प्राप्त माल दर्ज करें।",
    ]),
    "invoice-verification": ("चालान सत्यापन", [
        "3-तरफा मिलान: चालान बनाम खरीद आदेश बनाम माल प्राप्ति नोट।",
    ]),
    "po-approvals": ("PO अनुमोदन कतार", [
        "अनुमोदन निर्णय की प्रतीक्षा कर रहे खरीद आदेश।",
    ]),
    "pr-approvals": ("PR अनुमोदन कतार", [
        "अनुमोदन निर्णय की प्रतीक्षा कर रहे खरीद अनुरोध।",
    ]),
    "procurement-history": ("खरीद इतिहास", [
        "खरीद अनुरोध और खरीद आदेश का संयुक्त लेनदेन लॉग।",
    ]),
    "procurement": ("खरीद डैशबोर्ड", [
        "पूरे संगठन में खरीद अनुरोध और खरीद आदेश की गतिविधि।",
    ]),
    "purchase-orders": ("खरीद आदेश", [
        "वेंडरों को जारी किए गए हर खरीद आदेश का रजिस्टर, ड्राफ्ट से लेकर समापन तक।",
    ]),
    "purchase-requisitions": ("खरीद अनुरोध", [
        "खरीद आदेश बनने से पहले के आंतरिक खरीद अनुरोधों का रजिस्टर।",
    ]),
    "quotation-comparison": ("कोटेशन तुलना", [
        "वेंडर कोटेशन की साथ-साथ तुलना करें और RFQ प्रदान करें।",
    ]),
    "rfq-management": ("RFQ प्रबंधन", [
        "स्वीकृत खरीद अनुरोधों के लिए वेंडर कोटेशन आमंत्रित करें।",
    ]),
    "purchase-order-detail": ("खरीद आदेश विवरण", [
        "एकल खरीद आदेश का पूरा विवरण दृश्य — लाइन आइटम, अनुमोदन स्थिति, जुड़े माल प्राप्ति, और चालान।",
    ]),
    "purchase-requisition-detail": ("खरीद अनुरोध विवरण", [
        "एकल खरीद अनुरोध का पूरा विवरण दृश्य — अनुरोधित आइटम, अनुमोदन स्थिति, और जुड़ा खरीद आदेश।",
    ]),
    "rfq-detail": ("RFQ विवरण", [
        "एकल RFQ का पूरा विवरण दृश्य — आमंत्रित वेंडर, प्रस्तुत कोटेशन, और तुलना।",
    ]),

    # inventory
    "goods-receipt-register": ("माल प्राप्ति रजिस्टर", [
        "आने वाली स्टॉक प्राप्तियों को दर्ज और समीक्षा करें।",
    ]),
    "inventory-allocations": ("इन्वेंटरी आवंटन", [
        "किसी उपयोगकर्ता को आवंटित इन्वेंटरी आइटम को ट्रैक करें, प्रत्येक आइटम की उपलब्ध स्टॉक तक सीमित।",
    ]),
    "inventory-dashboard": ("इन्वेंटरी डैशबोर्ड", [
        "स्टॉक आइटम, कम-स्टॉक अलर्ट, मूल्यांकन, और हाल की गतिविधियों का लाइव अवलोकन।",
    ]),
    "inventory-history": ("इन्वेंटरी लेनदेन इतिहास", [
        "स्टॉक गतिविधियों का पूरा ऑडिट ट्रेल — प्राप्तियां, निर्गम, स्थानांतरण, समायोजन, वापसी।",
    ]),
    "inventory-register": ("इन्वेंटरी आइटम रजिस्टर", [
        "पुनः ऑर्डर नियमों और स्टॉक कार्रवाइयों सहित इन्वेंटरी आइटम की मास्टर सूची।",
    ]),
    "inventory-reports": ("इन्वेंटरी रिपोर्ट", [
        "कम-स्टॉक अलर्ट और इन्वेंटरी मूल्यांकन, वर्तमान स्टॉक स्तरों से लाइव गणना की गई।",
    ]),
    "inventory-requests": ("इन्वेंटरी अनुरोध", [
        "अनुरोधकर्ताओं को इन्वेंटरी आइटम का अनुरोध करें, स्वीकृत करें, और जारी करें।",
    ]),
    "physical-verification": ("भौतिक सत्यापन", [
        "निर्धारित और पूर्ण इन्वेंटरी ऑडिट, विचलन समाधान सहित।",
    ]),
    "warehouse-management": ("स्थान अनुसार स्टॉक", [
        "स्थान के अनुसार समूहीकृत, प्रत्येक आइटम के वास्तविक स्टॉक स्तर।",
        "इस सिस्टम में अलग गोदाम/बिन मॉडल नहीं है — स्थान सीधे लोकेशन मास्टर का संदर्भ है।",
    ]),

    # reports
    "advanced-reports": ("उन्नत मानक रिपोर्ट", [
        "कस्टोडियन अपवाद, वारंटी एक्सपोज़र, स्थानांतरण इतिहास, और OData फ़ीड।",
    ]),
    "cag-report-pack": ("CAG रिपोर्ट पैक", [
        "किसी दिए गए वित्तीय अवधि के लिए समेकित एसेट रजिस्टर, मूल्यह्रास अनुसूची, और कस्टोडियन रजिस्टर।",
        "मांग पर जनरेट किया गया और XLSX/PDF के रूप में प्रदान किया गया।",
    ]),
    "document-reports": ("दस्तावेज़ समाप्ति रिपोर्ट", [
        "चयनित अवधि के भीतर समाप्त होने वाले या अतिदेय एसेट दस्तावेज़।",
    ]),
    "drill-down-reports": ("ड्रिल डाउन रिपोर्ट", [
        "अंतर्निहित एसेट लेजर के विरुद्ध वास्तविक समय ड्रिल-डाउन क्वेरी।",
    ]),
    "planning-reports": ("योजना रिपोर्ट और इतिहास", [
        "CapEx पूर्वानुमान परिदृश्य और एसेट नवीनीकरण अनुशंसाएं।",
    ]),
    "report-builder": ("रिपोर्ट बिल्डर", [
        "डेटा स्रोत चुनें, कॉलम और फ़िल्टर चुनें, पूर्वावलोकन करें, फिर एक्सपोर्ट करें।",
    ]),
    "reports-analytics": ("AAMS रिपोर्ट और एनालिटिक्स", [
        "मानक रिपोर्ट, KPI एनालिटिक्स, कस्टम रिपोर्ट, और निर्धारित एक्सपोर्ट।",
    ]),
    "reports": ("AAMS सामान्य रिपोर्ट और एनालिटिक्स", [
        "CFO डैशबोर्ड और एसेट रजिस्टर से लाइव एसेट लेजर एनालिटिक्स।",
    ]),
    "scheduled-reports": ("निर्धारित रिपोर्ट", [
        "स्वचालित आवर्ती रिपोर्ट वितरण प्रबंधित करें।",
    ]),

    # master-data — MasterListViews.tsx (11 pages)
    "location-masters": ("लोकेशन मास्टर रजिस्टर", [
        "फैसिलिटी डोमेन, फ्लोर सीमाओं और कार्यालय कार्यक्षेत्रों को कॉन्फ़िगर और प्रबंधित करें।",
    ]),
    "document-masters": ("डॉक्यूमेंट मास्टर्स", [
        "कानूनी अनुपालन दस्तावेज़, गारंटी, बीमा और रिटेंशन अनुबंध कॉन्फ़िगर करें।",
    ]),
    "approval-queue": ("मास्टर अनुमोदन क्यू", [
        "हर गवर्न्ड मास्टर टेबल के लिए मेकर-चेकर क्यू — अनुमोदक कभी भी वही उपयोगकर्ता नहीं हो सकता जिसने रिकॉर्ड बनाया था (GFR Rule 21)।",
        "यहाँ कोई \"अस्वीकार\" कार्रवाई नहीं है; किसी बदलाव को अस्वीकार करने का अर्थ है उसे अनुमोदित न छोड़ना।",
    ]),
    "master-records": ("मास्टर डेटा रिकॉर्ड", [
        "ऑपरेशनल लेजर शीट्स में उपयोग होने वाली मुख्य वर्गीकरण श्रेणियों का समेकित भंडार।",
    ]),
    "asset-classes": ("एसेट क्लासेस", [
        "एसेट समूह, मूल्यह्रास पैरामीटर और मानकीकृत परिचालन आयु कॉन्फ़िगर करें।",
    ]),
    "asset-categories": ("एसेट कैटेगरीज़", [
        "एसेट क्लास के उप-समूह — मेकर-चेकर अनुमोदन के माध्यम से गवर्न्ड।",
    ]),
    "asset-subcategories": ("एसेट सब-कैटेगरीज़", [
        "एसेट कैटेगरी के भीतर अधिक सूक्ष्म समूह।",
    ]),
    "vendor-masters": ("वेंडर मास्टर्स रजिस्ट्री", [
        "अधिकृत एंटरप्राइज़ आपूर्तिकर्ताओं, रखरखाव वेंडरों और स्पेयर-पार्ट्स आपूर्तिकर्ताओं की रजिस्ट्री।",
    ]),
    "tax-masters": ("टैक्स मास्टर्स", [
        "GST दर स्लैब और HSN/SAC कोड लुकअप।",
        "केवल पठनीय — GSTN सिंक (फाइनेंशियल मास्टर्स पेज) के माध्यम से बनाए रखा जाता है, यहाँ संपादित नहीं किया जाता।",
    ]),
    "validation-errors": ("बल्क अपलोड जाँचें", [
        "एसेट्स की स्प्रेडशीट अपलोड की है? यह देखने के लिए नीचे उसका संदर्भ संख्या पेस्ट करें कि कौन-सी पंक्तियाँ सफल हुईं और किनमें समस्या आई, ताकि आप उन पंक्तियों को ठीक करके फिर से अपलोड कर सकें।",
    ]),
    "financial-masters": ("फाइनेंशियल मास्टर्स", [
        "खातों का चार्ट, कॉस्ट सेंटर और वित्तीय अवधि कैलेंडर।",
        "खाते और वित्तीय अवधि केवल पठनीय लुकअप हैं जो GSTN/वित्त प्रणाली सिंक के माध्यम से बनाए रखे जाते हैं; कॉस्ट सेंटर यहाँ बनाए जा सकते हैं।",
    ]),

    # administration
    "executive-history": ("एग्ज़ीक्यूटिव हिस्ट्री", [
        "वास्तविक सिस्टम ऑडिट ट्रेल — हर बदलाव करने वाली API कॉल, हैश-चेन्ड और छेड़छाड़-रोधी।",
    ]),
    "permission-catalog": ("अनुमति कैटलॉग", [
        "हर मॉड्यूल में अनुमतियों की पूरी सूची — वही कैटलॉग जिससे भूमिका बनाएँ/संपादित करें विकल्प डेटा लेते हैं।",
    ]),
    "roles": ("भूमिका प्रबंधन", [
        "सिस्टम में सुरक्षा भूमिकाओं का रजिस्टर और प्रत्येक द्वारा दी जाने वाली अनुमतियाँ।",
    ]),
    "users": ("उपयोगकर्ता प्रबंधन", [
        "एंटरप्राइज़ उपयोगकर्ताओं, उनकी भूमिकाओं, स्थिति और पहुँच का प्रबंधन करें।",
    ]),
    "settings": ("सेटिंग्स", [
        "एप्लिकेशन ब्रांडिंग, मैप प्रोवाइडर और सुरक्षा नीति कॉन्फ़िगरेशन।",
    ]),
    "roles-create": ("भूमिका बनाएँ", [
        "एक नई सुरक्षा भूमिका और उसके द्वारा दी जाने वाली अनुमतियाँ परिभाषित करें।",
    ]),
    "roles-edit": ("सुरक्षा भूमिका संपादित करें", [
        "किसी भूमिका का नाम, विवरण या अनुमतियाँ बदलें।",
    ]),
    "role-detail": ("सुरक्षा प्रोफ़ाइल देखें", [
        "किसी भूमिका की अनुमतियों और उसे वर्तमान में सौंपे गए उपयोगकर्ताओं का केवल पठनीय दृश्य।",
    ]),
    "role-permissions-edit": ("अनुमतियाँ संपादित करें", [
        "इस भूमिका के लिए व्यक्तिगत अनुमतियाँ जोड़ें या हटाएँ।",
    ]),
    "users-create": ("उपयोगकर्ता बनाएँ", [
        "विशिष्ट भूमिका-आधारित अनुमतियों और क्रेडेंशियल्स के साथ एक नया एंटरप्राइज़ उपयोगकर्ता खाता पंजीकृत करें।",
    ]),
    "users-edit": ("उपयोगकर्ता संपादित करें", [
        "चयनित एंटरप्राइज़ उपयोगकर्ता के लिए खाता विवरण, भूमिका असाइनमेंट और डायरेक्टरी स्थिति अपडेट करें।",
    ]),
    "user-detail": ("उपयोगकर्ता विवरण", [
        "इस एंटरप्राइज़ डायरेक्टरी पहचान के लिए केवल पठनीय प्रोफ़ाइल सत्यापन और सुरक्षा विवरण।",
    ]),

    # maintenance
    "asset-inspection-register": ("एसेट निरीक्षण रजिस्टर", [
        "किए गए, निर्धारित और लंबित सभी एसेट निरीक्षणों का लॉग।",
    ]),
    "assigned-work-orders": ("असाइन किए गए वर्क ऑर्डर", [
        "मरम्मत या रखरखाव के लिए तकनीशियनों को असाइन किए गए वर्क ऑर्डर।",
    ]),
    "breakdown-register": ("ब्रेकडाउन रजिस्टर", [
        "रिपोर्ट किए गए उपकरण और एसेट ब्रेकडाउन, जो मरम्मत की प्रतीक्षा में हैं या मरम्मत के अधीन हैं।",
    ]),
    "pm-schedule": ("प्रिवेंटिव मेंटेनेंस शेड्यूल", [
        "समय या उपयोग अंतराल के आधार पर एसेट के लिए निर्धारित आवर्ती रखरखाव।",
    ]),
    "service-evidence": ("सर्विस एविडेंस रिपॉज़िटरी", [
        "किसी वर्क ऑर्डर के एसेट से जुड़े फ़ोटो, वीडियो और दस्तावेज़।",
    ]),
    "technician-dashboard": ("तकनीशियन डैशबोर्ड", [
        "आपको असाइन किए गए वर्क ऑर्डर, निरीक्षण और ब्रेकडाउन।",
    ]),
    "work-order-detail": ("वर्क ऑर्डर विवरण", [
        "किसी एक वर्क ऑर्डर का पूरा विवरण — असाइन किया गया तकनीशियन, स्थिति और संबंधित एसेट।",
    ]),
    "asset-inspection-detail": ("एसेट निरीक्षण विवरण", [
        "किसी एक एसेट निरीक्षण रिकॉर्ड का पूरा विवरण।",
    ]),
    "pm-schedule-detail": ("PM शेड्यूल विवरण", [
        "किसी एक प्रिवेंटिव मेंटेनेंस शेड्यूल एंट्री का पूरा विवरण।",
    ]),
    "breakdown-detail": ("ब्रेकडाउन विवरण", [
        "किसी एक रिपोर्ट किए गए ब्रेकडाउन का पूरा विवरण।",
    ]),

    # organisation
    "hrms-sync": ("डायरेक्टरी सिंक", [
        "अपने विभागों और लोगों को हाथ से जोड़ने के बजाय, अपने HR और आइडेंटिटी सिस्टम से स्वचालित रूप से लाएं।",
        "सेटिंग्स में जाकर सोर्स चालू करें और उसका विवरण दर्ज करें, फिर यहां से सिंक चलाएं।",
    ]),
    "org-units-assign": ("अप्रूवल डेलिगेशन मैट्रिक्स", [
        "किसी संगठन इकाई के भीतर किसी भूमिका को अप्रूवल अधिकार सौंपें, साथ में एक वैकल्पिक मौद्रिक सीमा भी तय करें।",
    ]),
    "org-units": ("संगठन इकाई मास्टर", [
        "संगठन के विभाग और इकाई पदानुक्रम को प्रबंधित करें — यहां से हर इकाई बनाएं, संपादित करें और व्यवस्थित करें।",
    ]),
    "org-units-add": ("नई संगठन इकाई जोड़ें", [
        "एक नया विभाग, डिवीजन या अन्य संगठनात्मक इकाई बनाएं और उसे पदानुक्रम में रखें।",
    ]),
    "org-units-hierarchy": ("कंपनी हायरार्की विज़ुअलाइज़र", [
        "हर संगठन इकाई का एक-दूसरे से संबंध दिखाने वाला विज़ुअल ट्री।",
    ]),
    "org-unit-detail": ("संगठन इकाई विवरण", [
        "किसी एक संगठन इकाई का पूरा विवरण — उसका प्रकार, पैरेंट और सदस्य।",
    ]),

    # assets
    "asset-appreciation": ("एसेट एप्रिसिएशन", [
        "उन एसेट क्लास के लिए कैपिटल एप्रिसिएशन दर्ज करें जिनके समय के साथ मूल्य बढ़ने की उम्मीद है, जैसे भूमि या इन्वेस्टमेंट प्रॉपर्टी।",
        "यह एसेट रीवैल्यूएशन जैसा ही रीवैल्यूएशन रिकॉर्ड उपयोग करता है, लेकिन केवल ऊपर की ओर बदलाव तक सीमित है।",
    ]),
    "asset-creation-queue": ("एसेट क्रिएशन क्यू", [
        "वास्तविक स्टॉक-इन रसीदों को औपचारिक एसेट एंट्री में बदलें।",
    ]),
    "disposal-approvals": ("एसेट डिस्पोज़ल क्यू", [
        "डीकमीशन अप्रूवल की प्रतीक्षा कर रहे एसेट, और डिस्पोज़ल इतिहास।",
    ]),
    "asset-register": ("एसेट रजिस्टर", [
        "संगठन में ट्रैक किए जा रहे हर एसेट की मास्टर सूची, जिसमें लाइफसाइकल स्थिति, लोकेशन और क्विक एक्शन शामिल हैं।",
    ]),
    "asset-revaluation": ("एसेट रीवैल्यूएशन", [
        "IAS 16 दिशानिर्देशों के अनुपालन में फिजिकल एसेट के मान्यता प्राप्त बैलेंस को समायोजित करें।",
    ]),
    "asset-detail": ("एसेट विवरण", [
        "किसी एक एसेट का पूरा विवरण — विभिन्न टैब में स्पेसिफिकेशन, कस्टडी, दस्तावेज़, वित्तीय जानकारी और इतिहास।",
    ]),
    "assets-create": ("एसेट बनाएं / संपादित करें", [
        "नया एसेट रजिस्टर करें या मौजूदा एसेट संपादित करें — वर्गीकरण, स्पेसिफिकेशन, लोकेशन और प्रारंभिक कस्टडी।",
    ]),

    # small misc modules
    "ai-copilot": ("AI कोपायलट", [
        "एसेट प्रबंधन के लिए आपका स्मार्ट सहायक — केवल पढ़ने योग्य।",
    ]),
    "document-dashboard": ("डॉक्यूमेंट इंटेलिजेंस", [
        "रजिस्टर में OCR कवरेज और SharePoint सिंक स्थिति।",
    ]),
    "document-repository": ("दस्तावेज़ रिपॉज़िटरी खोज", [
        "रजिस्टर के हर दस्तावेज़ में पूर्ण-पाठ खोज।",
        "परिणाम आपकी संगठनात्मक इकाई तक सीमित हैं।",
    ]),
    "expiry-renewal": ("दस्तावेज़ समाप्ति एवं प्रतिधारण", [
        "एक्सपायरी चेकर द्वारा उठाई गई अलर्ट, और प्रतिधारण अवधि पार कर चुके दस्तावेज़ जो कार्रवाई की प्रतीक्षा में हैं।",
    ]),
    "geo-workspace": ("जियो वर्कस्पेस", [
        "GPS संदर्भ बिंदु, जियोफ़ेंस, और स्थानिक एसेट क्वेरी।",
        "किसी एक एसेट की अपनी स्थिति उसके Location टैब में मिलती है।",
    ]),
    "help": ("AAMS सहायता केंद्र", [
        "हर मॉड्यूल के लिए सिस्टम दिशानिर्देश, वर्कफ़्लो और चरण-दर-चरण गाइड।",
    ]),
    "hr-exit-processing": ("HR निकास प्रक्रिया", [
        "जाने वाले कर्मचारियों की अनाथ अभिरक्षा असाइनमेंट, और अंतरिम अभिरक्षक की स्वीकृति की प्रतीक्षा कर रहे एसेट्स को ट्रैक करें।",
    ]),
    "label-workspace": ("लेबल वर्कस्पेस", [
        "प्रिंट टेम्पलेट, थोक लेबल निर्माण, अनमैप्ड लेबल पूल, और कवरेज आंकड़े।",
        "किसी विशेष एसेट को लेबल असाइन करना उस एसेट के Labels टैब में उपलब्ध है।",
    ]),
    "notifications": ("सूचना केंद्र", [
        "इनबॉक्स, चैनल ऑप्ट-इन/आउट प्राथमिकताएँ, और सुरक्षा-अलर्ट एडमिन टूल।",
    ]),
    "dynamic-fields": ("डायनामिक फ़ील्ड और फ़ॉर्म", [
        "प्रति मॉड्यूल कस्टम फ़ील्ड, सत्यापन नियम, फ़ॉर्म लेआउट, और वैल्यू बल्क इम्पोर्ट।",
    ]),
    "feature-flags": ("फ़ीचर फ़्लैग और मॉड्यूल प्रबंधन", [
        "माइक्रोसर्विस मॉड्यूल, क्रमिक रोलआउट वाले फ़ीचर फ़्लैग, टेनेंट ओवरराइड, और सेवा स्वास्थ्य।",
    ]),
    "platform-admin": ("प्लेटफ़ॉर्म प्रशासन", [
        "टेनेंट प्रोविज़निंग और लाइव सिस्टम स्वास्थ्य।",
    ]),
    "system-configuration": ("सिस्टम कॉन्फ़िगरेशन", [
        "सिस्टम पैरामीटर, फ़ीचर टॉगल, और लुकअप कोड मास्टर।",
    ]),
    "asset-verification": ("एसेट सत्यापन", [
        "एसेट रजिस्ट्री और टैग/RFID-आधारित भौतिक सत्यापन।",
    ]),
    "tag-management": ("टैग प्रबंधन", [
        "अपने एसेट्स पर QR / बारकोड / RFID टैग प्रबंधित करें।",
        "एक साथ कई एसेट्स के लिए टैग बनाएं, अपने निर्धारित स्थान से हटे हुए एसेट्स खोजें, और टैग सत्यापित करें।",
    ]),
    "verification-cycles": ("सत्यापन चक्र", [
        "भौतिक एसेट सत्यापन चक्र।",
        "पूर्ण वर्कफ़्लो के लिए एक चक्र खोलें।",
    ]),
    "tickets": ("सपोर्ट टिकट", [
        "सभी सपोर्ट अनुरोध, घटनाएँ, और परिवर्तन टिकट प्रबंधित करें।",
    ]),
    "user-profile": ("मेरी प्रोफ़ाइल", [
        "आपकी व्यक्तिगत प्रोफ़ाइल, कर्मचारी विवरण, और खाता सुरक्षा सेटिंग्स।",
    ]),
    "workflow-approvals": ("वर्कफ़्लो अनुमोदन", [
        "लंबित अनुमोदन, इंस्टेंस इतिहास, प्रत्यायोजित अधिकार, और SLA प्रदर्शन।",
    ]),
    "workflow-templates": ("वर्कफ़्लो टेम्पलेट", [
        "प्रति मॉड्यूल/ट्रिगर इवेंट अनुमोदन श्रृंखला परिभाषित करें — चरण, अनुमोदक, और SLA।",
    ]),
}


def build_values() -> dict:
    values = {}
    for page_key, (title, body) in PAGES_HI.items():
        values[f"{page_key}.title"] = title
        for i, paragraph in enumerate(body):
            values[f"{page_key}.body.{i}"] = paragraph
    return values


async def seed_translation_values(session: AsyncSession, values: dict) -> tuple[int, list[str]]:
    now = datetime.now(timezone.utc)
    inserted = 0
    unmatched = []
    for key, value in values.items():
        key_id = (await session.execute(
            text("SELECT id FROM translation_keys WHERE namespace = :ns AND key = :key"),
            {"ns": NAMESPACE, "key": key},
        )).scalar_one_or_none()
        if not key_id:
            unmatched.append(key)
            continue

        existing = (await session.execute(
            text("SELECT id FROM translation_values WHERE key_id = :kid AND language_code = 'hi'"),
            {"kid": key_id},
        )).scalar_one_or_none()
        if existing:
            await session.execute(
                text("UPDATE translation_values SET value = :val, updated_at = :now WHERE id = :id"),
                {"val": value, "now": now, "id": existing},
            )
        else:
            await session.execute(
                text("""INSERT INTO translation_values (id, key_id, language_code, value, updated_by, updated_at)
                        VALUES (:id, :kid, 'hi', :val, NULL, :now)"""),
                {"id": str(uuid.uuid4()), "kid": key_id, "val": value, "now": now},
            )
            inserted += 1

    await session.commit()
    return inserted, unmatched


async def main() -> None:
    values = build_values()
    engine = create_async_engine(settings.DATABASE_URL, echo=False)
    Session = async_sessionmaker(engine, class_=AsyncSession, expire_on_commit=False)

    async with Session() as session:
        tenants = (await session.execute(
            text("SELECT id::text AS id, slug FROM public.tenants WHERE status != 'archived'")
        )).fetchall()

    for tenant in tenants:
        schema = f"tenant_{tenant.id.replace('-', '_')}"
        async with Session() as session:
            await session.execute(text(f"SET search_path TO {schema}, public"))
            try:
                inserted, unmatched = await seed_translation_values(session, values)
                note = f" ({len(unmatched)} unmatched)" if unmatched else ""
                print(f"  seeded {inserted} new hi values{note}: {tenant.slug}")
            except Exception as exc:
                print(f"  SKIPPED {tenant.slug}: {exc}")
                await session.rollback()

    await engine.dispose()
    print(f"Done — {len(tenants)} tenant(s) processed, {len(PAGES_HI)} pages / {len(values)} values.")


if __name__ == "__main__":
    asyncio.run(main())
