diff --git a/README.md b/README.md index 885bb5f..c284ac8 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ FieldPilot 面向经常跨省市出差的外勤人员,把口语描述中的地 [FieldPilot 在线项目站](https://fieldpilot-kxh.netlify.app/) 使用 Vite `showcase` 构建模式展示业务问题、Agent Harness 组成、完整运行链路、Eval 驱动修正、检查点后缀重规划和验证边界;同一构建的 [`/workbench`](https://fieldpilot-kxh.netlify.app/workbench) 连接 [Render API](https://fieldpilot-api-t7m6.onrender.com/api/health),可实际完成任务解释、持久化、规划、执行检查点与事件式重规划。 -当前生产部署为 Netlify deploy `6a6f2177f207a9dccf2184db`。已验证根路径与 `/workbench` 返回 HTTPS 200、指纹化 JS/CSS 由 CDN 正确提供,CSP 只允许指定 Render API;Render 只向正式 Netlify origin 返回 CORS 许可,随机预览域名会被拒绝。在线浏览器已显示 `API ok`,杭州示例解析为可提交的两任务严格草案。 +当前生产部署为 Netlify deploy `6a7b65c4c0df50fb6e96d2b5`,后端为 Render `0.6.0`。已验证根路径与 `/workbench` 返回 HTTPS 200、指纹化 JS/CSS 由 CDN 正确提供,CSP 只允许指定 Render API;Render 只向正式 Netlify origin 返回 CORS 许可,随机 origin 不获得许可。在线浏览器已显示 `API ok`,并完成杭州示例的解析、方案生成与激活。 ## 本地运行 @@ -146,7 +146,7 @@ cd ..\frontend npm run build ``` -当前结果(2026-08-10):后端 `55 passed`;本地 SQLite 已完成 Alembic `20260810_0005 (head)` 升级、schema check、回退与重升;真实 Uvicorn HTTP 进程完成 R1~R5 smoke,覆盖任务改期、预算快照、交通取消、天气风险和严格前缀保护;完整工作台与项目专题两种前端生产构建成功。Kimi K2.6 的既有 15 场景最终全量 run 为 15/15 live、状态与安全标签准确率 100%、选定字段精确率 94.87%、澄清字段精确率 93.33%,每个代码版本每场景调用一次,不声明跨重复稳定率。上一版公网链路已验证;`0.6.0` 的 Neon/Render/Netlify 生产发布需在合并审批后执行。详细记录见 [开发日志](docs/development-log.md)。 +当前结果(2026-08-12):后端 `55 passed`;本地 SQLite 已完成 Alembic `20260810_0005 (head)` 升级、schema check、回退与重升;真实 Uvicorn 与 Render 公网环境均完成 R1~R5 smoke,覆盖任务改期、预算快照、交通取消、天气风险和严格前缀保护;完整工作台与项目专题两种前端生产构建成功。Kimi K2.6 的既有 15 场景最终全量 run 为 15/15 live、状态与安全标签准确率 100%、选定字段精确率 94.87%、澄清字段精确率 93.33%,每个代码版本每场景调用一次,不声明跨重复稳定率。`0.6.0` 已部署至 Neon/Render/Netlify;公开环境仍明确使用 Mock LLM 与 Fixture Provider。详细记录见 [开发日志](docs/development-log.md)。 运行中的完整 HTTP 冒烟(需要先启动后端): diff --git a/docs/agent-harness.md b/docs/agent-harness.md index bfac95e..85ca29a 100644 --- a/docs/agent-harness.md +++ b/docs/agent-harness.md @@ -125,6 +125,6 @@ FieldPilot 不把无限增长的聊天记录当作业务上下文,也不需要 ## 9. 当前诚实边界 -本地 `0.6.0` 已验证的是:55 项后端回归、Alembic `20260810_0005` 往返、不可变政策版本、授权人工库存导入、交通/天气候选过滤、工作台与专题页双构建;上一版还验证了 Neon、Render/Netlify 公网链路、R1/R2 smoke、重启后持久化、精确 CORS,以及上述 Kimi Live Eval。 +`0.6.0` 已验证的是:55 项后端回归、Alembic `20260810_0005` 往返、不可变政策版本、授权人工库存导入、交通/天气候选过滤、工作台与专题页双构建;Neon、Render/Netlify 公网链路完成 R1~R5 smoke、政策版本查询、精确 CORS 与浏览器工作台复验,并保留上述 Kimi Live Eval。 -尚未验证的是:真实高德 Key 的生产运行、自动同步的铁路/航班/酒店实时库存、生产限流、多租户身份隔离和 SLA;`0.6.0` 的公网迁移与部署也需在发布审批后复验。FieldPilot 展示的是可运行、可解释、可重规划的工程闭环,不声称已经具备真实下单能力或全局最优求解。 +尚未验证的是:真实高德 Key 的生产运行、自动同步的铁路/航班/酒店实时库存、生产限流、多租户身份隔离和 SLA。FieldPilot 展示的是可运行、可解释、可重规划的工程闭环,不声称已经具备真实下单能力或全局最优求解。 diff --git a/docs/architecture.md b/docs/architecture.md index 3481c33..d141911 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -76,4 +76,4 @@ SQLAlchemy/Alembic 管理 Mission、VisitTask、ExpensePolicyVersion、PlanRevis ## 8. 交付边界 -本地 `0.6.0` 已验证 SQLite、55 项 Pytest、Alembic `20260810_0005` 往返、不可变政策版本、授权人工库存、风险候选过滤,以及工作台/专题页两种 Vue 生产构建。上一版 Neon、Render Docker/FastAPI 与 Netlify 已完成 health/ready、R1/R2 smoke、精确 CORS、持久化和重启恢复验证;Kimi K2.6 已完成 15 场景真实模型评测。公开环境继续使用 Mock LLM 与 Fixture Provider;`0.6.0` 公网升级需在发布审批后复验,不具备真实预订、生产限流、多租户隔离或 SLA。 +`0.6.0` 已验证 SQLite、55 项 Pytest、Alembic `20260810_0005` 往返、不可变政策版本、授权人工库存、风险候选过滤,以及工作台/专题页两种 Vue 生产构建;Neon、Render Docker/FastAPI 与 Netlify 已完成 health/ready、R1~R5 smoke、政策历史、精确 CORS、SPA/CSP 和浏览器工作台复验。Kimi K2.6 已完成 15 场景真实模型评测。公开环境继续使用 Mock LLM 与 Fixture Provider,不具备真实预订、生产限流、多租户隔离或 SLA。 diff --git a/docs/deployment-free-tier.md b/docs/deployment-free-tier.md index 1ae9502..9fbc831 100644 --- a/docs/deployment-free-tier.md +++ b/docs/deployment-free-tier.md @@ -42,7 +42,7 @@ Invoke-RestMethod "$apiBase/api/ready" ## 当前状态 -截至 2026-08-10,三层免费拓扑的上一版已上线:Netlify 项目站与工作台为 和 `/workbench`,Render API 为 ,数据进入 Neon `fieldpilot` PostgreSQL。初始生产容器部署 commit 为 `bc53426`,当前已记录的 Netlify 生产 deploy 为 `6a6f2177f207a9dccf2184db`。`0.6.0` 仍是发布候选,需合并后迁移并复验。 +截至 2026-08-12,三层免费拓扑的 `0.6.0` 已上线:Netlify 项目站与工作台为 和 `/workbench`,Render API 为 ,数据进入 Neon `fieldpilot` PostgreSQL。生产合并 commit 为 `c41b51b`,Netlify 生产 deploy 为 `6a7b65c4c0df50fb6e96d2b5`;已完成 health/ready、R1~R5 smoke、政策版本查询、CORS、SPA/CSP 和浏览器主链路复验。 已取得的上线证据: diff --git a/docs/development-log.md b/docs/development-log.md index a726281..ddc77ff 100644 --- a/docs/development-log.md +++ b/docs/development-log.md @@ -370,3 +370,12 @@ Stage 4B:增加 AgentRun/DecisionTrace 持久化与请求幂等,建立版本 - 公网只读复核确认 Netlify 首页/工作台均为 200,Render health/ready 可用;线上仍为 `0.5.0-dev`、Mock LLM、Fixture Provider,未把本地 `0.6.0` 能力误记为已发布。 - 本地启动真实 Uvicorn HTTP 进程执行扩展 smoke,依次生成 R1~R5,覆盖任务改期、预算快照、交通取消和天气风险;四类事件均为 `applied`,政策快照序列为 2,R3 绑定当前快照,取消候选未进入 R4,且检查点受保护前缀逐段不变。 - 当前仍是本地发布候选。Neon `0005`、Render `0.6.0`、Netlify 新产物、生产 smoke 和真实高德 Key 验收均保留到人工审批后执行,未把本地证据写成公网事实。 + +## 2026-08-12|Stage 17:0.6.0 生产发布与全链路复验 + +- 发布分支通过 PR #15 合并为 `main@c41b51b`;两次 PR CI 与合并后 main CI 均通过,包含 55 项测试、Alembic 往返、真实 HTTP smoke 和工作台/showcase 双构建。 +- Render 自动部署后 `/api/health` 报告 `0.6.0`,`/api/ready` 确认 Neon reachable;新就绪字段表明 Amap、LLM 与 manual inventory 未配置,公开运行模式仍为 Mock/Fixture。 +- Netlify 生产 deploy `6a7b65c4c0df50fb6e96d2b5` 上线。根路径、`/workbench`、SPA 回退、指纹化资源、CSP 和 `0.6.0`/`55 passed` 页面口径均通过。 +- 生产 R1~R5 smoke 创建 Mission `msn-cd05f03d864b4dd78a07`;四类事件均 applied,政策快照 sequence 1→2 且 R3 绑定新快照,取消候选被排除,五段受保护前缀保持不变。 +- CORS 正例只返回正式 Netlify origin,随机 origin 无许可;真实浏览器显示 `API ok` 与 Mock/Fixture 边界,并完成杭州示例的解析、方案生成和激活。 +- 真实高德 Web Service Key 尚未配置,仍不声明线上实时路线、餐饮、票价、酒店库存或预订能力。 diff --git a/docs/release-readiness.md b/docs/release-readiness.md index 98cd609..cb07b98 100644 --- a/docs/release-readiness.md +++ b/docs/release-readiness.md @@ -1,10 +1,12 @@ # FieldPilot 0.6.0 发布验收清单 -验收日期:2026-08-10 +验收日期:2026-08-12 发布候选分支:`release/fieldpilot-closure-20260810` -发布前稳定回滚点:`134d436`(当前 `main`,上一版公网项目站与后端已验证) +发布前稳定回滚点:`134d436` + +生产合并点:`c41b51b`(PR #15) ## 本地已验证 @@ -29,19 +31,21 @@ - [x] 三轮数据来自三个代码版本,每个版本每场景调用一次;不把它表述为同一版本三次重复,也不声明跨重复稳定率。 - [x] Live Eval 与 Mock 数据集、指标和 artifact 分离;任何 fallback 都会让 Live 工作流失败。 -## 上一版公网已验证 +## 0.6.0 公网已验证 - [x] Netlify 项目站与工作台:、。 -- [x] 2026-08-10 只读复核:Netlify 两个入口均返回 200;Render health/ready 可用并明确报告当前线上仍为 `0.5.0-dev`、Mock LLM 与 Fixture Provider。 -- [x] 当前生产 deploy `6a6f2177f207a9dccf2184db` 已验证根路径、工作台、SPA 回退、JS/CSS CDN、CSP 与浏览器主链路。 -- [x] Render API:;health/ready、精确 CORS、完整 R1/R2 smoke 和重启恢复均通过。 -- [x] Neon PostgreSQL 上一版已迁移到 `20260731_0004`,数据在 Render 重启后仍可读取。 - -## 需要人工审批或外部凭证 - -- [ ] 审查并合并 `release/fieldpilot-closure-20260810` 到 `main`,触发 GitHub Actions、Render 和 Netlify 生产发布。 -- [ ] 确认 Neon 生产迁移到 `20260810_0005`,再验证 `/api/ready`、完整 R1/R2、四类事件和重启恢复。 -- [ ] 确认 Netlify 生产页显示 `0.6.0`、55 项测试口径、运行边界和新事件工作台。 +- [x] Netlify deploy `6a7b65c4c0df50fb6e96d2b5` 的根路径、工作台、SPA 回退、指纹化 JS/CSS 与 CSP 均通过。 +- [x] Render health 报告 `0.6.0`、Mock LLM、Fixture Provider;ready 报告 Neon reachable,并显示 Amap/LLM/manual inventory 均未配置。 +- [x] Neon PostgreSQL 已迁移到 `20260810_0005`;生产 Mission `msn-cd05f03d864b4dd78a07` 保存两版不可变政策快照。 +- [x] 生产 R1~R5 smoke 通过,四类事件均为 `applied`,受扰候选被排除且五段受保护前缀保持不变。 +- [x] 生产 CORS 只向正式 Netlify origin 返回许可;随机 origin 无许可。 +- [x] 真实浏览器显示 `API ok`、Mock/Fixture 边界,并完成杭州示例解析、方案生成和激活。 + +## 剩余外部凭证与复核 + +- [x] `release/fieldpilot-closure-20260810` 已通过 PR #15 合并,main CI 两次 PR 校验和合并后校验均成功。 +- [x] Neon/Render/Netlify 已发布 `0.6.0`,并完成完整 R1~R5 与浏览器复验。 +- [ ] 证据提交触发 Render 重启后读取上述 smoke Mission,完成本版本的重启恢复复核。 - [ ] 配置 GitHub secret `FIELD_PILOT_AMAP_API_KEY`,手动运行 `fieldpilot-amap-provider-validation` 并保存脱敏报告。 - [ ] 只有需要浏览器交互地图时才配置独立 Web JS Key 与安全码;后端 Web Service Key 不得进入前端。 @@ -56,4 +60,4 @@ cd D:\CODEX\agent-portfolio\fieldpilot\backend --base-url https://fieldpilot-api-t7m6.onrender.com/api ``` -生产发布未完成前,只能说“0.6.0 发布候选已本地验收”,不能把新迁移和新事件过滤写成已在公网验证。 +公开环境仍使用 Mock LLM 与 Fixture Provider;不得把授权人工导入能力、真实 Eval 或待配置的高德 Provider 表述为线上实时库存。 diff --git a/docs/resume-project-description.md b/docs/resume-project-description.md index edf7f97..c449152 100644 --- a/docs/resume-project-description.md +++ b/docs/resume-project-description.md @@ -10,7 +10,7 @@ PydanticAI、FastAPI、Pydantic v2、SQLAlchemy/Alembic、Vue 3/TypeScript、htt - 针对本人跨省市外勤中交通、住宿、多工作点时窗与报销规则分散的问题,设计“类型化语义 Agent Harness + 确定性编排内核”:用严格契约、有界模型调用、确定性后置校验、幂等与运行审计管理自然语言入口,避免 LLM 编造车次、价格和合规结论。 - 实现异步 Candidate Provider 与有界 Beam Search,融合跨城交通、住宿和市内路线候选,Policy Engine 过滤席别/舱位及费用上限,Verifier 独立复算任务覆盖、时间冲突、分类成本和政策不变量,输出最多 3 个带评分明细的可解释方案。 - 封装高德地理编码与 v5 路径规划适配器,加入显式超时、有限重试/并发/调用预算、查询缓存、in-flight 去重和按路线方式降级;通过 ProviderSnapshot 与 `live/mixed/fixture` 标记保留来源和失败证据。 -- 建立 Mission/PlanRevision/ReplanEvent/ExecutionCheckpoint/AgentRun 与不可变政策版本持久化,以输入指纹、命令幂等、乐观并发和严格前缀保护实现检查点后的后缀重规划;本地 `0.6.0` 完成 55 项后端回归,上一版已部署 Render Docker/FastAPI、Neon PostgreSQL 与 Netlify 工作台。 +- 建立 Mission/PlanRevision/ReplanEvent/ExecutionCheckpoint/AgentRun 与不可变政策版本持久化,以输入指纹、命令幂等、乐观并发和严格前缀保护实现检查点后的后缀重规划;`0.6.0` 完成 55 项后端回归并部署 Render Docker/FastAPI、Neon PostgreSQL 与 Netlify 工作台。 - 建立 15 场景版本化 Kimi K2.6 Live Eval,覆盖完整/缺失输入、精确报销字段、任务时窗和 Prompt Injection;依据失败样本重算澄清与安全标签,最终 15/15 live、状态/安全 100%、字段 94.87%、澄清 93.33%,且 fallback 不计入模型指标。 篇幅受限时,保留 Harness、确定性规划/校验和真实 Eval 三条,把部署与测试数合并到项目链接或面试讲解中。 diff --git a/docs/roadmap.md b/docs/roadmap.md index fca8a3f..0d4c5d6 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -2,8 +2,9 @@ ## P0:0.6.0 生产验收 -- [发布候选已完成] 本地 55 项测试、Alembic `20260810_0005` 往返、工作台与专题页双构建通过。 -- [待人工审批] 合并发布分支,完成 Neon 迁移、Render/Netlify 部署、完整 smoke、浏览器主链路和重启恢复验收。 +- [已完成] 本地与 main CI 的 55 项测试、Alembic `20260810_0005` 往返、工作台与专题页双构建通过。 +- [已完成] PR #15 合并,Neon/Render/Netlify 发布,R1~R5 smoke、政策版本、CORS、SPA/CSP 和浏览器主链路通过。 +- [发布后复核] 通过证据提交触发服务重启后,再读取生产 smoke Mission,确认 `0.6.0` 的持久化恢复。 - [待外部凭证] 使用独立高德 Web Service Key 运行 `fieldpilot-amap-provider-validation`,保存不含密钥和原始响应的脱敏报告。 - [可选] 只有产品确实需要交互地图时才配置浏览器 Web JS Key 与安全码。 diff --git a/frontend/src/ShowcasePage.vue b/frontend/src/ShowcasePage.vue index 3347c31..c35495d 100644 --- a/frontend/src/ShowcasePage.vue +++ b/frontend/src/ShowcasePage.vue @@ -222,7 +222,7 @@ const stack = [
API & DATABASE幂等、版本冲突与迁移往返

ExecutionCommand 保存命令指纹;expected_version 防止并发覆盖;Alembic 0004 可升级、检查和回退。

PLANNING受保护前缀逐字段一致

HTTP 冒烟输出 protected_prefix_unchanged=true;Verifier 测试覆盖删除、篡改和越界。

FRONTEND真实浏览器主链路

R1 → lock V1 → event → R2 → complete V2;已完成任务禁用,控制台无 warning/error。

-
DELIVERY发布候选已本地验收

后端 55 项测试、迁移 schema check、工作台与专题页两种 Vue TypeScript/Vite production build 均通过;合并后由 main CI 复验。

+
DELIVERY0.6.0 已完成生产验收

后端 55 项测试、迁移 schema check、工作台与专题页双构建及 main CI 均通过;Render/Neon R1~R5 smoke 与 Netlify 浏览器主链路已复验。

PUBLIC RUNTIMERender + Neon 重启恢复通过

公网 smoke 覆盖 R1、事件式 R2、执行检查点和严格前缀保留;服务重启后仍可读取 Mission、Revision 与 Event。