feat(edit): P2 条目就地编辑 + P3 备份/审计/改密

- 迁移 v17:entry.updated_at(乐观锁)+ audit 表
- GET/PATCH /api/items/{key}:字段编辑、标签替换、409 冲突、400 校验
- 详情页 [编辑] → Drawer 表单(标题/简介/标签/评价/正文/封面/跳转),保存后局部刷新
- GET /api/backup:VACUUM INTO 一致性快照,附件下载
- /admin 系统 Tab:修改密码(清空会话)、下载备份
- 审计:item.update / settings.update
- 测试 46 passed(entries 4 例)
- 文档:ADMIN-PLAN P2/P3 记录、README
This commit is contained in:
stash
2026-10-29 12:59:21 +08:00
parent 9ae5a455c5
commit 8f688885ed
12 changed files with 865 additions and 12 deletions
@@ -27,6 +27,8 @@ type ItemDetailViewProps = {
related: RelatedItem[]
onNavigate: (href: string) => void
onOpenItem: (itemId: string) => void
/** 打开编辑 Drawer */
onEdit: () => void
}
export function ItemDetailView({
@@ -35,6 +37,7 @@ export function ItemDetailView({
related,
onNavigate,
onOpenItem,
onEdit,
}: ItemDetailViewProps) {
return (
<div className="detail-view item-view">
@@ -45,7 +48,7 @@ export function ItemDetailView({
<Card padding="none" className="item-card">
<Title level={1} as="h2" weight="semibold" className="item-title">
{model.title}
<button type="button" className="item-edit" disabled title="编辑功能待接入">
<button type="button" className="item-edit" title="编辑条目" onClick={onEdit}>
[编辑]
</button>
</Title>