Skip to content

React + AI 应用开发

AI 生成内容的编辑、版本、撤销和人工审核如何实现?

生成结果不是最终事实,系统要区分模型草稿、人工修改、审核状态和已发布版本。

适合阶段:资深前端 / 内容产品面试核心能力:版本控制 · Diff · 审核

面试官想考什么

  • 用户修改 AI 文本后如何保存? 考察不可变版本。
  • 撤销是回退 React state 还是服务端版本? 考察数据权威性。
  • 审核中的内容能否继续被 AI 改写? 考察状态和权限。
  • 如何避免审核和编辑互相覆盖? 考察并发控制。

一句话回答

text
把 AI 生成、人工编辑、审核和发布建模为带 parentVersion 的不可变版本,前端用本地 undo 提升体验,提交时用 revision/ETag 做并发校验;审核通过的是明确版本,后续 AI 修改必须生成新草稿而不是覆盖已发布内容。

面试回答详解

1. 版本状态

text
generated -> edited -> pending_review -> approved -> published
                         |-> rejected

每个版本保存 parentVersion、author、source、prompt/model metadata、content hash、createdAt 和状态。发布动作绑定版本号,不能只依赖当前页面内容。

2. 编辑体验

编辑器有本地 draft、dirty 状态、自动保存和离开提示。撤销/重做可以用操作栈或快照,但提交服务端时要携带基线 revision。多人编辑或审核时发现版本变化,应显示冲突,而不是静默覆盖。

3. AI 重写

重写选区要携带原文范围和基线 hash,返回新版本或 patch。用户确认后才合并。模型生成的 diff 不能直接写入发布版本,避免上下文过期造成错误替换。

4. 审核流程

审核员看到完整上下文、来源、风险标记和变更 diff。审核通过的是 versionId;审核期间禁止无权限用户修改,或修改后自动回到 pending_review。高风险领域需要双人审核和审计记录。

5. 回滚和指标

发布后保留历史版本,回滚只是把旧版本重新发布或建立新版本,不删除历史。观测人工修改率、拒绝率、平均审核时长、回滚率和 AI 建议采纳率,判断生成质量与审核成本。

可直接背诵的 30 秒回答

text
我会把模型生成、人工编辑、审核和发布都作为不可变版本,保存 parentVersion、作者、来源和 revision。前端 undo 只解决本地体验,提交时用 ETag 或 revision 防止覆盖;审核绑定明确 versionId,审核后任何修改都生成新草稿并重新审核。发布和回滚保留完整审计链。

扩展知识

快照与操作日志

  • 快照:读取简单,适合文章和消息。
  • 操作日志:节省部分存储并能表达细粒度修改,但重放和调试更复杂。
  • 实际项目常用版本快照加简化 diff。

面试官追问链

追问一:为什么审核通过后还要重新鉴权?

  • 考察点:状态不是权限。
  • 回答方向:审核人、资源归属、发布权限和内容状态都可能变化,发布接口必须重新检查。

追问二:AI patch 应该按字符还是按语义应用?

  • 考察点:编辑器工程。
  • 回答方向:短文本可用范围 patch,长文档更适合 block/id 或 AST 级 patch,并校验基线 hash。

追问三:怎么防止审核员看到被篡改的来源?

  • 考察点:证据链。
  • 回答方向:来源以服务端 sourceId 和快照为准,保存内容 hash 和检索版本,前端不能自行修改证据字段。

推荐阅读

基于 MIT 协议开源