"""One-off seed: Marathi (mr) 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.

Usage: docker compose exec api python seed_translations_help_phase2_mr.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"
LANGUAGE_CODE = "mr"

PAGES_MR = {
    # finance
    "capitalization-queue": ("एसेट कॅपिटलायझेशन क्यू", [
        "कमिशनिंगच्या प्रतीक्षेत असलेले एसेट्स, जे सक्रिय घसारा लेजरमध्ये कॅपिटलाइझ करण्यासाठी तयार आहेत.",
    ]),
    "capitalization-review": ("कॅपिटलायझेशन रिव्ह्यू", [
        "कमिशनिंगच्या प्रतीक्षेत असलेल्या एसेट्सचा संपूर्ण लाइफसायकल इतिहासासह सविस्तर आढावा.",
    ]),
    "depreciation-exceptions": ("घसारा जुळवणी", [
        "एका कालावधीसाठी तीन घसारा बुक्समधील नेट बुक व्हॅल्यूची तुलना करा आणि तफावती (exceptions) समोर आणा.",
    ]),
    "depreciation-master": ("घसारा मास्टर", [
        "प्रत्येक एसेट क्लास, बुक आणि आर्थिक वर्षासाठी सरकार-निर्धारित घसारा दर.",
    ]),
    "depreciation-run-wizard": ("घसारा रन", [
        "मासिक कालावधीसाठी तीन-बुक घसारा रन करा.",
        "इडेम्पोटंट — तोच कालावधी पुन्हा रन केल्यास एंट्री पुन्हा कॅल्क्युलेट होऊन ओव्हरराइट होतात.",
    ]),
    "finance-dashboard": ("फायनान्स", [
        "घसारा, जर्नल्स, अर्थसंकल्प आणि गुंतवणूक नियोजन.",
        "प्रत्येक एसेटच्या फायनान्शियल अ‍ॅक्शन्स त्या एसेटच्या Financials टॅबवर उपलब्ध आहेत.",
    ]),
    "financial-reconciliation": ("घसारा बुक जुळवणी", [
        "Companies Act, इन्कम टॅक्स आणि Ind AS बुक्समधील क्लोजिंग नेट बुक व्हॅल्यू आणि घसाऱ्याची तुलना करा.",
    ]),
    "journal-export": ("जर्नल एक्सपोर्ट", [
        "एका कालावधी आणि बुकसाठी घसारा आणि फायनान्शियल जर्नल एंट्री एक्सपोर्ट करा.",
    ]),
    "nbv-dashboard": ("नेट बुक व्हॅल्यू — PPE मूव्हमेंट", [
        "आर्थिक वर्षासाठी प्रत्येक एसेट क्लासनुसार ओपनिंग नेट बुक व्हॅल्यू, जोडणी (additions), विल्हेवाट (disposals), घसारा आणि क्लोजिंग व्हॅल्यू.",
    ]),

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

    # custody
    "custody-acknowledgements": ("प्रलंबित अभिस्वीकृती", [
        "या आर्थिक वर्षात कस्टोडियनने अद्याप पुन्हा अभिस्वीकृत न केलेले एसेट.",
    ]),
    "asset-transfer": ("कस्टडी ट्रान्सफर वर्कफ्लो", [
        "ड्युअल साइन-ऑफ ट्रान्सफर: सुरू करा, त्यानंतर जाणारा कस्टोडियन एसेट रिलीज करतो आणि येणारा कस्टोडियन तो स्वीकारतो.",
    ]),
    "custody-assigned-assets": ("नियुक्त एसेट", [
        "कस्टोडियनला आजवर नियुक्त केलेला प्रत्येक एसेट, त्याच्या सद्य स्थितीसह.",
    ]),
    "custody-bulk-reassign": ("बल्क कस्टडी रिअसाइन", [
        "एकाच कृतीत अनेक एसेट एका कस्टोडियनकडून दुसऱ्या कस्टोडियनकडे हलवा.",
    ]),
    "custody-history": ("कस्टडी इतिहास", [
        "निवडलेल्या एसेटची संपूर्ण चेन-ऑफ-कस्टडी.",
    ]),
    "custody-investigations": ("लेखापरीक्षण तपासणी", [
        "कस्टडी वाद, विसंगती आणि इतर फ्लॅग केलेल्या एसेट घटना.",
    ]),
    "custody-liability-report": ("व्यक्तीच्या ताब्यातील एसेट", [
        "ही व्यक्ती सध्या जे काही सांभाळत आहे ते सर्व, आणि प्रत्येक वस्तूची किंमत.",
    ]),
    "custody-temp-assignments": ("तात्पुरती कस्टडी नियुक्ती", [
        "स्वयंचलित एक्सपायरी तारखेसह अल्पकालीन कस्टडी नियुक्त करा.",
    ]),

    # dashboard remainder
    "asset-portfolio": ("एसेट पोर्टफोलिओ", [
        "व्हॅल्युएशन आणि रिस्क प्रोफाइलसह एंटरप्राइझ फिजिकल एसेटचे लाइव्ह लेजर दृश्य.",
    ]),
    "auditor-dashboard": ("ऑडिटर डॅशबोर्ड", [
        "अनुपालन, लेखापरीक्षण लॉग आणि ISO 55001 सज्जता — केवळ वाचनीय.",
    ]),
    "ca-dashboard": ("CA फायनान्शियल डॅशबोर्ड", [
        "एसेटनिहाय व्हॅल्युएशन, सर्व 3 स्टॅट्युटरी बुक्समधील घसारा, आणि अनुपालन सज्जता — केवळ वाचनीय.",
    ]),
    "custodian-dashboard": ("कस्टोडियन डॅशबोर्ड", [
        "तुम्हाला नियुक्त केलेले एसेट, प्रलंबित ट्रान्सफर आणि प्रलंबित अभिस्वीकृती.",
        "खालील नोंदी पाहण्यासाठी कोणत्याही कार्डवर क्लिक करा.",
    ]),
    "planning-dashboard": ("प्लॅनिंग डॅशबोर्ड", [
        "स्ट्रॅटेजिक एसेट पोर्टफोलिओ नियोजन, लाइफसायकल सिनारिओ बिल्डिंग आणि आर्थिक अंदाज.",
    ]),
    "scenario-comparison": ("कॅपेक्स सिनारिओ तुलना", [
        "साइड-बाय-साइड तुलना करण्यासाठी जास्तीत जास्त 3 नोंदवलेले कॅपेक्स सिनारिओ निवडा.",
    ]),

    # audit-compliance
    "ai-intelligence": ("AAMS AI इंटेलिजन्स", [
        "प्रेडिक्टिव्ह मेंटेनन्स, अ‍ॅनोमली डिटेक्शन आणि एसेट लाइफसायकल इंटेलिजन्स.",
    ]),
    "verification-plans": ("फिजिकल व्हेरिफिकेशन प्लॅन", [
        "नोंदींच्या तुलनेत एसेट प्रत्यक्ष तपासण्यासाठी व्हेरिफिकेशन प्लॅन तयार करा, आणि लेखापरीक्षण लॉगच्या अखंडतेशी छेडछाड झालेली नाही याची पडताळणी करा.",
    ]),
    "asset-audit-findings": ("लेखापरीक्षण निष्कर्ष", [
        "निष्कर्ष सुटेपर्यंत लेखापरीक्षण निष्कर्ष — निरीक्षणे, तीव्रता आणि सुधारात्मक कृती — नोंदवा आणि ट्रॅक करा.",
    ]),
    "audit-history-registry": ("लेखापरीक्षण इतिहास नोंदणी", [
        "प्रत्येक लेखापरीक्षण लॉग इव्हेंटची शोधण्यायोग्य नोंद, सॅनिटाइझ्ड कॉपी एक्सपोर्ट करण्याच्या साधनांसह.",
    ]),
    "audit-timeline": ("लेखापरीक्षण टाइमलाइन", [
        "लेखापरीक्षण घटनांची कालक्रमानुसार टाइमलाइन, रिसोर्स प्रकारानुसार फिल्टर करण्यायोग्य.",
    ]),
    "compliance-center": ("अनुपालन केंद्र", [
        "दस्तऐवज एक्सपायरी मॉनिटरिंग, स्टॅट्युटरी कॅलेंडर आणि ISO 55001 संस्थात्मक सज्जता.",
    ]),
    "iso-55001-readiness": ("ISO 55001 सज्जता चेकलिस्ट", [
        "स्कोअर केलेल्या अनुपालन चेकलिस्टद्वारे ISO 55001 एसेट मॅनेजमेंट स्टँडर्डच्या तुलनेत प्रगती ट्रॅक करा.",
    ]),
    "risk-assets": ("रिस्क एसेट", [
        "लक्ष देण्याची गरज असलेले उच्च-क्रिटिकॅलिटी एसेट (क्रिटिकॅलिटी स्कोअर 3 किंवा जास्त).",
    ]),
    "security-vapt": ("सिक्युरिटी आणि VAPT गव्हर्नन्स", [
        "व्हल्नरेबिलिटी निष्कर्ष, स्कॅन, फ्रेमवर्क मूल्यांकन, सिक्युरिटी नियंत्रणे आणि लॉगिन/सेशन घटना.",
    ]),

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

    # investment-planning + budget
    "capital-plan": ("कॅपिटल प्लॅन नोंदणी", [
        "दीर्घकालीन (१०/२०/३० वर्षांचे) CapEx अंदाज परिदृश्ये (scenarios).",
    ]),
    "create-scenario": ("गुंतवणूक परिदृश्य तयार करा", [
        "निवडलेल्या कालावधीसाठी एसेट्सच्या समूहाकरिता रिपेअर-विरुद्ध-रिप्लेस NPV/TCO विश्लेषण करा.",
    ]),
    "npv-analysis": ("नूतनीकरण शिफारशी", [
        "खराब किंवा गंभीर स्थितीत असलेले उच्च-क्रिटिकॅलिटी एसेट्स — रिपेअर-विरुद्ध-रिप्लेस NPV विश्लेषणासाठी उमेदवार.",
    ]),
    "scenario-review": ("गुंतवणूक परिदृश्य आढावा", [
        "प्रत्येक एसेटसाठी रिपेअर-विरुद्ध-रिप्लेस निकाल, तसेच ISO 55001-अनुरूप SAMP कॅपिटल प्लॅन एक्सपोर्ट.",
    ]),
    "tco-analysis": ("एकूण मालकी खर्च (Total Cost of Ownership)", [
        "परिदृश्यातील एसेट्ससाठी रिपेअर/रिप्लेस पर्यायांमधील TCO तुलना.",
    ]),
    "budget-allocation": ("अर्थसंकल्प वाटप", [
        "अर्थसंकल्प ओळी (budget lines) तयार करा आणि त्यांना मंजुरी द्या.",
        "मेकर-चेकर — मंजूर करणारा व्यक्ती तयार करणाऱ्यापेक्षा वेगळा असणे आवश्यक आहे.",
    ]),
    "budget-impact": ("अर्थसंकल्प परिणाम", [
        "वर्षअखेरचा अंदाज (वर्ष-ते-आतापर्यंतचे प्रत्यक्ष आकडे अधिक बांधिलकी अधिक बर्न रेट) आणि अर्थसंकल्प-विरुद्ध-प्रत्यक्ष तफावत.",
    ]),
    "virement-approvals": ("अर्थसंकल्प व्हायरमेंट", [
        "मंजूर अर्थसंकल्पाचे एका शीर्षकावरून (head) दुसऱ्या शीर्षकाकडे हस्तांतरण विनंती करा — वेगळ्या युजरने मंजुरी देणे आवश्यक आहे.",
        "यामध्ये 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).",
        "येथे \"नाकारणे\" (reject) अशी कोणतीही कृती नाही; बदल नाकारायचा असल्यास तो मंजूर न करता तसाच ठेवावा.",
    ]),
    "master-records": ("मास्टर डेटा रेकॉर्ड्स", [
        "ऑपरेशनल लेजर शीट्समध्ये वापरल्या जाणाऱ्या मुख्य वर्गीकरण श्रेणींचा एकत्रित संग्रह.",
    ]),
    "asset-classes": ("एसेट क्लासेस", [
        "एसेट गटवारी, घसारा (डेप्रिसिएशन) पॅरामीटर्स आणि प्रमाणित कार्यकाळ कॉन्फिगर करा.",
    ]),
    "asset-categories": ("एसेट श्रेण्या", [
        "एसेट क्लासचे उप-गट — मेकर-चेकर मंजुरीद्वारे नियंत्रित.",
    ]),
    "asset-subcategories": ("एसेट उप-श्रेण्या", [
        "एसेट श्रेणीमधील अधिक सूक्ष्म गटवारी.",
    ]),
    "vendor-masters": ("वेंडर मास्टर्स नोंदणी", [
        "अधिकृत एंटरप्राइझ पुरवठादार, मेंटेनन्स वेंडर आणि स्पेअर-पार्ट्स पुरवठादारांची नोंदणी.",
    ]),
    "tax-masters": ("टॅक्स मास्टर्स", [
        "GST दर स्लॅब आणि HSN/SAC कोड शोध.",
        "फक्त वाचनीय — GSTN सिंकद्वारे (Financial Masters पेज) राखले जाते, येथे संपादित केले जात नाही.",
    ]),
    "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": ("प्रिव्हेंटिव्ह मेंटेनन्स (PM) वेळापत्रक", [
        "वेळ किंवा वापराच्या अंतरावर आधारित एसेट्ससाठी नियोजित आवर्ती मेंटेनन्स.",
    ]),
    "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": ("वर्कफ्लो टेम्प्लेट्स", [
        "मॉड्यूल/ट्रिगर इव्हेंटनुसार मंजुरी साखळी — टप्पे, मंजूरकर्ते आणि SLAs — परिभाषित करा.",
    ]),
}


def build_values() -> dict:
    values = {}
    for page_key, (title, body) in PAGES_MR.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 = :lc"),
            {"kid": key_id, "lc": LANGUAGE_CODE},
        )).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, :lc, :val, NULL, :now)"""),
                {"id": str(uuid.uuid4()), "kid": key_id, "lc": LANGUAGE_CODE, "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 {LANGUAGE_CODE} 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_MR)} pages / {len(values)} values.")


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