From 385be2eca72eb3833efa4be0a0088b34e764788a Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Mon, 31 Aug 2026 09:04:45 +0800
Subject: [PATCH] feat(pointcloud): complete annotation and result lifecycle workflows

---
 apps/workbench-console/README.md |  116 ++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 105 insertions(+), 11 deletions(-)

diff --git a/apps/workbench-console/README.md b/apps/workbench-console/README.md
index 5cf5c6f..f77753d 100644
--- a/apps/workbench-console/README.md
+++ b/apps/workbench-console/README.md
@@ -38,15 +38,22 @@
 
 Vite 开发服务固定使用 `http://127.0.0.1:6174/apps/workbench-console/`,会通过本机代理读取 `6173` 的结果工件。
 
-## GPU execution
+## CPU and GPU execution
 
-Object detection and ChangeStar change detection retain their CPU environments
-and add separately verified CUDA environments. The server probes only the fixed
-`01-object-detection-cuda` or `00-change-detection-cuda` interpreter before a
-run; a successful probe selects CUDA, otherwise the corresponding fixed CPU
-interpreter is used. User requests cannot supply an interpreter, device path,
-or command. Each capability writes the requested and actual device to its run
-metadata. This console remains loopback-only and independent of drone products.
+Object detection, ChangeStar change detection, and point-cloud supervised
+training/inference expose `auto`, `cpu`, and `cuda` choices. The local service
+always invokes only fixed allowlisted virtual environments. `auto` probes the
+capability's fixed CUDA interpreter, chooses it only when PyTorch confirms CUDA,
+and otherwise uses its retained CPU environment. `cpu` does not probe the GPU.
+`cuda` fails explicitly when the probe fails; it never silently becomes a CPU
+run. New `run_metadata.json` files record requested/actual device, environment,
+PyTorch version, fallback state, and fallback reason. Photo 3D reconstruction,
+point-cloud geometry, semantic rule classification, file conversion, exports,
+and the console itself remain CPU workflows. The current photo-MVS CUDA tools
+are not validated and are not exposed as a console option.
+
+User requests cannot supply an interpreter, device path, or command. This
+console remains loopback-only and independent of drone products.
 
 ## 地图底图
 
@@ -127,7 +134,7 @@
 rendered as DSM or GeoJSON without valid georeferencing.
 
 The top-level `05-3d-pointcloud` workflow switch keeps incompatible inputs
-separate. `照片三维重建` accepts 3-30 JPG/JPEG files from one coherent camera
+separate. `照片三维重建` accepts 3-1000 JPG/JPEG files from one coherent camera
 sequence through bounded binary uploads, preserves the raw bytes, then runs a
 background CPU SfM/MVS job and polls `queued`, `sparse_sfm`, `dense_mvs`,
 `complete`, or `failed` status. Its GPS/RTK-prior option uses the verified
@@ -137,6 +144,16 @@
 GeoAI footprint vector workflow. Creating a run or discovering a new case
 does not require rebuilding the frontend; `npm run build` is only required
 after changing the Vue/TypeScript console source.
+
+The reconstruction job response also reports actual completed workflow
+milestones from its fixed scripts: feature extraction, matching, sparse mapping,
+RGB preparation, undistortion, dense fusion, meshing, texture export, and final
+artifact packaging. The displayed percentage is a weighted stage milestone, not
+a remaining-time estimate: COLMAP and OpenMVS do not expose reliable live
+sub-stage percentages.
+
+The fixed CPU photo-reconstruction timeout is 24 hours for large sequences. It
+is a hard safety limit, not a predicted completion time.
 
 The same workspace also exposes point-cloud semantic classification:
 PLY/PCD/XYZ/LAS/LAZ files are sent through bounded binary streaming, retained
@@ -148,9 +165,32 @@
 also expose an action that classifies only their fixed local `dense.ply`; the
 server never accepts a browser-supplied path.
 
-Semantic cases with a generated RGB annotation source provide a separate manual
-annotation and supervised-training area. Brush and rectangle selections become
+Semantic cases with a generated RGB annotation source, plus complete
+`multiview-feature-*` directories whose ordered original-RGB PLY/NPZ checksum
+contract passes, provide a separate manual annotation and supervised-training
+area. The fusion source is labelled as a photo-feature review sample and is not
+fed into the existing PointNet-style trainer as if it were Point Transformer V3.
+After sufficient reviewed labels, its `多视角特征训练` action uses a separate
+CPU/CUDA local-attention baseline over the fixed same-order feature NPZ. It
+requires each reviewed class to span XY training, validation, and test blocks.
+This is not the uninstalled official Pointcept/Point Transformer V3 stack and
+is not exposed in the generic arbitrary-cloud model-application workflow.
+Brush and rectangle selections become
 separate annotation revisions rather than altering source clouds or rule results.
+The annotation workspace can also add an independent local PLY/PCD/XYZ/LAS/LAZ
+source through its bounded binary upload route. The server preserves its raw
+bytes, starts a background CPU preview job, and adds the derived RGB/XYZ preview
+to the source list only after successful processing. The taxonomy is local
+annotation metadata: users can add a Chinese label, lowercase English key and
+RGB colour, and the server assigns an unused LAS-compatible code. Saved
+revisions snapshot their class metadata; a custom class referenced by a saved
+revision cannot be deleted. These controls do not manufacture semantic truth or
+replace reviewed labels required for supervised training.
+For a source that is no longer needed, **Remove complete data chain** first
+fetches a server-calculated deletion plan, then requires an irreversible
+confirmation. It removes only fixed local point-cloud raw/processed/output
+directories plus discovered annotation, training, and inference dependents.
+`baseData` and external source inputs are excluded from every removal plan.
 The annotation point viewer uses sRGB-correct anti-aliased circular points.
 Browse mode keeps left-drag rotation; brush/rectangle mode reserves left-drag
 for labels, with right-drag rotation, middle-drag panning and wheel zoom.
@@ -161,6 +201,26 @@
 display rotations about the model centre. It never changes the original point
 cloud or stored annotation indices; picking and rectangle selection follow the
 currently displayed orientation.
+The viewer loads and renders every point contained in the selected annotation
+source directly. It does not switch to a zoom-dependent local detail layer, and
+point indices stay stable for browsing, manual labels, saved revisions, and
+training. Large sources consume correspondingly more browser memory and GPU
+resources.
+New annotation PLY/PCD/XYZ/LAS/LAZ uploads run a dedicated preview-only CPU
+step. It preserves every readable finite XYZ and available vertex RGB point
+and does not run the DSM, raster/vector, mesh, or rule-semantic pipeline. A
+source without vertex RGB remains viewable with a neutral preview but cannot be
+sent to the current RGB semantic-model trainer.
+Textured-mesh ZIP bundles are prepared separately: the PLY's face UVs and its
+referenced JPG/PNG tiles are baked into sampled face-centre RGB/XYZ points. A
+small visual-validation source is exposed in the normal annotation-source list
+before a larger training source is materialized.
+
+Sparse point-cloud, semantic-classification, supervised-prediction, and mesh
+previews use the same viewer controls: local X/Y/Z orientation, click-to-set
+orbit centre, top-down view, and reset. These controls only transform the
+centred display wrapper; source PLY/GLB files and downloadable outputs remain
+unchanged.
 An incorrect revision can be removed after confirmation, but the endpoint only
 removes that revision directory and cannot remove LAS/PLY sources, semantic
 results, or training outputs. A local training job requires two classes with at
@@ -184,6 +244,13 @@
 candidate, especially for the current pole/tower class, not asset inventory or
 an inspection conclusion.
 
+For an already selected annotation source, **Automatic annotation current
+source** uses the selected local model without a second upload. Its asynchronous
+candidate artifact records source/model checksums, class predictions, and
+per-point confidence after a user-selected threshold. The completed run exposes an in-console, class-coloured prediction preview and predicted/high-confidence per-class counts for review. Brush/rectangle review can reject candidates or correct their classes, saving an independent correction draft. It remains separate from
+human truth until **Confirm merge candidates** is pressed; the merge applies candidates, review corrections, then existing human labels as the highest priority, and creates a new annotation revision for
+the next training cycle.
+
 The 3D point-cloud capability is presented as four focused workspaces rather
 than one long mixed result page:
 
@@ -202,3 +269,30 @@
 families, but the pages never render the unrelated result bands together. The
 model workspace deliberately uses its generated annotation sources and trained
 models rather than a general case library.
+
+## Result removal
+
+Every connected capability case library provides a complete-result removal
+control. It first reads a server-calculated deletion plan, then requires a
+second irreversible confirmation. A removable console run is restricted to the
+fixed `shared/outputs/<capability>/runs/<run-id>/` layout and removes only that
+output, its console-upload raw copy, processed copy, and known dependent
+artifacts. `baseData`, external source inputs, sibling runs, and project
+baseline/validation cases are never removed. Baseline and validation cases show
+their protected status instead of accepting deletion.
+
+The point-cloud training-model selector has a separate removal control. It
+removes the selected locally trained model plus its discovered inference and
+automatic-annotation outputs, while preserving annotation revisions, `baseData`,
+and external input files.
+
+## Maintenance conventions
+
+Run `npm run build` after changing Vue, TypeScript, CSS, or build-time client
+configuration. A new result, a data-processing run, or a server-only API change
+does not require a frontend rebuild.
+
+The local console is not visually inspected through browser automation. For a
+visual UI, map, image, or 3D acceptance check, the requested interaction is
+specified to the user and the user provides the screenshot; build, HTTP,
+artifact, and automated checks remain independent evidence.

--
Gitblit v1.9.3