ForcePilot/backend/test/unit
JunghwanNA c0f17b1fe8 fix: 避免 OIDC 已绑定账号在带冒号的 subject 下被误判为冲突账号
OIDC 原始用户名绑定使用 `oidc:{sub}:{target_user_id}` 记录占位关系,
但读取时按固定下标拆分字符串,导致 `sub` 自身包含冒号时无法回到
真实用户,回调流程会把已绑定用户误判成冲突账号。

本次改动保持现有占位格式不变,只把目标用户 ID 的解析改为从右侧
拆分,并补充覆盖 `sub` 包含冒号的单元测试;同时在 roadmap 中记录
这个回归修复,方便和 OIDC 功能演进保持同一条线索。

Constraint: 保持 OIDC 现有占位 user_id 设计,不引入新表或大范围重构
Rejected: 新增专用绑定表 | 变更范围过大,不符合当前最小修复目标
Rejected: 继续按固定位置 split | 无法兼容 subject 中合法出现的冒号
Confidence: high
Scope-risk: narrow
Reversibility: clean
Directive: 后续若继续沿用字符串占位格式,解析必须始终从尾部提取 target_user_id
Tested: OPENAI_API_KEY=dummy YUXI_SKIP_APP_INIT=1 uv run --group test pytest test/unit/services/test_oidc_service.py
Tested: OPENAI_API_KEY=dummy YUXI_SKIP_APP_INIT=1 uv run --group test ruff check package/yuxi/services/oidc_service.py test/unit/services/test_oidc_service.py
Not-tested: Docker compose 环境下的端到端 OIDC 登录流程
2026-04-17 01:40:32 +09:00
..
backends feat(agent): 统一知识库检索结果文件路径注入 2026-04-05 23:52:10 +08:00
graphs feat(test): 重组测试目录结构为 integration/unit/e2e 三层架构 2026-03-30 15:24:47 +08:00
middlewares fix(summary): 修复对话摘要中间件的工具结果卸载链路,修正路径拼接错误并补充单元测试 2026-04-12 23:38:13 +08:00
plugins fix(parser): 修复 DOCX 图片回插顺序 2026-04-08 15:21:20 +08:00
routers feat(skill): 添加远程技能安装服务及相关功能更新 2026-04-02 16:09:02 +08:00
services fix: 避免 OIDC 已绑定账号在带冒号的 subject 下被误判为冲突账号 2026-04-17 01:40:32 +09:00
storage feat(test): 重组测试目录结构为 integration/unit/e2e 三层架构 2026-03-30 15:24:47 +08:00
toolkits fix: 更新知识库检索工具,支持 Dify 和 LightRAG 类型,优化结果处理逻辑 Fix Error: query_kb不支持查询dify知识库了? 2026-04-09 23:05:22 +08:00
test_auth_utils.py feat: 增加 Argon2 密码哈希支持,优化文件系统安全性,修复 frontmatter 解析 2026-04-02 16:03:01 +08:00
test_package_import.py fix: 修复包管理的导入问题 #603 2026-04-03 13:09:12 +08:00