feat(admin): 新增档案回流接口 POST /api/public/backflow #35

Merged
lixu merged 2 commits from devin/1782350840-backflow-api into main 2026-06-25 09:52:44 +08:00
Owner

Summary

进销存软件需要把"档案里还没收录的商品"回流到站点,经人工审核后收录。本 PR 新增 POST /api/public/backflow,复用现有 submission 审核队列 + ApproveSubmission 收录逻辑,不改数据库 schema、不影响公众投稿与 bypos 导入。

鉴权复用现有公开 API Key(og_live_ 前缀,X-API-KeyAuthorization: Bearer),按 GTIN 去重,批量入队。

接口

POST /api/public/backflow
Header: X-API-Key: og_live_xxx   (或 Authorization: Bearer og_live_xxx)
Body:   [ SubmissionInput, ... ]   // 与公众投稿同结构的数组,<=1000 条

逐条处理(互不影响,坏数据不回滚已入队项),返回汇总 counts + results。每条状态:

  • queued — 入队成功,进入现有后台审核队列(pending)
  • exists — 该 GTIN 已是已收录商品,跳过(回流只携带未收录商品)
  • duplicate — 已有同 GTIN 的 pending 提交,跳过(避免自动回流反复刷队列)
  • invalid — 名称为空等

实现

  • adminstore/backflow.go(新增)APIKeyByHash 复用公开 API Key 认证机器调用方;CreateBackflowSubmissions 逐条按 GTIN 查 product(exists) -> 查 pending submission(duplicate) -> 否则标记 source="backflow" 写入 submission。
  • adminstore/submission.goSubmissionInput/SubmissionRow 增加 Source 字段;ListSubmissionsNULLIF(payload->>'source',''),后台队列可区分回流/公众投稿(无 schema 变更)。
  • adminhandler/handler.go:注册路由 + Backflow handler(API Key 校验 -> 解析数组 -> 调 store -> 返回汇总)。

审核通过路径不变:管理员在后台审核队列 approve,ApproveSubmission 照常新建/补全商品。

## Summary 进销存软件需要把"档案里还没收录的商品"回流到站点,经人工审核后收录。本 PR 新增 `POST /api/public/backflow`,复用现有 `submission` 审核队列 + `ApproveSubmission` 收录逻辑,**不改数据库 schema**、不影响公众投稿与 bypos 导入。 鉴权复用现有公开 API Key(`og_live_` 前缀,`X-API-Key` 或 `Authorization: Bearer`),按 GTIN 去重,批量入队。 ## 接口 ``` POST /api/public/backflow Header: X-API-Key: og_live_xxx (或 Authorization: Bearer og_live_xxx) Body: [ SubmissionInput, ... ] // 与公众投稿同结构的数组,<=1000 条 ``` 逐条处理(互不影响,坏数据不回滚已入队项),返回汇总 counts + results。每条状态: - `queued` — 入队成功,进入现有后台审核队列(pending) - `exists` — 该 GTIN 已是已收录商品,跳过(回流只携带未收录商品) - `duplicate` — 已有同 GTIN 的 pending 提交,跳过(避免自动回流反复刷队列) - `invalid` — 名称为空等 ## 实现 - **adminstore/backflow.go(新增)**:`APIKeyByHash` 复用公开 API Key 认证机器调用方;`CreateBackflowSubmissions` 逐条按 GTIN 查 product(exists) -> 查 pending submission(duplicate) -> 否则标记 source="backflow" 写入 submission。 - **adminstore/submission.go**:`SubmissionInput`/`SubmissionRow` 增加 `Source` 字段;`ListSubmissions` 取 `NULLIF(payload->>'source','')`,后台队列可区分回流/公众投稿(无 schema 变更)。 - **adminhandler/handler.go**:注册路由 + `Backflow` handler(API Key 校验 -> 解析数组 -> 调 store -> 返回汇总)。 审核通过路径不变:管理员在后台审核队列 approve,`ApproveSubmission` 照常新建/补全商品。
lixu added 1 commit 2026-06-25 09:28:19 +08:00
feat(admin): 新增档案回流接口 POST /api/public/backflow
CI / Go (api) (pull_request) Successful in 55s
CI / Python (ingestion) (pull_request) Successful in 16s
CI / Migrations (postgres) (pull_request) Successful in 25s
e7e5ce22ab
进销存软件可用公开 API Key(og_live_) 批量回流未收录商品,进入现有审核
队列,审核通过后收录。按 GTIN 去重(已收录跳过 exists,已有待审跳过
duplicate),来源标记 source=backflow,在后台队列与公众投稿区分。

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
lixu added 1 commit 2026-06-25 09:41:43 +08:00
docs: 补充档案回流接口调用说明(docs/api.md + 前台 API 文档页)
CI / Go (api) (pull_request) Successful in 1m2s
CI / Python (ingestion) (pull_request) Successful in 27s
CI / Migrations (postgres) (pull_request) Successful in 24s
a61d1c558c
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
lixu merged commit 3a5575f51b into main 2026-06-25 09:52:44 +08:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: lixu/goods#35