diff --git a/admin/README-dev.md b/admin/README-dev.md new file mode 100644 index 0000000..1a77a49 --- /dev/null +++ b/admin/README-dev.md @@ -0,0 +1,8 @@ +# admin 开发约定(Task 18-21 执行者必读) + +基于 art-design-pro 模板的请求层适配约定,写业务前先读完本文件。 + +1. **request 是 config-object 签名**:`request.get({ url, params })`,不是 axios 原生 `(url, config)`。 +2. **URL 不带 `/api` 前缀**:`VITE_API_URL=/api` 已作为 baseURL,写 `/admin/auth/me` 即请求 `/api/admin/auth/me`;带 `/api` 会变成 `/api/api/...`。 +3. **Bearer 不用业务层拼**:token 映射层已存 `Bearer `,拦截器原样设置 Authorization;业务代码只管调 `request.*`。 +4. **v-html 红线**:业务代码(`src/views/tracker/**`、`src/api/**`)禁用 v-html;也不得向模板内置 v-html 组件(ArtTextScroll / ThemeSvg / v-highlight)传访客来源数据(UTM、referrer、UA 等用户可控字段)。 diff --git a/admin/package.json b/admin/package.json index 7b66362..b8616ee 100644 --- a/admin/package.json +++ b/admin/package.json @@ -15,7 +15,6 @@ "lint:prettier": "prettier --write \"**/*.{js,cjs,ts,json,tsx,css,less,scss,vue,html,md}\"", "lint:stylelint": "stylelint \"**/*.{css,scss,vue}\" --fix", "lint:lint-staged": "lint-staged", - "prepare": "husky", "commit": "git-cz", "clean:dev": "tsx scripts/clean-dev.ts" }, diff --git a/admin/src/api/auth.ts b/admin/src/api/auth.ts index 27d3bbc..84e40a6 100644 --- a/admin/src/api/auth.ts +++ b/admin/src/api/auth.ts @@ -26,7 +26,8 @@ export async function fetchLogin(params: Api.Auth.LoginParams) { * * 后端仅返回 {username, is_admin},映射为模板 UserInfo 结构: * - userName ← username;email/avatar 留空(模板有静态兜底头像) - * - roles ← is_admin ? ['R_ADMIN'] : [](菜单按 meta.roles 过滤,M1 无角色路由) + * - roles ← is_admin ? ['R_ADMIN'] : ['R_USER'](空数组会跳过菜单角色过滤, + * 非 staff 用户将看到全部菜单入口,故兜底 R_USER) * - buttons ← [](按钮级权限占位);userId ← 0(仅用于多用户工作台清理判断) */ export async function fetchGetUserInfo(): Promise { @@ -35,7 +36,7 @@ export async function fetchGetUserInfo(): Promise { }) return { buttons: [], - roles: data.is_admin ? ['R_ADMIN'] : [], + roles: data.is_admin ? ['R_ADMIN'] : ['R_USER'], userId: 0, userName: data.username, email: '' diff --git a/admin/src/api/system-manage.ts b/admin/src/api/system-manage.ts index c42cc8a..c5e6ed9 100644 --- a/admin/src/api/system-manage.ts +++ b/admin/src/api/system-manage.ts @@ -18,6 +18,7 @@ export function fetchGetRoleList(params: Api.SystemManage.RoleSearchParams) { } // 获取菜单列表 +// 注意:后端无此端点,frontend 模式下死代码;切 backend 模式前需先实现 export function fetchGetMenuList() { return request.get({ url: '/v3/system/menus/simple' diff --git a/admin/src/router/routesAlias.ts b/admin/src/router/routesAlias.ts index 2af1c68..73ac631 100644 --- a/admin/src/router/routesAlias.ts +++ b/admin/src/router/routesAlias.ts @@ -1,6 +1,6 @@ /** * 公共路由别名 - # 存放系统级公共路由路径,如布局容器、登录页等 + * 存放系统级公共路由路径,如布局容器、登录页等 */ export enum RoutesAlias { Layout = '/index/index', // 布局容器