这篇内容适合谁
你需要一个能部署上线的在线格式转换工具:用户上传 DOCX/PPTX,系统批量输出 PDF 和 HTML,并尽量保留标题层级、目录、字体替换、图片与链接引用,同时生成可追溯的转换日志与差异报告。
交付物要求(硬约束)
请让 AI 最终输出:完整项目代码(可构建/可运行)、清晰文件树、可复制的运行命令、本地与 Docker 部署说明、至少一套自动化测试或 QA checklist,以及一份“转换质量校验策略”(例如:页数/图片数量/标题结构/链接数量/字体替换命中率等指标)。
Prompt 1:MVP 在线批量转换(DOCX/PPTX → PDF/HTML)
你是资深全栈工程师 + DevOps。请从零生成一个“在线格式转换工具”完整项目,满足:
【目标】
- Web 端上传:支持单文件与批量(多文件)上传,类型仅限 .docx 与 .pptx。
- 后端转换:
- DOCX → PDF:使用 LibreOffice headless(soffice)在容器内转换。
- DOCX → HTML:使用 mammoth 或等价方案,输出带语义结构的 HTML(至少保留 h1-h4 层级、列表、表格、图片占位)。
- PPTX → PDF:同样使用 LibreOffice headless。
- PPTX → HTML:生成可预览的 HTML(可选 Reveal.js 风格),但必须明确限制:不生成渲染图,不做“出图”。
- 结果下载:每个任务生成一个 zip 包(包含 PDF/HTML、日志、元信息 JSON)。
- 日志与追踪:为每个文件生成 conversion.log,包含开始/结束时间、命令、退出码、错误摘要。
【技术栈】
- 前端:Next.js(或 Vite + React)+ Tailwind(可选)。
- 后端:Node.js(Express/Fastify)或 Python(FastAPI)二选一,但必须说明选择原因。
- 任务队列:使用 BullMQ/Redis 或者内置队列(至少要防止并发把 CPU 打满)。
- 存储:本地临时目录(可配置),并提供清理策略(按任务 TTL 自动清理)。
【功能细节】
1) 上传接口必须做校验:MIME + 扩展名 + 文件大小上限(可配置)。
2) 转换过程必须支持进度:至少提供 0-100 的粗粒度进度与当前文件名。
3) 每个任务必须有 taskId,可查询状态与结果。
4) HTML 输出要做安全处理:对用户上传内容做基本的 XSS 风险说明与处理(例如:转义/白名单)。
【必须输出】
- 完整项目文件树(tree 形式)。
- 每个文件的完整代码(不要省略)。
- package.json / requirements.txt 依赖说明。
- 可运行命令:开发模式、生产构建、Docker build/run。
- Dockerfile(含 LibreOffice 依赖安装)+ docker-compose.yml(如需 Redis)。
- 说明文档 README:包括架构图(ASCII 也可)、配置项、常见报错与排查。
【验收】
- 提供至少 8 条 QA checklist(上传、并发、失败重试、异常文件、结果一致性、资源清理、日志完整性、安全)。
Prompt 2:样式/目录保留与字体替换策略(质量增强)
在上一个项目基础上做质量增强,请输出“可直接合并到仓库”的改动(包含代码 diff 或完整新文件):
【目录与层级】
- 对 DOCX:在转 HTML 后生成一个 toc.json(包含标题文本、层级、锚点、所在页/段落索引)。
- 对 PPTX:在转 HTML 后生成 slides.json(包含页序号、标题、备注/讲者注释的提取策略)。
【字体替换】
- 允许用户在 UI 里设置字体映射规则(例如:SimSun→Noto Serif SC),后端在转换前应用策略。
- 输出 font-map-report.json,统计命中率、未命中字形风险提示。
【差异报告】
- 生成一份 convert-report.md:
- 源文件基础信息(页数/幻灯片数/图片数/超链接数)
- 目标文件基础信息
- 关键差异(缺失图片、标题层级丢失、链接数量变化等)
【性能与稳定性】
- 转换并发必须可控(例如 worker 并发=CPU 核心数的一半)。
- 每次转换设置超时,超时后安全终止子进程并标记任务失败。
请给出:
- 新增/修改的文件列表
- 关键实现代码
- 配置项说明(env)
- 你建议的默认参数与理由
Prompt 3:测试用例与自动化验收(可回归)
请为该在线工具补齐“可自动化回归”的测试与验收:
【测试要求】
- 单元测试:至少覆盖任务状态机、文件校验、日志写入、清理策略。
- 集成测试:启动服务后,通过 API 上传样例文件,等待任务完成,验证产物结构(zip 内必须包含 PDF、HTML、log、元信息 JSON)。
- 负载/并发:提供一个脚本,模拟 N 个并发任务(可用 k6/Artillery),并输出吞吐与失败率。
【样例数据】
- 不要依赖外部网络下载;请在仓库中用最小样例生成策略(例如:用脚本生成一个简单 DOCX/PPTX),或者提供生成这些样例的代码。
【必须输出】
- 测试目录结构
- 运行测试命令
- CI 配置示例(GitHub Actions),包括缓存依赖与构建 Docker 镜像(可选)
- 一份 QA checklist(不少于 12 条),方便人工验收
发布前自检清单
确认标题格式为“类别 + 具体主题 + AI 提示词 (Prompts)”,摘要为纯文本无标签;正文小标题均为 h4 且不带数字编号;每条 Prompt 都用灰色背景块包裹;并确保 AI 输出的交付物包含源码/文件树/命令/部署/测试或 QA。