72 lines
2.4 KiB
Python
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()
|