# Implementation Plan: Global Auth + Tenant Route Prefix **Branch**: `main` | **Date**: 2026-01-26 | **Spec**: N/A **Input**: 改为全局登录;租户资源访问再鉴权;后端路由从 `/t/:tenantCode/v1` 改为 `/v1/t/:tenantCode`,同步前端路由。 **Note**: 本计划遵循 `docs/templates/plan-template.md`。 ## Summary 实施全局登录(不要求 tenantCode),并将多租户路由前缀统一为 `/v1/t/:tenantCode`。同步更新后端路由与前端路由/请求封装,确保登录与资源鉴权一致。 ## Technical Context **Language/Version**: Go 1.22 + Vue 3 (Vite) **Primary Dependencies**: Fiber, GORM-Gen, Vue Router **Storage**: PostgreSQL **Testing**: go test / 前端 build+l int(如需) **Target Platform**: local/staging **Project Type**: Web application **Performance Goals**: N/A **Constraints**: 不改生成文件,需通过 `atomctl` 重新生成路由/Swagger **Scale/Scope**: auth + 路由前缀调整 ## Constitution Check - 遵循 `backend/llm.txt`(控制器薄、服务层处理、生成文件不手改) - 变更后需跑 `atomctl gen route/provider/swag` ## Project Structure ### Backend ```text backend/app/http/v1/ backend/app/services/ backend/app/http/**/routes.*.go ``` ### Frontend ```text frontend/portal/src/router/index.js frontend/portal/src/utils/request.js frontend/portal/src/api/* frontend/superadmin/src/router/index.js ``` ### Docs ```text docs/plan.md ``` ## Plan Phases ### Phase 1: Backend route + auth changes - 调整 `/t/:tenantCode/v1` 为 `/v1/t/:tenantCode` - 登录逻辑改为全局登录(租户鉴权移到资源访问) ### Phase 2: Frontend route + request changes - 更新 portal 路由基座与 request baseUrl - 更新所有前端 API 路径对应新前缀 ### Phase 3: Regenerate + sanity check - 生成 routes/providers/swagger - 关键页面手动/自动冒烟校验 ## Tasks **Format**: `[ID] [P?] [Story] Description` ### Phase 1 - [ ] T001 [US0] 修改后端路由前缀与路由注册 - [ ] T002 [US0] 调整登录逻辑为全局登录 ### Phase 2 - [ ] T010 [US1] 修改 portal 路由与 request baseUrl - [ ] T011 [US1] 更新 portal API 路径 ### Phase 3 - [ ] T020 [US2] 重新生成路由与 swagger - [x] T021 [US2] 冒烟验证核心路径 ## Dependencies - Phase 1 → Phase 2 → Phase 3 ## Acceptance Criteria - 登录不依赖 tenantCode。 - 租户路由统一为 `/v1/t/:tenantCode`。 - Portal 页面正常加载并可登录。 ## Risks - 大量前端 API 路径需要同步改动。 - 老路径可能被外部依赖使用。 ## Complexity Tracking 无。