Skip to main content

bid-doc

投标服务方案文档生成器。根据采购技术规范和评分标准,自动生成完整的投标服务方案文档(Word + 信息图)。当用户说"生成投标方案"、"做标书"、"做服务方案"、"按技术规范出文档"时使用此skill。

Source facts

Repository
atxinsky/skills
Last source activity
March 20, 2026 at 11:37
Detected SKILL.md language
Chinese
Stars
5
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
bid-doc
description
投标服务方案文档生成器。根据采购技术规范和评分标准,自动生成完整的投标服务方案文档(Word + 信息图)。当用户说"生成投标方案"、"做标书"、"做服务方案"、"按技术规范出文档"时使用此skill。
# 投标服务方案文档生成器 根据采购技术规范和评分标准,自动生成完整的投标服务方案文档(Word + 信息图)。适用于培训类项目投标。 ## 输入要求 用户需提供: 1. **技术规范文件**(.doc 或 .docx)— 采购技术规范 2. **评分标准**(图片或文字)— 评分项和分值(可选,默认按服务方案+工作进度评分) 3. **参考方案**(.docx)— 可选,作为格式和内容参考 4. **真实师资/课表**(.docx 或图片)— 可选,甲方或合作方提供的真实讲师和课程安排 ## 工作流程 ### Step 1: 解析技术规范 如果是 .doc 文件,先用 win32com 转换为 .docx: ```python import win32com.client, pythoncom pythoncom.CoInitialize() word = win32com.client.Dispatch("Word.Application") word.Visible = False doc = word.Documents.Open(r"原始文件路径.doc") doc.SaveAs2(r"转换后路径.docx", 16) doc.Close() del doc, word pythoncom.CoUninitialize() ``` 然后用 python-docx 读取所有段落和表格,提取: - 项目名称、甲方单位全称 - 培训对象、人数、期数/批次数、天数 - 培训内容覆盖(从表格的"培训内容覆盖"行提取,这是最权威的内容列表) - 培训方式、考核方式 - 师资要求(职称等级) - 满意率要求 - 交付物要求 - 保密要求 - 后续服务要求 **关键**:项目概况中的"培训目标"和表格中的"培训内容覆盖"可能不完全一致,以表格中的"培训内容覆盖"为准设计课程。 **数据一致性清单**(生成后必须交叉验证): - 人数 × 批次数 = 总人数(如"400人分4批,每批约100人"必须写明) - 天数口径统一:如有"准备日/报到日",必须在首次提到天数时加括号说明(如"5天(另含1天报到编班)") - 课表中的讲师名 = 师资简介中的讲师名(一个都不能多、不能少) - 讲师头衔/单位在全文所有出现处必须一致(课表简写可以,但不能写错) ### Step 2: 解析评分标准 如果提供了评分标准图片,用 Read 工具查看图片内容,提取: - 服务方案评分维度(先进性、创新性、可操作性、技术性、经济性、风险等) - 工作进度及保证措施评分维度 - 各档次分值区间 **评分标准 → 文档章节映射**(必须一一对应): | 评分项 | 分值 | 对应章节 | 得分策略 | |--------|------|----------|----------| | 文件总体评价 | 6-10 | 全文结构 | 规范性、完整性、逻辑性 | | 项目团队 | 12-20 | 2.5 人员配置 | 需公司提供真实资质 | | 业绩情况 | 12-20 | 商务标 | 方案中不写,商务标单独提供 | | 服务方案 | 18-30 | 二、服务方案 | **核心得分项,必须深度 + 量化** | | 工作进度 | 8-13 | 三、工作进度 | 甘特图 + 四维保障 | | 专利数量 | 0-2 | 商务标 | 如有专利单独提供 | | 绩效评价 | 1-5 | — | 取决于历史供应商评价 | ### Step 3: 生成 Word 文档 使用 docx-js(Node.js)生成 .docx 文件。运行时需要 `NODE_PATH="$(npm root -g)"`。 文档结构(严格按评分标准覆盖): ``` 封面(项目名称 + 应答人 + 日期) 目录 一、对项目的理解 1.1 对[甲方单位]的理解 1.2 对采购项目的理解 - 项目定位与目标 - 项目规模与实施要求 - 服务敏感点分析 1.3 项目重点与难点分析 二、服务方案(对应评分项"服务方案") 2.1 项目实施思路(五阶段闭环) 2.2 培训课程体系设计 - 课程模块总览(严格按技术规范"培训内容覆盖") - N天课程安排表 - 课程设计亮点 2.3 培训方式与教学方法(6种教学法) 2.4 师资配备方案 2.5 实施组织形式与人员配置 - 项目组织机构 - 人员配置表(含人员清单和简介说明) 2.6 培训效果评估体系(用技术规范中的考核方式术语) 2.7 质量保障措施(三维品控) 2.8 设备设施配置方案 2.9 风险管理与应对(6类风险+应对表) ★ 项目管理措施(深化服务过程细节,见下方专项说明) ★ 质量控制节点(训前+训中+训后闭环) 三、工作进度及保证措施(对应评分项"工作进度及保证措施") 3.1 项目进度计划(8阶段进度表 + 每期日程) 3.2 进度保证措施(四维保障) 四、项目交付成果(技术规范要求的所有交付物) 五、售后服务承诺(含明确期限、范围、内容) ``` ### ★ 项目管理措施(关键得分章节) 这是拉开"良"与"优"差距的核心章节。甲方要看到的是**操作细节和量化指标**,不是空话。 必须包含的维度(4-5个子节,每个都要有量化): #### 1) 团队构建与职责分工 - 人员选拔标准量化(如"项目经理需5年以上培训管理经验") - 岗前培训内容清单 - 考核机制(五维度考核 + 绩效挂钩) #### 2) 师资管理机制 - 三道准入关:资质审核 → 试讲评审 → 课件审核 - 动态监控:量化阈值(如"满意度低于90%立即约谈,低于85%启动替换") - 课后教研:具体时间(如"每日课后15分钟教研简会") #### 3) 辅助人员管理(班主任/教务) - 班主任日程:早间/午间/晚间分段职责 - 教务管理体系(如"五单管理":签到单、评估单、反馈单、日志单、交付单) - 学员沟通机制(微信群、意见箱、24小时响应) #### 4) 后勤保障与风险管理 - 场地提前踏勘时间(如"提前3天") - 设备故障响应时间(如"15分钟响应、30分钟解决") - 应急响应时间(如"5分钟内启动") #### 5) 特色管理(按项目类型) - 党建培训 → "红色现场教学全流程管理"(踩点→路线→安全→教学衔接) - 党建培训 → "班主任全流程服务(党建特色)"(晨学诵读党章、心得辅导等) - 技能培训 → 实操环节器材管理、分组演练轮转机制 ### ★ 质量控制节点 ``` 训前(6-7个节点): 需求确认 → 方案评审 → 师资试讲 → 课件终审 → 场地踏勘 → 物料清点 → (红色教学点踩点) 训中(日循环): 晨会布置 → 课堂督导 → 午间反馈 → 课后教研 → 日报汇总 训后(闭环): 满意度统计 → 效果评估报告 → 改进建议 → 资料归档 → 跟踪回访 ``` **编码要点**: - 字体:SimHei 标题 + SimSun 正文 - 页面:A4(11906 x 16838 DXA) - 页眉:项目名称 - 页脚:页码 - 表格:headerCell 用 D5E8F0 底色,边框 #999999 - 必须包含的表格:课程安排表、人员配置表、评估体系表、风险管理表、进度计划表 - 文中术语必须与技术规范保持一致(如"一级评估"而非"反应层评估") ### Step 4: 生成信息图 HTML 创建一个包含所有信息图的 HTML 文件,风格要求: - 配色:Navy(#0F172A) + Teal(#0e6b60/#1a8a7d) + Gold(#b8963e) - 党建类项目可用:Red(#c41e3a) + Navy(#1e3a5f) + Gold(#b8963e) - 图标:Font Awesome 6(不用emoji) - 字体:Noto Sans SC - 交互:cursor-pointer + hover 动效(200ms) - 圆角:统一 12px/8px 需要的信息图(共14张): 1. 项目定位目标(箭头网格 arrow-grid) 2. 服务敏感点(六宫格 sens-grid) 3. 重点vs难点(VS对比图) 4. 五阶段闭环(流程图 flow-stages) 5. 课程模块(彩色卡片 modules-grid) 6. N天课程表(时间轴 timeline)— **必须包含讲师姓名** 7. 教学方法(圆环图标 methods-grid) 8. 组织机构(层级图 org-chart) 9. 评估体系(指标卡片 assess-row) 10. 质量保障(三柱图 quality-row) 11. 风险管理(卡片网格 risk-grid) 12. 甘特图进度(gantt) 13. 保障措施(渐变卡片 guarantee-grid) 14. 交付成果(清单 deliver-grid) 每个信息图用唯一的 CSS class 命名,页面用 `.page` 容器包裹。 ### Step 5: 截取信息图 使用 Playwright 截图: ```javascript const { chromium } = require('playwright'); // 为每个信息图元素截取 PNG // 选择器格式:'.page:nth-child(N) .class-name' // 注意:需要 NODE_PATH="$(npm root -g)" ``` 截图存放在 `screenshots/` 目录。 ### Step 6: 插入图片到 Word 使用 python-docx 将截图插入对应段落后面: ```python from docx import Document from docx.shared import Inches from docx.enum.text import WD_ALIGN_PARAGRAPH doc = Document('方案.docx') # 找到目标段落 -> doc.add_paragraph() 创建新段 -> 添加图片 -> 移动到目标位置 # 关键:按段落索引倒序插入,避免索引偏移 ``` 图片插入位置映射(根据段落内容关键词定位): - 01_project_goals -> "三大培训目标" bullets 之后 - 02_sensitivity -> 敏感点 bullets 之后 - 03_vs_diagram -> 项目难点末段之后 - 04_five_stages -> 实施思路首段之后 - 05_modules -> 课程模块 bullets 之后 - 06_timeline -> 课程表说明之后 - 07_methods -> 教学方法首段之后 - 08_org_chart -> 组织机构描述之后 - 09_assessment -> 评估体系表之后 - 10_quality -> 质量保障首段之后 - 11_risk -> 风险管理首段之后 - 12_gantt -> 进度计划表之后 - 13_guarantees -> 进度保证措施标题之后 - 14_deliverables -> 交付成果首段之后 **更新已有图片的技巧**(不需要重新插入): ```python # 直接替换图片 blob,保持位置和尺寸不变 for rel_id, rel in doc.part.rels.items(): if "image" in rel.reltype: image_part = rel.target_part with open(new_image_path, 'rb') as f: image_part._blob = f.read() ``` ### Step 7: 质量审查(MANDATORY — 不可跳过) 生成完成后,**必须**执行以下审查,这是从"良"冲"优"的关键。 #### 7.1 AI 去痕检查 以下表述**禁止出现**在最终文档中: | 禁用表述 | 替换方案 | |---------|---------| | "我公司深刻理解" | 直接删除,陈述事实 | | "贡献力量" | "圆满完成" | | "以高度负责的态度和专业化的服务水准" | "以专业的服务水准" | | "量身定制" | "针对XX实际设计" | | "先进性、创新性和可操作性"三连 | "切实可行、有针对性" | | "一对一访谈"(对大规模培训不现实) | "代表性座谈"、"分组访谈" | | "确保...的XX性"万能句 | 具体说做什么 | | "N大核心模块"(数字可能与实际不符) | "核心培训模块" | **检测脚本**: ```python ai_phrases = [ '我公司深刻理解', '贡献力量', '量身定制', '高度负责的态度', '先进性、创新性和可操作性', '一对一访谈', ] text = '\n'.join([p.text for p in doc.paragraphs]) for phrase in ai_phrases: if phrase in text: print(f'⚠️ AI套话残留: {phrase}') ``` #### 7.2 数据一致性检查 ```python # 必须验证的项目: checks = { '人数×批次': '检查总人数 = 每批人数 × 批次数', '天数口径': '正式天数 vs 含报到日,首次提到必须加括号说明', '师资姓名': '课表中每位讲师必须在师资简介中有对应条目', '师资头衔': '同一讲师在全文所有出处的单位名/职称必须一致', '课程覆盖': '技术规范要求的每项培训内容都必须出现在课表或正文中', '满意率数字': '全文中出现的满意率目标必须一致(如95%)', '交付物': '技术规范列出的每项交付物都必须在第四章出现', } ``` #### 7.3 师资交叉验证(血泪教训) | 检查项 | 说明 | 典型错误 | |--------|------|----------| | 单位名称 | 必须精确到区/县级 | "成都市委党校" vs "成都市温江区委党校" | | 专家标签 | 必须与本项目课程匹配 | 讲党建课的讲师标签写成"宏观经济专家" | | 职称资质 | 必须满足技术规范要求 | 技术规范要求"中级及以上",讲师无明确职称 | | 简写一致 | 课表简写不能写错 | "高培中心" vs "高级培训中心" | #### 7.4 技术规范全覆盖检查 技术规范"项目概况"和"培训内容覆盖"中提到的**每一项内容**,都必须在方案中有对应安排: - 如果课表没有单独安排,必须说明融入哪个模块 - 如果是选修/补充内容,必须在正文中明确标注 ```python # 提取技术规范中所有培训内容关键词,逐一在方案全文中搜索 for kw in spec_keywords: if kw not in full_text: print(f'❌ 技术规范要求但方案未覆盖: {kw}') ``` ### Step 8: 真实数据替换(如有) 如果甲方/合作方后续提供了真实师资和课表,执行替换: 1. **课表替换**:用 python-docx 定位课程安排表(通常是第一个表格),逐行替换 2. **师资替换**:定位师资简介段落(通常在"2.4 师资配备"下方),删除旧内容插入新内容 3. **信息图同步**:更新 HTML 中 timeline 区域的讲师姓名,重新截图 4. **全文扫描**:简化版日程描述、课程模块说明等处也要同步更新 **替换后必须重新执行 Step 7 全部检查。** ## Step 9: 文档扩充(当字数不足时) 当客户反馈"内容太少"或字数未达目标(如2万字),使用以下方法论进行迭代扩充。 ### 9.1 扩充原则 - **分轮迭代**:每轮控制5-10处修改,避免一次性改太多导致关键词匹配错位 - **先分析后动手**:每轮先统计当前字数,计算差额,选择扩充点 - **优先展开有深度空间的段落**:项目理解、服务敏感点、重点难点、风险管理、售后服务 - **保持格式一致**:新插入段落必须继承前一段落的字体、字号、缩进等格式 ### 9.2 核心工具函数 ```python import copy from lxml import etree from docx import Document def expand_para(para, new_text): """替换段落文本,保留原有格式(字体、加粗等)""" if not para.runs: return para.runs[0].text = new_text for run in para.runs[1:]: run.text = '' def insert_para_after(ref_para, text): """在指定段落后插入新段落,继承格式""" new_para = copy.deepcopy(ref_para._element) ns = '{http://schemas.openxmlformats.org/wordprocessingml/2006/main}' for r in new_para.findall(f'.//{ns}r'): new_para.remove(r) new_r = etree.SubElement(new_para, f'{ns}r') if ref_para.runs: rpr = ref_para.runs[0]._element.find(f'{ns}rPr') if rpr is not None: new_r.insert(0, copy.deepcopy(rpr)) new_t = etree.SubElement(new_r, f'{ns}t') new_t.text = text new_t.set('{http://www.w3.org/XML/1998/namespace}space', 'preserve') ref_para._element.addnext(new_para) ``` ### 9.3 扩充优先级(从高到低) | 优先级 | 章节 | 扩充方式 | 典型增量 | |--------|------|----------|----------| | 1 | 服务敏感点分析 | 每条加具体应对措施 | 每条+80-120字 | | 2 | 项目重点难点 | 每条加解决方案和量化指标 | 每条+60-100字 | | 3 | 实施思路/五阶段 | 每阶段加操作细节 | 每阶段+100-150字 | | 4 | 质量保障措施 | 每条从一句话展开为一段 | 每条+80-120字 | | 5 | 进度保证措施 | 加时间节点和责任人 | 每条+50-80字 | | 6 | 售后服务 | 加响应时间、服务期限等量化承诺 | 每条+60-100字 | | 7 | 风险管理 | 总述展开,每类风险加应急预案 | 总述+150字 | | 8 | 培训效果评估 | 加过程性评价、结果运用 | 每项+100-150字 | | 9 | 师资配备 | 总述加选拔标准和备选机制 | +100-150字 | | 10 | 项目交付成果 | 加资料规范和移交流程 | +80-120字 | ### 9.4 扩充内容写作要求 - **量化优先**:用数字而非形容词("3个工作日内"而非"及时") - **具体可执行**:每个承诺都要能落地执行 - **贴合行业**:培训类用"学员""课时""满意度",党建类加"政治把关""红色现场教学" - **不重复**:不同段落扩充的内容不能互相重复 - **不空洞**:避免"进一步加强""不断完善"等无实质内容的套话 ### 9.5 迭代字数监控 ```python # 每轮修改后必须统计字数 doc2 = Document(doc_path) total = sum(len(p.text) for p in doc2.paragraphs) for t in doc2.tables: for row in t.rows: for cell in row.cells: total += len(cell.text) print(f'当前字数: {total},距目标还差: {20000 - total} 字') ``` ### 9.6 关键词匹配注意事项(血泪教训) - **跨run问题**:python-docx的一个段落可能被拆成多个run,关键词可能跨run边界,`p.text`能搜到但`run.text`中搜不到 - **前轮修改影响后轮**:前一轮脚本替换了文本后,后续脚本的关键词搜索可能失效,每轮都要用最新文档验证关键词 - **长度限制过滤**:搜索时加`len(p.text) < 200`避免匹配已展开的段落 - **段落索引偏移**:`insert_para_after`会增加段落数量,后续段落索引全部后移,如需多处插入应从后往前或分轮处理 ## Step 10: AI去痕(MANDATORY — 每次生成/扩充后必须执行) ### 10.1 完整AI禁用表述替换表 | 禁用表述 | 替换方案 | 说明 | |---------|---------|------| | 深刻理解 | 充分了解 | 最典型AI套话 | | 贡献力量 | 圆满完成 | | | 量身定制 | 专门制定 / 针对XX实际设计 | | | 赋能 | 支撑 / 助推 | | | 助力 | 支持 / 帮助 | | | 打造 | 建设 / 建立 | | | 筑牢 | 夯实 | 党建文档高频 | | 构筑 | 构建 | | | 紧密结合 | 结合 | 出现频率最高,通常4+处 | | 深度融合 | 融合 | | | 有机融合 | 融合 / 统筹 | | | 全方位 | 全面 | | | 多维度 | 多角度 | | | 立体化 | 综合 | | | 系统化培训 | 系统培训 | | | 深入浅出 | 通俗易懂 | 讲师简介高频 | | 精心设计 | 合理设计 | | | 精心打造 | 合理建设 | | | 精心组织 | 周密组织 | | | 全面提升 | 提高 | |
View on GitHub
This SKILL.md is very large, so SkillsMP previews the first section here. View on GitHub