"""生成查标测试用的虚构投标文件(对应 tender-mini.pdf 的三条 ★ 条款)。内容全部虚构。 cd server && ../.venv/bin/python tests/fixtures/make_bid_fixtures.py # 需要 Gotenberg(:3109) - bid-mini-v1.pdf:响应了资质证书和服务器内存,漏了交换机硬件 BFD → 1 个致命问题「未找到响应」; - bid-mini-v2.pdf:补上了交换机硬件 BFD → 复查时这个问题「本次已解决」。 """ from __future__ import annotations from pathlib import Path import httpx HERE = Path(__file__).parent GOTENBERG = "http://127.0.0.1:3109/forms/chromium/convert/html" HEAD = """
""" COMMON = [ "投标人:某某信息技术有限公司(虚构单位,仅用于测试)。
", "一、项目理解。本投标文件是测试用的虚构样例,用于验证投标文件检查流程,内容不对应任何真实的投标人或采购项目。" "我方已认真阅读采购文件的全部内容,愿意按采购文件的要求提供货物和服务。
", "二、资格证明。投标人须具备有效的信息系统集成服务资质证书:我公司具备有效的信息系统集成服务资质证书," "证书复印件见附件1。
", "三、技术响应。服务器内存不低于32GB的要求:我方服务器内存配置为64GB,并提供产品彩页作为证明材料,见附件2。
", ] BFD = "交换机支持硬件BFD,最小报文发送间隔不大于50毫秒的要求:我方交换机支持硬件BFD,最小报文发送间隔为3.3毫秒。
" TAIL = ["四、售后服务。我公司提供7×24小时售后服务,接到报修后2小时内响应。
", ""] def render(name: str, parts: list[str]) -> None: html = HEAD + "".join(parts) r = httpx.post(GOTENBERG, files={"files": ("index.html", html.encode(), "text/html")}, timeout=60) r.raise_for_status() (HERE / name).write_bytes(r.content) print(name, len(r.content)) if __name__ == "__main__": render("bid-mini-v1.pdf", [*COMMON, *TAIL]) render("bid-mini-v2.pdf", [*COMMON, BFD, *TAIL])