当前位置: 首页 > news >正文

开源免费的WPS AI 软件 察元AI文档助手:链路 033:buildDocumentProcessingExecutionPlan 包装执行计划

链路 033:buildDocumentProcessingExecutionPlan 包装执行计划

总体链路图

下图在全系列各篇保持一致,仅通过高亮样式标示本篇所覆盖的环节;箭头表示主成功路径,点线为异常或可选路径。阅读任意一篇时都应能回到本图定位,避免在单文件里「钻太深」而失去上下游语境。

plain

structured

multimodal

1 入口: Ribbon/对话框 → assistantId

2 startAssistantTask 占位任务

3 launchInfo 与 resolveDocumentInput

4 resolveModel 与模型清单

5 提示词拼装与 launchGuard

6 分流 plain / structured / multimodal

7a chatCompletion 文本链路 plain

7b chatCompletion 结构化批次

8a applyDocumentAction

8b executionPlan → applyDocumentProcessingPlan

7c generateMultimodalAsset

9 评测持久化与任务完成态

异常路径 normalizeError → 安全弹窗

本篇在总体链路中的位置

对应图中 N8b→N10:结构化 JSON 批次、聚合计划与文档处理管线。 高亮节点:N8b、N10。若本篇同时引用 chatApi 与任务运行器,通常意味着该逻辑处于「编排层与网络层交界」:修改时要同时考虑任务取消与 UI 快照。

深度说明(工程视角)

从工程维护角度看,本篇讨论的对象应当被视为「可替换实现」:只要对外的任务状态、HTTP 契约与文档写回语义保持不变,内部可以重构函数拆分或调整日志字段。阅读时建议始终抓住三个锚点:一是数据从哪来(PluginStorage、localStorage、COM 选区还是全文);二是数据何时离开本机(进入 fetch 之前是否已完成脱敏与快照);三是失败时用户可见的文本由谁归一(chatApi 与助手错误弹窗两条路径)。

就「链路 033:buildDocumentProcessingExecutionPlan 包装执行计划」而言,源码位置可概括为:documentProcessingPipeline.js。这与摘要中的判断一致:对结构化 executionPlan 深拷贝后附加 pipelineKind、pipelineVersion、preview、applyPolicy、backupPolicy、qualityGate 等。供 applyDocumentProcessingPlan 与任务预览 UI 使用。关键词「pipeline、backupPolicy、qualityGate」提示你在仓库内做全文检索时应优先锁定这些符号,而不是仅依赖界面文案。

与网络请求相关的修改,务必在本地用开发者工具或代理核对:请求体中的 model 字段是否与设置页保存的 modelId 一致;Authorization 是否只取 apiKey 列表的第一段(部分网关对多密钥格式敏感);stream 为 true 时宿主是否稳定消费 SSE。若你引入新的 provider,应对照 getChatApiConfigByProvider 的 URL 拼接分支补充单元测试或手测用例,避免「路径已含 v1 却又重复拼接」类错误。

与文档写回相关的修改,应优先在无界面的纯函数层复现:例如仅调用 applyDocumentAction 或 applyDocumentProcessingPlan 的入参快照,观察 Range 坐标是否在 CRLF 归一化前后发生漂移。WPS 与 Word 在选区、批注锚点上的差异会放大这类问题,因此本篇若在讲坐标或分段,请同时阅读 documentPositionUtils 与 chunk 相关教程篇目。

阅读顺序上,本篇之后建议继续看:applyDocumentProcessingPlan 真正触碰文档(034)。若在总体图中定位,对应图中 N8b→N10:结构化 JSON 批次、聚合计划与文档处理管线。 遇到与教程系列术语不一致时,以源码标识符为准:教程侧重导航与概念,本系列侧重调用次序与失败面。

最后说明写作立场:本系列不对任何云厂商或模型服务做优劣评价,也不暗示「必须开通」某类账号;所述配置项仅反映当前仓库为打通 OpenAI 兼容协议而需要的最小字段集合。若组织策略禁止外联,应在网关或 hosts 层拦截,而不是在加载项内写死假地址。

与教程系列文档的对照

下列文档来自docs/chayuan-tutorial-series,侧重「如何阅读仓库」与界面侧概念,与本链路系列互补:不重复推销功能,仅帮助建立目录与模块边界。

  • chayuan-tutorial-series/14-jiegouhua-json-liushuixian-yu-banben.md:与本篇链路相邻的工程说明,可对照变量命名与文件职责。
  • chayuan-tutorial-series/24-pizhu-maodian-guize-ji-zhong.md:与本篇链路相邻的工程说明,可对照变量命名与文件职责。
  • chayuan-tutorial-series/25-wendang-fenkuai-qi-collection.md:与本篇链路相邻的工程说明,可对照变量命名与文件职责。

摘要

对结构化 executionPlan 深拷贝后附加 pipelineKind、pipelineVersion、preview、applyPolicy、backupPolicy、qualityGate 等。供 applyDocumentProcessingPlan 与任务预览 UI 使用。

关键词

pipeline;backupPolicy;qualityGate

链路位置(源码索引)

documentProcessingPipeline.js。

正文

1. 包装返回

basePlan 深拷贝与 buildExecutionPlanSummary 等。

维护时建议把本节涉及的符号在 IDE 里「查找引用」:确认是否还有对话框专用服务、拼写检查服务或评测脚本以拷贝粘贴方式重复了相似逻辑。若发现重复,优先抽到 chatApi 之上的薄封装,而不是在业务层再次拼接 URL 或 Authorization,以降低安全审查时的遗漏面。

// src/utils/documentProcessingPipeline.js 第135-159行exportfunctionbuildDocumentProcessingExecutionPlan(executionPlan,options={}){constbasePlan=executionPlan&&typeofexecutionPlan==='object'?JSON.parse(JSON.stringify(executionPlan)):{}constexecutionPlanSummary=buildExecutionPlanSummary(basePlan)constapplyPolicy=buildApplyPolicy(basePlan)constbackupPolicy=buildBackupPolicy(basePlan,options)constqualityGate=buildQualityGate(basePlan)consttargetRange=getPlanRange(basePlan)return{...basePlan,pipelineKind:'document-processing',pipelineVersion:'2026-03-document-processing-v1',targetRange,preview:{beforeText:executionPlanSummary.previewBefore,afterText:executionPlanSummary.previewAfter},applyPolicy,backupPolicy,qualityGate,executionPlanSummary,artifacts:Array.isArray(basePlan?.artifacts)?basePlan.artifacts:[]}}

上下游衔接

applyDocumentProcessingPlan 真正触碰文档(034)。

http://www.jsqmd.com/news/765584/

相关文章:

  • 从零到一:手把手教你用Kali Linux通关HackTheBox入门靶机Meow(附完整命令截图)
  • TestDisk PhotoRec:你的终极数据恢复解决方案,轻松找回丢失的分区和文件
  • 三步搭建本地AI聊天界面:Ollama Web UI Lite终极指南
  • 终极指南:如何用xEdit快速清理和优化你的游戏Mod
  • 大模型优化实战:LoRA与量化技术降低70亿参数模型显存需求
  • 3个颠覆性策略:构建智能知识网络的全新指南
  • Dify工作流总在“pending”状态?5分钟诊断清单+3种curl+curl -v级调试命令,紧急故障秒级响应
  • 纯视觉无感定位筑根基,孪生实时坐标创未
  • LeetCode 1861. 旋转盒子【详细题解|双指针+模拟两种解法】
  • Cursor智能体开发:Agent 故障排查
  • Dante Cloud v4.0.6.0 版本发布:开源新功能,支持多架构灵活切换!
  • 百万上下文之后,拼什么?
  • WeakAuras Companion终极指南:5分钟实现魔兽世界光环自动同步
  • Cortex-A7的运行模式
  • 从0到1构建奶牛行为智能监控系统(一)
  • 生物科学插图的免费宝库:Bioicons让你的科研可视化更专业
  • PubSubClient:Arduino MQTT客户端库终极指南
  • 突破反爬与动态渲染:Selenium + Chrome 深度实战
  • 你的旧安卓手机别扔!用Termux API把它改造成智能家居控制中心(支持红外/通知/传感器)
  • 告别盲猜:用Process Monitor给你的软件行为做一次“全身体检”(以Chrome/微信为例)
  • 探索模型广场功能并找到适合文本摘要任务的最佳模型
  • 从哈工大论文到你的DSP:ESO谐波抑制算法移植实战,附C代码核心片段与调试心得
  • Omdia最新研究表明:蜂窝物联网数据流量到2035年将达到218.6艾字节
  • 如何永久保存微信聊天记录:三步实现完整备份与深度分析
  • 如何让Direct3D 8游戏在现代Windows上流畅运行:d3d8to9终极指南
  • 终极音乐解锁解决方案:Unlock-Music开源工具详解
  • 零成本实现家庭服务器24小时稳定在线:luci-app-aliddns动态域名解析终极指南
  • 高效智能的免费小说下载工具:novel-downloader终极解决方案
  • Docker 27车载容器“瘦身后遗症”预警:27种轻量化陷阱与反模式(含3家头部车企实车崩溃日志分析)
  • AISMM模型五个等级——不是阶梯是悬崖:Level 3未达标=AI系统法律免责权自动失效