Initial SQL-only 1C adapter baseline
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
DEFAULT_INPUT = ROOT / "plugins" / "1c" / "metadata" / "examples" / "bsl-modules.example.json"
|
||||
DEFAULT_OUTPUT = ROOT / "plugins" / "1c" / "rag" / "sources" / "bsl-modules.generated.md"
|
||||
|
||||
|
||||
def module_to_markdown(module: dict) -> str:
|
||||
lines = [
|
||||
f"## Модуль: {module.get('module_id')}",
|
||||
"",
|
||||
f"Объект: {module.get('object_name')}",
|
||||
f"Тип объекта: {module.get('object_kind', 'не указан')}",
|
||||
f"Тип модуля: {module.get('module_type')}",
|
||||
"",
|
||||
]
|
||||
procedures = module.get("procedures") or []
|
||||
functions = module.get("functions") or []
|
||||
if procedures:
|
||||
lines.extend(["### Процедуры", ""])
|
||||
for proc in procedures:
|
||||
export = " Экспорт" if proc.get("export") else ""
|
||||
params = ", ".join(proc.get("params") or [])
|
||||
lines.append(f"- {proc.get('name')}({params}){export}")
|
||||
lines.append("")
|
||||
if functions:
|
||||
lines.extend(["### Функции", ""])
|
||||
for func in functions:
|
||||
export = " Экспорт" if func.get("export") else ""
|
||||
params = ", ".join(func.get("params") or [])
|
||||
lines.append(f"- {func.get('name')}({params}){export}")
|
||||
lines.append("")
|
||||
refs = module.get("references") or []
|
||||
if refs:
|
||||
lines.extend(["### Ссылки", ""])
|
||||
for ref in refs:
|
||||
lines.append(f"- {ref}")
|
||||
lines.append("")
|
||||
lines.extend(["### Код", "", "```bsl", module.get("content") or "", "```"])
|
||||
return "\n".join(lines)
|
||||
|
||||
|
||||
def main() -> int:
|
||||
parser = argparse.ArgumentParser(description="Convert 1C BSL module snapshot to Markdown RAG source.")
|
||||
parser.add_argument("--input", type=Path, default=DEFAULT_INPUT)
|
||||
parser.add_argument("--output", type=Path, default=DEFAULT_OUTPUT)
|
||||
args = parser.parse_args()
|
||||
with args.input.open("r", encoding="utf-8") as handle:
|
||||
snapshot = json.load(handle)
|
||||
sections = [
|
||||
"# 1C BSL Module Snapshot",
|
||||
"",
|
||||
f"Источник: {(snapshot.get('source') or {}).get('name', 'unknown')}",
|
||||
f"Дата снимка: {snapshot.get('created_at', 'unknown')}",
|
||||
"",
|
||||
]
|
||||
for module in snapshot.get("modules") or []:
|
||||
sections.append(module_to_markdown(module))
|
||||
sections.append("")
|
||||
args.output.parent.mkdir(parents=True, exist_ok=True)
|
||||
args.output.write_text("\n".join(sections).strip() + "\n", encoding="utf-8")
|
||||
print(f"Wrote BSL RAG source to {args.output}")
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
Reference in New Issue
Block a user