refactor: align detail views with dense console ui

This commit is contained in:
afei A
2026-03-28 00:31:24 +08:00
parent 59d3f4d054
commit c604e6ace1
2 changed files with 43 additions and 18 deletions

View File

@@ -2,6 +2,12 @@
Standalone Next.js admin frontend for the virtual try-on workflow.
## UI Direction
- Shared admin shell uses a compact dense-console layout instead of wide hero-card framing.
- `orders`, `reviews`, and `workflows` prioritize toolbar + table + detail patterns for desktop operators.
- Review detail keeps image inspection on the left and grouped decision actions on the right.
## Requirements
- Node.js 20+
@@ -82,8 +88,6 @@ Real integration pages:
Placeholder or transitional pages:
- `/orders`
- `/workflows`
- `/libraries/models`
- `/libraries/scenes`
- `/libraries/garments`

View File

@@ -24,6 +24,34 @@ type WorkflowAssetUriField =
| "result_uri"
| "source_uri";
type WorkflowLookupSource =
| Pick<
WorkflowListItemDto,
| "order_id"
| "workflow_id"
| "workflow_type"
| "workflow_status"
| "current_step"
| "failure_count"
| "review_task_status"
| "revision_count"
| "pending_manual_confirm"
| "updated_at"
>
| Pick<
WorkflowStatusResponseDto,
| "order_id"
| "workflow_id"
| "workflow_type"
| "workflow_status"
| "current_step"
| "review_task_status"
| "revision_count"
| "pending_manual_confirm"
| "updated_at"
| "steps"
>;
const WORKFLOW_ASSET_URI_FIELDS = new Set<WorkflowAssetUriField>([
"asset_uri",
"candidate_uri",
@@ -94,21 +122,14 @@ function adaptWorkflowStep(
};
}
export function adaptWorkflowLookupItem(
workflow: Pick<
WorkflowStatusResponseDto | WorkflowListItemDto,
| "order_id"
| "workflow_id"
| "workflow_type"
| "workflow_status"
| "current_step"
| "failure_count"
| "review_task_status"
| "revision_count"
| "pending_manual_confirm"
| "updated_at"
>,
): WorkflowLookupItemVM {
export function adaptWorkflowLookupItem(workflow: WorkflowLookupSource): WorkflowLookupItemVM {
const failureCount =
"failure_count" in workflow
? workflow.failure_count
: "steps" in workflow
? workflow.steps.filter((step) => step.step_status === "failed").length
: 0;
return {
orderId: workflow.order_id,
workflowId: workflow.workflow_id,
@@ -117,7 +138,7 @@ export function adaptWorkflowLookupItem(
statusMeta: getOrderStatusMeta(workflow.workflow_status),
currentStep: workflow.current_step,
currentStepLabel: getWorkflowStepMeta(workflow.current_step).label,
failureCount: workflow.failure_count,
failureCount,
reviewTaskStatus: workflow.review_task_status,
revisionCount: workflow.revision_count,
pendingManualConfirm: workflow.pending_manual_confirm,