feat: 活动日志撤销+详情+排版优化
All checks were successful
PR Preview / teardown-preview (pull_request) Has been skipped
Test / unit-test (push) Successful in 5s
Test / build-check (push) Successful in 4s
PR Preview / test (pull_request) Successful in 6s
PR Preview / deploy-preview (pull_request) Successful in 16s
Test / e2e-test (push) Successful in 50s
All checks were successful
PR Preview / teardown-preview (pull_request) Has been skipped
Test / unit-test (push) Successful in 5s
Test / build-check (push) Successful in 4s
PR Preview / test (pull_request) Successful in 6s
PR Preview / deploy-preview (pull_request) Successful in 16s
Test / e2e-test (push) Successful in 50s
活动日志: - 删除配方/用户/精油加撤销按钮 - 编辑配方记录修改了哪些字段(名称/成分/标签/备注/英文名) - 创建标签记入日志 - 注册记入日志(已有) 配方卡片: - 精油按字母排序 - 容量移到名字后面 - 标签对viewer不可见 - 管理配方标签排序+容量显示 其他: - 管理员共享直接显示已共享 - 点击轮播清除搜索 - 编辑overlay防误关 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -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}
|
||||
|
||||
Reference in New Issue
Block a user