feat: 算法升级、整车配准集成与性能分析文档

算法更新: delivery v1.2.1、平整度v1.5、测距v2.2、整车配准v1.3
适配器: vehicle-registration 新增、各算法 manifest 和 adapter 更新
后端: taskCadFiles/source 字段迁移、derivedPointClouds 注册、取消任务联动
前端: ElapsedTime 时长显示、两步算法流程、canRun 逻辑修复
文档: 新增5份算法性能分析报告
This commit is contained in:
2026-06-25 08:22:20 +00:00
parent cec0766e67
commit 29f1d45d66
266 changed files with 1311475 additions and 2846 deletions

View File

@@ -321,6 +321,7 @@ export async function runAlgorithmJob(
errorStats: result?.errorStats,
overlay3d: result?.overlay3d,
images: result?.images,
files: result?.files,
extra: result?.extra,
error: finalStatus === 'error'
? result?.message ?? `子进程退出码 ${exitCode}`
@@ -334,6 +335,35 @@ export async function runAlgorithmJob(
resultData,
});
// ── 回写配准产出点云 ─────────────────────────────────────────────────────
// 若 result.json 包含 derivedPointClouds,把对应 PLY 注册为任务点云,
// 供后续测量算法直接选用,无需用户手动上传。
if (finalStatus === 'completed') {
const derived = (result as Record<string, unknown> | null)?.derivedPointClouds;
if (Array.isArray(derived) && derived.length > 0) {
for (const item of derived) {
const d = item as { file?: string; name?: string };
if (!d.file) continue;
const absPath = path.join(workDir, d.file);
if (!fs.existsSync(absPath)) {
console.warn(`[AlgorithmJobRunner] derivedPointCloud not found: ${absPath}`);
continue;
}
try {
await db.createRegisteredPointcloudFile(
taskId,
d.name ?? d.file,
absPath,
resultId,
);
console.log(`[AlgorithmJobRunner] registered derived pointcloud: ${d.name ?? d.file}`);
} catch (err) {
console.error('[AlgorithmJobRunner] failed to register derived pointcloud:', err);
}
}
}
}
if (finalStatus === 'completed') {
console.log(
`[AlgorithmJobRunner] ok pluginId=${pluginId} resultId=${resultId} taskId=${taskId}`,