refactor(intake): move document workspace initialization

This commit is contained in:
WuYongJie 2026-06-08 21:08:49 +08:00
parent a30151a24a
commit 645130a042
2 changed files with 73 additions and 49 deletions

View File

@ -423,6 +423,9 @@ import {
PRODUCT_PHOTO_PANEL_ORDER,
QUALITY_STANDARD_FILE_ACCEPT,
areProductPhotoSelectionsEqual,
createInitialDocumentWorkspaceApprovedAt,
createInitialDocumentWorkspaceConfirmations,
createInitialDocumentWorkspaceNotes,
buildDocumentWorkspaceRevisionFileEntries,
buildProductPhotoMetadata,
getDocumentWorkspaceCategoryLabel,
@ -4395,52 +4398,6 @@ function buildOpeningReferenceFormValues(
};
}
function createInitialDocumentWorkspaceNotes(
product: NonIntegratedProductRecord | null,
) {
return UPLOAD_CATEGORY_PANEL_ORDER.reduce<
Record<DocumentWorkspaceCategory, string>
>(
(current, category) => {
current[category] = product?.documentWorkspaceNotes?.[category] ?? "";
return current;
},
{ ...EMPTY_DOCUMENT_WORKSPACE_NOTES },
);
}
function createInitialDocumentWorkspaceConfirmations(
product: NonIntegratedProductRecord | null,
): NonIntegratedDocumentWorkspaceConfirmationMap {
const confirmations = product?.documentWorkspaceConfirmations
? { ...product.documentWorkspaceConfirmations }
: createDefaultDocumentWorkspaceConfirmations(false);
if (getProjectReviewApprovedAtFallback(product)) {
confirmations[PROJECT_REVIEW_WORKSPACE_CATEGORY] = true;
}
return confirmations;
}
function createInitialDocumentWorkspaceApprovedAt(
product: NonIntegratedProductRecord | null,
): NonIntegratedDocumentWorkspaceApprovalMap {
const approvedAt = product?.documentWorkspaceApprovedAt
? { ...product.documentWorkspaceApprovedAt }
: {};
const projectReviewApprovedAt = getProjectReviewApprovedAtFallback(product);
if (
projectReviewApprovedAt &&
!approvedAt[PROJECT_REVIEW_WORKSPACE_CATEGORY]
) {
approvedAt[PROJECT_REVIEW_WORKSPACE_CATEGORY] = projectReviewApprovedAt;
}
return approvedAt;
}
const NON_INTEGRATED_IMAGE_UPLOAD_MAX_DIMENSION = 2048;
function nonIntegratedImageUploadFileName(file: File) {
@ -5542,14 +5499,26 @@ export default function NonIntegratedDetailClient({
);
const [documentWorkspaceNotes, setDocumentWorkspaceNotes] = useState<
Record<DocumentWorkspaceCategory, string>
>(() => createInitialDocumentWorkspaceNotes(existingProduct));
>(() =>
createInitialDocumentWorkspaceNotes(
existingProduct,
UPLOAD_CATEGORY_PANEL_ORDER,
EMPTY_DOCUMENT_WORKSPACE_NOTES,
),
);
const [documentWorkspaceConfirmations, setDocumentWorkspaceConfirmations] =
useState<NonIntegratedDocumentWorkspaceConfirmationMap>(() =>
createInitialDocumentWorkspaceConfirmations(existingProduct),
createInitialDocumentWorkspaceConfirmations(
existingProduct,
PROJECT_REVIEW_WORKSPACE_CATEGORY,
),
);
const [documentWorkspaceApprovedAt, setDocumentWorkspaceApprovedAt] =
useState<NonIntegratedDocumentWorkspaceApprovalMap>(() =>
createInitialDocumentWorkspaceApprovedAt(existingProduct),
createInitialDocumentWorkspaceApprovedAt(
existingProduct,
PROJECT_REVIEW_WORKSPACE_CATEGORY,
),
);
const [selectedWorkspaceFileId, setSelectedWorkspaceFileId] = useState("");
const [activeProductDataGroup, setActiveProductDataGroup] =

View File

@ -1,10 +1,15 @@
import {
createDefaultDocumentWorkspaceConfirmations,
getNonIntegratedDocumentWorkspaceCategoryLabel,
type NonIntegratedDetectionAssetType,
type NonIntegratedDocumentWorkspaceApprovalMap,
type NonIntegratedDocumentWorkspaceConfirmationMap,
type NonIntegratedDocumentWorkspaceCategory,
type NonIntegratedProductRecord,
type NonIntegratedUploadFile,
type NonIntegratedWorkflowNodeCategory,
} from "./nonIntegratedStorage";
import { getProjectReviewApprovedAtFallback } from "./openingReferenceHelpers";
import {
getDefaultProductPhotoStyleKey,
getFileNameWithoutExtension,
@ -109,6 +114,56 @@ export function buildDocumentWorkspaceRevisionFileEntries(
}));
}
export function createInitialDocumentWorkspaceNotes(
product: NonIntegratedProductRecord | null,
uploadCategoryPanelOrder: DocumentWorkspaceCategory[],
emptyDocumentWorkspaceNotes: Record<DocumentWorkspaceCategory, string>,
) {
return uploadCategoryPanelOrder.reduce<
Record<DocumentWorkspaceCategory, string>
>(
(current, category) => {
current[category] = product?.documentWorkspaceNotes?.[category] ?? "";
return current;
},
{ ...emptyDocumentWorkspaceNotes },
);
}
export function createInitialDocumentWorkspaceConfirmations(
product: NonIntegratedProductRecord | null,
projectReviewWorkspaceCategory: DocumentWorkspaceCategory,
): NonIntegratedDocumentWorkspaceConfirmationMap {
const confirmations = product?.documentWorkspaceConfirmations
? { ...product.documentWorkspaceConfirmations }
: createDefaultDocumentWorkspaceConfirmations(false);
if (getProjectReviewApprovedAtFallback(product)) {
confirmations[projectReviewWorkspaceCategory] = true;
}
return confirmations;
}
export function createInitialDocumentWorkspaceApprovedAt(
product: NonIntegratedProductRecord | null,
projectReviewWorkspaceCategory: DocumentWorkspaceCategory,
): NonIntegratedDocumentWorkspaceApprovalMap {
const approvedAt = product?.documentWorkspaceApprovedAt
? { ...product.documentWorkspaceApprovedAt }
: {};
const projectReviewApprovedAt = getProjectReviewApprovedAtFallback(product);
if (
projectReviewApprovedAt &&
!approvedAt[projectReviewWorkspaceCategory]
) {
approvedAt[projectReviewWorkspaceCategory] = projectReviewApprovedAt;
}
return approvedAt;
}
export const QUALITY_STANDARD_FILE_ACCEPT =
".xls,.xlsx,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";