feat: art-design-pro 脚手架落地与品牌化(八页骨架/代理配置/权限菜单)

- 模板 art-design-pro(MIT)GitHub 直连克隆后裁剪落地 admin/:删除演示页面/示例数据/mock/未用组件,保留构建与依赖清单
- 品牌化:应用名/标题/侧栏与登录页 logo/浏览器 favicon 全部替换为 all-kefu 自有资源(static/kefu-small.png),中文界面
- 八页骨架:login / force-change-password / dashboard / tenants / conversations / config / stats / settings 占位页 + 6 组路由模块
- 权限菜单:meta.roles 前端过滤,super 全量,tenant 隐藏 租户管理/平台设置(角色值与后端一致)
- 开发代理:/api 直转 + /api/public 与 /static 携带租户 Host 改写(VITE_TENANT_PREVIEW_HOST),适配后端 TenantHostMiddleware
- 认证 API 为开发桩(角色调试开关),Task 3 对接真实登录

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
浅念
2026-10-13 14:51:24 +08:00
parent 0c25287c19
commit 78ff060420
290 changed files with 38981 additions and 0 deletions
+60
View File
@@ -0,0 +1,60 @@
/**
* 认证 API——脚手架阶段(Phase 3 Task 2)的开发桩。
*
* 后端真实端点为 /api/platform/auth/*(登录 / 用户信息 / 改密),
* Task 3 对接真实登录时将本文件替换为真实请求。
*
* 桩行为:
* - fetchLogin:开发态直接发放本地会话令牌,不发起网络请求;
* - fetchGetUserInfo:按登录页的角色调试开关(sessionStorage
* `all-kefu-dev-role`:super | tenant)返回用户信息,用于演示
* 纯前端菜单权限控制——super 全量菜单,tenant 隐藏
* 租户管理 / 平台设置(见 router/modules/*.ts 的 meta.roles);
* - 生产构建(非 DEV)下调用将抛出显式错误,避免带桩上线。
*/
const DEV_ROLE_KEY = 'all-kefu-dev-role'
export type DevStubRole = 'super' | 'tenant'
export function setDevStubRole(role: DevStubRole) {
sessionStorage.setItem(DEV_ROLE_KEY, role)
}
export function getDevStubRole(): DevStubRole {
return sessionStorage.getItem(DEV_ROLE_KEY) === 'tenant' ? 'tenant' : 'super'
}
function assertStubAllowed(): void {
if (!import.meta.env.DEV) {
throw new Error('认证 API 尚未对接真实后端(Task 3 实现),生产构建不可用')
}
}
/**
* 登录(开发桩:任意账号密码直接获得开发会话)
* @param params 登录参数
* @returns 登录响应
*/
export function fetchLogin(params: Api.Auth.LoginParams) {
assertStubAllowed()
void params
return Promise.resolve<Api.Auth.LoginResponse>({
token: 'dev-stub-token',
refreshToken: ''
})
}
/**
* 获取用户信息(开发桩:角色取自登录页调试开关)
* @returns 用户信息
*/
export function fetchGetUserInfo() {
assertStubAllowed()
const role = getDevStubRole()
return Promise.resolve<Api.Auth.UserInfo>({
buttons: [],
roles: [role],
userId: 1,
userName: role === 'super' ? '平台超管(调试)' : '租户管理员(调试)',
email: 'dev@all-kefu.local'
})
}