读书笔记搭建-task.md

📅 2026/7/11 3:33:47
读书笔记搭建-task.md
微信读书灵感台词库任务拆解版本v0.3日期2026-07-09依据PRD.md、TECH_DESIGN.md任务原则先交付可用的本地笔记库再做 AI 生成。默认手动同步不在打开网页时自动请求微信读书。同步不触发 AI不消耗 token。所有 AI 批量任务必须 preview 后确认。每个阶段都要能独立运行和验证。当前微信读书 skill 文档未提供官方笔记图片下载批量图片归档需要同时支持“官方样式优先”和“自定义模板”两条路线。P0本地笔记库目标用户能配置微信读书 Key手动同步书架和笔记浏览、分类、搜索自己的划线和想法。P0.1 项目初始化创建package.json、TypeScript、Vite、Express 基础配置。建立src/client、src/server、src/shared目录。配置开发脚本前端 dev、后端 dev、类型检查。配置 Vite 代理/api到 Express。验收本地开发服务可启动。浏览器能打开空白 App Shell。/api/health返回正常。P0.2 数据库与迁移接入 SQLite。创建migrations/001_init.sql。实现 migration runner。创建settings、books、notebook_stats、notes、tags、note_tags、notes_fts、sync_jobs。创建background_assets、note_image_templates、note_image_export_jobs。实现基础 repository。验收首次启动自动创建data/app.sqlite。重复启动不会重复执行已完成 migration。能通过脚本或 API 读取 schema 版本。P0.3 设置页与密钥管理实现设置页。支持配置WEREAD_API_KEY。UI 只显示已配置状态和尾号不展示完整 Key。实现POST /api/settings/test-weread。未配置 Key 时同步按钮提示去设置页配置。验收能保存和读取 WeRead Key。测试连接成功/失败都有明确提示。日志不打印完整 Key。P0.4 WeReadClient封装POST https://i.weread.qq.com/api/agent/gateway。每次请求自动带skill_version: 1.0.4。业务参数平铺不包params。支持/shelf/sync。支持/user/notebooks分页。支持/book/bookmarklist。支持/review/list/mine分页。处理upgrade_info。验收单元测试覆盖 body 格式。分页参数使用lastSort和synckey。upgrade_info会中断并返回可展示错误。P0.5 手动同步实现POST /api/sync/weread。实现首次同步流程。实现增量同步流程。同步开始、成功、失败写入sync_jobs。单本书失败不阻塞其他书。同步完成后重建对应 FTS。同步不触发 AI 分类、向量或台词生成。验收点击按钮后才同步。打开网页不会自动请求微信读书接口。首次同步后本地有书架、笔记本统计、划线、想法。增量同步只拉取有变化的书。同步失败能看到失败原因。P0.6 App Shell 与导航实现左侧导航或顶部导航。页面入口Dashboard、书架、笔记库、素材编排、笔记图片导出、设置。实现顶部全局搜索框。展示同步状态上次同步时间、最近结果、失败数量。明确展示同步微信读书、同步最新笔记按钮。实现基础主题变量和页面背景切换入口。验收页面间切换正常。任意主页面都能使用全局搜索。同步按钮不会误触发自动同步。无数据时有空状态。页面主题切换不影响内容可读性。P0.7 书架页实现GET /api/books。展示书籍封面、书名、作者、分类、阅读状态、划线数、想法数。分类筛选。阅读状态筛选。排序最近阅读、笔记数量、划线数量、书名。分类统计图或列表。验收分类数量与本地书籍记录一致。电子书、有声书、文章收藏入口口径清晰。筛选和排序不刷新全页。P0.8 单本书详情实现GET /api/books/:bookId。实现GET /api/books/:bookId/notes。展示书籍基础信息。展示笔记统计划线数、想法/点评数、书签数。按章节展示划线和想法。支持从书籍详情跳回笔记库筛选。增加导出笔记图片入口。验收能看到某本书的划线和个人想法。章节分组正确。书签只展示数量不误展示内容。导出入口能带入当前书籍。P0.9 笔记库与标签实现GET /api/notes。实现GET /api/tags、POST /api/tags。实现给笔记添加/删除标签。笔记卡片默认展示划线原文、书籍、章节、标签。个人想法/点评默认折叠可点击展开。支持按书籍、作者、分类、标签、笔记类型筛选。预置基础标签阅读主题、情绪、生活场景、创作场景。验收用户能手动给划线打标签。划线默认可见想法不会挤占卡片主体空间。标签筛选结果正确。编辑标签后 FTS 索引更新。P0.10 关键词搜索与模糊搜索实现GET /api/search/notes。全局搜索框接入该接口。FTS 搜索划线原文、想法、书名、作者、章节、标签。FTS 结果不足时启用 Fuse.js 模糊搜索。搜索结果展示命中来源和片段。不调用 AI。验收关键词能搜到对应划线。全局搜索结果能跳转到书籍详情或笔记库定位。部分词、近似词能通过模糊搜索补充结果。搜索不消耗 token。P0.11 主题与本地背景库实现GET /api/theme、PUT /api/theme。实现GET /api/background-assets、POST /api/background-assets、DELETE /api/background-assets/:id。支持页面主题浅色书桌、深色夜读、奶油色、粉紫、薄荷绿等通用风格。支持上传本地背景图并标记用途页面背景、笔记图片背景、两者都用。设置页提示内置不提供迪士尼、美少女战士等未授权 IP 背景用户上传图片需自行确认使用权。验收上传背景图后能在设置页预览。主题切换后主要按钮、卡片、搜索框仍清晰可读。项目不打包未授权商业 IP 图片。P0.12 笔记图片批量导出做官方样式研究配置WEREAD_API_KEY后调用 gateway/_list枚举接口。在接口列表中搜索image、share、card、poster、picture、export、download、bookmark、review等关键词。如果 gateway 未发现接口记录为待抓包验证。如用户授权并安装抓包工具配合手机操作“保存笔记图片”分析是否存在官方图片 URL、图片二进制或生成卡片接口。如果遇到证书锁定、请求体加密或客户端保护停止研究不做绕过。实现导出样式模式official_weread、weread_like、custom。实现note_image_templatesrepository。实现note_image_export_jobsrepository。实现图片模板设置样式模式、尺寸、背景、字体、字号、文字颜色、署名样式。实现微信读书风格模板在没有官方接口时基于官方样式截图还原接近的版式。实现自定义模板支持用户灵活选择背景和字体。支持尺寸小红书竖图、手机壁纸、方图。支持导出范围仅划线、划线 我的想法/点评。实现POST /api/books/:bookId/note-image-preview。实现POST /api/books/:bookId/export-note-images。实现GET /api/note-image-exports/:jobId。服务端生成输出目录导出根目录/书名-作者。文件名按序号、章节、笔记摘要生成并处理重名。清理书名、作者、章节、文件名中的非法字符防止路径穿越。Windows 默认建议导出根目录为D:\读书划线笔记存档macOS/Linux 或权限不足时要求用户自定义可写目录。导出过程不调用 AI、不写入 AI 用量日志。验收用户对一本书只选择一次背景和字体就能批量导出全部目标笔记图片。用户可以选择微信读书官方样式/微信读书风格模板也可以选择自定义样式。若官方接口未验证可用official_weread不可误导性启用页面提示使用weread_like。每本书图片放在独立书名-作者文件夹。预览图与批量导出图使用同一套版式。长划线不会溢出图片边界。导出报告显示成功数量、失败数量、输出目录。只有实际调用到已验证官方接口时才允许描述为“微信读书官方图片”本地还原版只能描述为“微信读书风格模板”。P0.13 P0 测试与收口写 WeRead normalize 单元测试。写同步分页测试。写 FTS 重建测试。写全局搜索跳转测试。写图片导出路径清理测试。写图片导出 job 测试。写 API smoke tests。手工验证配置 Key、同步、浏览书架、搜索笔记、编辑标签、预览并导出一本书笔记图片。验收P0 功能在无 AI Key 情况下完整可用。npm run typecheck通过。关键服务单元测试通过。笔记图片导出不消耗 token。P1内容工作台目标能从本地笔记和用户输入素材生成可复制的配音台词与镜头编排。P1.1 AI 基础设施创建AIProvider接口。支持 OpenAI 兼容文本生成。新建ai_usage_logs和ai_generation_cache。实现 input hash 与 params hash。未配置 AI Key 时禁用 AI 按钮。验收生成接口未配置模型时返回可解释错误。同一输入重复生成优先命中缓存。用量日志记录 cache hit 状态。P1.2 单条划线台词生成实现POST /api/generate/script。支持平台小红书、抖音。支持时长15 秒、30 秒、60 秒。支持改写强度保留原句气质、大幅改写重写。支持风格生活观察、细腻独白、情绪共鸣、清醒观点、好物自然露出。保存生成历史。验收从一条划线可以生成可复制配音文本。结果能回到原始划线。重复生成同参数可命中缓存。P1.3 素材管理创建content_materials表和 API。实现素材页。支持素材类型书桌物件、宅家片段、室外片段、产品物件、手动文本。支持标记是否产品露出。支持按类型和情绪关键词筛选。验收用户可录入“超市货架”“公园花”“护手霜”等素材。素材可编辑、删除、筛选。P1.4 素材编排/视频计划实现独立素材编排页面。输入书名、书桌物件、生活素材、产品物件、情绪、平台、时长、风格。按书名检索本地书籍和划线。生成镜头时间轴、转场逻辑、分段旁白、完整配音文本。结果默认突出完整配音文本镜头时间轴折叠为辅助信息。标记素材来源说明。保存生成结果。验收输入素材后能生成自然镜头连接方案。输出解释为什么从书桌切到生活素材不突兀。用户不展开时间轴时也能直接复制完整配音文本。产品露出是自然动作不是硬广文案。P1.5 生成历史展示生成过的台词和视频计划。支持复制完整正文。支持复制分段镜头台词。支持按书籍、素材、平台筛选历史。验收历史生成可复用。复制文本不包含调试字段。P2AI 增强目标提升分类、相似句搜索、个人风格和外部资料辅助能力。P2.1 AI 自动分类实现分类 preview。展示待处理笔记数量。用户确认后批量分类。分类结果写入note_tagssourceai。支持人工修改 AI 标签。验收批量任务必须确认后执行。AI 标签和手动标签能区分。P2.2 相似句搜索实现 note embedding 数据结构。实现批量 embedding preview/run。实现POST /api/search/similar。相似句搜索未建向量时提示先运行向量任务。验收输入一句话能返回语义相近的划线。未配置 AI Key 时功能禁用但普通搜索可用。P2.3 个人风格样本实现style_profilesAPI。支持粘贴或上传读后感。生成风格摘要。台词生成可选择个人风格。验收风格样本保存在本地。生成时可选择“个人风格”。P2.4 外部资料开关实现“补充外部公开资料”开关。默认关闭。开启后才检索外部资料。外部资料只作为背景理解生成结果标注 sourceUsage。验收默认不访问外部资料。开启后生成结果明确标注使用了外部公开资料。P2.5 用量与缓存面板设置页展示 AI 调用记录。展示缓存命中次数。展示最近失败的 AI 调用。支持清理生成缓存。验收用户能看到哪些操作调用过 AI。用户能区分缓存命中和真实调用。交付检查清单P0 完成前必须满足无 AI Key 也能完整使用笔记库。打开网页不会自动同步。同步按钮可控、状态清晰。微信读书数据进入本地数据库。书架、笔记、标签、搜索可用。全局搜索可用。笔记卡片默认显示划线想法可展开。笔记图片导出可用且不调用 AI。P1 完成前必须满足AI Key 可配置。台词生成有缓存。素材编排能解释转场逻辑。生成文本可复制。P2 完成前必须满足AI 批量任务都要确认。用量日志可查看。外部资料默认关闭。个人风格样本本地保存。