# promptjson **Repository Path**: xpeter/promptjson ## Basic Information - **Project Name**: promptjson - **Description**: promptjson - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-12 - **Last Updated**: 2025-03-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 研发小助手 研发小助手是一款面向研发团队的实用工具集合,包括文档转换、设计文档审核等功能。 ## 如何运行 Web应用启动:.\web\startweb.bat ### 环境配置 在web目录下创建或修改.env文件,配置以下环境变量: ``` # DeepSeek API配置(公网DeepSeek R1) DEEPSEEK_API_KEY=your_deepseek_key_here DEEPSEEK_API_URL=https://api.deepseek.com # 建行方舟API配置 CCBFZ_API_KEY=your_ccbfz_key_here CCBFZ_API_URL=http://your_ccbfz_api_endpoint # 日志配置 LOG_LEVEL=info ``` ## 功能特性 1. **文件到MD转化助手**:将Word文档转换为Markdown格式 [DONE] 2. **设计文档审核助手**: - 评审点维护:Excel上传转为审核点prompt [DONE] - 文档初筛:检查设计文档与模板的差异 [DONE] - AI审核:使用多种大模型进行设计文档审核 [DONE] - 支持三种模型:建行方舟满血版R1(高质量)、建行方舟蒸馏版(高响应)、公网DeepSeek R1 - 用户可以根据需求在界面选择不同模型 - 满血版R1适合注重高质量审核结果的场景 - 蒸馏版适合对响应速度有要求的场景 - 公网DeepSeek R1适合无内网环境的使用场景 3. **设计文档编写助手**:[TODO] -按模板转化:上传文档和模板,调用DeepSeek模型按照模板改写。 -按gitlab变更集检查:调用DeepSeek模型判断是否有关键评审点,如是否涉及账务、数据库修改、公共函数变动等。 -按gitlab变更集编写设计文档:填入gitlab地址和合并变更集id,上传设计文档模板,调用DeepSeek模型生成设计文档初稿。 ## 技术栈 - **web程序**:Node.js+Express提供前后端服务 [DONE] - **大模型集成**:使用Node.js通过OpenAI SDK直接支持DeepSeek和Qwen API调用 [DONE] - **容器化部署**:支持Docker容器部署 [DONE] ## 生产部署 ### Docker部署 - **构建镜像**:使用 prod/build_images.bat 构建Web服务镜像 - **验证镜像**:使用 prod/test_on_centos_wsl.bat 在本地WSL CentOS环境验证镜像 - **部署**:将 deploy_package 目录部署到生产环境CentOS 7.9服务器 ### 验证与测试 1. **本地验证**: - 按照 prod/setup_centos_wsl.md 设置测试环境 - 运行 prod/test_on_centos_wsl.bat 验证镜像在CentOS 7.9环境下的兼容性 2. **生产部署**: - 将 deploy_package 传输到CentOS服务器 - 按照 README.md 中的说明启动服务 - 访问 http://[服务器IP]:3001 验证Web服务 ## 已完成功能 - 文件上传与转换(Word转HTML和Markdown) - Excel处理和prompt生成 - 文档审核功能(支持DeepSeek和Qwen API) - 支持流式聊天接口 - Docker容器化部署支持 - Web前端日志记录与按日期归档 [DONE] - Node.js直接调用DeepSeek API,不依赖Python服务 [DONE] - 支持多种大模型选择(建行方舟满血版R1、建行方舟蒸馏版、公网DeepSeek R1)[DONE] - 审核任务实时日志显示 [DONE] - 大模型响应文本摘要显示 [DONE] - 中文文件名支持优化 [DONE] - 日志系统稳定性提升 [DONE] - Excel生成Prompt功能修复 [DONE] ## 待实现功能 - 设计文档编写助手的全部功能 - 改进API调用的稳定性和错误处理 - 用户界面美化和交互优化 ## 近期优化任务 [TODO] 1. ~~**修复文件名乱码问题**~~:[DONE] - ~~生成Prompt功能和文档审核检查功能下载的文件名存在乱码~~ - ~~确保所有下载的文件使用正确的文件名编码~~ - ~~修复日志中显示的中文文件名乱码问题~~ - ~~在结果文件名中包含原始中文文件名信息~~ 2. ~~**审核进度显示功能**~~:[DONE] - ~~文档审核检查功能中添加进度条显示~~ - ~~显示当前审核项/总审核项数的完成百分比~~ - ~~所有审核项完成后显示下载按钮~~ - ~~实现对DeepSeek R1模型API的调用~~ 3. ~~**Web前端日志记录**~~:[DONE] - ~~Web前端日志记录到web/log文件夹下对应日期.log文件中~~ - ~~按日期归档日志文件~~ - ~~记录关键操作和错误信息~~ 4. ~~**优化API调用方式**~~:[DONE] - ~~从直接调用Python脚本改为Node.js直接调用大模型API~~ - ~~使用JSON格式传递参数~~ - ~~简化系统架构,增强系统稳定性~~ 5. ~~**Node.js直接调用大模型**~~:[DONE] - ~~使用Node.js通过OpenAI SDK直接调用DeepSeek API~~ - ~~移除对Python和Flask后端的依赖~~ - ~~简化系统架构,提高稳定性和性能~~ 6. ~~**增加多模型支持**~~:[DONE] - ~~支持建行方舟满血版R1(高质量)模型~~ - ~~支持建行方舟蒸馏版(高响应)模型~~ - ~~支持公网DeepSeek R1模型~~ - ~~通过模型ID参数化实现灵活配置~~ 7. ~~**审核任务实时日志显示**~~:[DONE] - ~~在进度条下方显示固定高度的日志文本框~~ - ~~实时显示任务执行过程中的日志信息~~ - ~~区分不同日志级别(信息、警告、错误、成功)~~ - ~~自动滚动到最新日志~~ - ~~显示大模型响应文本摘要~~ ## 经验与问题记录 ### CentOS兼容性 - **问题**:在CentOS 7.9环境中验证镜像的方法 - **解决方案**:使用WSL2创建CentOS 7.9测试环境,详见 prod/setup_centos_wsl.md - **经验**:不同操作系统的兼容性测试应该在部署前进行,避免生产环境出现问题 ### API调用优化 - **问题**:原Python+Flask架构增加了系统复杂性和潜在故障点 - **解决方案**:使用Node.js通过OpenAI SDK直接调用DeepSeek API - **经验**:简化系统架构可以提高系统稳定性,减少维护成本 ### 多模型支持实现 - **问题**:需要支持多种不同的大模型,每种模型有不同的接口和参数 - **解决方案**: - 创建服务类(DeepseekService、CCBFZService)封装不同模型的API调用 - 通过参数化modelID在API调用中动态传递模型类型 - 前端下拉列表提供用户友好的模型选择界面 - 使用统一的结果格式处理不同API的返回结果 - **经验**: - 使用面向对象和依赖注入的方式使代码更具可维护性和可扩展性 - 参数化配置允许在不修改代码的情况下扩展新模型支持 - 需要注意不同模型返回结果格式的统一处理,确保系统其他部分不受影响 ### 实时日志显示实现 - **问题**:审核过程等待时间长,用户无法了解具体的审核状态和进展 - **解决方案**: - 后端为每个任务维护日志数组,记录任务执行的关键步骤和状态 - 前端通过轮询获取任务最新状态时同时获取日志信息 - 在界面中添加固定高度的日志文本框,实时显示最新日志信息 - 对不同级别的日志(信息、警告、错误、成功)使用不同颜色区分 - 添加大模型响应文本摘要显示,让用户直观了解模型输出内容 - **经验**: - 实时日志显示能大幅提升用户体验,尤其是在长时间运行的任务中 - 适当的日志级别区分和颜色编码可以帮助用户快速识别重要信息 - 保持日志简洁明了,只显示对用户有意义的信息,避免技术细节过多 - 显示模型响应摘要可以让用户在不下载结果文件的情况下预览审核结果,提高使用效率 - 针对较长的响应文本,截取合适长度(如200字符)的摘要,避免日志过于冗长 ### 中文文件名支持与日志系统优化 - **问题**: - 上传的中文文件名在日志中显示为乱码(例如"技术中台_人工智能平台提升项目详细设计.docx"显示为"ææ¯ä¸­å°_人工æºè½å¹³å°æå项ç®è¯¦ç»è®¾è®¡.docx") - 日志系统在遇到非预期的日志级别(如success)时会崩溃,导致整个任务失败 - 生成的结果文件使用时间戳命名,无法与原始文件关联 - **解决方案**: - 为文件名处理添加编码转换函数,使用Buffer从latin1转为utf8解决中文乱码 - 增强日志系统的健壮性,对不存在的日志级别进行优雅降级处理 - 优化日志记录函数,添加try-catch避免日志错误导致任务失败 - 在生成的结果文件名中包含原始中文文件名(经过安全处理)和时间戳 - **经验**: - Node.js中处理文件名编码需要特别注意,尤其是在处理非ASCII字符时 - 字符编码问题通常可以通过Buffer转换解决,从latin1到utf8是常见的转换路径 - 所有可能导致任务失败的非核心功能(如日志记录)都应包含异常处理 - 为保持后续文件名稳定性,应在文件名中避免特殊字符,但可保留中文字符 ### Excel生成Prompt功能修复 - **问题**: - Excel生成Prompt功能在点击"生成Prompt"按钮后报错:"Unexpected token '<', "