|
| 1 | +# 视频号小店商家客服 API Implementation Plan |
| 2 | + |
| 3 | +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. |
| 4 | +
|
| 5 | +**Goal:** 为 `weixin-java-channel` 增加商家客服媒体上传和消息发送 API。 |
| 6 | + |
| 7 | +**Architecture:** 以独立的客服子服务封装两条官方 API,通过既有 `BaseWxChannelServiceImpl` 完成鉴权、JSON 请求与 multipart 上传。请求模型保持强类型,服务层测试使用可记录调用的测试替身,避免真实网络依赖。 |
| 8 | + |
| 9 | +**Tech Stack:** Java 8、Maven、TestNG、Lombok、Jackson 注解。 |
| 10 | + |
| 11 | +## Global Constraints |
| 12 | + |
| 13 | +- Java 8 兼容,不新增依赖。 |
| 14 | +- API 路径固定为 `/channels/ec/commkf/cosupload` 和 `/channels/ec/commkf/sendmsg`。 |
| 15 | +- 使用 TestNG,所有新增测试不使用真实微信凭据。 |
| 16 | + |
| 17 | +--- |
| 18 | + |
| 19 | +### Task 1: 请求与响应模型 |
| 20 | + |
| 21 | +**Files:** |
| 22 | +- Create: `weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/kf/WxChannelKfCosUploadResponse.java` |
| 23 | +- Create: `weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/kf/WxChannelKfSendMsgParam.java` |
| 24 | +- Create: `weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/kf/WxChannelKfSendMsgResponse.java` |
| 25 | +- Test: `weixin-java-channel/src/test/java/me/chanjar/weixin/channel/bean/kf/WxChannelKfBeanTest.java` |
| 26 | + |
| 27 | +- [ ] Write JSON encode/decode tests for `request_id`, `open_id`, `msg_type`, `text.content`, `cos_url` and `msg_id`. |
| 28 | +- [ ] Run the test and verify it fails because the classes do not exist. |
| 29 | +- [ ] Add the minimal annotated model classes and nested message content types. |
| 30 | +- [ ] Run the test and verify it passes. |
| 31 | + |
| 32 | +### Task 2: 服务入口与请求执行 |
| 33 | + |
| 34 | +**Files:** |
| 35 | +- Create: `weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelKfService.java` |
| 36 | +- Create: `weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/impl/WxChannelKfServiceImpl.java` |
| 37 | +- Modify: `weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelService.java` |
| 38 | +- Modify: `weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/impl/BaseWxChannelServiceImpl.java` |
| 39 | +- Modify: `weixin-java-channel/src/main/java/me/chanjar/weixin/channel/constant/WxChannelApiUrlConstants.java` |
| 40 | +- Test: `weixin-java-channel/src/test/java/me/chanjar/weixin/channel/api/impl/WxChannelKfServiceImplTest.java` |
| 41 | + |
| 42 | +- [ ] Write tests proving the service uses the documented URLs, uploads `file`, `open_id`, `msg_type`, decodes both responses, and caches `getKfService()`. |
| 43 | +- [ ] Run the test and verify it fails because the API is absent. |
| 44 | +- [ ] Add the minimal service API, implementation, constants and cached service entry point. |
| 45 | +- [ ] Run the focused tests and module test suite, then inspect `git diff --check`. |
0 commit comments