CleanupVectorDataForFile 清理文件的向量数据,可以被独立调用
(eid int64, fileID int64)
| 1794 | |
| 1795 | // CleanupVectorDataForFile 清理文件的向量数据,可以被独立调用 |
| 1796 | func CleanupVectorDataForFile(eid int64, fileID int64) error { |
| 1797 | file, err := GetFileByID(eid, fileID) |
| 1798 | if err != nil { |
| 1799 | return fmt.Errorf("获取文件信息失败: %v", err) |
| 1800 | } |
| 1801 | |
| 1802 | // 仅对文件类型执行向量清理 |
| 1803 | if file.Type == FILE_TYPE_DIR { |
| 1804 | log.Printf("目录类型无需清理向量数据 - EID: %d, FileID: %d", eid, fileID) |
| 1805 | return nil |
| 1806 | } |
| 1807 | |
| 1808 | // 收集需要清理的向量ID |
| 1809 | vectorIDs, err := getVectorIDsForFile(eid, fileID) |
| 1810 | if err != nil { |
| 1811 | log.Printf("获取文件向量ID失败,将跳过向量清理 - EID: %d, FileID: %d, Error: %v", eid, fileID, err) |
| 1812 | return nil // 不返回错误,允许主流程继续 |
| 1813 | } |
| 1814 | |
| 1815 | if len(vectorIDs) == 0 { |
| 1816 | log.Printf("文件没有向量数据需要清理 - EID: %d, FileID: %d", eid, fileID) |
| 1817 | return nil |
| 1818 | } |
| 1819 | |
| 1820 | // 异步清理向量数据 |
| 1821 | go cleanupVectorDataAsync(eid, fileID, vectorIDs) |
| 1822 | return nil |
| 1823 | } |
| 1824 | |
| 1825 | // SoftDeleteFile 执行软删除:目标标记主动删除,未主动删除的子级批量被动删除 |
| 1826 | func SoftDeleteFile(eid int64, fileID int64, userID int64) error { |
no test coverage detected