feat: 支持研究素材删除并统一 Semi 表格

This commit is contained in:
yuxuanhui
2026-09-11 23:21:08 +08:00
parent f29063c9a2
commit 8eec12f0e0
26 changed files with 1008 additions and 562 deletions
+8 -3
View File
@@ -76,11 +76,12 @@ class Assets:
ResearchAsset.id == asset_id,
ResearchAsset.version == body.version,
ResearchAsset.kind == body.kind,
ResearchAsset.archived.is_(False),
)
.values(version=body.version + 1, name=content["name"], updated_at=now())
)
if changed.rowcount != 1:
raise HTTPException(409, "素材已变化,保留草稿并读取最新版本")
raise HTTPException(409, "素材已变化或已删除,保留草稿并读取最新版本")
version = body.version + 1
else:
asset_id, version = uid(), 1
@@ -100,11 +101,15 @@ class Assets:
async def archive(self, asset_id, version):
result = await self.db.execute(
update(ResearchAsset)
.where(ResearchAsset.id == asset_id, ResearchAsset.version == version)
.where(
ResearchAsset.id == asset_id,
ResearchAsset.version == version,
ResearchAsset.archived.is_(False),
)
.values(archived=True, version=ResearchAsset.version + 1, updated_at=now())
)
if result.rowcount != 1:
raise HTTPException(409, "素材已变化或不存在")
raise HTTPException(409, "素材已变化、已删除或不存在,请刷新后重试")
# Archiving is itself a revision; old references remain resolvable.
previous = await self.db.get(ResearchRevision, (asset_id, version))
self.db.add(