feat(data-process): 完善后台生成与失败重试

This commit is contained in:
caoxiaozhu
2026-07-28 10:56:05 +08:00
parent 8a6a6574bb
commit 01d2e6c76a
178 changed files with 4472 additions and 595 deletions

View File

@@ -328,6 +328,57 @@ final result: blocked
---
# Failed Result Regeneration Design QA
## Evidence
- Source visual truth: `/var/folders/nk/yks07zp14wb4rv3jqq0pt_4h0000gn/T/codex-clipboard-0c2e6f90-aaac-4817-9084-bc31496aed0a.png`.
- Implementation route: `http://localhost:16801/data-process/:id/workflow`, step 6.
- Browser evidence: `/Users/caoxiaozhu/.codex/visualizations/2026/07/27/019fa277-626b-76a1-af02-48948d66c7ec/data-process-empty-list.png`.
- Viewport: 1280 × 720.
- Target state: a completed task on step 6 with a selected invalid result.
- Available browser state: authenticated data-process list with zero tasks; no representative invalid result could be opened without creating or mutating local business data.
## Static and automated evidence
- Invalid results render a primary plain `重新生成` button in the right side of the result header.
- Valid results keep the existing `恢复生成结果` action.
- While regeneration is running, the selected row shows a spinner, the button shows loading, editors are disabled, and the footer confirmation action is disabled.
- A successful response replaces only the selected row in place; a failed second generation leaves the original invalid row untouched.
- `regression-data-process-wizard.mjs`: passed.
- `regression-data-process-detail.mjs`: passed.
- `regression-data-process-list.mjs`: passed.
- `vue-tsc -b --noEmit`: passed.
- Relevant backend tests: 97 passed, with one third-party deprecation warning.
## Required fidelity surfaces
- Typography and hierarchy: the action uses the existing Element Plus small-button hierarchy and remains secondary to result content.
- Spacing and layout rhythm: the action is placed in the existing flex header's right action slot, matching the source location.
- Colors and tokens: the action uses the existing product primary color and existing Font Awesome refresh icon.
- Copy and content: the visible label is exactly `重新生成`; only server-saved invalid results expose it.
- Interaction: optimistic concurrency protects against overwriting a newer edit, and persistence happens only after the replacement passes generation and quality validation.
## Findings
- [P2] Representative rendered comparison unavailable
Location: step 6 result header with an invalid result selected.
Evidence: the authenticated local database currently contains zero data-processing tasks, so the target state cannot be reached without creating test business data or invoking the configured model.
Impact: automated and static checks prove the contract and placement, but cannot prove pixel-level spacing against the supplied screenshot.
Fix: open any existing failed result after one is available, capture the same 1280 × 720 state, and compare it side by side with the source screenshot.
## Comparison history
### Iteration 1 — blocked
- Source screenshot was inspected and the implementation was aligned to its existing right-header action slot.
- Local login and list navigation succeeded.
- The target result state was unavailable because the local task list was empty.
final result: blocked
---
# Dataset Version Actions Design QA
## Evidence