2026-09-23,用户在本地验证 #336 后反馈:「admin页面没有yeeke的相关菜单」,并要求「要和 syb 商品一样,补全基本功能的模块页面和查询。建工单,做原型,我审核通过才能做工单」。
GET /api/admin/v1/yeeke-returns/sync-runs
GET .../sync-runs/:runId
POST .../sync
yeeke_returns
/yeeke-returns
/goauto/yeeke-returns/index
web/
sys_menu
补齐 yeeke 退货包裹的 Admin 只读模块,形态参照现有 SYB 商品页(web/src/views/goauto/syb-products/index.vue):列表 + 查询条件 + 详情 + 同步运行记录 + 手动同步;管理员与采购员均可见。
web/src/views/goauto/syb-products/index.vue
web/src/views/goauto/yeeke-returns/index.vue
6ab34c45191a826306a7ff1c
新增 Admin 页面、菜单迁移与权限关联,属数据库迁移与权限变更,实施前需人工确认。长期文档:更新架构与代码图、业务规则、以及 Admin 模块清单。
依赖 #336(已合并 main,未发布线上)。本单的包裹列表/详情接口为新增,不修改 #336 已有接口。
对齐现有 SYB 的做法(syb_products 与 syb_sync_runs 是两个并列模块,各有独立页面),yeeke 也拆为两个模块,不把同步记录塞进退货包裹页:
syb_products
syb_sync_runs
yeeke_sync_runs
/yeeke-sync-runs
web/src/views/goauto/yeeke-sync-runs/index.vue
两个模块都挂在「采集采购」菜单组,与 SYB 商品 / SYB 同步记录并列;管理员与采购员均默认可见。
server/app/goauto/access/modules.go
ModuleYeekeSyncRuns
http://192.168.0.224:8082/#/apps/6ab34c45191a826306a7ff1c
用户于 2026-09-23 审核并确认通过。
按仓库规则,本单可进入实施:实施范围以工单正文 + 「范围调整:拆成两个模块」评论 + 本确认为准。页面结构、流程、状态或验收变化时须重新确认原型。
用户在本地验证 #337 后要求:
提交 3bc4784(分支 feat/337-yeeke-admin-ui):只改 web/src/views/goauto/yeeke-returns/index.vue 与 yeeke-sync-runs/index.vue,同步清理了不再使用的方法、数据字段和 import。服务端接口不变(被去掉的筛选参数仍兼容,只是页面不再传)。pnpm run build:prod 通过。本地 9527 开发服务已热更新。
3bc4784
feat/337-yeeke-admin-ui
yeeke-sync-runs/index.vue
pnpm run build:prod
此次为用户直接提出的精简,页面结构随之变化,原型已同步为当前实现,请用户在本地确认后视为该版本已确认。
本地首次成功同步:1287 个包裹、2131 个商品、0 失败。
用店铺管理(SYB 店铺)做选项时,本地 14 个 yeeke 店铺按现有归一化规则只能对上一部分:完全一致 73 包裹、去空格后一致 384、名字包含 473、对不上 357(约 28%,5 个店铺);且"包含"规则会把 yeeke 的两个 PAPA 店铺归到同一个 SYB 店铺,有误判风险。故暂不采用。后续做退货与 SYB 商品匹配时,再评估在店铺管理中维护 yeeke 店铺对应关系。
http://192.168.0.224:8082/#/apps/6ab34c45191a826306a7ff1c 屏1 改名为「退货商品列表(每商品一行)」:表头与样例行改为按商品展示、参考图列、无明细占位行、店铺下拉、分页显示"共 2131 条商品"。待用户确认后实施。
列表按商品一行后,「详情」不再打开包裹详情,改为以当前商品为主的详情抽屉:
原型屏2 已改名为「退货商品详情抽屉」并同步更新(同一 App)。待用户确认原型后实施。
用户确认通过:屏1「退货商品列表(每商品一行)」(参考图列替代退货物流单号列、店铺下拉选项来自已同步 yeeke 店铺、无明细包裹占位行)、屏2「退货商品详情抽屉」(当前商品为主 + 所属包裹 + 同包裹其他商品)、屏3 不变。 原型:http://192.168.0.224:8082/#/apps/6ab34c45191a826306a7ff1c ,App ID 6ab34c45191a826306a7ff1c;确认人:用户;确认时间:2026-09-23。
另:用户要求去掉「yeeke 同步记录」页底部说明文字并让页面撑满高度,已在提交 ac5d833 完成(表格填满剩余高度、分页贴底)。
ac5d833
分支:feat/337-yeeke-admin-ui(基于 main 02bddbf),12 个提交,已推送 origin。未合并 main,未部署线上。
02bddbf
18 个文件,+1962/-74 行:server/app/goauto/yeeke/{list,handler,router,sync}.go(+对应测试)、yeekeclient/client.go(+测试)、access/{modules,purchaser}.go、迁移 1789800600000_yeeke_admin_menu.go、web/src/views/goauto/yeeke-returns/index.vue、web/src/views/goauto/yeeke-sync-runs/index.vue、web/src/api/goauto/yeeke-returns.js。
server/app/goauto/yeeke/{list,handler,router,sync}.go
yeekeclient/client.go
access/{modules,purchaser}.go
1789800600000_yeeke_admin_menu.go
web/src/api/goauto/yeeke-returns.js
GET /yeeke-returns/shops
GET /yeeke-returns/items/:itemId
GET /yeeke-returns/:packageId
/shops
/items/:itemId
/:packageId
key
checkKey
_t
/shopee/user/info
X-Access-Token
/sys/userInfo
gofmt -l
go build ./...
go vet ./app/goauto/...
go test -count=1 ./app/goauto/yeeke/... ./app/goauto/yeekeclient/... ./app/goauto/access/...
go test -count=1 ./app/goauto/sybimport/...
config.yaml
GOAUTO_YEEKE_USERNAME
GOAUTO_YEEKE_PASSWORD
"1"=已认领
GoAutoYeekeReturnSync
状态:待验收。待用户确认合并、部署时机与迁移授权。
用户确认:「#337验收通过合并到main」。
main
02bddbf..d0b8609
d0b8609
状态:验收通过,关闭。
Wiki 遗留处理:用户 2026-09-24 决定并入 #338 的 Wiki 同步轮次一起更新,完成后在此补记页面与 revision。
46332f282beb709a4818a762ec8a433b2d87d1fb0363a40cee48ee0c0ecee444
/home/goauto/releases/20260927-d0b8609-336-337
20260922-3bf428a-331-333
current
goauto.service
config/settings.yml
extend.yeeke
/etc/goauto/goauto.env
goauto.env.bak-20260927084727
/api/admin/v1/yeeke-returns
/sync-runs
goauto.env
goauto.env.bak-20260927090200
已按授权合并并发布 #336/#337:
/home/goauto/releases/20260927-d0b8609-336-337-r2
http://185.216.248.75:9527/
/api/v1/health
#/yeeke-returns/index
当前待用户验收。
No dependencies set.
The note is not visible to the blocked user.
来源与原始需求摘要
2026-09-23,用户在本地验证 #336 后反馈:「admin页面没有yeeke的相关菜单」,并要求「要和 syb 商品一样,补全基本功能的模块页面和查询。建工单,做原型,我审核通过才能做工单」。
当前事实(main 02bddbf)
GET /api/admin/v1/yeeke-returns/sync-runs、GET .../sync-runs/:runId、POST .../sync;权限模块yeeke_returns("yeeke 退货同步",路径/yeeke-returns,组件/goauto/yeeke-returns/index,采购员默认可见)。web/无任何改动,sys_menu无菜单行,组件文件不存在 → Admin 无入口,采购员/管理员都看不到。目标
补齐 yeeke 退货包裹的 Admin 只读模块,形态参照现有 SYB 商品页(
web/src/views/goauto/syb-products/index.vue):列表 + 查询条件 + 详情 + 同步运行记录 + 手动同步;管理员与采购员均可见。本单范围
web/src/views/goauto/yeeke-returns/index.vue与路由;列表、查询、分页、详情抽屉、同步运行记录、手动同步按钮;空态、加载态、失败态。sys_menu,关联管理员与采购员角色(参照 #237 客户端密钥菜单迁移);不新增角色。非目标
设计证据(原型)
6ab34c45191a826306a7ff1c,3 屏 64 控件,2026-09-23 创建)验收
风险与文档
新增 Admin 页面、菜单迁移与权限关联,属数据库迁移与权限变更,实施前需人工确认。长期文档:更新架构与代码图、业务规则、以及 Admin 模块清单。
依赖
依赖 #336(已合并 main,未发布线上)。本单的包裹列表/详情接口为新增,不修改 #336 已有接口。
范围调整:拆成两个模块(2026-09-23,用户确认)
对齐现有 SYB 的做法(
syb_products与syb_sync_runs是两个并列模块,各有独立页面),yeeke 也拆为两个模块,不把同步记录塞进退货包裹页:yeeke_returns(#336 已有)/yeeke-returnsweb/src/views/goauto/yeeke-returns/index.vueyeeke_sync_runs(本单新增)/yeeke-sync-runsweb/src/views/goauto/yeeke-sync-runs/index.vue两个模块都挂在「采集采购」菜单组,与 SYB 商品 / SYB 同步记录并列;管理员与采购员均默认可见。
由此产生的改动
server/app/goauto/access/modules.go:新增ModuleYeekeSyncRuns,加入采购员默认模块列表。这是对 #336 已合并代码的补充,在本单内完成,不修改 #336 的提交。sys_menu记录并分别关联管理员与采购员角色。GET /api/admin/v1/yeeke-returns/sync-runs增加触发方式、状态、开始时间范围过滤与分页(#336 已有接口的向后兼容扩展)。原型已同步更新(同一 App,草稿待审核)
http://192.168.0.224:8082/#/apps/6ab34c45191a826306a7ff1c
原型审核通过(2026-09-23)
用户于 2026-09-23 审核并确认通过。
6ab34c45191a826306a7ff1c;工具:QuantUX(MCP)按仓库规则,本单可进入实施:实施范围以工单正文 + 「范围调整:拆成两个模块」评论 + 本确认为准。页面结构、流程、状态或验收变化时须重新确认原型。
用户审核后的页面精简(2026-09-23)
用户在本地验证 #337 后要求:
实现
提交
3bc4784(分支feat/337-yeeke-admin-ui):只改web/src/views/goauto/yeeke-returns/index.vue与yeeke-sync-runs/index.vue,同步清理了不再使用的方法、数据字段和 import。服务端接口不变(被去掉的筛选参数仍兼容,只是页面不再传)。pnpm run build:prod通过。本地 9527 开发服务已热更新。原型同步更新(同一 App)
http://192.168.0.224:8082/#/apps/6ab34c45191a826306a7ff1c
此次为用户直接提出的精简,页面结构随之变化,原型已同步为当前实现,请用户在本地确认后视为该版本已确认。
范围调整:退货列表按商品一行、参考图列、店铺下拉(2026-09-23,用户确认)
背景
本地首次成功同步:1287 个包裹、2131 个商品、0 失败。
用户决定
未采用的方案与原因(数据证据)
用店铺管理(SYB 店铺)做选项时,本地 14 个 yeeke 店铺按现有归一化规则只能对上一部分:完全一致 73 包裹、去空格后一致 384、名字包含 473、对不上 357(约 28%,5 个店铺);且"包含"规则会把 yeeke 的两个 PAPA 店铺归到同一个 SYB 店铺,有误判风险。故暂不采用。后续做退货与 SYB 商品匹配时,再评估在店铺管理中维护 yeeke 店铺对应关系。
实施要点
原型已更新(同一 App,屏1)
http://192.168.0.224:8082/#/apps/6ab34c45191a826306a7ff1c
屏1 改名为「退货商品列表(每商品一行)」:表头与样例行改为按商品展示、参考图列、无明细占位行、店铺下拉、分页显示"共 2131 条商品"。待用户确认后实施。
详情改为「退货商品详情」(2026-09-23,用户选择方案 1)
列表按商品一行后,「详情」不再打开包裹详情,改为以当前商品为主的详情抽屉:
无商品明细的包裹行:顶部显示「该包裹无商品明细」,其余照常。仍为只读,无任何写操作入口。
原型屏2 已改名为「退货商品详情抽屉」并同步更新(同一 App)。待用户确认原型后实施。
原型(第二版)审核通过(2026-09-23)
用户确认通过:屏1「退货商品列表(每商品一行)」(参考图列替代退货物流单号列、店铺下拉选项来自已同步 yeeke 店铺、无明细包裹占位行)、屏2「退货商品详情抽屉」(当前商品为主 + 所属包裹 + 同包裹其他商品)、屏3 不变。
原型:http://192.168.0.224:8082/#/apps/6ab34c45191a826306a7ff1c ,App ID
6ab34c45191a826306a7ff1c;确认人:用户;确认时间:2026-09-23。另:用户要求去掉「yeeke 同步记录」页底部说明文字并让页面撑满高度,已在提交
ac5d833完成(表格填满剩余高度、分页贴底)。实施回写(2026-09-24)
分支:
feat/337-yeeke-admin-ui(基于 main02bddbf),12 个提交,已推送 origin。未合并 main,未部署线上。18 个文件,+1962/-74 行:
server/app/goauto/yeeke/{list,handler,router,sync}.go(+对应测试)、yeekeclient/client.go(+测试)、access/{modules,purchaser}.go、迁移1789800600000_yeeke_admin_menu.go、web/src/views/goauto/yeeke-returns/index.vue、web/src/views/goauto/yeeke-sync-runs/index.vue、web/src/api/goauto/yeeke-returns.js。实现内容
GET /yeeke-returns/shops返回已同步的 yeeke 店铺去重列表;GET /yeeke-returns/items/:itemId返回商品+所属包裹+同包裹其他商品;GET /yeeke-returns/:packageId保留供占位行抽屉使用;同步记录接口补充触发方式/状态/时间过滤与分页。静态路由/shops、/items/:itemId注册在/:packageId之前,附路由不冲突测试。sys_menu,关联 admin 与 purchaser 角色,挂在采集采购组,参照 #237 客户端密钥菜单先例。key非checkKey)、浏览器 UA 与_t参数、登录失败原因分类(仅验证码错误重试,其他原因立即停止)、会话检查改用真实存在的/shopee/user/info接口 +X-Access-Token请求头(原/sys/userInfo不存在,回报 HTTP 500)、列表请求体字段对齐 web 客户端、退货数量字段容错解析字符串/数字/空值、时间按北京时间解析(原按 UTC 解析导致偏差 8 小时)、写入本地库改为一次性写入完整字段 + 事务(原先插入空占位行触发 MySQL 严格模式拒绝零日期,导致全部记录写入失败)。验证
gofmt -l:涉及目录全部干净。go build ./...、go vet ./app/goauto/...:通过。go test -count=1 ./app/goauto/yeeke/... ./app/goauto/yeekeclient/... ./app/goauto/access/...:全部通过。go test -count=1 ./app/goauto/sybimport/...:12 个既有失败,与干净 main 一致(此前多次核对),与本单无关,未修复。pnpm run build:prod:通过,仅既有的 chunk 体积告警。未做 / 遗留
config.yaml配置用于验证;线上改用环境变量GOAUTO_YEEKE_USERNAME/GOAUTO_YEEKE_PASSWORD(与 SYB 一致),尚未配置。"1"=已认领;未知值原样展示并标记,不静默归类。GoAutoYeekeReturnSync)随迁移写入但默认关闭,需管理员手动启用;本单未提供启停入口。状态:待验收。待用户确认合并、部署时机与迁移授权。
验收(2026-09-24)
用户确认:「#337验收通过合并到main」。
feat/337-yeeke-admin-ui快进合并到main(02bddbf..d0b8609),未新增合并提交;验证沿用实施回写中同一提交d0b8609的结果。GOAUTO_YEEKE_USERNAME/GOAUTO_YEEKE_PASSWORD环境变量配置仍需另行授权。状态:验收通过,关闭。
Wiki 遗留处理:用户 2026-09-24 决定并入 #338 的 Wiki 同步轮次一起更新,完成后在此补记页面与 revision。
线上部署(2026-09-27,用户授权:「把admin关于退货的更新代码部署到线上服务器」,范围选「只部署 main (#336/#337)」)
d0b8609(含 #336 yeeke 退货同步、#337 退货 Admin 页面;#334/#335 仅 Android 与测试,服务端无行为变化)。linux/amd64,SHA-25646332f282beb709a4818a762ec8a433b2d87d1fb0363a40cee48ee0c0ecee444;Web dist 由同一提交pnpm run build:prod构建。/home/goauto/releases/20260927-d0b8609-336-337(config 复制自20260922-3bf428a-331-333,static/var 链接不变),current原子切换,goauto.service重启后 active;健康检查、首页 200;日志无 panic/fatal/1146/1054。切换前采购/采集运行中任务为 0。config/settings.yml补extend.yeeke段(baseurl/pagesize/maxpages/retry/ocrurl/ocrmaxattempts,与仓库一致)。/etc/goauto/goauto.env(GOAUTO_YEEKE_USERNAME/GOAUTO_YEEKE_PASSWORD);经 SSH 标准输入传递,未出现在命令行、输出、日志或本工单;写前备份为goauto.env.bak-20260927084727,权限保持 600 root:goauto。/api/admin/v1/yeeke-returns、/shops、/sync-runs已挂载(未登录返回 401 JSON)。current切回20260922-3bf428a-331-333并重启;新增表与菜单不影响旧版本。部署修正:yeeke 用户名编码错误(2026-09-27)
goauto.env时,本地 Windows Python 以控制台默认编码(GBK)向 SSH 管道输出,中文用户名被写成 GBK 字节(4 字节)而非 UTF-8(6 字节);密码为 ASCII 未受影响。当时只核对了字符长度,未核对字节。服务启动日志确认凭据来源为环境变量,排除了其他配置覆盖。GOAUTO_YEEKE_USERNAME一行(备份goauto.env.bak-20260927090200,权限不变);重启前采购/采集/yeeke 同步运行中均为 0;重启后 active、健康检查 200;运行中进程的两个变量与本地逐字节 SHA-256 比对均一致(用户名 6 字节、密码 9 字节)。已按授权合并并发布 #336/#337:
d0b8609;/home/goauto/releases/20260927-d0b8609-336-337-r2;goauto.service重启后为 active;http://185.216.248.75:9527/、/api/v1/health和#/yeeke-returns/index均 HTTP 200;当前待用户验收。