# 产品画像确认

产品画像决定 KCode 使用哪套产品知识、SDK/元数据来源、构建策略、目录约束和门禁规则。标题栏出现 `产品：未确认` 时，必须确认产品。

## 支持的产品

```text
cangqiong   金蝶苍穹 / Cosmic Java
xinghan     金蝶星瀚 / 基于苍穹/Cosmic
flagship    星空旗舰版 / 基于苍穹/Cosmic
enterprise  金蝶企业版 / C#
```

`Cosmic` 在 KCode 中就是苍穹平台语境，不作为独立产品画像。用户输入 `cosmic` 或 `云苍穹` 时，KCode 会按 `cangqiong` 归一处理。星瀚和星空旗舰版都基于苍穹/Cosmic 平台，但具体接口、目录和元数据可能存在产品差异，最终以当前产品、项目 SDK、元数据和构建证据为准。

企业版默认按 C# 处理。只有明确提出 `Python插件`、`IronPython`，或带企业版/BOS 语境的 `Python脚本` 时，KCode 才切换到企业版 Python/IronPython 模式。

## 创建需求时确认产品

使用显式产品参数：

```text
/kd cangqiong 实现采购订单保存校验
```

允许省略版本：

```text
/kd flagship 实现采购订单插件
```

## 已有需求补产品

需求已经创建且标题栏显示以下内容时：

```text
产品：未确认
```

执行：

```text
/kd product cangqiong --version V6.0
/kd check
/kd status
```

具体产品不确定但明确属于金蝶苍穹相关技术栈时，确认业务实际使用的是苍穹、星瀚还是星空旗舰版。禁止把 `cosmic` 当成产品名。

## 如何选择

选择 `cangqiong`：

- 明确是金蝶苍穹。
- Java 插件、Cosmic 表单/单据/元数据。

选择 `xinghan`：

- 明确是金蝶星瀚。
- 基于苍穹/Cosmic 平台，默认按平台 Java 插件处理。
- 接口或元数据存在星瀚差异时，以星瀚产品和当前项目证据为准。

选择 `flagship`：

- 明确是星空旗舰版。
- 基于苍穹/Cosmic 平台，Java 插件规则适用。
- 接口或目录存在旗舰版差异时，以旗舰版产品和当前项目证据为准。
- 项目存在 `code/` 目录时，生产代码应跟随 `code/` 下真实结构。
- 插件、操作、单据模型、DynamicObject 和下推实现使用 FormId、实体/分录标识和字段标识；KSQL、报表、存储过程、直接查库和数据修复脚本使用数据库表名和数据库字段名。
- 元数据证据优先使用 `kd_cosmic_metadata product=flagship ...`；如果来自本地 `t_meta_entitydesign.fdata` 或 MCP 查询结果，必须先用 `kcode metadata` 或 `kd_metadata_parse` 解析成 `evidence/data-source.md`。随包 `kd_table product=flagship` 只能作为表结构线索，不能替代当前项目元数据。

选择 `enterprise`：

- 明确是金蝶企业版 / BOS C#。
- Java/Cosmic API 不适用。

## 常见问题

### 为什么不能保持 unknown？

因为 unknown 会导致：

- 无法选择对应产品的知识范围、SDK/元数据查证来源和门禁规则。
- 无法确定构建策略、目录约束和证据要求，例如苍穹/星瀚/旗舰版的 Java 插件、企业版 C# 插件、企业版 Python/IronPython 脚本或 KSQL/SQL 数据脚本各自的验证方式。
- 构建命令无法可靠选择。
- SDK 签名和证据门禁会失去产品约束。

KCode 会阻止 unknown run 离开 `discuss`。

### Header 和 `/kd status` 不一致怎么办？

刷新门禁：

```text
/kd check
/kd status
```

刚升级过 KCode 时，重新启动：

```powershell
kcode start
```

仍异常时重新安装：

```powershell
npm install -g kcode-pi@latest
```
