Loading module
Resolving locale, route permissions, and workspace projection.
Resolving locale, route permissions, and workspace projection.
Current scope: Guest
Category: 10_normative | Version: v1.0.0
Owner: DOCUMENT_CUSTODIAN | Review cycle: 90 days
Approval authority: GOVERNANCE_ADMIN
Documentation portal is read-only. Editing and mutation endpoints are disabled.
Kvary platformu aslen Gürcüce oluşturulmuştur. Gürcüce bir sürüm mevcut olduğunda platform arayüzü, dokümantasyon ve hukuki yorum bakımından yetkili dil Gürcücedir.
Diğer dillere yapılan çeviriler kolaylık sağlamak amacıyla sunulur. Bazı kayıtlar belirli bir akış için farklı bir kaynak veya hukuki yerel ayar taşıyabilir; ancak Gürcüce bir sürüm mevcut olduğunda platform düzeyindeki ifadeler ve yorum bakımından öncelik Gürcüce sürümdedir.
Metadata incomplete: Document ID, Version, Status, Owner Role, Last Review Date, Next Review Date, Change Log
Preferred ingestion path is deterministic parser (xlsx -> JSON payload -> upsert).
Use RAG/chunking only for semantic search and assistant UX, not as source-of-truth ingest.
butkhuzi_norms supports localized titles via title_i18n JSON map.
Upsert payload row can include:
{
"title": "Основной заголовок",
"titleI18n": {
"ru": "Основной заголовок",
"en": "Primary heading",
"ka": "ძირითადი სათაური"
}
}
Component rows can also include localized labels via components[].labelI18n.
127.0.0.1:5432services/api and services/svc-tenders)openpyxl is required for XLSX parser)/mnt/c/Users/User/Downloads/სახარჯთაღრიცხვო გაანგარიშება_ ტომი V-2.xlsxnpm --prefix services/svc-tenders run migrate
This creates butkhuzi_norms table.
npm run butkhuzi:build-payload:xlsx -- \
--inputXlsx "/mnt/c/Users/User/Downloads/სახარჯთაღრიცხვო გაანგარიშება_ ტომი V-2.xlsx" \
--sourceVersion "SNIP-2026-Q1"
Outputs:
tmp/outputs/butkhuzi_upsert_payload_xlsx.json (or custom --output)tmp/outputs/butkhuzi_build_report_xlsx.json (or custom --report)Direct python invocation (WSL-safe):
python3 scripts/butkhuzi-build-payload-xlsx.py \
--inputXlsx "/mnt/c/Users/User/Downloads/სახარჯთაღრიცხვო გაანგარიშება_ ტომი V-2.xlsx" \
--sourceVersion "SNIP-2026-Q1" \
--output "tmp/outputs/butkhuzi_upsert_payload_v2_xlsx.json" \
--report "tmp/outputs/butkhuzi_build_report_v2_xlsx.json"
npm run butkhuzi:build-payload -- --sourceVersion "SNIP-2026-02"
Optional (fast test on first files only):
npm run butkhuzi:build-payload -- --maxFiles 3
npm run butkhuzi:upsert
Upsert custom payload path (recommended after XLSX parse):
npm run butkhuzi:upsert -- --input tmp/outputs/butkhuzi_upsert_payload_v2_xlsx.json
Dry run:
npm run butkhuzi:upsert -- --dry-run
Default URL:
http://localhost:4001/api/v1/butkhuzi/upsertNotes:
sourceVersion is strongly recommended per import batch (for example: SNIP-2026-Q1).UNVERSIONED.Direct svc-tenders URL:
npm run butkhuzi:upsert -- --url http://localhost:4020/butkhuzi/upsert
curl "http://localhost:4001/api/v1/butkhuzi/norms?page=1&pageSize=20&sourceKey=SNIP&sourceVersion=SNIP-2026-Q1"
curl "http://localhost:4001/api/v1/butkhuzi/suggest?query=1-1&limit=10&sourceKey=SNIP&sourceVersion=SNIP-2026-Q1"
npm run butkhuzi:smoke
After norms are upserted, rebuild chunk index:
curl -X POST "http://localhost:4001/api/v1/butkhuzi/chunks/rebuild" \
-H "content-type: application/json" \
-d '{"sourceKey":"SNIP","sourceVersion":"SNIP-2026-Q1"}'
Search chunks:
curl "http://localhost:4001/api/v1/butkhuzi/search?query=экскаваторы&sourceKey=SNIP&sourceVersion=SNIP-2026-Q1&page=1&pageSize=25"