Timeplus 应用打包构建
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_15292d5a/yjkj-timeplus-app-builder。
技能介绍
要解决什么问题
Timeplus 里的应用不是零散 SQL 文件,而是 .tpapp 压缩包:把流(stream)、视图、物化视图、外部表、UDF、任务、告警等 DDL 资源 和 仪表盘 JSON 绑在一起,由安装器按顺序创建,失败则回滚。若 DDL 不可重复执行、模板变量写错、或 dashboard 与 DDL 的占位符混用,升级会直接打断线上依赖。
技能覆盖的核心能力
- 包结构与 manifest:
manifest.yaml声明资源类型、配置项类型(string / integer / list / choice / secret 等)、Python 依赖与可选 icon、categories。 - DDL 模板:
apps/*/ddl/用 Gotext/template({{ .DB }}、{{ .Config.key }}),并强制 幂等:除 UDF 用CREATE OR REPLACE FUNCTION外,一律CREATE … IF NOT EXISTS;视图禁止CREATE OR REPLACE VIEW。 - 仪表盘模板:JSON 用
[[ ]]分隔,避免与前端{{filter_*}}冲突;可配合 Sprig(如fromJson、join)处理 list 型配置。 - 安装与配置:支持 multipart 的
config[]覆盖,或 JSON body 的{"url","config"};DDL 文件用数字前缀控制依赖顺序。 - 参考索引:面板规格见
references/dashboard-spec.md;流式 SQL 语法指向 Timeplus SQL 技能;Python 外部流敏感信息可用 named_collection +_tp_init()模式,避免密钥写进SHOW CREATE可见的 body。
适用边界与注意点
本技能描述 打包与安装契约,不替代 Timeplus 集群运维。SYSTEM INSTALL PYTHON PACKAGE 不能放进 DDL,应写在 manifest 的 python_packages。UDF 与 format_schema 为全局命名空间,模板里不要加 {{ .DB }} 前缀。Icon 必须是合法的 data:image/...;base64,...,否则安装会失败。
使用场景
- 要把 Kafka 消费链路的 stream、物化视图和监控仪表盘打成一份 .tpapp,供其他环境一键安装
- 应用升级会重跑全部 DDL,需要把 CREATE 语句改成 IF NOT EXISTS,避免覆盖已有视图 UUID
- 安装时要让用户选交易对列表,需在 manifest 里声明 list 配置,并在 dashboard 用 Sprig join 生成 inlineValues
- Python 外部流里放 API Key 会被 SHOW CREATE 暴露,要按技能里的 named_collection 与 _tp_init 拆密钥
适合人员
- 在 Timeplus 上维护内部应用目录、要把流水线与看板版本化发布的平台工程师
- 负责编写 stream / view / MV 的 DDL,并需要按数字前缀排依赖顺序的数据工程师
- 做仪表盘 JSON 的人,需要对照 dashboard-spec 配置 viz_type、控件与 12 列栅格位置
- 要把安装参数(库名、环境、密钥)做成 manifest config 并在模板里渲染的应用打包维护者