blog-demo · 规划
Studio 评审与演进方案
Studio 写作保护、预览、内容查找和发布反馈的演进记录。
- 状态
- 进行中
- 最后核对
- 源码修订
e0d3baa2
Studio 评审与演进方案
2026-09-06。基于作者指定的 Studio 标签页、闪念/长文/收藏界面与当前源码。作者已选择第一优先级:草稿保护、正文优先、即时预览。下方评分与问题保留为改版前的评审记录。写作保护、双层预览、查找、首页设置和发布阶段反馈已实施;使用说明见仓库根目录的 Studio 指南。卷首按作者确认定义为手动置顶,和发布日期无关。
判断
Studio 需要同步演进。新增字段已接上,写作流程、状态反馈和新版的编选能力还没有完整跟上。推荐把它做成“纸墨档案的编辑台”:打开能接着写,写完能看效果,发布有明确结果。
模板化外观检查:通过。 暖纸底、朱红印章和小面积藏青操作与站点一致,没有无关渐变、玻璃面板或装饰性指标。
层级判断:保存按钮清楚,但长文的元数据优先于正文,主要阅读空间没有交给写作。 当前约 780px 宽的面板中,新建长文的正文接近首屏底部,补记字段即使在新文章中也常驻展开。侧栏固定 260px,窄窗口仍需适配;本轮没有宣称完成手机端可用性测试。
改版前适配情况
| 能力 | 当前状态 | 下一步 |
|---|---|---|
| 文章补记日期/说明 | 网站与 Studio 字段已同步 | 新文章默认收起补记,只在需要时展开 |
| 收藏来源/收听链接 | 已同步 | URL 就地校验并提供目标预览 |
| 美食条目 | 已有做过/吃过、照片、地点 | 创建入口直接选择内容类型,减少通用表单解释 |
| 收藏关联长文 | 已有,保存会保留原补记和标签 | 让短评与长文编辑关系更直观 |
| 内容提交隔离 | 已修复,不夹带其他已暂存代码 | 展示本次提交的真实内容清单 |
| 卷首编选与摘句 | 仍编辑 src/data/editorial.ts |
第二阶段提供选文章和编者按界面 |
| 首页“此刻” | 仍编辑 src/data/now.json |
第二阶段提供轻量编辑与日期确认 |
| 闪念 → 长文关联 | 配置已有,Studio 无入口 | 从闪念发起“扩写成长文”,由作者确认关联说明 |
| 阅读进度、目录、代码复制 | 属于读者端增强 | 编辑器提供接近生产的预览,不必复制所有交互 |
| 搜索和年度档案 | 从内容自动生成 | 显示保存后会出现的位置,无需再做一套手工归档 |
改版前设计健康评分
启发式评分,每项 0–4 分,分数越高越好;不是性能跑分或用户实验结论。
| 维度 | 分数 | 依据 |
|---|---|---|
| 状态可见 | 2 | 有日志与计数;当前标签仍显示“提交 85”,接口已返回 files: []、ahead: 0 |
| 符合作者语言 | 3 | 此间/闪念/收藏容易理解;文件名、main、校验等工程信息仍前置 |
| 用户控制 | 2 | 提交/发布可取消、删除先展示范围;切换内容没有未保存保护或恢复入口 |
| 一致性 | 3 | 纸墨主题与字段表单一致;编辑器和网站的令牌维护仍有重复 |
| 错误预防 | 2 | 有必填和服务端边界处理;没有草稿恢复、外部修改冲突检查与完整保存校验 |
| 易发现 | 2 | 四类内容清楚;列表无检索,编选配置要回到代码 |
| 使用效率 | 2 | 拖图处理、封面检索、关联长文节省步骤;缺少保存快捷键和内容搜索 |
| 简洁与美感 | 3 | 克制且可读;新建文章被可选字段挤占,普通提示使用警告式底色 |
| 错误恢复 | 2 | 封面失败有上传退路;一般错误进底部日志,不定位到字段,也无撤销历史 |
| 帮助 | 3 | 项目指南较完整,字段有说明;界面内缺少直达帮助与发布阶段解释 |
| 合计 | 24/40 | 基础可用,主要提升空间在完整写作流程 |
认知负担检查:8 项中 4 项需要改善——长文一次呈现太多字段、编选需要记住外部配置、补记等低频能力提前展开、保存/提交/上线的下一步不够明确。不是说界面元素越少越好,而是按当前任务安排出现顺序。
值得保留:照片压缩与 EXIF 提取、封面来源失败时的退路、四类内容共用 schema 表单、短评转长文、保存/提交/发布分离、已有服务端与 Git 隔离测试。
第一阶段:让写作顺手且不丢字
P1 · 草稿保护
当前 newEntry() / load() 会替换编辑状态,类型与条目切换直接调用它们;源码没有 dirty 标记、离开保护或草稿恢复。这个发现来自代码,本轮没有故意输入并丢弃作者文字来复现。
建议:
- 输入后短暂防抖,自动保存为仅供恢复的本机副本;明确它还没有写入 Markdown,也没有上线。
- 有未保存修改时,切换条目显示“保存后切换 / 保留本机副本后切换 / 取消”;浏览器关闭只做必要的离开提醒。
- 打开 Studio 优先提示“继续上次未完成的内容”,不默认把作者送进一张空表。
- 顶部安静显示“正在保留本机副本 / 本机副本已保留 / 已写入文件 / 保存失败”;保存失败保留编辑文本。
- 使用 Cmd/Ctrl+S 保存,仍保留明显按钮;正在保存时防止重复发起,不阻断继续编辑。
- 检查文件版本或内容摘要,遇到终端或另一个标签修改时先比较,不直接覆盖。
- 本机存储不可用或空间不足时明确告知并允许复制/导出;图片文件要单独处理,不能只恢复文本就宣称恢复了全部内容。
验收:刷新后恢复文本;切换与保存失败不丢字;外部修改得到冲突提示;自动副本不会变成公开内容或一次 Git 提交。对应 /harden。
P1 · 正文优先
主编辑区首先出现标题与正文。简介、归属、标签、日期进入“文章设置”;补记在“新增补记”后展开。闪念打开直接写,美食优先照片和评价,书影音优先名称、封面、短评。
概念布局:
内容库 正在写:《文章标题》 文件已保存 · 预览 · 保存
搜索记录 标题
草稿 / 最近 正文写作区
内容列表 ……
文章设置:简介 · 标签 · 日期(可展开)
关联与补记(可展开)
宽窗口允许文章设置侧栏;当前这种窄面板默认收起设置,用“写作 / 预览”切换,避免三栏挤压。侧栏应可折叠,日志收为底部状态与可展开详情。保留现有纸墨颜色,正文使用舒适的系统字体;不在编辑时加入盖章动画或纸张翻页。
验收:在当前面板大小下,新建长文无需滚动就能开始写正文;可选设置不丢失且可找回;所有原有内容类型仍可编辑。对应 /arrange、/distill。
P1 · 双层预览
- 即时排版预览:随输入显示标题、段落、引用、列表、代码与图片说明。明显标注为排版预览,渲染器必须处理不可信 Markdown/HTML,不执行文章中的脚本。
- 站点效果预览:保存后调用受控的本地构建/预览,复用 Astro 布局、Shiki、图片处理与 BASE;显示这次预览对应的保存版本及构建失败原因。完整构建不在每次按键时运行。
草稿目前被生产路由过滤,不能简单链接到公开地址充当预览。先提供排版预览;完整草稿页面需专门的本地预览路径或隔离构建,且绝不能把“包含草稿”的预览产物交给生产发布。
验收:长文与收藏卡都能看到基本效果;生产预览包含真实代码/图片样式;预览与文件不同步时有提示;草稿不会因预览进入公开产物。对应 /harden、/normalize。
第二阶段:查找与编选
P2 · 内容库检索
侧栏加一个按标题、正文片段、标签检索的输入框,配“全部 / 草稿 / 最近修改”筛选;列表露出日期、类型和简短状态。先做简单本地过滤,不需要再运行一套 Pagefind。
特别有用的小能力:记住上次打开的条目;标签从已使用标签中补全;从闪念一键创建长文草稿;收藏可“写长评”,保留来源及关联。在数据量真正需要时再考虑批量管理。
P2 · 首页编选台
提供“卷首 / 此刻 / 内容关联”三个清楚的入口,显示前台效果及内容是否公开。卷首只能选择公开文章;摘句与编者按区别显示;思路关联由作者确认,系统不按关键词编造。
这些设置在 src/data/,当前内容提交只含 src/content/。实现时必须设计明确的配置白名单及提交范围;不能为了方便改成提交整个仓库。
第三阶段:发布闭环
P1 · 可信状态与发布清单
当前前端只在启动与部分操作后调用 refresh(),没有重新聚焦/外部变动刷新,因而留下“85 个文件”的旧计数。当前发布流程仅做 astro check 后推送;日志的“已推送”没有冒充已部署,但也没有继续显示 Actions 结果。
建议把状态拆开:
未保存 → 文件已保存 → 本地已提交 → 已推送 → 构建中 → 已上线
└→ 构建失败,线上仍是旧版
- 回到标签时轻量刷新 Git/服务状态,不覆盖正在编辑的表单;外部修改另行提示。
- “准备发布”展示实际条目、配置和待推送提交,不只报文件个数;已有未发布代码提交也要可见。
- 校验与构建绑定本次待发布版本,明确基础检查与可发布构建的区别。
- 推送后追踪对应 SHA 的 Actions;确实部署成功再显示“已上线”和公开链接。网络断开显示状态未知,可恢复查询。
- 首阶段即可补当前状态刷新及基础错误反馈;完整发布面板按作者优先级放后面。
验收:外部提交后数字能更新;未保存内容不被当作已发布;推送成功而构建失败时结果准确。对应 /clarify、/harden。
工程与细节
studio/index.html当前约 790 行,同时承担样式、表单、状态和发布。按修改边界拆成状态/草稿、编辑表单、媒体、发布模块,逐步迁移,保留现有 API 和 Markdown 文件格式。- 网站 Zod schema 与 Studio 字段表已有重复,先加字段及保存结果的一致性约束;不要为消除几行重复引入复杂框架迁移。
- 列表标题和日志存在直接拼接
innerHTML的路径,需统一按文本安全渲染;预览新增 HTML 渲染时更要保持边界。 - 错误放到对应字段,首个错误可聚焦,成功/失败可被辅助技术感知;普通文件名说明降低视觉强调。
- 缩略图以内容辨认为目的,EXIF 默认折叠;书影音匹配结果保留来源与手动上传退路。
- 现有网站视觉基线不覆盖 Studio;新增独立的编辑器浏览器回归,用临时数据验证,不在作者真实条目上测试保存与删除。
三类使用者的检查
- 熟练使用者 Alex:找旧闪念要滚动,常用保存没有快捷键;方案用检索、最近条目和 Cmd/Ctrl+S 缩短路径。
- 偶尔维护的 Jordan:一眼看到“保存/提交/发布”,却不知道当前内容走到哪里;方案用阶段状态和真实清单减少猜测。
- 项目作者:临睡前记一段话:类型切换或刷新可能丢掉未保存文字;先实现本机恢复副本与离开保护。
- 项目作者:长文写作者:新建时先填一串元数据才到正文;优先把标题与正文放到首屏,设置渐进展开。
实施顺序与范围
按作者选择,推荐 /harden(草稿与保存)→ /arrange + /distill(正文优先)→ /normalize(预览贴近站点)→ /clarify(保存与发布状态)→ /polish(最后的焦点、间距与细节)。可以按阶段实施,完成后用同一组任务重新 /critique。
暂不优先加入 AI 自动写作、社交统计、复杂看板或富文本框架迁移。第一阶段成功的标准是:打开就能写,切换不丢字,写完能看效果。