Files
inquiry_robot/inquiry-agent/scripts/smoke_quote_template_ai.py
T

72 lines
2.4 KiB
Python

# -*- coding: utf-8 -*-
"""本地冒烟:sheet_map 解析 + 桌面 8 张样表可读。不打千问。"""
from __future__ import annotations
import importlib.util
import sys
import types
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
DESK = Path(r"C:/Users/Administrator/Desktop/海陆空报价单模板最新-0917/海陆空报价单模板最新-0917")
def load_sheet_map():
llm_mode = types.ModuleType("agent.llm.modes")
class LlmMode:
class SHEET_MAP:
value = "sheet_map"
llm_mode.LlmMode = LlmMode
sys.modules.setdefault("agent", types.ModuleType("agent"))
sys.modules.setdefault("agent.llm", types.ModuleType("agent.llm"))
sys.modules["agent.llm.modes"] = llm_mode
path = ROOT / "agent" / "llm" / "mode_sheet_map.py"
spec = importlib.util.spec_from_file_location("mode_sheet_map", path)
mod = importlib.util.module_from_spec(spec)
assert spec.loader is not None
spec.loader.exec_module(mod)
return mod
def main() -> None:
mod = load_sheet_map()
out = mod.parse_mapping_json('{"fields":{"quote_no":"S!A1"},"feeRegions":[]}')
assert out["ok"], out
fenced = mod.strip_json_fence('```json\n{"a":1}\n```')
assert '"a"' in fenced or "a" in fenced
msg = mod.build_user_message(
{
"transportMode": "land",
"fileName": "陆运.xlsx",
"sheet": "Sheet1",
"cellInventory": ["Sheet1!A1 | 客户 | - | FFFF00"],
}
)
assert "陆运" in msg
prompt = ROOT / "agent" / "quote_templates" / "prompts" / "mapping_analyzer.txt"
assert prompt.is_file() and prompt.stat().st_size > 1000, prompt
print("sheet_map helpers OK")
assert DESK.is_dir(), f"missing desktop dir: {DESK}"
files = sorted(list(DESK.glob("*.xlsx")) + list(DESK.glob("*.xlsx.xlsx")))
assert len(files) >= 8, f"expected >=8 templates, got {len(files)}"
try:
import openpyxl
except ImportError:
print(f"desktop files present: {len(files)} (openpyxl not installed, skip cell count)")
for f in files:
print(" -", f.name)
return
for f in files:
wb = openpyxl.load_workbook(f, data_only=False)
ws = wb.active
n = sum(1 for row in ws.iter_rows(max_row=100, max_col=24) for c in row if c.value is not None)
print(f"{f.name}: sheet={ws.title} nonempty≈{n}")
print("desktop 8 templates readable OK")
if __name__ == "__main__":
main()