Skip to main content

dws-report-entry-submit-pitfalls

DWS `report entry submit` 自动化提交模式:contents JSON 格式、contentType/type映射、重复key检查、附件上传流程。

معلومات المصدر

المستودع
crimsonblazezero/Zero-Tools
آخر نشاط في المصدر
٣ أغسطس ٢٠٢٦ في ١٥:٢٧
لغة SKILL.md المكتشفة
الصينية
النجوم
٠
التفرعات
٠

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
dws-report-entry-submit-pitfalls
description
DWS `report entry submit` 自动化提交模式:contents JSON 格式、contentType/type映射、重复key检查、附件上传流程。
tags
["dws","report","entry-submit","pitfalls"]
# DWS Report Entry Submit — 自动化提交模式 ## 目的 本文件记录通过 `dws report entry submit`(或 CLI wrapper)向钉钉日志模板批量写入内容的正确方法,以及高频坑点。 ## 关键规则 ### 1. `contentType` 必须与 `type` 匹配 | `type` | 含义 | `contentType` | |--------|------|---------------| | `1` | 文本 | `markdown` | | `2` | 数字 | `origin` | | `9` | 附件 | `origin` | **错误示例**: `type: 1, contentType: "origin"` → 被拒绝,报 `business_error` **正确示例**: `type: 1, contentType: "markdown"` **正确示例**: `type: 2, contentType: "origin"` ### 2. `(key, sort)` 必须唯一 一份 `--contents-file` 中的每项,`key` + `sort` 组合不可重复。如果同一个模板字段出现两遍(例如给两个人各写一份同样的字段名),会报错: ``` [INPUT_INVALID_JSON] contents[18].content must be a string ``` 这个错误信息具有误导性——实际原因是模板字段重复,不是内容类型不对。 **对策**: 多人场景请拆分为多个 JSON 文件分别提交,或使用 `--dd-from` / `--to-user-ids` 一次提交一份报告给团队。 ### 3. 所有 `content` 值必须是字符串 即使字段是数字类型(`type=2`),`content` 也必须是字符串。提交前统一转义: ```python item['content'] = str(item['content']) ``` ### 4. 模板 `field_type=16` 需降级映射 模板里有些控件的 `field_type=16`(长文本/表格类),`entry submit` 不直接接受该值,会报错: ``` [INPUT_INVALID_JSON] contents[60].type="16" is invalid; use template get field_type ``` **对策**: 将其映射为 `type=1` + `contentType=markdown` ### 5. 上传附件后再提交 如果模板包含附件字段(`field_sort=56`),需要先通过 `dws drive upload --file-name` 上传,拿到 `fileId`,再填入 `content`: ```bash dws drive upload --file-name "周报.xlsx" --file-path "./周报.xlsx" # 返回: {"fileId": "pYLaezmVNeXkg99DtPP7gp2bWrMqPxX6", ...} # JSON 中添加: # { # "key": "附件", # "sort": "56", # "content": "pYLaezmVNeXkg99DtPP7gp2bWrMqPxX6", # "contentType": "origin", # "type": "9" # } ``` ## 完整提交流程 ```bash # Step 1: 读取模板结构 dws report template detail --name "运营周复盘(周一9:00前提交)" --format json # Step 2: 生成 contents JSON(注意上述 1–4 规则) # Step 3: 如果有附件,先上传获取 fileId dws drive upload --file-name "运营周会数据收集_王祎.xlsx" \ --file-path "C:\Users\...\运营周会数据收集_王祎.xlsx" # Step 4: 验证 JSON python -m json.tool dws_weekly_contents.json | grep -c '"sort"' # 检查非空/无重复 # Step 5: 提交 dws report entry submit \ --template-id <templateId> \ --contents-file "<jsonPath>" \ --yes \ --format json # 加 --verbose 获取更详细的错误定位 ``` ## 错误排查速查 | 错误片段 | 实际原因 | 解法 | |---------|---------|------| | `content must be a string` | (key, sort) 重复 | 确保 JSON 中每项唯一 | | `contentType="text" is invalid for type=2` | contentType 和 type 不匹配 | type=1→markdown, type=2/9→origin | | `type="16" is invalid` | 模板类型不支持 | 映射为 type=1+markdown | | `success=false ... PARAM_ERROR` | 格式校验失败 | 加 `--verbose` 看具体 contents 位置 | | `report entry submit` 返回 `business error` | 可能是上面任一原因 | 先验 (key,sort) 唯一性、再验 type/contentType 映射 |
عرض على GitHub