---
name: kd-ksql
description: 金蝶 Cosmic 体系 KSQL/SQL 数据修复脚本生成、审查和验证技能。适用于数据修复、批量更新、字段回填、影响范围查询、备份、回滚、元数据确认表字段映射、SQL lint 证据等苍穹、星瀚、星空旗舰版场景。
---

# 金蝶 KSQL 数据修复

本技能用于 Cosmic 体系 SQL/KSQL 数据修复工作。它产出数据库脚本，不生成 Java 插件代码。

不要把本技能用于 Enterprise C# 技术栈假设或非 Cosmic 表结构映射。

## 前置条件

生成最终 SQL 前：

- 确认产品属于 Cosmic 体系。
- 运行 `kd_cosmic_config`，或使用已有成功配置证据。
- 使用带 SQL 信息的 `kd_cosmic_metadata` 验证表单 ID、单据名称、表名、字段数据库名、字段类型、枚举/下拉值、基础资料落库字段、`dbKey` 和 `dbName`。
- 表、字段、枚举或数据库路由事实未验证时，停止并列出待确认项。
- 多张表的 `dbName` 不一致时，不生成普通跨库更新 SQL；先让用户确认跨库处理策略。

## 确认卡片

最终 SQL 前提供确认卡片：

```text
意图：<业务目标>
产品：<Cosmic 体系产品>
对象：<表单/单据/基础资料>
元数据：已确认 / 待确认
表：已确认 / 待确认
字段：已确认 / 待确认
数据库路由：单库 / 跨库 / 待确认
影响范围查询：已确认 / 待确认
备份：已确认 / 待确认
更新：已确认 / 待确认
验证：已确认 / 待确认
回滚：已确认 / 待确认
Lint：已通过 / 待执行
```

只有所有必需项都已确认，才生成最终 SQL。

## 脚本结构

最终 SQL 应包含：

1. 文件头：目的、产品、元数据来源、时间戳和执行提醒。
2. 影响范围查询。
3. 整表备份：`SELECT * INTO bak_<table>_<yyyyMMddHHmm>`。
4. 与更新范围一致的更新前确认查询。
5. 正式更新语句。
6. 更新后验证查询。
7. 回滚语句。
8. 来自元数据证据的字段映射摘要。

默认使用 PostgreSQL 语法，除非用户明确指定其他数据库方言。

## 安全规则

- 不生成无 `WHERE` 的 `UPDATE` 或 `DELETE`。
- 除整表备份外，不使用 `SELECT *`。
- 影响范围、更新前检查、更新、验证和回滚的范围保持一致。
- 语义等价时优先使用可读的 `IN` 成员条件。
- 空值判断使用 `IS NULL` 和 `IS NOT NULL`。
- 避免 drop、rename 等破坏性结构变更；除非用户明确要求并记录风险。
- 数据更新前先做整表备份。
- 备份表名和输出文件名使用同一个时间戳。

## Lint 和证据

创建 SQL 文件后：

- 对文件运行 `kd_ksql_lint`。
- 交付前必须修复 lint `ERROR`。
- 对剩余 `WARN` 说明保留原因。
- lint 结果写入 `.pi/kd/runs/<run-id>/evidence/ksql-lint.txt`；没有自动 evidence 时写进 `EXECUTION.md`。

## 输出要求

交付时说明：

- SQL 文件路径。
- 使用的元数据来源。
- lint 状态。
- 执行前还需要人工确认的事项。
