demo: 全量报告侧车文件含模型名与耗时

competitor_analysis__fulltest_<slug>_时间戳;stdout 输出 model 与 elapsed_sec。

Made-with: Cursor
This commit is contained in:
hub-gif 2026-04-27 14:29:29 +08:00
parent e2c0d3289d
commit 7b33af8a37

View File

@ -1,8 +1,10 @@
"""
在已有流水线目录上重生成报告**将产出的 Markdown 以测试文件名落盘**不长期覆盖 ``competitor_analysis.md``
- 若目录下已有 ``competitor_analysis.md``先复制为 ``competitor_analysis__pre_test_<时间戳>.md``再重生成再把**新生成**内容复制为 ``competitor_analysis__llmtest_<时间戳>.md``最后把**原内容**写回 ``competitor_analysis.md``
- 若原本没有主报告重生成后复制一份为 ``...__llmtest_...``主文件即新生成结果
- 若目录下已有 ``competitor_analysis.md``先复制为 ``competitor_analysis__pre_test_<时间戳>.md``再重生成再把**新生成**内容复制为 ``competitor_analysis__fulltest_<模型简写>_<时间戳>.md``简写来自当前环境 ``OPENAI_TEXT_MODEL``若未设则回退 ``OPENAI_VISION_MODEL``最后把**原内容**写回 ``competitor_analysis.md``
- 若原本没有主报告重生成后复制一份为 ``...__fulltest_...``主文件即新生成结果
对比两种纯文本模型时可在**启动进程前** shell 中设置 ``OPENAI_TEXT_MODEL=...``优先于 .env 同项全量重跑两次用文件名中的模型段区分stderr 会打印 ``elapsed_sec``所用模型名
用法 backend 已配置 Django .env::
@ -15,8 +17,10 @@
from __future__ import annotations
import os
import re
import shutil
import sys
import time
from datetime import datetime
from pathlib import Path
@ -33,6 +37,21 @@ django.setup()
from pipeline.jd.runner import regenerate_competitor_report # noqa: E402
def _model_label_for_env() -> str:
return (
(os.environ.get("OPENAI_TEXT_MODEL") or os.environ.get("OPENAI_VISION_MODEL") or "default")
.strip()
)
def _model_slug_for_filename() -> str:
raw = _model_label_for_env()
s = raw.replace("/", "__").replace("\\", "_")
s = re.sub(r'[<>:"|?*]+', "_", s)
s = re.sub(r"[^\w.\-]+", "_", s).strip("._-") or "model"
return s[:100]
def _default_run_dir() -> Path:
custom = (os.environ.get("MA_TEST_RUN_DIR") or "").strip()
if custom:
@ -85,19 +104,25 @@ def main() -> int:
else:
report_config = None
ts = datetime.now().strftime("%Y%m%d_%H%M%S")
slug = _model_slug_for_filename()
mlabel = _model_label_for_env()
main = run_dir / "competitor_analysis.md"
pre_bak = run_dir / f"competitor_analysis__pre_test_{ts}.md"
out_test = run_dir / f"competitor_analysis__llmtest_{ts}.md"
out_test = run_dir / f"competitor_analysis__fulltest_{slug}_{ts}.md"
had_main = main.is_file()
if had_main:
shutil.copy2(main, pre_bak)
print("run_dir:", run_dir, file=sys.stderr)
print("keyword:", kw, file=sys.stderr)
print("OPENAI_TEXT_MODEL (effective for text):", mlabel, file=sys.stderr)
print(
"regenerating (full config, may take long; set MA_TEST_REPORT_FAST=1 for quick) ...",
file=sys.stderr,
)
t0 = time.perf_counter()
regenerate_competitor_report(str(run_dir), kw, report_config=report_config)
elapsed = time.perf_counter() - t0
print("elapsed_sec:", round(elapsed, 2), file=sys.stderr)
if not main.is_file():
print("未生成 competitor_analysis.md", file=sys.stderr)
return 2
@ -105,6 +130,8 @@ def main() -> int:
if had_main and pre_bak.is_file():
shutil.copy2(pre_bak, main)
print("test_output:", out_test)
print("elapsed_sec:", round(elapsed, 2))
print("model:", mlabel)
if had_main:
print("restored:", main, "from", pre_bak, file=sys.stderr)
return 0