@shundoo-ai/dsh-cosmic 1.0.2-alpha.0 → 1.0.2-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shundoo-ai/dsh-cosmic",
3
- "version": "1.0.2-alpha.0",
3
+ "version": "1.0.2-alpha.2",
4
4
  "type": "module",
5
5
  "files": [
6
6
  ".config",
@@ -7,6 +7,7 @@
7
7
  - **`id` 字段**:JSON 中返回字符串(长整型防精度丢失)
8
8
  - **日期/时间字段**(`biztime`、`createtime` 等):JSON 中返回 ISO 字符串(`"2026-05-15T10:30:00"`)
9
9
  - **数量字段**(`netwbqty1` 等 QtyProp):JSON 中返回 `float`(Decimal 序列化后)
10
+ - **dict 键名**:=`selectFields` 的**完整字段路径**(含单据体前缀,如 `billentry.qty`),**不是字段短名**——`pd.DataFrame(rows)` 后 rename 用错名字会静默变 NaN(详见 [§十二](#十二-dataframe-列名--selectfields-完整路径pddataframerows-后-rename-必须用全名))
10
11
 
11
12
  > ⚠️ **复选框字段**:API 返回 `true`/`false`(bool),**不是字符串**。比较用 `== True` / `~`,不用 `== '1'`。含 null 时用 `.fillna(False)`。
12
13
 
@@ -209,3 +210,22 @@ df['mat_name'] = df['mat_name'].mask(
209
210
 
210
211
  - **chat 表格** → `build_simple_query_tables()`(`report_builder_markdown.py`,纯 Python 拼 Markdown,零依赖,自动 TOP N 截断 + 超行提示)。简单查询的输出规范见 `SKILL.md`《报告格式》。
211
212
  - **调试/日志打印** → `df.to_string()`(pandas 内置,零依赖)。
213
+
214
+
215
+ ## 十二. DataFrame 列名 = selectFields 完整路径(`pd.DataFrame(rows)` 后 rename 必须用全名)
216
+
217
+ **现象**:取数字段有值,但 rename 后数值全为 `0.0`/`NaN`、分组列变空——**静默错误,不报异常**。典型:`df.columns = ["通知单号", "发货组织", "发货数量", ...]` 按顺序硬编码列名。
218
+
219
+ **原因**:响应每个 row 的 key 是 `selectFields` 的**完整字段名**(含单据体前缀,如 `billentry.qty`)——字段命名与响应格式的**唯一权威**是 `api-reference.md` §3.3 / §4.3,此处不重复。按顺序硬编码列名时,只要顺序或前缀对不上就会「错位对齐」:把不存在的键映射成 NaN,**不抛错**。
220
+
221
+ **强制写法**:显式 `COLMAP` + **先校验键齐全**,让错位在取数阶段显式失败:
222
+
223
+ ```python
224
+ df = pd.DataFrame(rows)
225
+ missing = [c for c in COLMAP if c not in df.columns] # ⭐ 关键:先校验
226
+ if missing:
227
+ raise RuntimeError(f"缺失字段: {missing};实际列: {list(df.columns)}")
228
+ df = df[list(COLMAP)].rename(columns=COLMAP)
229
+ ```
230
+
231
+ > 排查:数值列全 0 / 分组列全空 → 先 `print(list(rows[0].keys()))` 核对**真实键名**,再动 rename。**禁止**新增字段后不同步改 COLMAP(会导致错位)。
@@ -1,4 +1,4 @@
1
- # 苍穹数据分析 preset —— Python 运行时初始化(幂等,Windows PowerShell 版)
1
+ # 苍穹数据分析 preset —— Python 运行时初始化(幂等,Windows PowerShell 版)
2
2
  # 用法:pwsh {PRESET}/skills/erp-analysis/scripts/init-python.ps1
3
3
  # 行为:把 .venv 建在 **机器级** 目录 `$env:DSH_HOME\cache\cosmic\venv`(与 preset 版本解耦,
4
4
  # 升级 preset 不重建;多工作区共享);已存在则跳过创建,但仍按 requirements.txt 同步依赖。