Add clone support for scene presets and update TODO

- Add clone_preset() to ScenePresetStore with deep copy of target snapshots
- Add POST /scene-presets/{id}/clone API endpoint
- Add clone button to scene preset cards in Automations tab
- Add i18n keys for clone feedback in all 3 locales
- Add TODO items for dashboard stats collapse and protocol badge review

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-08 20:17:09 +03:00
parent fddbd771f2
commit 80b48e3618
8 changed files with 74 additions and 3 deletions

View File

@@ -164,6 +164,28 @@ async def delete_scene_preset(
raise HTTPException(status_code=404, detail=str(e))
# ===== Clone =====
@router.post(
"/api/v1/scene-presets/{preset_id}/clone",
response_model=ScenePresetResponse,
tags=["Scene Presets"],
status_code=201,
)
async def clone_scene_preset(
preset_id: str,
_auth: AuthRequired,
store: ScenePresetStore = Depends(get_scene_preset_store),
):
"""Duplicate a scene preset with all its stored target snapshots."""
try:
cloned = store.clone_preset(preset_id)
except ValueError as e:
raise HTTPException(status_code=404, detail=str(e))
return _preset_to_response(cloned)
# ===== Recapture =====
@router.post(