3973abea8b
- 自建轻量 axios client(src/api/client.ts):Bearer 注入、401 清会话跳登录
(login 请求除外)、409 精确匹配"必须先修改初始密码"跳强制改密(区别于并发
冲突 409)、429/网络错误统一 ElMessage、ApiError 标准化、showErrorMessage
可opt-out——模板 utils/http 的 {code,msg,data} 信封与后端裸 HTTP 语义不符故弃用
- Pinia auth store(src/store/modules/auth.ts):token/role/tenant_slug/
must_change 落地并持久化(all-kefu-auth key),login/logout/changePassword/
会话过期/强制改密跳转(动态 import 断循环)
- 路由守卫:token 事实源判定、must_change 全站门(除改密页)、UserInfo 由登录
快照派生(后端无用户信息端点);user store 残留自愈
- 登录页实装(去除角色调试开关)、强制改密页实装;用户菜单/锁屏对接真实 logout
- 域 API 骨架:tenants/config/conversations/stats/settings(类型+端点常量)
- mask 哨兵助手:__SET__ ↔ 已设置 表单语义
- vitest 25 例(client 11/store 8/mask 6);登录页拖拽验证 reset 空引用修复
Co-Authored-By: Claude Code <noreply@anthropic.com>
35 lines
1.1 KiB
TypeScript
35 lines
1.1 KiB
TypeScript
/**
|
||
* 平台设置 API 骨架(Phase 3 Task 3)
|
||
*
|
||
* 端点事实源:app/platform/routes/config_routes.py 的 settings_router
|
||
* (/api/platform/settings,仅超管:集团 AI 凭据 / 默认 SMTP 等)。
|
||
* 本文件只建类型与端点常量——调用函数在 Task 9(平台设置)实装。
|
||
*
|
||
* 密钥掩码:key 名含 key/password/secret 的非空字符串值在列表响应中
|
||
* 掩码为 '__SET__'(嵌套 dict 递归两层);PUT 提交 '__SET__' = 保持库值。
|
||
* 表单语义转换见 src/api/mask.ts。
|
||
*/
|
||
|
||
/** 平台设置项(列表响应行;value 可能是掩码哨兵或任意 JSON) */
|
||
export interface PlatformSettingItem {
|
||
key: string
|
||
value: unknown
|
||
}
|
||
|
||
/** 平台设置列表响应 */
|
||
export interface PlatformSettingsResponse {
|
||
items: PlatformSettingItem[]
|
||
}
|
||
|
||
/** upsert 单个设置项请求(同 key 再写 = 整值替换) */
|
||
export interface PutPlatformSettingRequest {
|
||
key: string
|
||
value: unknown
|
||
}
|
||
|
||
/** 平台设置端点 */
|
||
export const SETTINGS_ENDPOINTS = {
|
||
list: '/api/platform/settings',
|
||
put: '/api/platform/settings'
|
||
} as const
|