PR #1005 测试报告

feat: Factory V3 → Main 分批搬运(新旧并存) | 测试时间:2026-06-25 23:17 – 2026-06-26 01:00

测试环境

测试结果总览

方案 路由 创建会话 智能体开发 应用可访问 发布到 OS
vibe-coding-v2 /studio/vibe-coding ✅ 正常 ✅ 完成 ✅ :25006 ✅ 已上线
factory-v2 (ship-attack) /ship-attack ✅ 正常 ✅ 完成 ⚠️ 沙盒内 5000 ✅ 已上线
factory-v3 (app-dev) /studio/app-dev ✅ 正常 ✅ 完成 ✅ :21006 + :25004 ✅ 已上线

详细测试记录

1. vibe-coding-v2(软件工厂)

2. factory-v2(ship-attack)

3. factory-v3(app-dev,PR #1005 新增)

Docker 容器一览(测试期间)

blade-user-1-default-2026-0625-1522-9z7b   # factory-v3 沙盒 (21006-21008)
blade-2026-0625-1520-d3a0-default-f165df   # factory-v2 沙盒 (21003-21005)
blade-2026-0625-1519-kecn-default-b9586d   # vibe-coding 沙盒 (21000-21002)
blade-deploy-2026-0625-1519-kecn-73f6c2    # vibe-coding 发布容器 (25004)
blade-os                                    # Blade OS (80) healthy
skill-registry                              # 技能注册中心 (8010) healthy
blade-deploy-2026-0622-*                    # 历史部署 (25001-25003) 均正常

结论

✅ PR #1005 未引入功能回退

三个软件开发方案(vibe-coding-v2、factory-v2、factory-v3)的核心流程全部正常:

⚠️ 已知问题(非回退,已修复)

修复记录

问题:部署后前端页面无法访问

症状blade deploy 成功后,访问应用 URL (25004) 返回 {"message":"Welcome to FastAPI Backend"},前端页面不可见。

根因:模板 coding_templates/*/backend/app.py 没有 StaticFiles mount。开发阶段靠 Vite dev server 独立 serve 前端,但部署阶段只运行后端进程,frontend/dist/ 构建产物无人 serve。

对比:历史成功部署(如态势推演系统 25003)是因为智能体在开发过程中手动添加了 StaticFiles mount 代码,但这不可靠。

修复方案:在模板 backend/app.py 中加入自动检测逻辑:

_FRONTEND_DIST = Path(__file__).resolve().parent.parent / "frontend" / "dist"
if _FRONTEND_DIST.is_dir():
    # 部署模式:serve 前端构建产物
    app.mount("/assets", StaticFiles(directory=_FRONTEND_DIST / "assets"), name="assets")
    @app.get("/{full_path:path}")
    async def serve_frontend(full_path: str):
        return FileResponse(_FRONTEND_DIST / "index.html")
else:
    # 开发模式:前端由 Vite dev server 独立提供
    @app.get("/")
    async def root():
        return {"message": "Welcome to FastAPI Backend"}

修改文件

问题 2:Factory-v3 项目 Bootstrap 完全失败(PR #1005 回退 Bug)

症状:创建 Factory-v3 (app-dev) 项目后,智能体没有自动初始化(不创建 Gitea 仓库、不显示项目信息),对话区空白。

根因host/src/blade_agent/host/_chat_service.pyChatService.__call__() 在 PR 搬运时丢失了 display_message 参数,导致 agent_board.py_run_bootstrap() 调用时抛出 TypeError: ChatService.__call__() got an unexpected keyword argument 'display_message',bootstrap 静默失败。

修复:在 _chat_service.py__call__ 方法中补回 display_message: Any | None = None 参数及其传递。

验证:修复后创建新项目,bootstrap 消息正确显示(项目ID、名称、描述、文件夹、仓库状态),与 124 服务器上 public-factory-v3 分支的行为一致。Gitea 仓库 dev/app-3 成功创建。

设计要点