feat/9-txt-upload
main
#9 实现完成,待用户验收。编码、大小、隔离与幂等契约见工单评论 7798。
本地验证:Go 单元与集成测试(专用库 lexgo_test_issue9,50 项)、学习端 80 单测与 6 项 E2E、管理端 31 单测、治理 56 测试全部通过;真实 API+MySQL 26 项检查与真实浏览器上传闭环通过。
- POST /api/v1/books/upload 与 /api/v1/books/:id/chapters/upload:multipart 上传, 字段白名单、未知或重复字段拒绝、非 multipart 拒绝、单槽并发门忙时 429 - 只接受 UTF-8(可选 BOM 剥离且不进入原文),UTF-16 按 BOM 识别并给出针对性提示, 非法字节整体拒绝、不使用替换字符;2 MiB 字节上限之后仍套用单章 100000 码点上限 - 文件只在内存中解码,不创建临时文件;客户端文件名不参与任何路径也不入库 - 解码后交给现有 PasteBook/PasteChapter,分章、任务幂等与崩溃恢复与粘贴完全一致 - 学习端导入页新增「粘贴文本 / TXT 文件」来源切换与客户端预检,session.request 支持 FormData - gofmt 整理 #8 引入的 import 顺序与空行 - 同步 Architecture-and-Code-Map、Business-Rules-and-Glossary、 Local-Development-and-Verification、Product-Requirements-Overview 与 Home
No dependencies set.
The note is not visible to the blocked user.
#9 实现完成,待用户验收。编码、大小、隔离与幂等契约见工单评论 7798。
本地验证:Go 单元与集成测试(专用库 lexgo_test_issue9,50 项)、学习端 80 单测与 6 项 E2E、管理端 31 单测、治理 56 测试全部通过;真实 API+MySQL 26 项检查与真实浏览器上传闭环通过。