# PyDocTemplateCode **Repository Path**: namisoft/pyDocTemplate ## Basic Information - **Project Name**: PyDocTemplateCode - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-20 - **Last Updated**: 2025-12-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PyDocTemplate - 文档模板生成服务 ## 项目介绍 PyDocTemplate 是一个基于 FastAPI 的文档模板生成服务,专门用于生成维修确认单、发货单等业务文档,并提供工作日计算功能。该服务支持多种数据输入格式,能够自动生成标准化的 Word 文档,并提供便捷的下载功能。 ## 主要功能 ### 1. 维修确认单生成 - 根据客户信息、设备信息、维修方案等数据生成标准维修确认单 - 支持完整的维修流程记录,包括故障描述、检测结果、维修计划等 - 自动生成带时间戳的文件名,便于管理 ### 2. 发货单生成 - 生成标准化的发货单文档 - 包含客户配送地址、仪器型号、序列号、配件信息等 - 支持销售代表信息和当前日期自动填充 ### 3. 工作日计算 - 基于外部 API 计算两个日期之间的工作日数量 - 支持多种日期格式输入(ISO 格式、YYYY-MM-DD 格式) - 提供计算结果的持久化存储和查询功能 - 支持通过订单 ID 关联和查询计算结果 ### 4. 文件管理 - 自动生成唯一文件名,避免文件冲突 - 支持中文文件名的正确下载 - 提供文件下载链接和直接下载功能 ## 技术架构 - **Web 框架**: FastAPI - **文档处理**: python-docx-template (docxtpl) - **HTTP 客户端**: httpx - **数据验证**: Pydantic - **服务器**: Uvicorn - **日志记录**: Python logging ## 安装教程 ### 1. 环境要求 - Python 3.7+ - pip 包管理器 ### 2. 安装依赖 ```bash pip install -r requirements.txt ``` ### 3. 准备模板文件 确保 `temp/` 目录下存在以下模板文件: - `维修确认单模板.docx` - `西安安泰测试科技有限公司发货单.docx` ### 4. 启动服务 ```bash python main.py ``` 服务将在 `http://localhost:12123` 启动 ## API 使用说明 ### 1. 生成维修确认单 **接口**: `POST /generate_maintenance_quote` **请求参数**: ```json { "cust_name": "客户名称", "cust_add": "客户地址", "cust_phone": "客户电话", "cust_contact": "联系人", "device_type": "设备类型", "device_sn": "设备序列号", "device_err": "故障描述", "dtc_rslt": "检测结果", "total_fee": "总费用", "device_model": "设备型号", "accessories": "配件信息", "repair_plan": "维修方案", "maint_eng_id": "维修工程师" } ``` **响应**: 返回文档下载链接 ### 2. 生成发货单 **接口**: `POST /generate_delivery_note` **请求参数**: ```json { "customer_delivery_address": "客户配送地址", "instmt_model": "仪器型号", "instmt_serial_number": "仪器序列号", "instmt_accessories_info": "配件信息", "sales_rpstv": "销售代表", "current_date": "当前日期(可选,默认为今天)" } ``` ### 3. 工作日计算 **计算工作日**: `POST /calculate_workdays` ```json { "start_date": "2024-01-01", "end_date": "2024-01-31", "ord_id": "订单ID(可选)" } ``` **查询计算结果**: - `GET /workdays/{calculation_id}` - 通过计算ID查询 - `GET /workdays/by-order/{ord_id}` - 通过订单ID查询 - `GET /workdays` - 列出所有计算结果 - `GET /workdays?start_date=2024-01-01&end_date=2024-01-31` - 直接计算 ### 4. 文件下载 **接口**: `GET /download/{file_name}` 支持中文文件名,自动设置正确的 Content-Disposition 头 ## 数据输入格式支持 该服务支持多种数据输入方式: 1. **JSON Body**: 标准 JSON 格式 2. **嵌套结构**: 支持 `{"currentRecord": {"data": {...}}}` 格式 3. **查询参数**: 支持 URL 查询参数方式 ## 测试 运行完整功能测试: ```bash python test_all_features.py ``` 运行单独的演示脚本: ```bash python demo_maint.py # 维修确认单演示 python demo_deliv.py # 发货单演示 ``` ## 目录结构 ``` pyDocTemplate/ ├── main.py # 主服务文件 ├── demo_maint.py # 维修确认单演示 ├── demo_deliv.py # 发货单演示 ├── test_all_features.py # 完整功能测试 ├── requirements.txt # 依赖包列表 ├── temp/ # 模板文件目录 │ ├── 维修确认单模板.docx │ └── 西安安泰测试科技有限公司发货单.docx ├── generated_files/ # 生成的文件目录 └── workday_calculations/ # 工作日计算结果存储 ``` ## 日志记录 服务提供详细的日志记录功能: - 控制台输出:实时查看服务状态 - 文件记录:日志保存到 `app.log` 文件 - 日志级别:DEBUG,包含详细的请求和处理信息 ## 注意事项 1. 确保模板文件存在于 `temp/` 目录 2. 生成的文件保存在 `generated_files/` 目录 3. 工作日计算依赖外部 API:`https://date.appworlds.cn/work/days` 4. 服务默认运行在端口 12123 5. 支持中文文件名和内容的正确处理 ## 许可证 本项目采用开源许可证,具体许可证信息请查看 LICENSE 文件。