From b293ceb960507cb86897b2f5430f869cd3015f9a Mon Sep 17 00:00:00 2001 From: Hera Zhao Date: Sat, 11 Apr 2026 21:36:27 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B4=BB=E5=8A=A8=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E6=92=A4=E9=94=80+=E8=AF=A6=E6=83=85+=E6=8E=92=E7=89=88?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 活动日志: - 删除配方/用户/精油加撤销按钮 - 编辑配方记录修改了哪些字段(名称/成分/标签/备注/英文名) - 创建标签记入日志 - 注册记入日志(已有) 配方卡片: - 精油按字母排序 - 容量移到名字后面 - 标签对viewer不可见 - 管理配方标签排序+容量显示 其他: - 管理员共享直接显示已共享 - 点击轮播清除搜索 - 编辑overlay防误关 Co-Authored-By: Claude Opus 4.6 (1M context) --- backend/main.py | 14 +++++++++-- frontend/src/components/RecipeCard.vue | 10 ++++---- frontend/src/views/AuditLog.vue | 35 ++++++++++++++++++++++++++ frontend/src/views/RecipeManager.vue | 17 +++++++++++-- frontend/src/views/RecipeSearch.vue | 2 ++ 5 files changed, 69 insertions(+), 9 deletions(-) diff --git a/backend/main.py b/backend/main.py index cfcb282..ea7b826 100644 --- a/backend/main.py +++ b/backend/main.py @@ -868,7 +868,17 @@ def update_recipe(recipe_id: int, update: RecipeUpdate, user=Depends(get_current (recipe_id, tag), ) c.execute("UPDATE recipes SET updated_by = ?, version = COALESCE(version, 1) + 1 WHERE id = ?", (user["id"], recipe_id)) - log_audit(conn, user["id"], "update_recipe", "recipe", recipe_id, update.name) + # Get recipe name for log + rname = c.execute("SELECT name FROM recipes WHERE id = ?", (recipe_id,)).fetchone() + changed = [] + if update.name is not None: changed.append("名称") + if update.ingredients is not None: changed.append("成分") + if update.tags is not None: changed.append("标签") + if update.note is not None: changed.append("备注") + if update.en_name is not None: changed.append("英文名") + log_audit(conn, user["id"], "update_recipe", "recipe", recipe_id, + rname["name"] if rname else update.name, + json.dumps({"changed": "、".join(changed)}, ensure_ascii=False) if changed else None) conn.commit() conn.close() return {"ok": True} @@ -1030,7 +1040,7 @@ def create_tag(body: dict, user=Depends(require_role("admin", "senior_editor", " raise HTTPException(400, "Tag name required") conn = get_db() conn.execute("INSERT OR IGNORE INTO tags (name) VALUES (?)", (name,)) - # Don't log tag creation (too frequent/noisy) + log_audit(conn, user["id"], "create_tag", "tag", name, name, None) conn.commit() conn.close() return {"ok": True} diff --git a/frontend/src/components/RecipeCard.vue b/frontend/src/components/RecipeCard.vue index d3420f6..8e33197 100644 --- a/frontend/src/components/RecipeCard.vue +++ b/frontend/src/components/RecipeCard.vue @@ -1,11 +1,10 @@