Improve IK-style artifact scanner pipeline
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
import { detailFingerprint } from "../../../../../lib/autoScanLoop";
|
||||
import { dataGeneratedAt, sourceVersion } from "../../../../../lib/genshinData";
|
||||
import { dataPackageStatus } from "../../../../../lib/dataPackageStatus";
|
||||
import { validateLookupPackage } from "../../../../../lib/genshinLookup";
|
||||
import { useCallback, useMemo, type MouseEvent } from "react";
|
||||
import type { ScanDiagnosticsModalProps } from "../types";
|
||||
import type { ScanDiagnosticEvent } from "../../../../../lib/scanDiagnosticsLog";
|
||||
|
||||
export interface ScanDiagnosticsModelProgress {
|
||||
width: number;
|
||||
@@ -37,6 +39,7 @@ export interface ScanDiagnosticsModalModel {
|
||||
showDevRows: boolean;
|
||||
reviewStatus: string;
|
||||
automationLogLines: string[];
|
||||
diagnosticEvents: ScanDiagnosticEvent[];
|
||||
canSaveReviewSample: boolean;
|
||||
}
|
||||
|
||||
@@ -98,7 +101,11 @@ export function useScanDiagnosticsModalModel({
|
||||
|
||||
const learningRulesText = controller.learningRulesLoaded ? `${controller.learningRuleCount} local rules` : "loading";
|
||||
const dataStaleness = dataPackageStatus(dataGeneratedAt, sourceVersion);
|
||||
const learningRulesSubtext = `Review samples feed deterministic OCR fixes before each new parse. Data package: ${sourceVersion}${dataStaleness.warning ? ` - ${dataStaleness.warning}` : ""}`;
|
||||
const lookupStatus = validateLookupPackage();
|
||||
const lookupText = lookupStatus.valid
|
||||
? `Lookup OK: ${lookupStatus.summary.artifactSets} sets / ${lookupStatus.summary.artifactPieces} pieces`
|
||||
: `Lookup invalid: ${lookupStatus.errors[0] ?? "unknown error"}`;
|
||||
const learningRulesSubtext = `Review samples feed deterministic OCR fixes before each new parse. ${lookupText}. Data package: ${sourceVersion}${dataStaleness.warning ? ` - ${dataStaleness.warning}` : ""}`;
|
||||
|
||||
const playerProgress = useMemo(() => {
|
||||
const width = Math.min(
|
||||
@@ -128,6 +135,25 @@ export function useScanDiagnosticsModalModel({
|
||||
{ label: "duplicates", value: controller.autoScanStats.duplicates },
|
||||
{ label: "misses", value: controller.autoScanStats.misses },
|
||||
{ label: "pages", value: controller.autoScanStats.pages },
|
||||
{ label: "elapsedMs", value: controller.autoScanStats.elapsedMs },
|
||||
{ label: "activeScanMs", value: controller.autoScanStats.activeScanMs },
|
||||
{ label: "writeFlushMs", value: controller.autoScanStats.writeFlushMs },
|
||||
{ label: "avgMs", value: controller.autoScanStats.averageMsPerParsed },
|
||||
{ label: "activeAvgMs", value: controller.autoScanStats.activeAverageMsPerParsed },
|
||||
{ label: "avgCaptureMs", value: controller.autoScanStats.averageCaptureMs },
|
||||
{ label: "captureP50Ms", value: controller.autoScanStats.captureP50Ms },
|
||||
{ label: "captureP90Ms", value: controller.autoScanStats.captureP90Ms },
|
||||
{ label: "avgOcrMs", value: controller.autoScanStats.averageOcrMs },
|
||||
{ label: "ocrP50Ms", value: controller.autoScanStats.ocrP50Ms },
|
||||
{ label: "ocrP90Ms", value: controller.autoScanStats.ocrP90Ms },
|
||||
{ label: "cardReadyAvgMs", value: controller.autoScanStats.averageCardReadyMs },
|
||||
{ label: "cardReadyCount", value: controller.autoScanStats.cardReadyCount },
|
||||
{ label: "scrollReadyAvgMs", value: controller.autoScanStats.averageScrollReadyMs },
|
||||
{ label: "scrollReadyCount", value: controller.autoScanStats.scrollReadyCount },
|
||||
{ label: "perMin x10", value: Math.round(controller.autoScanStats.artifactsPerMinute * 10) },
|
||||
{ label: "activePerMin x10", value: Math.round(controller.autoScanStats.activeArtifactsPerMinute * 10) },
|
||||
{ label: "projected100Ms", value: controller.autoScanStats.projectedMsFor100 },
|
||||
{ label: "activeProjected100Ms", value: controller.autoScanStats.activeProjectedMsFor100 },
|
||||
],
|
||||
[
|
||||
controller.autoScanStats.clicked,
|
||||
@@ -139,6 +165,25 @@ export function useScanDiagnosticsModalModel({
|
||||
controller.autoScanStats.duplicates,
|
||||
controller.autoScanStats.misses,
|
||||
controller.autoScanStats.pages,
|
||||
controller.autoScanStats.elapsedMs,
|
||||
controller.autoScanStats.activeScanMs,
|
||||
controller.autoScanStats.writeFlushMs,
|
||||
controller.autoScanStats.averageMsPerParsed,
|
||||
controller.autoScanStats.activeAverageMsPerParsed,
|
||||
controller.autoScanStats.averageCaptureMs,
|
||||
controller.autoScanStats.captureP50Ms,
|
||||
controller.autoScanStats.captureP90Ms,
|
||||
controller.autoScanStats.averageOcrMs,
|
||||
controller.autoScanStats.ocrP50Ms,
|
||||
controller.autoScanStats.ocrP90Ms,
|
||||
controller.autoScanStats.averageCardReadyMs,
|
||||
controller.autoScanStats.cardReadyCount,
|
||||
controller.autoScanStats.averageScrollReadyMs,
|
||||
controller.autoScanStats.scrollReadyCount,
|
||||
controller.autoScanStats.artifactsPerMinute,
|
||||
controller.autoScanStats.activeArtifactsPerMinute,
|
||||
controller.autoScanStats.projectedMsFor100,
|
||||
controller.autoScanStats.activeProjectedMsFor100,
|
||||
],
|
||||
);
|
||||
|
||||
@@ -186,6 +231,7 @@ export function useScanDiagnosticsModalModel({
|
||||
showDevRows: controller.devMode,
|
||||
reviewStatus: controller.reviewStatus,
|
||||
automationLogLines: controller.automationLog,
|
||||
diagnosticEvents: controller.diagnosticEvents,
|
||||
canSaveReviewSample: canSaveReviewSample && Boolean(controller.parsedArtifact),
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user