Skip to content

feat: M2 收尾 — 适配器补全 / 修复死路由 / 账号池 OAuth PKCE 核心#1

Merged
ijry merged 5 commits into
mainfrom
fix/m2-wiring-and-adapters
Jun 7, 2026
Merged

feat: M2 收尾 — 适配器补全 / 修复死路由 / 账号池 OAuth PKCE 核心#1
ijry merged 5 commits into
mainfrom
fix/m2-wiring-and-adapters

Conversation

@ijry

@ijry ijry commented Jun 7, 2026

Copy link
Copy Markdown
Owner

变更

  • docs:README/CHANGELOG 对齐真实进度(M0/M1 完成、M2 大部分就绪),原文档仍标"M0 仅骨架"与实物严重不符
  • feat(adapter):新增 Cohere、讯飞星火 两个 OpenAI 兼容适配器(16 → 18 家)
  • fix(account):repo 列表查询的 hydrate 失败不再静默 —— 按同包 breaker/refresher 同款 nil-safe 注入 logger 记 warn
  • fix(server):挂载此前从未注册的 admin /settings/notices 路由(WireAdminSetting/WireAdminNotice 从未被调用 —— handler 已实现且有测试,却是死路由)
  • feat(account):账号池 OAuth2 授权码 + PKCE 拉号核心流程(Flow.Start/Callback 实装、PKCE S256、一次性 state Redis/内存双实现、provider AuthCodeURL/ExchangeCode、config 增 auth_url/redirect_uri/scopes)

动机

M2 收尾遗留项清理。其中 settings/notices 死路由是排查 // TODO 时挖出的真 bug。

测试方式

  • go build ./... ✓ · go test ./... ✓(50 包全绿)
  • oauth 新增单测:PKCE 往返 / 未知 state / 授权 URL 参数 / 授权码换凭证
  • ⚠️ settings/notices 为新挂载路由,gin 注册需起服务冒烟(本 PR 未做端到端冒烟)

尚未完成 / 后续

  • ③b:OAuth 拉号 admin HTTP 端点(start/callback 入库)+ 路由 + 真实 IdP 冒烟
  • ③ 生效需运营填 oauth_*_auth_url/redirect_uri/client_id/scopes(账号池授权端点为非标准值)

Breaking change

  • 仅内部:internal/account/oauth.Provider 接口(Start/Callback → AuthCodeURL/ExchangeCode)、NewFlow 增 StateStore 参数。不影响对外 API。

jry added 5 commits June 7, 2026 23:30
- Flow.Start/Callback 实装(此前为 ErrNotImplemented 占位)
- 新增 PKCE(verifier/S256 challenge)与一次性 state 存储(Redis/内存两实现)
- provider 改为 AuthCodeURL + ExchangeCode + ExchangeRefreshToken
- config 增加 auth_url/redirect_uri/scopes;wire 注入 Redis state store
- 配套单测:PKCE 往返、未知 state、授权 URL 参数、授权码换凭证

尚未接线:admin HTTP 触发端点(start/callback 路由)与真实 IdP 冒烟。
@ijry ijry merged commit 43d4045 into main Jun 7, 2026
3 of 6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant