[BUG]`-删除-复制'可以解开服务器从未确认为重复的文件的链接
我研究了现有的问题,无论是公开的还是结束的,以确保这不是重复的报告。
- 对
{\fn华文楷体\fs16\1cHE0E0E0}错误
packages/cli/src/commands/asset.ts ' 中的检查重复 ' 将`POST/assets/bulk-upload-check ' 中被拒绝的每一项结果视为重复,不论为何拒绝(239至246行):
用于(const { id: filepath, ext-Id, act) {结果} 如果(Action QQ 资产上载动作)。 接受){ 新Files.push( 文件路径); 否则 // 拒绝总是重复的 复制.push({ id: 资产ID 为字符串, 文件路径 } ); {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
评论实际上并没有得到CLI自己类型的保证. `AssetBulkUploadCheckResult.Reason ' 被打成`AssetRejectionReason',这是一个有两名成员、`重复'和`不支持格式 ' (`server/src/dtos/asset-media-response.ts:25-28 ' ,在生成的客户端的`packages/sdk/src/fetch-client.ts:8134-8137 ' 和已出版的OpenAPI schema中反射)。 这里没有 " 理由 " ,也没有检查 " 资产 " 是否实际归还,然后才将该条目视为已知的、可删除的重复。
一旦`-去除-去除-去除-去除-去除-去除-去除-去除-去除-去除-去除-去除-去除-去除-去除-去除-去-去除-去除-去除-去除-去除-去除-去除-去除-去除-去-去除-去除-去除-去-去除-去-去除-去-去除-去-去-去-去-去除-去-去-去-去-去-去-去-去-去-去-去-去-去-去-去-去-去-去-去-去-去-去-去-去-去-去-去-去-去-去-去-去-去--去-去- o'(第507行)中的 " , " 字 " 中 " 字 " 字 " 字 " 字 " 字 " 字 " 字 " 字 " :
如果( 选项. 删除重复) {
等待块删除( 重复) ;
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
cunkDelete'直接用当地文件(及其XMP侧车)拨打unlink'——没有垃圾,也没有确认。
** 我能够和不能复制的东西。 ** 我读到CLI呼叫的 " AssetMediaService.bulkUploadCheck " ( " server/src/ services/asset-media.service.ts:318–346 " )的终点目前的执行情况,无论是在 " main " 上还是在已公布的 " v3.2.2 " 标记上, " immmich/cli " 建造的船舶都来自(CLI代码在两者中都相同)。 它只将校验和返回接受'或拒绝'与理由:重复'加以比较——它根本不检查文件格式,因此它从来没有在今天实际发出理由:不支持格式'',我找不到任何其他目前的代码路径。 因此,在未经修改的immich-server'库存上,我无法从中删除一个真正没有备份的文件;CLI防御如此糟糕的具体触发点目前没有开火。
但这并不能使处理正确。 不支持格式'是承诺的公开API合同的一部分——它存在于生成的SDK类型和已出版的OpenAPI schema中——所以immich/cli'已经写成,似乎它可能看到这一价值;它只是把它与重复'一样处理,而不是排除它。 任何开始填充该字段(今后更改为bulkUploadCheck'、服务器叉或以packages/plugin-sdk'为基础的插件),将导致-去除-复制'无声地永久地删除服务器上从未实际存储的本地文件,没有服务器侧面的复制件可以返回。 对于一个照片/视频工具, 是关于最糟糕的形而上学的失败, 而现在代码中没有任何 站在API合同和它发生之间。
Immich的操作系统 . . . . . . .
内容来源: immich-app/immich