Skip to content

fix(service): user service 接口方法抛 NotImplementedError,调用即崩 #204

Description

@xiaocheny214

问题描述

文件: 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。

问题

  1. 运行时崩溃: 任何误用非 _with_session 版本的调用都会在生产环境抛出 500。
  2. 接口契约失效: 基类定义了方法签名,子类却不实现,违反 Liskov 替换原则。
  3. IDE/类型检查无法发现: 静态分析工具不会标记 raise NotImplementedError 为错误。

建议修复

  1. 方案 A(推荐): 移除这些 stub 方法,将 _with_session 版本重命名为正式接口名。调用者改为传入 session
  2. 方案 B: 使用 abc.abstractmethod 强制子类实现,或用 Protocol 定义带 session 参数的接口。
  3. 方案 C: 如果这些方法确实不该被调用,删除基类中的定义。

影响

  • 严重程度: Medium
  • 代码可维护性差,误用即崩溃

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2优先级 P2(押后)bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions