Refactor document versioning to extract fields from uploaded .docx files on the server side

- Removed the `fields` parameter from the version upload form, as it is now extracted from the uploaded .docx file using the `extractContentControls` function.
- Updated related types and interfaces to reflect the new structure of version fields.
- Modified the OpenAPI specification to document the changes in the versioning process.
- Adjusted tests to ensure compliance with the new behavior, including validation for the absence of the `fields` parameter.
- Implemented a new function `extractDocumentSnapshot` to handle the extraction of content controls and document properties from .docx files.
- Updated metadata and versioning services to align with the new extraction logic.
This commit is contained in:
Suphonchai Phoonsawat 2026-10-31 10:21:17 +07:00
parent bc61f0fd2e
commit cdae1ceedd
17 changed files with 380 additions and 179 deletions

View file

@ -13,6 +13,7 @@ import {
documents,
documentVersions,
type DocumentRow,
type DocumentVersionFields,
type DocumentVersionRow,
} from "@/db/schema";
import {
@ -229,7 +230,8 @@ export type InsertVersionInput = {
clientVersionId: string | null;
contentHash: string;
message: string | null;
fields: Record<string, string> | null;
/** ก้อนเดียวกับ return ของ /api/template/extract (ดู DocumentVersionFields ใน db/schema.ts) */
fields: DocumentVersionFields | null;
templateId: string | null;
fileName: string | null;
docxObjectKey: string;