| 12345678910111213141516171819202122232425262728293031323334353637 |
- #!/usr/bin/env python3
- """windcms CLI: report | serve | kb | ask | ingest. 例: .venv/bin/python scripts/windcms.py report --farm rudong"""
- import sys, argparse
- from pathlib import Path
- sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
- from src.windcms import config
- def main():
- ap = argparse.ArgumentParser(); sub = ap.add_subparsers(dest='cmd', required=True)
- r = sub.add_parser('report'); r.add_argument('--farm', default='rudong'); r.add_argument('--turbines', nargs='*'); r.add_argument('--no-polish', dest='polish', action='store_false', help='关闭离线千问润色 (默认开: 报警台分析段由本地 Qwen 按书面工程汉语改写, 接地闸把关, 无模型自动回退模版文)')
- s = sub.add_parser('serve'); s.add_argument('--farm', default='rudong'); s.add_argument('--port', type=int, default=8020); s.add_argument('--model', default=None)
- k = sub.add_parser('kb'); k.add_argument('--farm', default='rudong')
- q = sub.add_parser('ask'); q.add_argument('--farm', default='rudong'); q.add_argument('question'); q.add_argument('--model', default=None)
- i = sub.add_parser('ingest'); i.add_argument('--farm', default='rudong'); i.add_argument('--rar', required=True); i.add_argument('--window', required=True)
- z = sub.add_parser('analyze', help='原始数据 → 报告 全链: [--input 导出包/解码目录/波形目录 --window wXXXX] 扫线→能量占比→六层→融合→报告→知识库')
- z.add_argument('--farm', default='rudong'); z.add_argument('--input', default=None); z.add_argument('--window', default=None)
- z.add_argument('--steps', nargs='*', default=None, help='子集: ingest oem_scan energy_share model_run fusion report kb'); z.add_argument('--bands', default='ALL')
- a = ap.parse_args(); cfg = config.farm(a.farm); cfg['key'] = a.farm
- if a.cmd == 'report':
- from src.windcms import report, report_std
- report.build(cfg, a.turbines)
- report_std.build(cfg, llm_polish=a.polish)
- elif a.cmd == 'kb':
- from src.windcms import knowledge; knowledge.build(cfg)
- elif a.cmd == 'ask':
- from src.windcms import orchestrator; print(orchestrator.ask(cfg, a.question, model=a.model)['answer'])
- elif a.cmd == 'serve':
- from src.windcms import serve; serve.run(cfg, a.port, model=a.model)
- elif a.cmd == 'analyze':
- from src.windcms import pipeline
- s = pipeline.analyze(cfg, input_path=a.input, window=a.window, steps=a.steps, bands=a.bands)
- sys.exit(0 if s['status'] == 'ok' else 1)
- elif a.cmd == 'ingest':
- import subprocess; subprocess.check_call([sys.executable, str(Path(__file__).parent / 'rudong_tcm_ingest_raw.py'), '--rar', a.rar, '--window', a.window])
- if __name__ == '__main__':
- main()
|