fix: 修复接口错误 - _loads未定义+重新注册ecosystem路由

1. repositories.py: 添加 _loads 函数定义(之前从 hall_repositories 隐式依赖导致 NameError)
   - 修复 /cert/types 返回 500 错误
2. main.py: 重新注册 rbac_ecosystem 路由(通知/信用/任务/合同/争议等基础功能)
   - 修复 /me/credit 返回 404 错误
3. rbac_ecosystem.py: 将已移除的 service 角色统一替换为 opc_member
   - _ANY 元组移除 service
   - 所有 require_roles 中的 service 替换为 opc_member
This commit is contained in:
Pine
2026-09-03 11:05:37 +08:00
parent cb1492f2d6
commit ab52d4013d
3 changed files with 152 additions and 38 deletions
+8 -8
View File
@@ -13,7 +13,7 @@ from ...infrastructure.repositories import Database
router = APIRouter(tags=["ecosystem"])
_ANY = ("opc_member", "carrier", "service", "operator")
_ANY = ("opc_member", "carrier", "operator")
# ── 通知中心 ──────────────────────────────────────────────────────────────
@@ -51,7 +51,7 @@ async def rate_task(
req: RatingRequest,
request: Request,
db: Database = Depends(get_db),
actor: dict = Depends(require_roles("service", "opc_member")),
actor: dict = Depends(require_roles("opc_member")),
):
if not req.to_id:
raise HTTPException(status_code=400, detail="缺少被评对象")
@@ -66,7 +66,7 @@ async def rate_task(
async def get_contract(
task_id: str,
db: Database = Depends(get_db),
_u: dict = Depends(require_roles("service", "opc_member")),
_u: dict = Depends(require_roles("opc_member")),
):
contract = await db.contracts.get_for_task(task_id)
if contract is None:
@@ -80,7 +80,7 @@ async def sign_contract(
req: SignRequest,
request: Request,
db: Database = Depends(get_db),
actor: dict = Depends(require_roles("service", "opc_member")),
actor: dict = Depends(require_roles("opc_member")),
):
from ...services.settlement_service import SettlementService
@@ -96,7 +96,7 @@ async def release_escrow(
task_id: str,
request: Request,
db: Database = Depends(get_db),
actor: dict = Depends(require_roles("service")),
actor: dict = Depends(require_roles("opc_member")),
):
from ...services.settlement_service import SettlementService
@@ -122,7 +122,7 @@ async def create_dispute(
req: DisputeRequest,
request: Request,
db: Database = Depends(get_db),
actor: dict = Depends(require_roles("service", "opc_member")),
actor: dict = Depends(require_roles("opc_member")),
):
from ...services.settlement_service import SettlementService
@@ -151,7 +151,7 @@ async def resolve_dispute(
@router.get("/investor/matches", summary="投资撮合(按偏好推荐)")
async def investor_matches(
db: Database = Depends(get_db),
user: dict = Depends(require_roles("service")),
user: dict = Depends(require_roles("opc_member")),
):
from ...services.settlement_service import SettlementService
@@ -164,7 +164,7 @@ async def join_roadshow(
roadshow_id: str,
request: Request,
db: Database = Depends(get_db),
actor: dict = Depends(require_roles("service", "operator", "carrier")),
actor: dict = Depends(require_roles("opc_member", "operator", "carrier")),
):
rs = await db.roadshows.get(roadshow_id)
if rs is None: