@nest-omni/core 4.1.3-10 → 4.1.3-12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. package/audit/audit.module.js +42 -2
  2. package/audit/controllers/audit.controller.d.ts +64 -0
  3. package/audit/controllers/audit.controller.js +50 -0
  4. package/audit/decorators/audit-action.decorator.d.ts +74 -0
  5. package/audit/decorators/audit-action.decorator.js +42 -0
  6. package/audit/decorators/audit-controller.decorator.d.ts +1 -1
  7. package/audit/decorators/audit-controller.decorator.js +2 -2
  8. package/audit/decorators/entity-audit.decorator.d.ts +78 -2
  9. package/audit/decorators/entity-audit.decorator.js +145 -4
  10. package/audit/decorators/index.d.ts +2 -0
  11. package/audit/decorators/index.js +2 -0
  12. package/audit/entities/audit-action-summary.entity.d.ts +23 -0
  13. package/audit/entities/audit-action-summary.entity.js +101 -0
  14. package/audit/entities/entity-audit-log.entity.d.ts +8 -0
  15. package/audit/entities/entity-audit-log.entity.js +54 -2
  16. package/audit/entities/entity-transaction.entity.d.ts +8 -2
  17. package/audit/entities/entity-transaction.entity.js +39 -3
  18. package/audit/entities/index.d.ts +3 -0
  19. package/audit/entities/index.js +3 -0
  20. package/audit/entities/manual-operation-log.entity.js +8 -1
  21. package/audit/enums/audit.enums.d.ts +22 -6
  22. package/audit/enums/audit.enums.js +27 -9
  23. package/audit/index.d.ts +4 -1
  24. package/audit/index.js +25 -2
  25. package/audit/interceptors/audit-action.interceptor.d.ts +38 -0
  26. package/audit/interceptors/audit-action.interceptor.js +215 -0
  27. package/audit/interceptors/index.d.ts +1 -0
  28. package/audit/interceptors/index.js +1 -0
  29. package/audit/interfaces/audit.interfaces.d.ts +145 -2
  30. package/audit/services/audit-action.service.d.ts +141 -0
  31. package/audit/services/audit-action.service.js +244 -0
  32. package/audit/services/audit-context.service.d.ts +82 -0
  33. package/audit/services/audit-context.service.js +170 -0
  34. package/audit/services/entity-audit.service.d.ts +174 -4
  35. package/audit/services/entity-audit.service.js +515 -14
  36. package/audit/services/index.d.ts +3 -0
  37. package/audit/services/index.js +3 -0
  38. package/audit/services/manual-audit-log.service.d.ts +24 -23
  39. package/audit/services/manual-audit-log.service.js +32 -53
  40. package/audit/services/operation-description.service.d.ts +13 -3
  41. package/audit/services/operation-description.service.js +161 -24
  42. package/audit/services/transaction-audit.service.js +3 -3
  43. package/audit/subscribers/entity-audit.subscriber.d.ts +4 -0
  44. package/audit/subscribers/entity-audit.subscriber.js +47 -0
  45. package/file-upload/controllers/file-access.controller.d.ts +23 -0
  46. package/file-upload/controllers/file-access.controller.js +128 -0
  47. package/file-upload/decorators/csv-data.decorator.d.ts +44 -0
  48. package/file-upload/decorators/csv-data.decorator.js +131 -0
  49. package/file-upload/decorators/excel-data.decorator.d.ts +44 -0
  50. package/file-upload/decorators/excel-data.decorator.js +125 -0
  51. package/file-upload/decorators/file-upload.decorator.d.ts +83 -0
  52. package/file-upload/decorators/file-upload.decorator.js +172 -0
  53. package/file-upload/decorators/index.d.ts +4 -0
  54. package/file-upload/decorators/index.js +20 -0
  55. package/file-upload/decorators/process.decorator.d.ts +40 -0
  56. package/file-upload/decorators/process.decorator.js +52 -0
  57. package/file-upload/dto/create-file.dto.d.ts +24 -0
  58. package/file-upload/dto/create-file.dto.js +112 -0
  59. package/file-upload/dto/find-files.dto.d.ts +15 -0
  60. package/file-upload/dto/find-files.dto.js +76 -0
  61. package/file-upload/dto/index.d.ts +4 -0
  62. package/file-upload/dto/index.js +20 -0
  63. package/file-upload/dto/pagination.dto.d.ts +7 -0
  64. package/file-upload/dto/pagination.dto.js +39 -0
  65. package/file-upload/dto/update-file.dto.d.ts +16 -0
  66. package/file-upload/dto/update-file.dto.js +71 -0
  67. package/file-upload/entities/file-metadata.entity.d.ts +22 -0
  68. package/file-upload/entities/file-metadata.entity.js +84 -0
  69. package/file-upload/entities/file.entity.d.ts +129 -0
  70. package/file-upload/entities/file.entity.js +384 -0
  71. package/file-upload/entities/index.d.ts +2 -0
  72. package/file-upload/entities/index.js +18 -0
  73. package/file-upload/enums/file-type.enum.d.ts +72 -0
  74. package/file-upload/enums/file-type.enum.js +212 -0
  75. package/file-upload/exceptions/file-upload.exception.d.ts +57 -0
  76. package/file-upload/exceptions/file-upload.exception.js +120 -0
  77. package/file-upload/exceptions/index.d.ts +1 -0
  78. package/file-upload/exceptions/index.js +17 -0
  79. package/file-upload/file-upload.module.d.ts +89 -0
  80. package/file-upload/file-upload.module.js +264 -0
  81. package/file-upload/index.d.ts +26 -0
  82. package/file-upload/index.js +59 -0
  83. package/file-upload/interceptors/file-upload.interceptor.d.ts +48 -0
  84. package/file-upload/interceptors/file-upload.interceptor.js +434 -0
  85. package/file-upload/interceptors/index.d.ts +1 -0
  86. package/file-upload/interceptors/index.js +17 -0
  87. package/file-upload/interfaces/custom-file-type.interface.d.ts +72 -0
  88. package/file-upload/interfaces/custom-file-type.interface.js +2 -0
  89. package/file-upload/interfaces/file-buffer.interface.d.ts +72 -0
  90. package/file-upload/interfaces/file-buffer.interface.js +2 -0
  91. package/file-upload/interfaces/file-entity.interface.d.ts +142 -0
  92. package/file-upload/interfaces/file-entity.interface.js +28 -0
  93. package/file-upload/interfaces/file-metadata.interface.d.ts +21 -0
  94. package/file-upload/interfaces/file-metadata.interface.js +2 -0
  95. package/file-upload/interfaces/file-upload-options.interface.d.ts +117 -0
  96. package/file-upload/interfaces/file-upload-options.interface.js +2 -0
  97. package/file-upload/interfaces/index.d.ts +7 -0
  98. package/file-upload/interfaces/index.js +24 -0
  99. package/file-upload/interfaces/storage-provider.interface.d.ts +239 -0
  100. package/file-upload/interfaces/storage-provider.interface.js +2 -0
  101. package/file-upload/interfaces/upload-options.interface.d.ts +19 -0
  102. package/file-upload/interfaces/upload-options.interface.js +2 -0
  103. package/file-upload/providers/index.d.ts +2 -0
  104. package/file-upload/providers/index.js +18 -0
  105. package/file-upload/providers/local-storage.provider.d.ts +98 -0
  106. package/file-upload/providers/local-storage.provider.js +484 -0
  107. package/file-upload/providers/s3-storage.provider.d.ts +87 -0
  108. package/file-upload/providers/s3-storage.provider.js +455 -0
  109. package/file-upload/services/file-signature-validator.service.d.ts +118 -0
  110. package/file-upload/services/file-signature-validator.service.js +376 -0
  111. package/file-upload/services/file.service.d.ts +190 -0
  112. package/file-upload/services/file.service.js +609 -0
  113. package/file-upload/services/index.d.ts +4 -0
  114. package/file-upload/services/index.js +20 -0
  115. package/file-upload/services/malicious-file-detector.service.d.ts +274 -0
  116. package/file-upload/services/malicious-file-detector.service.js +1035 -0
  117. package/file-upload/services/mime-registry.service.d.ts +47 -0
  118. package/file-upload/services/mime-registry.service.js +167 -0
  119. package/file-upload/utils/checksum.util.d.ts +28 -0
  120. package/file-upload/utils/checksum.util.js +65 -0
  121. package/file-upload/utils/dynamic-import.util.d.ts +50 -0
  122. package/file-upload/utils/dynamic-import.util.js +144 -0
  123. package/file-upload/utils/filename.util.d.ts +59 -0
  124. package/file-upload/utils/filename.util.js +184 -0
  125. package/file-upload/utils/filepath.util.d.ts +70 -0
  126. package/file-upload/utils/filepath.util.js +152 -0
  127. package/file-upload/utils/index.d.ts +4 -0
  128. package/file-upload/utils/index.js +20 -0
  129. package/http-client/http-client.module.js +1 -5
  130. package/index.d.ts +3 -1
  131. package/index.js +4 -1
  132. package/package.json +4 -5
  133. package/redis-lock/lock-heartbeat.service.d.ts +2 -2
  134. package/redis-lock/lock-heartbeat.service.js +4 -4
  135. package/redis-lock/redis-lock.service.d.ts +18 -0
  136. package/redis-lock/redis-lock.service.js +38 -8
  137. package/setup/bootstrap.setup.d.ts +1 -0
  138. package/setup/bootstrap.setup.js +1 -0
  139. package/setup/schedule.decorator.js +18 -8
  140. package/shared/index.d.ts +1 -1
  141. package/shared/index.js +1 -1
  142. package/shared/{serviceRegistryModule.js → service-registry.module.js} +9 -16
  143. package/shared/services/index.d.ts +0 -1
  144. package/shared/services/index.js +0 -1
  145. package/transaction/__tests__/mocks.d.ts +9 -0
  146. package/transaction/__tests__/mocks.js +33 -0
  147. package/transaction/base-service-transaction.d.ts +99 -0
  148. package/transaction/base-service-transaction.js +286 -0
  149. package/transaction/cls-compatibility.service.d.ts +55 -0
  150. package/transaction/cls-compatibility.service.js +127 -0
  151. package/transaction/data-source-registry.d.ts +91 -0
  152. package/transaction/data-source-registry.js +349 -0
  153. package/transaction/database-adapter.d.ts +44 -0
  154. package/transaction/database-adapter.js +240 -0
  155. package/transaction/decorators/entity-datasource.decorator.d.ts +62 -0
  156. package/transaction/decorators/entity-datasource.decorator.js +105 -0
  157. package/transaction/index.d.ts +14 -0
  158. package/transaction/index.js +57 -0
  159. package/transaction/logging-transactional.interceptor.d.ts +18 -0
  160. package/transaction/logging-transactional.interceptor.js +163 -0
  161. package/transaction/transaction-context.service.d.ts +137 -0
  162. package/transaction/transaction-context.service.js +411 -0
  163. package/transaction/transaction-manager.d.ts +230 -0
  164. package/transaction/transaction-manager.js +1001 -0
  165. package/transaction/transaction-synchronization.d.ts +171 -0
  166. package/transaction/transaction-synchronization.js +380 -0
  167. package/transaction/transaction.errors.d.ts +91 -0
  168. package/transaction/transaction.errors.js +206 -0
  169. package/transaction/transaction.module.d.ts +30 -0
  170. package/transaction/transaction.module.js +98 -0
  171. package/transaction/transactional.decorator.d.ts +82 -0
  172. package/transaction/transactional.decorator.js +319 -0
  173. package/transaction/typeorm-module-wrapper.d.ts +96 -0
  174. package/transaction/typeorm-module-wrapper.js +197 -0
  175. package/validators/file-mimetype.validator.d.ts +0 -2
  176. package/validators/file-mimetype.validator.js +4 -6
  177. package/validators/is-exists.validator.d.ts +2 -5
  178. package/validators/is-exists.validator.js +4 -6
  179. package/validators/is-unique.validator.d.ts +2 -5
  180. package/validators/is-unique.validator.js +6 -11
  181. package/shared/services/validator.service.d.ts +0 -3
  182. package/shared/services/validator.service.js +0 -20
  183. /package/shared/{serviceRegistryModule.d.ts → service-registry.module.d.ts} +0 -0
@@ -0,0 +1,16 @@
1
+ /**
2
+ * 更新文件DTO
3
+ */
4
+ export declare class UpdateFileDto {
5
+ originalName?: string;
6
+ filename?: string;
7
+ metadata?: Record<string, unknown>;
8
+ path?: string;
9
+ checksum?: string;
10
+ status?: 'processing' | 'completed' | 'failed' | 'deleted';
11
+ errorMessage?: string;
12
+ fileType?: string;
13
+ extension?: string;
14
+ validationData?: Record<string, unknown>;
15
+ processingData?: Record<string, unknown>;
16
+ }
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.UpdateFileDto = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ /**
15
+ * 更新文件DTO
16
+ */
17
+ class UpdateFileDto {
18
+ }
19
+ exports.UpdateFileDto = UpdateFileDto;
20
+ __decorate([
21
+ (0, class_validator_1.IsOptional)(),
22
+ (0, class_validator_1.IsString)(),
23
+ __metadata("design:type", String)
24
+ ], UpdateFileDto.prototype, "originalName", void 0);
25
+ __decorate([
26
+ (0, class_validator_1.IsOptional)(),
27
+ (0, class_validator_1.IsString)(),
28
+ __metadata("design:type", String)
29
+ ], UpdateFileDto.prototype, "filename", void 0);
30
+ __decorate([
31
+ (0, class_validator_1.IsOptional)(),
32
+ __metadata("design:type", Object)
33
+ ], UpdateFileDto.prototype, "metadata", void 0);
34
+ __decorate([
35
+ (0, class_validator_1.IsOptional)(),
36
+ (0, class_validator_1.IsString)(),
37
+ __metadata("design:type", String)
38
+ ], UpdateFileDto.prototype, "path", void 0);
39
+ __decorate([
40
+ (0, class_validator_1.IsOptional)(),
41
+ (0, class_validator_1.IsString)(),
42
+ __metadata("design:type", String)
43
+ ], UpdateFileDto.prototype, "checksum", void 0);
44
+ __decorate([
45
+ (0, class_validator_1.IsOptional)(),
46
+ (0, class_validator_1.IsString)(),
47
+ __metadata("design:type", String)
48
+ ], UpdateFileDto.prototype, "status", void 0);
49
+ __decorate([
50
+ (0, class_validator_1.IsOptional)(),
51
+ (0, class_validator_1.IsString)(),
52
+ __metadata("design:type", String)
53
+ ], UpdateFileDto.prototype, "errorMessage", void 0);
54
+ __decorate([
55
+ (0, class_validator_1.IsOptional)(),
56
+ (0, class_validator_1.IsString)(),
57
+ __metadata("design:type", String)
58
+ ], UpdateFileDto.prototype, "fileType", void 0);
59
+ __decorate([
60
+ (0, class_validator_1.IsOptional)(),
61
+ (0, class_validator_1.IsString)(),
62
+ __metadata("design:type", String)
63
+ ], UpdateFileDto.prototype, "extension", void 0);
64
+ __decorate([
65
+ (0, class_validator_1.IsOptional)(),
66
+ __metadata("design:type", Object)
67
+ ], UpdateFileDto.prototype, "validationData", void 0);
68
+ __decorate([
69
+ (0, class_validator_1.IsOptional)(),
70
+ __metadata("design:type", Object)
71
+ ], UpdateFileDto.prototype, "processingData", void 0);
@@ -0,0 +1,22 @@
1
+ import { FileEntity } from './file.entity';
2
+ /**
3
+ * 文件元数据实体
4
+ */
5
+ export declare class FileMetadataEntity {
6
+ id: string;
7
+ fileId: string;
8
+ key: string;
9
+ value: string;
10
+ jsonData: any;
11
+ isPublic: boolean;
12
+ createdAt: Date;
13
+ file: FileEntity;
14
+ /**
15
+ * 获取值(优先返回JSON数据)
16
+ */
17
+ getValue<T = any>(): T;
18
+ /**
19
+ * 设置值(同时保存到JSON和文本字段)
20
+ */
21
+ setValue(value: any): void;
22
+ }
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.FileMetadataEntity = void 0;
13
+ const typeorm_1 = require("typeorm");
14
+ const file_entity_1 = require("./file.entity");
15
+ /**
16
+ * 文件元数据实体
17
+ */
18
+ let FileMetadataEntity = class FileMetadataEntity {
19
+ // ========== 便捷方法 ==========
20
+ /**
21
+ * 获取值(优先返回JSON数据)
22
+ */
23
+ getValue() {
24
+ if (this.jsonData !== null && this.jsonData !== undefined) {
25
+ return this.jsonData;
26
+ }
27
+ if (this.value) {
28
+ try {
29
+ return JSON.parse(this.value);
30
+ }
31
+ catch (_a) {
32
+ return this.value;
33
+ }
34
+ }
35
+ return null;
36
+ }
37
+ /**
38
+ * 设置值(同时保存到JSON和文本字段)
39
+ */
40
+ setValue(value) {
41
+ this.jsonData = value;
42
+ this.value = typeof value === 'string' ? value : JSON.stringify(value);
43
+ }
44
+ };
45
+ exports.FileMetadataEntity = FileMetadataEntity;
46
+ __decorate([
47
+ (0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
48
+ __metadata("design:type", String)
49
+ ], FileMetadataEntity.prototype, "id", void 0);
50
+ __decorate([
51
+ (0, typeorm_1.Column)({ length: 36 }),
52
+ __metadata("design:type", String)
53
+ ], FileMetadataEntity.prototype, "fileId", void 0);
54
+ __decorate([
55
+ (0, typeorm_1.Column)({ length: 100 }),
56
+ __metadata("design:type", String)
57
+ ], FileMetadataEntity.prototype, "key", void 0);
58
+ __decorate([
59
+ (0, typeorm_1.Column)({ type: 'text', nullable: true }),
60
+ __metadata("design:type", String)
61
+ ], FileMetadataEntity.prototype, "value", void 0);
62
+ __decorate([
63
+ (0, typeorm_1.Column)({ type: 'json', nullable: true }),
64
+ __metadata("design:type", Object)
65
+ ], FileMetadataEntity.prototype, "jsonData", void 0);
66
+ __decorate([
67
+ (0, typeorm_1.Column)({ default: false }),
68
+ __metadata("design:type", Boolean)
69
+ ], FileMetadataEntity.prototype, "isPublic", void 0);
70
+ __decorate([
71
+ (0, typeorm_1.CreateDateColumn)(),
72
+ __metadata("design:type", Date)
73
+ ], FileMetadataEntity.prototype, "createdAt", void 0);
74
+ __decorate([
75
+ (0, typeorm_1.ManyToOne)(() => file_entity_1.FileEntity, { onDelete: 'CASCADE' }),
76
+ (0, typeorm_1.JoinColumn)({ name: 'fileId' }),
77
+ __metadata("design:type", file_entity_1.FileEntity)
78
+ ], FileMetadataEntity.prototype, "file", void 0);
79
+ exports.FileMetadataEntity = FileMetadataEntity = __decorate([
80
+ (0, typeorm_1.Entity)('file_metadata'),
81
+ (0, typeorm_1.Index)(['fileId']),
82
+ (0, typeorm_1.Index)(['key']),
83
+ (0, typeorm_1.Index)(['fileId', 'key'], { unique: true })
84
+ ], FileMetadataEntity);
@@ -0,0 +1,129 @@
1
+ /**
2
+ * 文件实体
3
+ */
4
+ export declare class FileEntity {
5
+ id: string;
6
+ originalName: string;
7
+ filename: string;
8
+ mimeType: string;
9
+ fileType: string;
10
+ extension: string;
11
+ size: number;
12
+ checksum: string;
13
+ path: string;
14
+ storageProvider: string;
15
+ metadata: Record<string, any>;
16
+ bucket: string;
17
+ key: string;
18
+ etag: string;
19
+ userId: string;
20
+ uploadId: string;
21
+ tempPath: string;
22
+ status: 'processing' | 'completed' | 'failed' | 'deleted';
23
+ errorMessage: string;
24
+ validationData: {
25
+ detectedTypes: Array<{
26
+ type: string;
27
+ confidence: number;
28
+ isCustom: boolean;
29
+ }>;
30
+ signatures: Array<{
31
+ type: string;
32
+ bytes: number[];
33
+ offset: number;
34
+ }>;
35
+ integrityChecks: string[];
36
+ };
37
+ processingData: {
38
+ processors: Array<{
39
+ name: string;
40
+ startTime: Date;
41
+ endTime?: Date;
42
+ status: 'pending' | 'completed' | 'failed';
43
+ result?: any;
44
+ error?: string;
45
+ }>;
46
+ };
47
+ createdAt: Date;
48
+ updatedAt: Date;
49
+ deletedAt: Date;
50
+ /**
51
+ * 是否为图片
52
+ */
53
+ get isImage(): boolean;
54
+ /**
55
+ * 是否为文档
56
+ */
57
+ get isDocument(): boolean;
58
+ /**
59
+ * 是否为视频
60
+ */
61
+ get isVideo(): boolean;
62
+ /**
63
+ * 是否为音频
64
+ */
65
+ get isAudio(): boolean;
66
+ /**
67
+ * 是否为CAD文件
68
+ */
69
+ get isCAD(): boolean;
70
+ /**
71
+ * 是否为压缩文件
72
+ */
73
+ get isArchive(): boolean;
74
+ /**
75
+ * 获取人类可读的文件大小
76
+ */
77
+ get humanSize(): string;
78
+ /**
79
+ * 静态方法: 从文件名提取扩展名(使用统一工具类)
80
+ */
81
+ static extractExtension(filename: string): string;
82
+ /**
83
+ * 静态方法: 根据 MIME 类型和扩展名识别文件类型
84
+ */
85
+ static detectFileType(mimeType: string, extension: string): string;
86
+ /**
87
+ * 生成访问 URL
88
+ * 注意:不再使用 getter,改为方法以接收 baseUrl 参数
89
+ * 建议使用 FileService.getFileUrl() 代替
90
+ *
91
+ * @param baseUrl 基础 URL(可选)
92
+ * @returns 文件访问 URL
93
+ * @deprecated 请使用 FileService.getFileUrl()
94
+ */
95
+ generateUrl(baseUrl?: string): string;
96
+ /**
97
+ * 获取完整的物理路径(服务器端使用)
98
+ * 仅用于服务器端访问文件系统
99
+ */
100
+ getPhysicalPath(): string;
101
+ /**
102
+ * 自动识别并设置文件类型和扩展名
103
+ */
104
+ detectAndSetFileType(): void;
105
+ /**
106
+ * 标记为已完成
107
+ */
108
+ markAsCompleted(metadata?: any): void;
109
+ /**
110
+ * 标记为失败
111
+ */
112
+ markAsFailed(error: string): void;
113
+ /**
114
+ * 标记为已删除
115
+ */
116
+ markAsDeleted(): void;
117
+ /**
118
+ * 添加验证数据
119
+ */
120
+ addValidationData(data: Partial<FileEntity['validationData']>): void;
121
+ /**
122
+ * 添加处理步骤
123
+ */
124
+ addProcessingStep(processor: string): void;
125
+ /**
126
+ * 更新处理步骤
127
+ */
128
+ updateProcessingStep(processor: string, status: 'completed' | 'failed', result?: any, error?: string): void;
129
+ }