上传GDIM检查 (GDIM Upload Check)

当 pipeline 只是本地脚本运行时,很多配置只要能在当前 Python 环境中执行通过即可;但如果要将 gdisdk.pipeline.pipeline.PipeLine 保存为 .pipe 并上传到 GDIM 平台运行,还需要额外检查 序列化兼容性、平台运行上下文、输出结果形态 等问题。

本页用于给出统一入口和总检查清单。各模块的权威规则,以对应 modules_help.*.rst 文档中固定标题 “上传 GDIM 前检查” 的小节为准。

为什么需要单独检查

  • 本地运行环境 可以直接访问当前脚本目录、内存中的函数对象、临时文件和调试输出;

  • GDIM 平台运行环境 只能依赖 .pipe 中可序列化的信息,以及平台侧可访问的脚本、模板、凭证和输出格式;

  • 因此,本地能跑通 并不等于 上传到 GDIM 后一定能正常运行或产出正确结果。

总检查清单

上传前建议至少检查以下几类问题:

  1. 可序列化配置

    • 是否使用了无法写入 .pipe 的 inline callable、临时闭包或仅存在于当前会话中的对象;

    • 是否将本地函数改为独立 .py 文件 + 字符串函数名 + @local_function 形式;

    • 是否存在 “本地 inline 配置会遮蔽文件方式配置” 的情况。

  2. 平台运行上下文

    • 是否清楚区分“上传后会被平台接管的配置”和“仍需要你自己准备的资源”:

      • token、proj_id、tpl_id 等运行时 GDIM 参数,上传后会由平台统一接管和写入,不需要作为上传前人工检查项;

      • pipeline.workspace、pipeline.local_functions_path 这类运行时路径,上传后也会被平台改写或替换;

      • 模板文件等业务资源,则应通过 pipeline attribute、前端传入的文件对象等方式提供,不要只依赖写死在 .pipe 里的本机绝对路径。

    • 是否误依赖了不会被平台接管、且仅本机存在的临时文件或调试目录。

  3. 输出结果形态

    • 输出是否需要保存在 GDIM 文件服务器,而不是只留在本地路径;

    • 输出是否应面向 GDIM / Web 前端渲染(例如 OutputPlotData),而不仅仅是本地 HTML / 图片文件;

    • 下游模块是否依赖平台侧真正可消费的输出端口类型;

    • return_results_config 是否符合应用类型的要求(见 GDIM应用类型 (App Types));

    • 若用于 GDIM 「表格数据更新」/「数据更新」/「自定义数据更新配置」,return_results_config 应指向预览表(通常是 MergeGdimTables.OutputTables),而不是 GdimTableWriter。完整约定见 GDIM数据更新 (Data Update)。

  4. 本地调试参数

    • 是否还保留了只适用于本地调试的开关、临时模板路径、示例输入或过量调试输出;

    • 是否有默认值在本地没问题,但上传平台后会导致输出缺失或行为偏差;

    • 若用于上述表格数据更新功能:保存的 .pipe 不能连接 GdimTableWriter。平台恢复 Pipeline 时会把所有模块的 auto_run 设为 True,图里一旦有 writer,预览就会写库。本地写回测试只能在 save_pipeline() 之后再接线。

  5. 第三方包

    • 本地函数 import 的第三方包是否都属于 requirements.txt 或 requirements-pythoncoder.txt;

    • 是否误用了仅本机安装、未写入 extras 清单的包(本地能跑、GDIM 会 ImportError);

    • 是否使用了仅 Windows 可用的包(如 pyodbc)。

当前已整理的重点模块

当前已补充上传前检查说明的模块

模块 / 模块组

上传前重点检查

规则来源

PythonCoder

local_function_name / ui_schema_function_name 应优先使用字符串函数名;本地函数使用独立脚本 + @local_function;第三方 import 必须来自 requirements.txt 或 requirements-pythoncoder.txt;经 return_results_config 回传前端的动态输出端口需 add_dynamic_ports_out(..., ptype=PortType.xxx),避免前端仍识别为 General。

modules.widgets 模块帮助

AddTableColumns

仅当 column_templates 中使用 function:xxx 时,需要改用文件方式本地函数;若同时配置 inline 与文件方式,inline 会优先。

modules.operators 模块帮助

TableCalculator

仅当模板中使用 function:xxx 时,需要改用文件方式本地函数;注意 inline 配置会遮蔽文件方式配置。

modules.operators 模块帮助

DocPrinter / ExcelPrinter

若最终结果文件需要在 GDIM 平台侧留存或回传,需确认 save_to_gdim=True,GDIM State 在 pipeline 层统一提供,模板通过 pipeline attribute / 前端传入的文件描述提供。

modules.writers 模块帮助

GdimTableWriter

用于 GDIM 「表格数据更新」时,保存的 .pipe 不能连接 GdimTableWriter``(平台恢复时会把所有模块 ``auto_run 设为 True)。return_results_config 指向预览表而不是 writer。普通立即写回场景保持 auto_run=True。

GDIM数据更新 (Data Update)、modules.writers 模块帮助

LineChartPlotter / BarChartPlotter / ScatterChartPlotter / HistogramPlotter / PieChartPlotter / TablePlotter / PlotMerger

平台侧需要的是 OutputPlotData;上传前通常应关闭不必要的 HTML / 图片文件生成。

modules.plotters 模块帮助

推荐检查顺序

  1. 先按 GDIM应用类型 (App Types) 判断 Pipeline 属于哪类 GDIM 应用,并对照该类型专题页的规则 (GDIM数据更新 (Data Update)、GDIM地图弹窗 (Map POI Popup)、GDIM数据对接 (Data Exchange)、GDIM自动报告 (Report App))。 自定义应用没有额外规则。

  2. 识别 pipeline 中实际使用了哪些模块。

  3. 到对应 modules_help.*.rst 页面查阅该模块的 “上传 GDIM 前检查” 小节。

  4. 确认哪些配置会由平台接管,哪些模板、脚本和输出形态仍需要你按平台运行方式显式准备。

  5. 再保存 .pipe 并进行上传前复核。

Note

为了便于后续 AI 检查和自动化维护,建议今后凡是存在“本地可运行但上传 GDIM 前需额外调整”的模块,都在对应模块帮助中使用统一小节标题 “上传 GDIM 前检查” 来记录规则。

在 AI IDE 中,可先用 pipeline-organizer 把脚本整理成「一条 Pipeline 一个文件夹」,再用 pipeline-gdim-review 做上传前兼容性检查。用法见 AI辅助开发 (Code Agent)。