Skip to content

fix(backend): fix CI failures in KB permission resolver PR#23

Merged
cocowh merged 1 commit intoweagent/kb-permission-extensionfrom
weagent/fix-kb-permission-ci-checks
Apr 23, 2026
Merged

fix(backend): fix CI failures in KB permission resolver PR#23
cocowh merged 1 commit intoweagent/kb-permission-extensionfrom
weagent/fix-kb-permission-ci-checks

Conversation

@cocowh
Copy link
Copy Markdown
Owner

@cocowh cocowh commented Apr 23, 2026

修改内容

问题分析

PR wecode-ai#1025 存在以下 CI 失败:

1. Lint Backend (Black)

knowledge_service.py 中函数调用尾随逗号格式不合规,需要 Black 重排为多行风格。

2. Test Backend (3.10 & 3.12) — 根本原因:mock 路径解析歧义

测试使用字符串路径 patch("app.services.share.knowledge_share_service.is_organization_namespace"),Python 的 unittest.mock.patch 在解析该路径时:

  1. 导入 app.services.share
  2. 对该包做 getattr(app.services.share, "knowledge_share_service")
  3. 由于 app/services/share/__init__.py 通过 from ... import knowledge_share_service同名实例 导出到包命名空间,属性查找返回的是 KnowledgeShareService() 实例,而非模块
  4. 在实例上查找 is_organization_namespaceAttributeError

3. 命名规范

kbPermissionResolver 使用 camelCase,违反 PEP 8 snake_case 规范。


修复内容

文件 修改
knowledge_service.py Black 格式化(trailing comma 换行)
kb_permissions.py 重命名 kbPermissionResolverkb_permission_resolver
readers/__init__.py 同步更新导出名称和文档注释
knowledge_service.py 同步更新导入和使用
knowledge_share_service.py 同步更新导入和使用
test_kb_permission_resolver.py 使用 importlib.import_module() 获取真实模块对象替代 import ... as 的属性遍历方式;改用 patch.object(_kss_module, ...)

关键修复逻辑

# Before (resolves to KnowledgeShareService instance — broken)
import app.services.share.knowledge_share_service as _kss_module

# After (resolves to the actual module via sys.modules lookup)
_kss_module = importlib.import_module("app.services.share.knowledge_share_service")

Test Plan

  • uv run pytest tests/services/readers/test_kb_permission_resolver.py — 10 passed
  • uv run black --check app/ — all 553 files unchanged
  • uv run isort --check app/ — pass

- Apply Black formatting to knowledge_service.py (trailing comma style)
- Rename kbPermissionResolver to kb_permission_resolver (PEP 8 snake_case)
- Fix test mock paths: use importlib.import_module() to obtain the real
  module object instead of the same-named instance exported by
  app.services.share.__init__.py, which caused AttributeError when
  patch() tried to resolve is_organization_namespace and is_restricted_analyst
- Update all consumers of kb_permission_resolver (readers/__init__.py,
  knowledge_service.py, knowledge_share_service.py)
@cocowh cocowh merged commit 7cdfc82 into weagent/kb-permission-extension Apr 23, 2026
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