feat: /qe-fleet run 安徽运八需求 + 系统坑修复
系统修复: - fleet_runner.py: Windows UTF-8 编码兼容(reconfigure stdout/stderr) - fleet_runner.py: run 命令自动生成合并清单供导出使用 - fleet_manifest.py: 新增 save_merged_manifest() 保存统一清单 - fleet_config.yml: 修复 YAML keywords 格式(block sequence → flow sequence) - 恢复被误删的知识库文件(payment_flow_cases, marketing_activity_cases) QE Fleet 产物 (安徽运八需求): - 153个测试点 + 53条可执行测试用例 - 需求分析/风险评估/测试策略/质量裁决(PASS) - Excel 导出 + 版本快照 v2 - 确认结论文件已归档
This commit is contained in:
@@ -86,6 +86,17 @@ def build_merged_manifest(base_name: str, zones: list[str] | None = None) -> dic
|
||||
return merged
|
||||
|
||||
|
||||
def save_merged_manifest(base_name: str, zones: list[str] | None = None) -> Path:
|
||||
"""合并所有战区 manifest 并保存为统一清单文件(供导出等步骤使用)。"""
|
||||
merged = build_merged_manifest(base_name, zones)
|
||||
ensure_manifests_dir()
|
||||
path = MANIFESTS_DIR / f"{base_name}.json"
|
||||
merged.setdefault("_meta", {})
|
||||
merged["_meta"]["updated_at"] = datetime.now(timezone.utc).isoformat()
|
||||
path.write_text(json.dumps(merged, ensure_ascii=False, indent=2) + "\n", encoding="utf-8")
|
||||
return path
|
||||
|
||||
|
||||
def get_zone_status(base_name: str) -> dict[str, str]:
|
||||
"""返回各战区完成状态。"""
|
||||
status: dict[str, str] = {}
|
||||
|
||||
@@ -20,9 +20,15 @@ from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
import subprocess
|
||||
from datetime import datetime, timezone
|
||||
|
||||
# Windows GBK 编码兼容:强制 stdout/stderr 使用 UTF-8
|
||||
if sys.platform == "win32":
|
||||
sys.stdout.reconfigure(encoding="utf-8", errors="replace")
|
||||
sys.stderr.reconfigure(encoding="utf-8", errors="replace")
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
@@ -52,6 +58,7 @@ from fleet_manifest import (
|
||||
load_manifest,
|
||||
load_manifest_safe,
|
||||
build_merged_manifest,
|
||||
save_merged_manifest,
|
||||
get_zone_status,
|
||||
mark_zone_completed,
|
||||
manifest_path,
|
||||
@@ -1670,6 +1677,10 @@ def main() -> None:
|
||||
|
||||
# 自动导出
|
||||
if args.command == "run" and not args.skip_export:
|
||||
# 先生成合并清单(export 需要统一清单文件)
|
||||
merged_path = save_merged_manifest(base_name)
|
||||
print(f"\n📋 合并清单已生成: {to_repo_relative(merged_path)}")
|
||||
|
||||
review_manifest = load_manifest_safe(base_name, "review")
|
||||
if review_manifest:
|
||||
verdict = review_manifest.get("quality_verdict", {}).get("verdict")
|
||||
|
||||
Reference in New Issue
Block a user