问题描述
文件: backend/packages/app/src/windup_app/server/user/service.py
以下公开方法全部 raise NotImplementedError:
register_by_email (line 171)
login_by_password (line 234)
login_by_code (line 307)
change_password (line 413)
get_by_id (line 474)
get_by_email (line 476)
实际实现是对应的 _with_session 变体。调用者必须知道要用哪个版本,否则运行时直接 500。
问题
- 运行时崩溃: 任何误用非
_with_session 版本的调用都会在生产环境抛出 500。
- 接口契约失效: 基类定义了方法签名,子类却不实现,违反 Liskov 替换原则。
- IDE/类型检查无法发现: 静态分析工具不会标记
raise NotImplementedError 为错误。
建议修复
- 方案 A(推荐): 移除这些 stub 方法,将
_with_session 版本重命名为正式接口名。调用者改为传入 session。
- 方案 B: 使用
abc.abstractmethod 强制子类实现,或用 Protocol 定义带 session 参数的接口。
- 方案 C: 如果这些方法确实不该被调用,删除基类中的定义。
影响
- 严重程度: Medium
- 代码可维护性差,误用即崩溃
问题描述
文件:
backend/packages/app/src/windup_app/server/user/service.py以下公开方法全部
raise NotImplementedError:register_by_email(line 171)login_by_password(line 234)login_by_code(line 307)change_password(line 413)get_by_id(line 474)get_by_email(line 476)实际实现是对应的
_with_session变体。调用者必须知道要用哪个版本,否则运行时直接 500。问题
_with_session版本的调用都会在生产环境抛出 500。raise NotImplementedError为错误。建议修复
_with_session版本重命名为正式接口名。调用者改为传入session。abc.abstractmethod强制子类实现,或用 Protocol 定义带 session 参数的接口。影响