SKILL.md 3.4 KB


name: kdshr-dev description: >- Kingdee EAS/SHR (sHR) custom development discipline for BaoYPro and similar EAS/sHR projects — not Cosmic/苍穹 or other Kingdee product lines. Use when writing or reviewing Java integration code (weaverTodo, SSO, BMC, OpenAPI) on EAS/sHR, when API fields or platform getters are unclear, or when the user mentions 不要乱猜, 不确定先问, 减少多余判断, or coding standards for Kingdee sHR

secondary development.

Kingdee SHR 二开编码纪律

适用:kdshrpmsg / kdshrsso金蝶 EAS/sHR(如 BaoYPro、YHPro)二开。与业务 skill 一起用;本 skill 管「怎么写、不确定怎么办」。

不适用:金蝶其他产品线(如 苍穹 Cosmic、云星空等)——那些项目的目录与源码编码约定不同,不要套用下文 src/GBK、websrc/UTF-8 规则。


不确定就先问,禁止乱猜(强制)

平台 API、BMC/Info 字段、getter、表结构、对方接口必填项 拿不准时:

  1. 先向用户提问(可一次问清),写清:缺什么、可选方案、你倾向哪种。
  2. 用户确认或给出文档/源码依据后再写代码
  3. 禁止
    • 反射遍历一串可能存在的 getXxx 碰运气;
    • 编造未证实的方法名、字段名、bosType、枚举值;
    • 用多层 try/catch + 空忽略把「猜」藏起来;
    • 为兜底再堆一串多余分支「也许有用」。

已确认可用的(如文档、现网日志、同类已测通代码、用户明确指定)才能写进实现。

已确认(BaoYPro BMC → 消息中心 sendMsg,测试已通过)

  • 人员标识:只传 workCode(工号),不传 employeeId
  • 发送人:msgInfo.getSenderId()getUserByIdUserInfo.getNumber() / getName()
  • 接收人:msgInfo.getReceiver()resolveReceiverWorkcode(工号)。
  • 正文:msgInfo.getBody();空则回退 getTitle()
  • 标题:msgInfo.getTitle()
  • 环境 moduleId/eventId:以 weaverTodoConfig.properties 为准,测试与生产不同,勿写死在代码里。

提问示例(仍未知时)

  • 对方接口必填项与文档表头冲突时,以用户/现场补丁结论为准(如只要 workCode)。
  • 新客户 BMC 字段未确认前,不要反射猜 getter。

实现偏好

  • 配置优于猜测:对方要求固定发送人、租户、模块 id 时,用 properties;不要从 Info 里瞎抠。
  • 少分支:一个来源够用就不要写三套 fallback。
  • 失败要响:必填缺失直接打 error 日志并返回失败,并写清缺哪项配置/字段。
  • 编码(仅 EAS/sHR 工程)
    • src/:后端 Java 一般 GBK
    • websrc/:前端/门户侧 Java(含 handler、osf 等)一般 UTF-8
    • 配置如 weaverTodoConfig.propertiesintegration-config-*.json:多为 UTF-8,须与加载代码一致。
    • 改文件前先确认目录;苍穹等非 sHR 工程勿套用本条

与业务 skill 的关系

Skill 管什么
kdshrpmsg 待办/通知业务 intake、接口选型、切生产清单
kdshrsso SSO 模式 intake、切生产
kdshr-dev(本 skill) 不确定先问、不乱猜 API、少写多余判断

做消息/SSO 时:先走对应业务 intake;写具体取值逻辑时遵守本 skill。