a2973be208
- เพิ่ม POST /api/ai/jobs + GET /api/ai/jobs/:jobId endpoints (FR-001, FR-002) - เพิ่ม BullMQ Worker MigrateDocumentWorker + OCR auto-detect (FR-003, FR-004) - เพิ่ม cleanup-temp-files + expire-pending-reviews workers (FR-005, FR-005a/b) - สร้าง SQL deltas: tags, correspondence_tags, alter migration_review_queue (FR-006, ADR-009) - เพิ่ม MigrationReviewService.commitRecord() + SELECT FOR UPDATE (FR-007, FR-007a) - เพิ่ม CASL permission migration.commit + MigrationReviewController (FR-007) - สร้าง TagsModule + TagsService + TagsController (US3) - สร้าง Migration Review Queue frontend page + ReviewQueueTable (US2) - อัปเดต n8n guide: deterministic Idempotency-Key + token pre-flight (FR-001a, FR-010a/b) - สร้าง spec.md, plan.md, tasks.md, data-model.md, contracts/, quickstart.md - สร้าง ADR-028 document + validation-report.md (PASS 32/32 tasks, 173/173 tests)
86 lines
1.2 KiB
TypeScript
86 lines
1.2 KiB
TypeScript
import {
|
|
IsString,
|
|
IsNotEmpty,
|
|
IsOptional,
|
|
IsNumber,
|
|
IsBoolean,
|
|
IsArray,
|
|
} from 'class-validator';
|
|
|
|
export class EnqueueMigrationDto {
|
|
@IsString()
|
|
@IsNotEmpty()
|
|
documentNumber!: string;
|
|
|
|
@IsString()
|
|
@IsOptional()
|
|
subject?: string;
|
|
|
|
@IsString()
|
|
@IsOptional()
|
|
originalSubject?: string;
|
|
|
|
@IsString()
|
|
@IsOptional()
|
|
body?: string;
|
|
|
|
@IsString()
|
|
@IsOptional()
|
|
category?: string;
|
|
|
|
@IsString()
|
|
@IsOptional()
|
|
aiSummary?: string;
|
|
|
|
@IsNumber()
|
|
@IsOptional()
|
|
projectId?: number;
|
|
|
|
@IsNumber()
|
|
@IsOptional()
|
|
senderOrgId?: number;
|
|
|
|
@IsNumber()
|
|
@IsOptional()
|
|
receiverOrgId?: number;
|
|
|
|
@IsString()
|
|
@IsOptional()
|
|
issuedDate?: string;
|
|
|
|
@IsString()
|
|
@IsOptional()
|
|
receivedDate?: string;
|
|
|
|
@IsString()
|
|
@IsOptional()
|
|
remarks?: string;
|
|
|
|
@IsArray()
|
|
@IsOptional()
|
|
extractedTags?: Record<string, string>[];
|
|
|
|
@IsOptional()
|
|
details?: Record<string, unknown>;
|
|
|
|
@IsNumber()
|
|
@IsOptional()
|
|
tempAttachmentId?: number;
|
|
|
|
@IsBoolean()
|
|
@IsOptional()
|
|
isValid?: boolean;
|
|
|
|
@IsNumber()
|
|
@IsOptional()
|
|
confidence?: number;
|
|
|
|
@IsArray()
|
|
@IsOptional()
|
|
aiIssues?: Record<string, unknown>[];
|
|
|
|
@IsString()
|
|
@IsOptional()
|
|
aiJobId?: string;
|
|
}
|