- Add en_name column to recipes table (migration in database.py)
- Include en_name in recipe API responses and RecipeUpdate model
- Save en_name when admin/senior_editor applies translation
- Load en_name on overlay open, so translation persists across sessions
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Previously only editor+ roles could manage recipes, so viewer users
saw an empty "我的配方" section. Now any authenticated user can CRUD
their own recipes while admin/senior_editor retain full access.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Direct navigation to /bugs, /oils, /manage etc. returned 404 because
FastAPI's StaticFiles only served index.html for /. Now all non-API,
non-asset routes return index.html so Vue Router handles client-side routing.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>