from fastapi import APIRouter, Depends

from app.core.dependency import DependAuth, DependPermission
from app.utils.app_user_jwt import get_current_app_user

from .apis import apis_router
from .app_users import app_users_router
from .app_valuations import app_valuations_router
from .auditlog import auditlog_router
from .base import base_router
from .depts import depts_router
from .esg.esg import router as esg_router
from .index.index import router as index_router
from .industry.industry import router as industry_router
from .menus import menus_router
from .policy.policy import router as policy_router
from .roles import roles_router
from .third_party_api import third_party_api_router
from .upload import router as upload_router
from .users import users_router
from .valuations import router as valuations_router

v1_router = APIRouter()

v1_router.include_router(base_router, prefix="/base")
v1_router.include_router(app_users_router, prefix="/app-user")  # AppUser路由，无需权限依赖
# 注意：app-valuations 路由在各自的端点内部使用 get_current_app_user 进行认证
# 这样可以保持App用户认证系统的独立性，不与后台管理权限系统混合
v1_router.include_router(app_valuations_router, prefix="/app-valuations")  # 用户端估值评估路由
v1_router.include_router(users_router, prefix="/user", dependencies=[DependAuth, DependPermission])
v1_router.include_router(roles_router, prefix="/role", dependencies=[DependAuth, DependPermission])
v1_router.include_router(menus_router, prefix="/menu", dependencies=[DependAuth, DependPermission])
v1_router.include_router(apis_router, prefix="/api", dependencies=[DependAuth, DependPermission])
v1_router.include_router(depts_router, prefix="/dept", dependencies=[DependAuth, DependPermission])
v1_router.include_router(auditlog_router, prefix="/auditlog", dependencies=[DependAuth, DependPermission])
v1_router.include_router(esg_router, prefix="/esg")
v1_router.include_router(index_router, prefix="/index")
v1_router.include_router(industry_router, prefix="/industry")
v1_router.include_router(policy_router, prefix="/policy")
v1_router.include_router(upload_router, prefix="/upload")  # 文件上传路由
v1_router.include_router(
    third_party_api_router,
    prefix="/third_party_api",
    dependencies=[DependAuth, DependPermission],
)
v1_router.include_router(valuations_router, prefix="/valuations", dependencies=[DependAuth, DependPermission])
