feat: standardize algorithm measurement results
This commit is contained in:
@@ -16,6 +16,11 @@ import { listPlugins, getPlugin } from "./plugins/registry.js";
|
||||
import { enqueueAlgorithmJob, algorithmJobStats, cancelAlgorithmJob, cancelAlgorithmJobsByTask } from "./algorithmJob.js";
|
||||
import { cancelLegacyAnalysisJob, cancelLegacyAnalysisJobsByTask } from "./analysisJobControl.js";
|
||||
import { deleteAnalysisResult } from "./analysisResultDeletion.js";
|
||||
import {
|
||||
inspectionObjectContextFromName,
|
||||
logCompatibilityWarnings,
|
||||
normalizeMeasurements,
|
||||
} from "./measurementCompatibility.js";
|
||||
import {
|
||||
clearLoginFailures,
|
||||
createSessionToken,
|
||||
@@ -963,7 +968,43 @@ export const appRouter = router({
|
||||
list: protectedProcedure
|
||||
.input(z.object({ taskId: z.number() }))
|
||||
.query(async ({ input }) => {
|
||||
return db.listTaskAnalysisResults(input.taskId);
|
||||
const [rows, task] = await Promise.all([
|
||||
db.listTaskAnalysisResults(input.taskId),
|
||||
db.getInspectionTaskById(input.taskId),
|
||||
]);
|
||||
const inspectionObject = task?.inspectionObjectId
|
||||
? await db.getInspectionObjectById(task.inspectionObjectId)
|
||||
: undefined;
|
||||
const context = inspectionObjectContextFromName(inspectionObject?.name);
|
||||
|
||||
return rows.map((row) => {
|
||||
const resultData = row.resultData && typeof row.resultData === 'object' && !Array.isArray(row.resultData)
|
||||
? { ...(row.resultData as Record<string, unknown>) }
|
||||
: {};
|
||||
const pluginId = row.pluginId ?? (typeof resultData.pluginId === 'string' ? resultData.pluginId : undefined);
|
||||
const rawMeasurements = Array.isArray(row.measurements)
|
||||
? row.measurements
|
||||
: resultData.measurements;
|
||||
if (!pluginId || !Array.isArray(rawMeasurements)) return row;
|
||||
|
||||
const normalized = normalizeMeasurements({
|
||||
pluginId,
|
||||
measurements: rawMeasurements,
|
||||
extra: resultData.extra,
|
||||
context,
|
||||
algorithmProtocolVersion: row.schemaVersion ?? (resultData.schemaVersion as string | number | undefined),
|
||||
});
|
||||
logCompatibilityWarnings(row.id, normalized.warnings);
|
||||
return {
|
||||
...row,
|
||||
measurements: normalized.measurements,
|
||||
resultData: {
|
||||
...resultData,
|
||||
measurements: normalized.measurements,
|
||||
extra: normalized.extra,
|
||||
},
|
||||
};
|
||||
});
|
||||
}),
|
||||
|
||||
runAnalysis: protectedProcedure
|
||||
|
||||
Reference in New Issue
Block a user