# 删除剧本时同步删除关联子项目 **日期**: 2026-02-08 **类型**: 功能增强 ## 变更说明 在剧本目录中删除剧本时,现已同时将关联的子项目移至回收站。 ## 背景 根据子项目架构(RFC 141),一个剧本对应一个子项目。删除剧本后,原先仅清空子项目的 `screenplay_id` 关联,子项目仍保留在侧边栏,造成数据不一致。 ## 实现 ### 后端 (screenplay_service.py) - **变更前**:删除剧本后,将子项目的 `screenplay_id` 置为 `None` - **变更后**:删除剧本后,调用 `project_repo.move_to_trash()` 将关联子项目移至回收站 - **条件**:仅当 `screenplay.project_id` 指向的项目为子项目(`parent_project_id` 非空)且 `screenplay_id` 匹配时执行 ### 前端 (useScreenplays.ts) - 删除剧本成功后,增加 `projectKeys.lists()` 和 `folderKeys.trees()` 的缓存失效,确保项目列表与文件夹树刷新,子项目从侧边栏消失 ## 影响范围 - `server/app/services/screenplay_service.py` - `delete_screenplay` - `client/src/hooks/api/useScreenplays.ts` - `useDeleteScreenplay` 的 `onSuccess`