feat:新增大屏存取发布接口

This commit is contained in:
2026-10-11 08:27:30 -07:00
parent dadd797391
commit afc07ba695
23 changed files with 2672 additions and 36 deletions
+17 -1
View File
@@ -195,7 +195,8 @@ class DataFileService:
async def delete_file(self, user_id: int, file_id: str) -> None:
await self.get_file(user_id, file_id)
await self.store.mark_deleted(file_id)
# 同时撤销大屏对它的固定:文件没了,记录不该再停在"永不过期"
await self.store.mark_deleted(file_id, datetime.now(UTC) + self._ttl)
# Windows 上正在查询的 Parquet 删不掉,留给定时清理
await asyncio.to_thread(shutil.rmtree, self.root / file_id, ignore_errors=True)
@@ -215,6 +216,21 @@ class DataFileService:
raise BizException(404, NOT_FOUND)
return records
async def sync_screen_files(
self, user_id: int, screen_id: str, file_ids: set[str]
) -> None:
"""大屏保存后调用:它引用的文件固定住,不再引用的放开(重新按保留时长计时)"""
current = await self.store.pinned_ids(screen_id)
if added := file_ids - current:
await self.store.pin(added, user_id, screen_id)
if removed := current - file_ids:
await self.store.unpin(screen_id, removed, datetime.now(UTC) + self._ttl)
async def release_screen_files(self, screen_id: str) -> None:
"""大屏进回收站或被彻底删除:它固定的文件全部放开"""
if current := await self.store.pinned_ids(screen_id):
await self.store.unpin(screen_id, current, datetime.now(UTC) + self._ttl)
async def aclose(self) -> None:
"""应用退出时取消还在进行的分析,记录里留下的 pending 下次启动后读取时按失败返回"""
for task in list(self._tasks):