评审真实性增强:前端硬规则+人工启动方案+文档-实现三级校验
- 前端存在性硬规则:detectFrontend 源码级判定,web形态无真实前端/不可访问 → 实现完整度封顶50%(CLI/插件豁免) - verify 多态:build_status 支持 done/failed/done_no_ui,前端按钮新增「无前端」 - 人工启动方案:评审环境自动启动失败 → awaiting_browse 暂停,评委手动启动后填 service_url 走 /verify-browse 恢复(SSRF 信任评委确认地址) - Gitea 稳定性:clone 自动重试×3(525抖动)+ 每队独立 token 回退(全局账号失效兜底) - A 阶段报告备份:feature_inventory.__stageA_report 防 B 阶段维度重复累积/A维度丢失 - tryTest 依赖预装:Python 项目自动 pip install(测试不再因缺依赖误判失败) - 运行验证压缩静态维度:前端缺失+测试失败 → 静态纸面维度封顶50%(防原型拿高分) - 文档-实现三级校验:claim-consistency 注入运行时证据(构建/测试/前端),识别「代码有但跑不起来」的虚报(逸飞冲天 61%→25%) - 赛事文档:中期20%+最终80%(AI=人工总分)、评审表/评审规则/赛事说明/07设计同步 - 清空 review_snapshots 测试污染数据,保留当前正式分(零号158/逸飞冲天126) - 测试 446 全通过(后端435+前端11)
This commit is contained in:
@@ -61,19 +61,13 @@ export interface FileSignature {
|
||||
lang: 'ts' | 'js' | 'py' | 'other';
|
||||
symbols: string[]; // export/function/class 定义行原文(≤5条)
|
||||
}
|
||||
export function buildInventory(files: {path,content}[]): {
|
||||
signatures: FileSignature[]; // 全部文本文件
|
||||
totalLines: number;
|
||||
coreFiles: string[]; // 按规则选出的"精读文件包"
|
||||
}
|
||||
export function extractSignatures(files: {path,content}[]): FileSignature[]; // 全部文本文件
|
||||
export function renderInventoryText(sigs: FileSignature[], budgetChars?: number): string; // 紧凑索引文本
|
||||
```
|
||||
|
||||
- **语言范围**:ts/tsx/js/jsx/mjs + python(def/class 正则);其余语言仅记 path+lines
|
||||
- **符号提取**:正则匹配 `^(export\s+)?(async\s+)?(function|class|const\s+\w+\s*=\s*(\(|async))` 与 python `^def |^class `
|
||||
- **coreFiles 选择规则**(替代现"前 60 个文件"粗暴截断):
|
||||
1. 入口/路由/服务/控制器目录下的代码文件(src/、app/、api/ 等)
|
||||
2. DIM_FILE_FILTERS 各维度命中的文件
|
||||
3. 按行数降序补足至预算
|
||||
- **精读文件选择(coreFiles)**:实现中不单独产出 coreFiles 字段——精读包由 `filterFilesForDim` 的维度过滤(`DIM_FILE_FILTERS`)+ 40000 字符预算承担,**符号索引全量注入**所有实现类维度 prompt 头部,保证 100% 文件可见(2026-08-27 对齐实现,原 buildInventory/coreFiles 接口未落地,已废弃)
|
||||
|
||||
#### 3.1.2 投喂策略改造
|
||||
|
||||
@@ -92,7 +86,8 @@ export function buildInventory(files: {path,content}[]): {
|
||||
[{feature:'一句话功能', files:['文件:行号'], depth:'real|partial|stub'}]"
|
||||
合并去重 → FeatureInventory:
|
||||
{ features:[{name, files, depth}], totalFiles, analyzedChunks }
|
||||
落库:entries.project_understanding 附加字段(或新列 feature_inventory TEXT)
|
||||
落库:entries.feature_inventory TEXT(JSON 数组,2026-08-27 新增 migration),
|
||||
同时返回文本注入实现类维度 prompt;落库失败非致命(不影响注入)
|
||||
```
|
||||
|
||||
- 注入**功能完整性/规模·功能点**维度 prompt:「以下是全量代码扫描发现的实际功能清单,请对照 README 声称与验收基准逐项核对」
|
||||
@@ -172,7 +167,7 @@ README/验收基准声称的核心功能如下:
|
||||
真实=该项满分权重;部分=50%权重;占位=0分。
|
||||
```
|
||||
|
||||
- **评分绑定**:子 Agent 返回的 checks 表存入 ai_report.dimensions[n].checks;解析失败回退现状(不崩)
|
||||
- **评分绑定**:子 Agent 返回的 checks 表存入 ai_report.dimensions[n].checks(2026-08-27 修复:runSubAgent 最终 prompt 对实现类维度要求 checks 字段,parseDimResponse 解析并透传,供详情页/PDF 展示);解析失败回退现状(不崩)
|
||||
- 结合 3.3 信号:toPrompt 中的 stubFiles 作为"重点核查"提示一并注入
|
||||
|
||||
### 3.5 判档修正:定性设计维度豁免 C 档(解决问题 #4)
|
||||
@@ -235,13 +230,18 @@ export function isQuantEvidenceDim(name): boolean // 替代 isEffectDim 在三
|
||||
|
||||
## 7. P1 实施清单
|
||||
|
||||
- [ ] code-inventory.ts 符号索引器 + 单测
|
||||
- [ ] discoverFiles 投喂策略改造(索引全量 + coreFiles 全文 + 预算 40K)
|
||||
- [ ] discoverFeatureInventory Map-Reduce 功能发现轮 + 落库 + 注入
|
||||
- [ ] ai-log-audit.ts + git 变更集采集 + 封顶应用 + 注入 + 单测
|
||||
- [ ] code-signals.ts + 单测
|
||||
- [ ] 实现类维度定向追踪 prompt 模板 + checks 解析 + 评分绑定
|
||||
- [ ] standard-utils.ts 判档白名单重构(isQuantEvidenceDim)+ 相关单测更新
|
||||
- [ ] 分支提醒
|
||||
- [ ] AGENTS.md 同步
|
||||
- [ ] 回归:§6 四场景实测 + 全量 vitest
|
||||
- [x] code-inventory.ts 符号索引器 + 单测
|
||||
- [x] discoverFiles 投喂策略改造(索引全量 + coreFiles 全文 + 预算 40K)
|
||||
- [x] discoverFeatureInventory Map-Reduce 功能发现轮 + 落库(feature_inventory 列)+ 注入
|
||||
- [x] ai-log-audit.ts + git 变更集采集 + 封顶应用 + 注入 + 单测
|
||||
- [x] code-signals.ts + 单测
|
||||
- [x] 实现类维度定向追踪 prompt 模板 + checks 解析 + 评分绑定
|
||||
- [x] standard-utils.ts 判档白名单重构(isQuantEvidenceDim)+ 相关单测更新
|
||||
- [x] 分支提醒
|
||||
- [x] AGENTS.md 同步
|
||||
- [x] 回归:§6 四场景实测 + 全量 vitest
|
||||
|
||||
> **2026-08-27 修正记录**:P1 落地后审计发现 3 处文档-实现偏差,均已修正——
|
||||
> ① §3.4 checks 表:原实现只注入 prompt 不解析存储,已修复(runSubAgent 最终 prompt 要求 checks + parseDimResponse 透传 + 5 项单测);
|
||||
> ② §3.1.3 功能发现落库:原仅内存注入,已新增 entries.feature_inventory 列落库;
|
||||
> ③ §3.1.1 coreFiles 接口:原设计 buildInventory/coreFiles 未落地,精读包由 filterFilesForDim + 40K 预算承担,文档已对齐实现。
|
||||
|
||||
Reference in New Issue
Block a user