smart-admin-web 10.24.0 → 10.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -117,6 +117,12 @@ export interface UserItem {
117
117
  totpEnabled?: boolean;
118
118
  createTime: string;
119
119
  }
120
+ /** 用户选择器选项(后端 UserOption;只有 id / 姓名 / 账号,不含手机、邮箱、头像)。 */
121
+ export interface UserOption {
122
+ id: number;
123
+ name: string;
124
+ account: string;
125
+ }
120
126
  /** 模块/应用管理行(后端 SysModule;列表全字段)。 */
121
127
  export interface ModuleRow {
122
128
  id: number;
@@ -423,6 +429,12 @@ export interface SysOrg {
423
429
  enabled: boolean;
424
430
  createTime?: string;
425
431
  }
432
+ /** 机构选择器选项(后端 OrgOption;平铺,前端 buildTree)。 */
433
+ export interface OrgOption {
434
+ id: number;
435
+ parentId: number;
436
+ name: string;
437
+ }
426
438
  /** 机构新增/编辑入参(后端 OrgInput;parentId 0=根,code 编辑禁用)。 */
427
439
  export interface OrgInput {
428
440
  parentId: number;
@@ -441,6 +453,11 @@ export interface SysPosition {
441
453
  enabled: boolean;
442
454
  createTime?: string;
443
455
  }
456
+ /** 职位选择器选项(后端 PositionOption)。 */
457
+ export interface PositionOption {
458
+ id: number;
459
+ name: string;
460
+ }
444
461
  /** 职位新增/编辑入参(后端 PositionInput;增改同一份字段,code 编辑禁用)。 */
445
462
  export interface PositionInput {
446
463
  name: string;
@@ -461,6 +478,11 @@ export interface SysRole {
461
478
  isBuiltin?: boolean;
462
479
  createTime?: string;
463
480
  }
481
+ /** 角色选择器选项(后端 RoleOption;仅启用角色)。 */
482
+ export interface RoleOption {
483
+ id: number;
484
+ name: string;
485
+ }
464
486
  /** 角色新增/编辑入参(后端 RoleInput;增改同一份字段,code 编辑禁用)。 */
465
487
  export interface RoleInput {
466
488
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sources":["../../src/types/api.ts"],"sourcesContent":["// 接口出参领域类型(与后端 DTO 对齐)。API 层用它标注 unwrap<T> 的返回,视图直接消费。\nimport type { AppModule } from './menu'\n\n/** 登录/刷新出参(后端 LoginOutput)。 */\nexport interface LoginOutput {\n accessToken: string\n expiresAt: string\n refreshToken: string\n refreshExpiresAt: string\n userId: number\n account: string\n name: string\n /** 是否需强制改密(管理员建号/重置后首登为 true)。 */\n mustChangePassword: boolean\n /**\n * 会话交付模式(可选)。\n * - `body`:刷新令牌在 JSON 体(默认,前端 localStorage 持久化)\n * - `cookie`:刷新令牌在 HttpOnly Cookie,access 仅内存\n * 缺省时前端用 refreshToken 空串 + csrfRequired 兜底判定(见 stores/user.ts 的 isCookieSession)。\n */\n sessionMode?: 'body' | 'cookie' | string | null\n /**\n * 是否要求双提交 CSRF(`X-Smart-CSRF` + `smart_csrf` Cookie)。\n * Cookie 会话为 true;默认模式为 false/缺省。\n */\n csrfRequired?: boolean | null\n /** 是否超管;前端据此在 profile 接口故障时仍能正确 fail-open v-auth。 */\n isSuperAdmin?: boolean\n}\n\n/** 我的应用列表(后端 MyModulesOutput)。 */\nexport interface MyModulesOutput {\n modules: AppModule[]\n defaultModuleId?: number | null\n}\n\n/** 个人资料(后端 UserProfile)。 */\nexport interface UserProfile {\n id: number\n account: string\n name: string\n orgId?: number | null\n positionId?: number | null\n /** 机构名称(未分配/已删则 null) */\n orgName?: string | null\n /** 职位名称(未分配/已删则 null) */\n positionName?: string | null\n nickname?: string | null\n phone?: string | null\n email?: string | null\n /** 性别:字典 gender 的项 Value(\"1\"男/\"2\"女/\"0\"未知) */\n gender?: string | null\n /** 头像(文件签名直链 ViewUrl,直接进 img) */\n avatar?: string | null\n isSuperAdmin: boolean\n}\n\n/** 我的会话项(后端 MySessionItem;个人视角,isCurrent 标记本次请求所用会话)。 */\nexport interface MySessionItem {\n sessionId: string\n ip?: string | null\n userAgent?: string | null\n loginTime: string\n expiresAt: string\n isCurrent: boolean\n}\n\n/** 上一次成功登录的信息(后端 LastLoginOutput;排除本次,首次登录时接口整体返回 null)。 */\nexport interface LastLoginInfo {\n time: string\n ip?: string | null\n userAgent?: string | null\n}\n\n/** 工作台待办单条(后端 WorkbenchTodoItem)。 */\nexport interface WorkbenchTodoItem {\n id: number\n title: string\n description?: string | null\n url?: string | null\n createTime: string\n}\n\n/** 工作台待办摘要(后端 WorkbenchTodoSummary;内核默认恒空)。 */\nexport interface WorkbenchTodoSummary {\n totalCount: number\n items: WorkbenchTodoItem[]\n}\n\n/** 工作台快捷方式项(后端 UserShortcutItem;后端已按\"置顶优先+高频补位\"排好序)。 */\nexport interface UserShortcutItem {\n menuPath: string\n pinned: boolean\n title: string\n icon?: string | null\n}\n\n/** 后端统一分页结果 PagedList<T>。 */\nexport interface PagedList<T> {\n current: number\n size: number\n total: number\n pages: number\n items: T[]\n}\n\n/** 用户列表项(后端 UserItem;刻意不含密码)。 */\nexport interface UserItem {\n id: number\n account: string\n name: string\n nickname?: string | null\n phone?: string | null\n email?: string | null\n gender?: string | null\n avatar?: string | null\n orgId?: number | null\n positionId?: number | null\n directorId?: number | null\n orgName?: string | null\n positionName?: string | null\n directorName?: string | null\n enabled: boolean\n isSuperAdmin: boolean\n /** 管理员显式强制 TOTP(只能加严)。 */\n forceTotp?: boolean\n /** 是否已绑定 TOTP(只读)。 */\n totpEnabled?: boolean\n createTime: string\n}\n\n/** 模块/应用管理行(后端 SysModule;列表全字段)。 */\nexport interface ModuleRow {\n id: number\n code: string\n title: string\n icon?: string | null\n defaultRoute?: string | null\n /** 后端路由匹配前缀(如 sys/biz):菜单配按钮时权限路由下拉据此按应用软过滤;留空=不过滤。 */\n apiPrefix?: string | null\n sort: number\n enabled: boolean\n remark?: string | null\n /** 可转授:普通管理员能否单独授权本应用的菜单(内置 system 恒为 false)。 */\n isDelegatable?: boolean | null\n createTime?: string\n}\n\n/** 工作台首页统计(后端 DashboardSummaryOutput)。趋势三条数组等长(近 7 日,含今天,无登录的日子为 0)。 */\nexport interface DashboardSummary {\n roles: number\n users: number\n perms: number\n onlineSessions: number\n trendDays: string[]\n trendLogins: number[]\n trendActiveUsers: number[]\n}\n\n/** 字典项消费投影(后端 SysDictItem;sort 归一为 number,甩掉 int64 序列化的 number|string 噪音)。 */\nexport interface DictItem {\n label: string\n value: string\n sort: number\n enabled: boolean\n}\n\n/** 模块新增/编辑入参(后端 ModuleInput)。 */\nexport interface ModuleInput {\n code: string\n title: string\n icon?: string | null\n defaultRoute?: string | null\n apiPrefix?: string | null\n sort: number\n enabled: boolean\n remark?: string | null\n /** 可转授:普通管理员能否单独授权本应用的菜单(内置 system 恒为 false)。 */\n isDelegatable?: boolean | null\n}\n\n/** 用户单独授权的效果(后端 UserMenuEffect)。 */\nexport enum UserMenuEffect {\n Allow = 1,\n Deny = 2,\n}\n\n/** 单独授权的有效期状态(后端 UserMenuGrantStatus;作筛选条件时 Active 含 7 天内到期)。 */\nexport enum UserMenuGrantStatus {\n Active = 1,\n Expiring = 2,\n Expired = 3,\n}\n\n/** 一条单独授权记录(后端 UserMenuGrantItem)。时间是本地时间串 yyyy-MM-ddTHH:mm:ss。 */\nexport interface UserMenuGrantItem {\n menuId: number\n effect: UserMenuEffect\n expireTime?: string | null\n remark?: string | null\n grantorId?: number | null\n grantorName?: string | null\n grantTime: string\n updaterId?: number | null\n updaterName?: string | null\n updateTime?: string | null\n}\n\n/** 变更集里的一条新增或修改(后端 UserMenuGrantUpsert)。 */\nexport interface UserMenuGrantUpsert {\n menuId: number\n effect: UserMenuEffect\n expireTime?: string | null\n remark?: string | null\n}\n\n/** 被拒节点里仍然有效的权限码与携带它的有效节点(后端 UserMenuLeakedCode)。 */\nexport interface UserMenuLeakedCode {\n code: string\n carrierMenuIds: number[]\n}\n\n/** 一个菜单节点对目标用户是否有效、为什么(后端 UserMenuEffectiveNode)。 */\nexport interface UserMenuEffectiveNode {\n menuId: number\n moduleId?: number | null\n effective: boolean\n roles: string[]\n grant?: UserMenuEffect | null\n expireTime?: string | null\n expired: boolean\n deniedByAncestor: boolean\n grantable: boolean\n leakedCodes: UserMenuLeakedCode[]\n}\n\n/** 授权弹窗的模块清单项(后端 UserMenuModuleItem)。 */\nexport interface UserMenuModuleItem {\n id: number\n title: string\n delegatable: boolean\n}\n\n/** 授权弹窗一次取齐的数据(后端 UserMenuEffectiveOutput)。readOnlyReason 是错误码。 */\nexport interface UserMenuEffective {\n userId: number\n hasRoles: boolean\n targetEditable: boolean\n readOnlyReason?: number | null\n delegatedMaxDays?: number | null\n /** 委派授权的最晚到期日 yyyy-MM-dd(服务器本地日期 + 最长天数);不限时为空。日期选择器上限与保存前校验都按它算。 */\n delegatedMaxDate?: string | null\n modules: UserMenuModuleItem[]\n nodes: UserMenuEffectiveNode[]\n}\n\n/** 单独授权一览的一行(后端 UserMenuGrantPageItem)。 */\nexport interface UserMenuGrantPageItem {\n id: number\n userId: number\n userAccount: string\n userName: string\n menuId: number\n menuTitle: string\n moduleId?: number | null\n moduleTitle?: string | null\n effect: UserMenuEffect\n expireTime?: string | null\n status: UserMenuGrantStatus\n grantorId?: number | null\n grantorName?: string | null\n grantTime: string\n remark?: string | null\n}\n\n/** 系统配置行(后端 SysConfig;列表返回全字段,int64 收敛为 number)。 */\nexport interface SysConfig {\n id: number\n configKey: string\n configValue?: string | null\n name: string\n groupCode?: string | null\n sort: number\n remark?: string | null\n createTime?: string\n}\n\n/** 配置新增/编辑入参(后端 ConfigInput;configKey 创建后不可改)。 */\nexport interface ConfigInput {\n configKey: string\n configValue?: string | null\n name: string\n groupCode?: string | null\n sort: number\n remark?: string | null\n}\n\n/** 字典类型行(后端 SysDictType;Code 创建后不可改)。int64 收敛为 number。 */\nexport interface SysDictType {\n id: number\n code: string\n name: string\n sort: number\n enabled: boolean\n remark?: string | null\n createTime?: string\n}\n\n/** 字典项行(后端 SysDictItem;管理端分页含停用项,带 id——区别于下拉投影 DictItem)。int64 收敛为 number。 */\nexport interface SysDictItem {\n id: number\n dictTypeCode: string\n label: string\n value: string\n sort: number\n enabled: boolean\n createTime?: string\n}\n\n/** 字典类型新增/编辑入参(后端 DictTypeInput;code 创建后不可改,更新时服务端忽略)。 */\nexport interface DictTypeInput {\n code: string\n name: string\n sort: number\n enabled: boolean\n remark?: string | null\n}\n\n/** 字典项新增/编辑入参(后端 DictItemInput;dictTypeCode = 当前类型,表单隐藏)。 */\nexport interface DictItemInput {\n dictTypeCode: string\n label: string\n value: string\n sort: number\n enabled: boolean\n}\n\n/** 文件记录行(后端 SysFile;列表返回,int64 收敛为 number)。 */\nexport interface SysFile {\n id: number\n originalName: string\n storagePath: string\n extension: string\n contentType?: string | null\n sizeBytes: number\n fileHash?: string | null\n createTime?: string\n}\n\n/** 上传出参(后端 FileUploadOutput)。 */\nexport interface FileUploadOutput {\n id: number\n originalName: string\n /** 存储层相对路径。**别当 URL 用**:后端默认不静态托管上传目录,当 src 必然坏链。要展示图片用 viewUrl。 */\n storagePath: string\n sizeBytes: number\n fileHash?: string | null\n /** 签名直链(匿名可取、不可伪造),可直接塞进 `<img src>`;后端签发,前端不自己拼。 */\n viewUrl?: string | null\n}\n\n/** 分片上传初始化出参(后端 ChunkInitOutput)。 */\nexport interface ChunkInitOutput {\n /** 秒传命中(同内容哈希已存在,无需再传)。 */\n uploaded: boolean\n /** 秒传命中时的既有文件。 */\n file?: FileUploadOutput | null\n /** 上传会话 Id(= 文件哈希);非秒传时返回。 */\n uploadId?: string | null\n /** 服务端已收到的分片下标(断点续传:跳过已传)。 */\n receivedIndexes: number[]\n}\n\n/** 在线会话行(后端 OnlineSessionItem;只读 + 强退按 sessionId)。int64 收敛为 number。 */\nexport interface OnlineSessionItem {\n sessionId: string\n userId: number\n account: string\n ip?: string | null\n userAgent?: string | null\n loginTime?: string\n expiresAt?: string\n}\n\n/** 登录日志行(后端 SysLoginLog;只读,int64 收敛为 number)。 */\nexport interface SysLoginLog {\n id: number\n account: string\n success: boolean\n resultCode: number\n userId?: number | null\n name?: string | null\n ip?: string | null\n userAgent?: string | null\n createTime: string\n}\n\n/** 操作日志行(后端 SysOpLog;只读,分页项已含全字段,详情抽屉直接用行数据)。 */\nexport interface SysOpLog {\n id: number\n title: string\n httpMethod: string\n path: string\n paramJson?: string | null\n resultCode: number\n success: boolean\n exceptionMessage?: string | null\n elapsedMs: number\n operatorId?: number | null\n operatorName?: string | null\n ip?: string | null\n userAgent?: string | null\n createTime: string\n}\n\n/** 磁盘分区容量(后端 DiskInfo)。 */\nexport interface DiskInfo {\n name: string\n totalBytes: number\n freeBytes: number\n}\n\n/** 服务器运行快照(后端 ServerInfoOutput;进程/主机基础指标)。 */\nexport interface ServerInfoOutput {\n machineName: string\n osDescription: string\n frameworkDescription: string\n processArchitecture: string\n processorCount: number\n processUptimeSeconds: number\n processCpuPercent: number\n processWorkingSetBytes: number\n gcHeapBytes: number\n totalAvailableMemoryBytes: number\n threadCount: number\n disks: DiskInfo[]\n}\n\n/** 异常日志行(后端 SysExceptionLog;未捕获异常留痕,只读,分页项已含全字段)。 */\nexport interface SysExceptionLog {\n id: number\n httpMethod: string\n path: string\n traceId?: string | null\n exceptionType: string\n message?: string | null\n stackTrace?: string | null\n operatorId?: number | null\n operatorName?: string | null\n ip?: string | null\n userAgent?: string | null\n createTime: string\n}\n\n/** 机构行(后端 SysOrg;平铺,前端 buildTree)。int64 收敛为 number。 */\nexport interface SysOrg {\n id: number\n parentId: number\n name: string\n code: string\n category?: string | null\n sort: number\n enabled: boolean\n createTime?: string\n}\n\n/** 机构新增/编辑入参(后端 OrgInput;parentId 0=根,code 编辑禁用)。 */\nexport interface OrgInput {\n parentId: number\n name: string\n code: string\n category?: string | null\n sort: number\n enabled: boolean\n}\n\n/** 职位行(后端 SysPosition)。int64 收敛为 number。 */\nexport interface SysPosition {\n id: number\n name: string\n code: string\n sort: number\n enabled: boolean\n createTime?: string\n}\n\n/** 职位新增/编辑入参(后端 PositionInput;增改同一份字段,code 编辑禁用)。 */\nexport interface PositionInput {\n name: string\n code: string\n sort: number\n enabled: boolean\n}\n\n/** 角色行(后端 SysRole)。int64 收敛为 number。 */\nexport interface SysRole {\n id: number\n name: string\n code: string\n sort: number\n enabled: boolean\n remark?: string | null\n isDelegatable?: boolean | null\n /** 内置角色(种子里固定 Id 1–999):只有它们能被授系统菜单。 */\n isBuiltin?: boolean\n createTime?: string\n}\n\n/** 角色新增/编辑入参(后端 RoleInput;增改同一份字段,code 编辑禁用)。 */\nexport interface RoleInput {\n name: string\n code: string\n sort: number\n enabled: boolean\n remark?: string | null\n isDelegatable?: boolean | null\n}\n\n/** 数据范围类型(后端 DataScopeType;存库为 int,枚举值须与后端一致)。 */\nexport enum DataScopeType {\n All = 1,\n Org = 2,\n OrgAndChildren = 3,\n Self = 4,\n Custom = 5,\n}\n\n/** 角色数据范围配置(后端 SysRoleDataScope;数据范围抽屉回显)。customOrgIds 逗号分隔。 */\nexport interface SysRoleDataScope {\n id: number\n roleId: number\n scopeType: DataScopeType\n customOrgIds: string\n}\n\n/** 新增用户入参(后端 AddUserInput;account 建后不可改,password 留空=系统生成随机强口令)。 */\nexport interface AddUserInput {\n account: string\n password?: string | null\n name: string\n nickname?: string | null\n phone?: string | null\n email?: string | null\n gender?: string | null\n avatar?: string | null\n orgId?: number | null\n positionId?: number | null\n directorId?: number | null\n enabled: boolean\n /** 建号即强制 TOTP。 */\n forceTotp?: boolean\n roleIds: number[]\n}\n\n/** 新增用户出参(后端 AddUserOutput):新 Id + 实际生效的初始口令明文——留空口令时是随机生成的,不展示给管理员就没人知道。 */\nexport interface AddUserOutput {\n id: number\n initialPassword: string\n}\n\n/** 一条可授权路由(后端 PermissionRouteItem);喂菜单表单权限码下拉,code 即写进 SysMenu.Permission 的值。 */\nexport interface PermissionRouteItem {\n code: string\n method: string\n path: string\n}\n\n/** 更新用户入参(后端 UpdateUserInput;无 account/password。roleIds 由 detail 原样带回避免清空)。 */\nexport interface UpdateUserInput {\n name: string\n nickname?: string | null\n phone?: string | null\n email?: string | null\n gender?: string | null\n avatar?: string | null\n orgId?: number | null\n positionId?: number | null\n directorId?: number | null\n enabled: boolean\n forceTotp?: boolean\n roleIds: number[]\n}\n\n/** 用户详情(后端 UserDetail;列表字段 + roleIds,编辑回显用)。 */\nexport interface UserDetail {\n id: number\n account: string\n name: string\n nickname?: string | null\n phone?: string | null\n email?: string | null\n gender?: string | null\n avatar?: string | null\n orgId?: number | null\n positionId?: number | null\n directorId?: number | null\n enabled: boolean\n isSuperAdmin: boolean\n forceTotp?: boolean\n totpEnabled?: boolean\n roleIds: number[]\n createTime?: string\n}\n\n/** 通知类型(后端 NoticeType;存库 int,枚举值须与后端一致)。 */\nexport enum NoticeType {\n Notice = 1,\n Announcement = 2,\n Message = 3,\n}\n\n/** 接收范围(后端 ReceiverType;All=0 对全体广播,Role/User 定向)。 */\nexport enum ReceiverType {\n All = 0,\n Role = 1,\n User = 2,\n}\n\n/**\n * 通知动作(后端 NoticeAction):前端渲染成正文下的按钮。url 以 /api/ 开头是接口调用(按 method 发请求),\n * 其它单个 / 开头的站内路径是页面跳转;协议相对 URL(//host、/\\host)发布时即被拒绝。\n * label 含 `.` 视为 i18n key。comment=true 先弹意见框,把 { comment } 作为请求体带上。\n */\nexport interface NoticeAction {\n label: string\n method: 'GET' | 'POST'\n url: string\n style?: 'primary' | 'default' | 'error' | null\n confirm?: boolean\n comment?: boolean\n}\n\n/** 通知行(后端 SysNotice;管理端列表全字段,int64 收敛为 number)。 */\nexport interface SysNotice {\n id: number\n title: string\n content?: string | null\n type: NoticeType\n createTime?: string\n /** 动作列表原文(JSON 数组);管理端只展示条数 */\n actionsJson?: string | null\n}\n\n/** 我的通知项(后端 NoticeMineItem;含当前用户已读标记)。 */\nexport interface NoticeMineItem {\n id: number\n title: string\n content?: string | null\n type: NoticeType\n publishTime: string\n isRead: boolean\n actions?: NoticeAction[] | null\n}\n\n/** 发布通知入参(后端 NoticePublishInput)。 */\nexport interface NoticePublishInput {\n title: string\n content?: string | null\n type: NoticeType\n /** 接收范围;缺省 All 广播全体。 */\n receiverType: ReceiverType\n /** 接收目标 Id(角色 Id 或用户 Id,取决于 receiverType);All 时忽略。 */\n receiverIds?: number[]\n /** 动作列表(可选,最多 5 条) */\n actions?: NoticeAction[] | null\n}\n\n// ── 导入 / 导出(与后端 Core DTO 对齐) ──\n\n/** 导入列声明。 */\nexport interface ImportColumn {\n key: string\n title: string\n required?: boolean\n dictTypeCode?: string | null\n hint?: string | null\n width?: number\n}\n\n/** 导出列声明(前端选列弹窗用;DefaultSelected 决定默认勾选)。 */\nexport interface ExportColumnDef {\n key: string\n title: string\n defaultSelected?: boolean\n}\n\n/** 单元格级错误:只带码,文案由前端 translateError(code) 渲染。 */\nexport interface CellError {\n columnKey: string\n code: number\n args?: Record<string, unknown> | null\n}\n\n/** 一行导入数据;单元格一律字符串。 */\nexport interface ImportRow {\n index: number\n cells: Record<string, string | null | undefined>\n errors: CellError[]\n}\n\n/** 预览 / 重验结果。 */\nexport interface ImportPreview {\n headers: string[]\n /** 表头文本 → 列 Key */\n mapping: Record<string, string>\n columns: ImportColumn[]\n rows: ImportRow[]\n total: number\n errorRows: number\n columnErrors: CellError[]\n}\n\n/** 重复处理策略(与后端 DuplicateStrategy 一致)。 */\nexport enum DuplicateStrategy {\n Skip = 0,\n Overwrite = 1,\n Error = 2,\n}\n\n/** 提交结果。 */\nexport interface ImportCommitResult {\n total: number\n inserted: number\n updated: number\n skipped: number\n failed: number\n failures: ImportRow[]\n}\n\n// ── 定时任务(与后端 SysJob/SysJobLog/JobInput 对齐) ──\n\n/** 载荷类型(后端 JobHandlerKind;存库 int)。 */\nexport enum JobHandlerKind {\n Compiled = 1,\n Http = 2,\n Sql = 3,\n}\n\n/** 触发类型(后端 JobTriggerKind)。 */\nexport enum JobTriggerKind {\n Cron = 1,\n Interval = 2,\n OneShot = 3,\n}\n\n/** 错过策略(后端 JobMisfireStrategy)。 */\nexport enum JobMisfireStrategy {\n Skip = 1,\n FireOnceNow = 2,\n}\n\n/** 并发模式(后端 JobConcurrencyMode;SerialSkip=上次未结束则跳过本次)。 */\nexport enum JobConcurrencyMode {\n SerialSkip = 1,\n Parallel = 2,\n}\n\n/** 任务状态(后端 JobStatus;无 Running 态——\"正在运行\"由未闭合执行记录推导)。 */\nexport enum JobStatus {\n Ready = 1,\n Paused = 2,\n Completed = 3,\n Panic = 4,\n}\n\n/** 单次执行结果(后端 JobRunStatus)。 */\nexport enum JobRunStatus {\n Running = 1,\n Success = 2,\n Failed = 3,\n Timeout = 4,\n Cancelled = 5,\n Skipped = 6,\n}\n\n/** 触发来源(后端 JobFireMode)。 */\nexport enum JobFireMode {\n Schedule = 1,\n Manual = 2,\n Misfire = 3,\n MissedSkipped = 4,\n}\n\n/** 任务行(后端 SysJob;page 返回整行,编辑表单直接用行数据回填)。 */\nexport interface SysJob {\n id: number\n code: string\n name: string\n handlerKind: JobHandlerKind\n handlerName: string\n /** 属性包 JSON(Dictionary<string,string?> 字符串化;HTTP 的 headers 值读取时已被掩码)。 */\n propsJson?: string | null\n triggerKind: JobTriggerKind\n cronExpression?: string | null\n intervalSeconds?: number | null\n oneShotTime?: string | null\n startTime?: string | null\n endTime?: string | null\n misfireStrategy: JobMisfireStrategy\n concurrencyMode: JobConcurrencyMode\n status: JobStatus\n nextRunTime?: string | null\n lastRunTime?: string | null\n numberOfRuns: number\n numberOfErrors: number\n consecutiveErrors: number\n timeoutSeconds: number\n retryCount: number\n retryIntervalSeconds: number\n failAlertThreshold: number\n alertByNotice: boolean\n alertEmails?: string | null\n isSystem: boolean\n remark?: string | null\n createTime?: string\n}\n\n/** 任务新增/编辑入参(后端 JobInput;code 仅新增时生效,更新被服务层忽略)。 */\nexport interface JobInput {\n code: string\n name: string\n handlerKind: JobHandlerKind\n /** 编译类填处理器标识;HTTP/SQL 由服务端固定填内置处理器名,传空即可。 */\n handlerName: string\n /** 属性包对象(非字符串!后端存成 propsJson;HTTP 的 headers 子键值对序列化成 JSON 字符串放 properties.headers)。 */\n properties?: Record<string, string> | null\n triggerKind: JobTriggerKind\n cronExpression?: string | null\n /** ≥5(<5 后端拒 47004)。 */\n intervalSeconds?: number | null\n oneShotTime?: string | null\n startTime?: string | null\n endTime?: string | null\n misfireStrategy: JobMisfireStrategy\n concurrencyMode: JobConcurrencyMode\n timeoutSeconds: number\n retryCount: number\n retryIntervalSeconds: number\n failAlertThreshold: number\n alertByNotice: boolean\n alertEmails?: string | null\n remark?: string | null\n}\n\n/** 执行记录行(后端 SysJobLog;endTime 为空 = 运行中,同 fireInstanceId 聚合重试)。 */\nexport interface SysJobLog {\n id: number\n jobId: number\n jobName: string\n fireInstanceId: number\n retryIndex: number\n fireMode: JobFireMode\n scheduledTime: string\n startTime: string\n endTime?: string | null\n runStatus: JobRunStatus\n elapsedMs: number\n nodeName: string\n killRequested: boolean\n messageText?: string | null\n errorText?: string | null\n createTime?: string\n}\n\n/** cron 预览结果(后端 CronPreviewOutput)。 */\nexport interface CronPreviewOutput {\n normalized: string\n occurrences: string[]\n /** 秒段等效每秒执行的告警(仅提示,不拦截)。 */\n everySecondWarning: boolean\n}\n\n/** 处理器清单(后端 JobHandlersOutput)。 */\nexport interface JobHandlersOutput {\n /** 已注册的编译类处理器名(IAdminJob.Name)。 */\n handlers: string[]\n /** SQL 载荷总闸(SmartAdmin:Jobs:Sql:Enabled);false 时前端禁选 SQL 并提示。 */\n sqlEnabled: boolean\n}\n\n/** 成败趋势的一天。 */\nexport interface JobTrendPoint {\n date: string\n success: number\n failed: number\n}\n\n/** 即将执行的一项。 */\nexport interface JobUpcomingItem {\n jobId: number\n name: string\n nextRunTime: string\n}\n\n/** 集群节点一行(角色由与锁行比对得出)。 */\nexport interface JobNodeItem {\n nodeName: string\n hostName: string\n isLeader: boolean\n lastHeartbeat: string\n workerId: number\n pid: number\n}\n\n/** 任务监控仪表盘(后端 JobDashboardOutput)。 */\nexport interface JobDashboard {\n todaySuccess: number\n todayFailed: number\n running: number\n totalJobs: number\n /** 按状态的任务数(键 = Ready/Paused/Completed/Panic)。 */\n statusCounts: Record<string, number>\n trend: JobTrendPoint[]\n upcoming: JobUpcomingItem[]\n nodes: JobNodeItem[]\n}\n\n// ── AI 管理(与后端 AiProviderModels/AiUsageModels 对齐;错误码文案在 error.ai.*,别重复) ──\n\n/** 厂商下的一个模型(后端 AiModelView)。 */\nexport interface AiModelView {\n id: number\n name: string\n displayName: string\n enabled: boolean\n isDefault: boolean\n contextWindow: number | null\n inputPrice: number | null\n outputPrice: number | null\n}\n\n/** 厂商行(后端 AiProviderView;列表/详情共用,apiKey 只回 hasApiKey + 掩码提示,不回明文)。 */\nexport interface AiProviderView {\n id: number\n code: string\n name: string\n preset: string\n protocol: string\n baseUrl: string\n authScheme: string\n apiKeyHint: string | null\n hasApiKey: boolean\n enabled: boolean\n sort: number\n remark: string | null\n models: AiModelView[]\n}\n\n/**\n * 模型新增/编辑入参(后端 AiModelInput;id 为 `null` = 新增该行)。\n * 后端定义为位置式 record——字段在请求体里必须都存在(可以是 null),不能整键省略,\n * 这里特意都不带 `?`,免得页面代码漏填导致类型能过编译、实际发请求时字段缺失。\n */\nexport interface AiModelInput {\n id: number | null\n name: string\n displayName: string\n enabled: boolean\n isDefault: boolean\n contextWindow: number | null\n inputPrice: number | null\n outputPrice: number | null\n}\n\n/** 厂商新增入参(后端 AiProviderAddInput;code 仅新增时填,apiKey 传 null 由后端拒绝/提示未配置)。 */\nexport interface AiProviderAddInput {\n code: string\n name: string\n preset: string\n baseUrl: string\n authScheme: string\n apiKey: string | null\n sort: number\n remark: string | null\n models: AiModelInput[]\n}\n\n/** 厂商编辑入参(后端 AiProviderUpdateInput;无 code——编辑禁用;apiKey 传 null = 不修改现有 Key)。 */\nexport interface AiProviderUpdateInput {\n code: string\n name: string\n baseUrl: string\n authScheme: string\n apiKey: string | null\n sort: number\n remark: string | null\n models: AiModelInput[]\n}\n\n/** 厂商预置(GET /api/v1/sys/ai/provider/presets,静态表,表单下拉用)。 */\nexport interface AiModelPreset {\n name: string\n displayName: string\n contextWindow?: number | null\n}\n\n/** 厂商预置(后端 AiProviderPresets.cs 落定的 11 个 code)。 */\nexport interface AiProviderPreset {\n code: string\n name: string\n protocol: string\n baseUrl: string\n authScheme: string\n models: AiModelPreset[]\n}\n\n/**\n * 后端 AiUsageSource 是普通枚举,没配 JsonStringEnumConverter,序列化按数字下发(System.Text.Json 默认行为)。\n * 1=Reported(上游上报的真实用量),2=Missing(上游没给,记 0 或估算兜底)。\n */\nexport const AI_USAGE_SOURCE = { Reported: 1, Missing: 2 } as const\nexport type AiUsageSourceValue = 1 | 2\n\n/** 一次调用的 Token 用量(后端 AiUsage;source 标记数值是上游上报还是估算兜底)。 */\nexport interface AiUsage {\n inputTokens: number\n outputTokens: number\n totalTokens: number\n source: AiUsageSourceValue\n}\n\n/** 测试连接结果(后端 AiTestResult)。 */\nexport interface AiTestResult {\n ok: boolean\n model?: string | null\n latencyMs: number\n usage?: AiUsage | null\n error?: string | null\n}\n\n/**\n * 用量统计分组维度(后端 AiUsageGroupBy,普通枚举,查询参按数字下发/上送)。\n * 1=Provider、2=Model、3=Scene、4=User。\n */\nexport const AI_USAGE_GROUP_BY = { Provider: 1, Model: 2, Scene: 3, User: 4 } as const\nexport type AiUsageGroupBy = 1 | 2 | 3 | 4\n\n/** 用量统计四格指标(后端 AiUsageTotals;failuresByErrorCode 键为 ErrorCode 数值)。 */\nexport interface AiUsageTotals {\n totalTokens: number\n inputTokens: number\n outputTokens: number\n callCount: number\n failureCount: number\n failuresByErrorCode: Record<number, number>\n}\n\n/** 分组维度下的一行(后端 AiUsageGroupRow)。 */\nexport interface AiUsageGroupRow {\n key: string\n label?: string | null\n inputTokens: number\n outputTokens: number\n callCount: number\n sharePercent: number\n avgLatencyMs: number\n}\n\n/** 用量统计汇总(后端 AiUsageSummary)。 */\nexport interface AiUsageSummary {\n totals: AiUsageTotals\n groups: AiUsageGroupRow[]\n}\n\n/** 用量趋势的一天(后端 AiUsageTrendPoint)。 */\nexport interface AiUsageTrendPoint {\n date: string\n inputTokens: number\n outputTokens: number\n callCount: number\n}\n\n/** 用量明细行(后端 SysAiUsageLog;只读,分页项已含全字段)。 */\nexport interface SysAiUsageLog {\n id: number\n providerId: number\n providerCode: string\n model: string\n scene: string\n userId?: number | null\n inputTokens: number\n outputTokens: number\n totalTokens: number\n usageSource: AiUsageSourceValue\n latencyMs: number\n success: boolean\n errorCode?: number | null\n errorMessage?: string | null\n streamed: boolean\n requestId?: string | null\n createTime: string\n}\n"],"names":["UserMenuEffect","UserMenuGrantStatus","DataScopeType","NoticeType","ReceiverType","DuplicateStrategy","JobHandlerKind","JobTriggerKind","JobMisfireStrategy","JobConcurrencyMode","JobStatus","JobRunStatus","JobFireMode","AI_USAGE_SOURCE","AI_USAGE_GROUP_BY"],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sources":["../../src/types/api.ts"],"sourcesContent":["// 接口出参领域类型(与后端 DTO 对齐)。API 层用它标注 unwrap<T> 的返回,视图直接消费。\nimport type { AppModule } from './menu'\n\n/** 登录/刷新出参(后端 LoginOutput)。 */\nexport interface LoginOutput {\n accessToken: string\n expiresAt: string\n refreshToken: string\n refreshExpiresAt: string\n userId: number\n account: string\n name: string\n /** 是否需强制改密(管理员建号/重置后首登为 true)。 */\n mustChangePassword: boolean\n /**\n * 会话交付模式(可选)。\n * - `body`:刷新令牌在 JSON 体(默认,前端 localStorage 持久化)\n * - `cookie`:刷新令牌在 HttpOnly Cookie,access 仅内存\n * 缺省时前端用 refreshToken 空串 + csrfRequired 兜底判定(见 stores/user.ts 的 isCookieSession)。\n */\n sessionMode?: 'body' | 'cookie' | string | null\n /**\n * 是否要求双提交 CSRF(`X-Smart-CSRF` + `smart_csrf` Cookie)。\n * Cookie 会话为 true;默认模式为 false/缺省。\n */\n csrfRequired?: boolean | null\n /** 是否超管;前端据此在 profile 接口故障时仍能正确 fail-open v-auth。 */\n isSuperAdmin?: boolean\n}\n\n/** 我的应用列表(后端 MyModulesOutput)。 */\nexport interface MyModulesOutput {\n modules: AppModule[]\n defaultModuleId?: number | null\n}\n\n/** 个人资料(后端 UserProfile)。 */\nexport interface UserProfile {\n id: number\n account: string\n name: string\n orgId?: number | null\n positionId?: number | null\n /** 机构名称(未分配/已删则 null) */\n orgName?: string | null\n /** 职位名称(未分配/已删则 null) */\n positionName?: string | null\n nickname?: string | null\n phone?: string | null\n email?: string | null\n /** 性别:字典 gender 的项 Value(\"1\"男/\"2\"女/\"0\"未知) */\n gender?: string | null\n /** 头像(文件签名直链 ViewUrl,直接进 img) */\n avatar?: string | null\n isSuperAdmin: boolean\n}\n\n/** 我的会话项(后端 MySessionItem;个人视角,isCurrent 标记本次请求所用会话)。 */\nexport interface MySessionItem {\n sessionId: string\n ip?: string | null\n userAgent?: string | null\n loginTime: string\n expiresAt: string\n isCurrent: boolean\n}\n\n/** 上一次成功登录的信息(后端 LastLoginOutput;排除本次,首次登录时接口整体返回 null)。 */\nexport interface LastLoginInfo {\n time: string\n ip?: string | null\n userAgent?: string | null\n}\n\n/** 工作台待办单条(后端 WorkbenchTodoItem)。 */\nexport interface WorkbenchTodoItem {\n id: number\n title: string\n description?: string | null\n url?: string | null\n createTime: string\n}\n\n/** 工作台待办摘要(后端 WorkbenchTodoSummary;内核默认恒空)。 */\nexport interface WorkbenchTodoSummary {\n totalCount: number\n items: WorkbenchTodoItem[]\n}\n\n/** 工作台快捷方式项(后端 UserShortcutItem;后端已按\"置顶优先+高频补位\"排好序)。 */\nexport interface UserShortcutItem {\n menuPath: string\n pinned: boolean\n title: string\n icon?: string | null\n}\n\n/** 后端统一分页结果 PagedList<T>。 */\nexport interface PagedList<T> {\n current: number\n size: number\n total: number\n pages: number\n items: T[]\n}\n\n/** 用户列表项(后端 UserItem;刻意不含密码)。 */\nexport interface UserItem {\n id: number\n account: string\n name: string\n nickname?: string | null\n phone?: string | null\n email?: string | null\n gender?: string | null\n avatar?: string | null\n orgId?: number | null\n positionId?: number | null\n directorId?: number | null\n orgName?: string | null\n positionName?: string | null\n directorName?: string | null\n enabled: boolean\n isSuperAdmin: boolean\n /** 管理员显式强制 TOTP(只能加严)。 */\n forceTotp?: boolean\n /** 是否已绑定 TOTP(只读)。 */\n totpEnabled?: boolean\n createTime: string\n}\n\n/** 用户选择器选项(后端 UserOption;只有 id / 姓名 / 账号,不含手机、邮箱、头像)。 */\nexport interface UserOption {\n id: number\n name: string\n account: string\n}\n\n/** 模块/应用管理行(后端 SysModule;列表全字段)。 */\nexport interface ModuleRow {\n id: number\n code: string\n title: string\n icon?: string | null\n defaultRoute?: string | null\n /** 后端路由匹配前缀(如 sys/biz):菜单配按钮时权限路由下拉据此按应用软过滤;留空=不过滤。 */\n apiPrefix?: string | null\n sort: number\n enabled: boolean\n remark?: string | null\n /** 可转授:普通管理员能否单独授权本应用的菜单(内置 system 恒为 false)。 */\n isDelegatable?: boolean | null\n createTime?: string\n}\n\n/** 工作台首页统计(后端 DashboardSummaryOutput)。趋势三条数组等长(近 7 日,含今天,无登录的日子为 0)。 */\nexport interface DashboardSummary {\n roles: number\n users: number\n perms: number\n onlineSessions: number\n trendDays: string[]\n trendLogins: number[]\n trendActiveUsers: number[]\n}\n\n/** 字典项消费投影(后端 SysDictItem;sort 归一为 number,甩掉 int64 序列化的 number|string 噪音)。 */\nexport interface DictItem {\n label: string\n value: string\n sort: number\n enabled: boolean\n}\n\n/** 模块新增/编辑入参(后端 ModuleInput)。 */\nexport interface ModuleInput {\n code: string\n title: string\n icon?: string | null\n defaultRoute?: string | null\n apiPrefix?: string | null\n sort: number\n enabled: boolean\n remark?: string | null\n /** 可转授:普通管理员能否单独授权本应用的菜单(内置 system 恒为 false)。 */\n isDelegatable?: boolean | null\n}\n\n/** 用户单独授权的效果(后端 UserMenuEffect)。 */\nexport enum UserMenuEffect {\n Allow = 1,\n Deny = 2,\n}\n\n/** 单独授权的有效期状态(后端 UserMenuGrantStatus;作筛选条件时 Active 含 7 天内到期)。 */\nexport enum UserMenuGrantStatus {\n Active = 1,\n Expiring = 2,\n Expired = 3,\n}\n\n/** 一条单独授权记录(后端 UserMenuGrantItem)。时间是本地时间串 yyyy-MM-ddTHH:mm:ss。 */\nexport interface UserMenuGrantItem {\n menuId: number\n effect: UserMenuEffect\n expireTime?: string | null\n remark?: string | null\n grantorId?: number | null\n grantorName?: string | null\n grantTime: string\n updaterId?: number | null\n updaterName?: string | null\n updateTime?: string | null\n}\n\n/** 变更集里的一条新增或修改(后端 UserMenuGrantUpsert)。 */\nexport interface UserMenuGrantUpsert {\n menuId: number\n effect: UserMenuEffect\n expireTime?: string | null\n remark?: string | null\n}\n\n/** 被拒节点里仍然有效的权限码与携带它的有效节点(后端 UserMenuLeakedCode)。 */\nexport interface UserMenuLeakedCode {\n code: string\n carrierMenuIds: number[]\n}\n\n/** 一个菜单节点对目标用户是否有效、为什么(后端 UserMenuEffectiveNode)。 */\nexport interface UserMenuEffectiveNode {\n menuId: number\n moduleId?: number | null\n effective: boolean\n roles: string[]\n grant?: UserMenuEffect | null\n expireTime?: string | null\n expired: boolean\n deniedByAncestor: boolean\n grantable: boolean\n leakedCodes: UserMenuLeakedCode[]\n}\n\n/** 授权弹窗的模块清单项(后端 UserMenuModuleItem)。 */\nexport interface UserMenuModuleItem {\n id: number\n title: string\n delegatable: boolean\n}\n\n/** 授权弹窗一次取齐的数据(后端 UserMenuEffectiveOutput)。readOnlyReason 是错误码。 */\nexport interface UserMenuEffective {\n userId: number\n hasRoles: boolean\n targetEditable: boolean\n readOnlyReason?: number | null\n delegatedMaxDays?: number | null\n /** 委派授权的最晚到期日 yyyy-MM-dd(服务器本地日期 + 最长天数);不限时为空。日期选择器上限与保存前校验都按它算。 */\n delegatedMaxDate?: string | null\n modules: UserMenuModuleItem[]\n nodes: UserMenuEffectiveNode[]\n}\n\n/** 单独授权一览的一行(后端 UserMenuGrantPageItem)。 */\nexport interface UserMenuGrantPageItem {\n id: number\n userId: number\n userAccount: string\n userName: string\n menuId: number\n menuTitle: string\n moduleId?: number | null\n moduleTitle?: string | null\n effect: UserMenuEffect\n expireTime?: string | null\n status: UserMenuGrantStatus\n grantorId?: number | null\n grantorName?: string | null\n grantTime: string\n remark?: string | null\n}\n\n/** 系统配置行(后端 SysConfig;列表返回全字段,int64 收敛为 number)。 */\nexport interface SysConfig {\n id: number\n configKey: string\n configValue?: string | null\n name: string\n groupCode?: string | null\n sort: number\n remark?: string | null\n createTime?: string\n}\n\n/** 配置新增/编辑入参(后端 ConfigInput;configKey 创建后不可改)。 */\nexport interface ConfigInput {\n configKey: string\n configValue?: string | null\n name: string\n groupCode?: string | null\n sort: number\n remark?: string | null\n}\n\n/** 字典类型行(后端 SysDictType;Code 创建后不可改)。int64 收敛为 number。 */\nexport interface SysDictType {\n id: number\n code: string\n name: string\n sort: number\n enabled: boolean\n remark?: string | null\n createTime?: string\n}\n\n/** 字典项行(后端 SysDictItem;管理端分页含停用项,带 id——区别于下拉投影 DictItem)。int64 收敛为 number。 */\nexport interface SysDictItem {\n id: number\n dictTypeCode: string\n label: string\n value: string\n sort: number\n enabled: boolean\n createTime?: string\n}\n\n/** 字典类型新增/编辑入参(后端 DictTypeInput;code 创建后不可改,更新时服务端忽略)。 */\nexport interface DictTypeInput {\n code: string\n name: string\n sort: number\n enabled: boolean\n remark?: string | null\n}\n\n/** 字典项新增/编辑入参(后端 DictItemInput;dictTypeCode = 当前类型,表单隐藏)。 */\nexport interface DictItemInput {\n dictTypeCode: string\n label: string\n value: string\n sort: number\n enabled: boolean\n}\n\n/** 文件记录行(后端 SysFile;列表返回,int64 收敛为 number)。 */\nexport interface SysFile {\n id: number\n originalName: string\n storagePath: string\n extension: string\n contentType?: string | null\n sizeBytes: number\n fileHash?: string | null\n createTime?: string\n}\n\n/** 上传出参(后端 FileUploadOutput)。 */\nexport interface FileUploadOutput {\n id: number\n originalName: string\n /** 存储层相对路径。**别当 URL 用**:后端默认不静态托管上传目录,当 src 必然坏链。要展示图片用 viewUrl。 */\n storagePath: string\n sizeBytes: number\n fileHash?: string | null\n /** 签名直链(匿名可取、不可伪造),可直接塞进 `<img src>`;后端签发,前端不自己拼。 */\n viewUrl?: string | null\n}\n\n/** 分片上传初始化出参(后端 ChunkInitOutput)。 */\nexport interface ChunkInitOutput {\n /** 秒传命中(同内容哈希已存在,无需再传)。 */\n uploaded: boolean\n /** 秒传命中时的既有文件。 */\n file?: FileUploadOutput | null\n /** 上传会话 Id(= 文件哈希);非秒传时返回。 */\n uploadId?: string | null\n /** 服务端已收到的分片下标(断点续传:跳过已传)。 */\n receivedIndexes: number[]\n}\n\n/** 在线会话行(后端 OnlineSessionItem;只读 + 强退按 sessionId)。int64 收敛为 number。 */\nexport interface OnlineSessionItem {\n sessionId: string\n userId: number\n account: string\n ip?: string | null\n userAgent?: string | null\n loginTime?: string\n expiresAt?: string\n}\n\n/** 登录日志行(后端 SysLoginLog;只读,int64 收敛为 number)。 */\nexport interface SysLoginLog {\n id: number\n account: string\n success: boolean\n resultCode: number\n userId?: number | null\n name?: string | null\n ip?: string | null\n userAgent?: string | null\n createTime: string\n}\n\n/** 操作日志行(后端 SysOpLog;只读,分页项已含全字段,详情抽屉直接用行数据)。 */\nexport interface SysOpLog {\n id: number\n title: string\n httpMethod: string\n path: string\n paramJson?: string | null\n resultCode: number\n success: boolean\n exceptionMessage?: string | null\n elapsedMs: number\n operatorId?: number | null\n operatorName?: string | null\n ip?: string | null\n userAgent?: string | null\n createTime: string\n}\n\n/** 磁盘分区容量(后端 DiskInfo)。 */\nexport interface DiskInfo {\n name: string\n totalBytes: number\n freeBytes: number\n}\n\n/** 服务器运行快照(后端 ServerInfoOutput;进程/主机基础指标)。 */\nexport interface ServerInfoOutput {\n machineName: string\n osDescription: string\n frameworkDescription: string\n processArchitecture: string\n processorCount: number\n processUptimeSeconds: number\n processCpuPercent: number\n processWorkingSetBytes: number\n gcHeapBytes: number\n totalAvailableMemoryBytes: number\n threadCount: number\n disks: DiskInfo[]\n}\n\n/** 异常日志行(后端 SysExceptionLog;未捕获异常留痕,只读,分页项已含全字段)。 */\nexport interface SysExceptionLog {\n id: number\n httpMethod: string\n path: string\n traceId?: string | null\n exceptionType: string\n message?: string | null\n stackTrace?: string | null\n operatorId?: number | null\n operatorName?: string | null\n ip?: string | null\n userAgent?: string | null\n createTime: string\n}\n\n/** 机构行(后端 SysOrg;平铺,前端 buildTree)。int64 收敛为 number。 */\nexport interface SysOrg {\n id: number\n parentId: number\n name: string\n code: string\n category?: string | null\n sort: number\n enabled: boolean\n createTime?: string\n}\n\n/** 机构选择器选项(后端 OrgOption;平铺,前端 buildTree)。 */\nexport interface OrgOption {\n id: number\n parentId: number\n name: string\n}\n\n/** 机构新增/编辑入参(后端 OrgInput;parentId 0=根,code 编辑禁用)。 */\nexport interface OrgInput {\n parentId: number\n name: string\n code: string\n category?: string | null\n sort: number\n enabled: boolean\n}\n\n/** 职位行(后端 SysPosition)。int64 收敛为 number。 */\nexport interface SysPosition {\n id: number\n name: string\n code: string\n sort: number\n enabled: boolean\n createTime?: string\n}\n\n/** 职位选择器选项(后端 PositionOption)。 */\nexport interface PositionOption {\n id: number\n name: string\n}\n\n/** 职位新增/编辑入参(后端 PositionInput;增改同一份字段,code 编辑禁用)。 */\nexport interface PositionInput {\n name: string\n code: string\n sort: number\n enabled: boolean\n}\n\n/** 角色行(后端 SysRole)。int64 收敛为 number。 */\nexport interface SysRole {\n id: number\n name: string\n code: string\n sort: number\n enabled: boolean\n remark?: string | null\n isDelegatable?: boolean | null\n /** 内置角色(种子里固定 Id 1–999):只有它们能被授系统菜单。 */\n isBuiltin?: boolean\n createTime?: string\n}\n\n/** 角色选择器选项(后端 RoleOption;仅启用角色)。 */\nexport interface RoleOption {\n id: number\n name: string\n}\n\n/** 角色新增/编辑入参(后端 RoleInput;增改同一份字段,code 编辑禁用)。 */\nexport interface RoleInput {\n name: string\n code: string\n sort: number\n enabled: boolean\n remark?: string | null\n isDelegatable?: boolean | null\n}\n\n/** 数据范围类型(后端 DataScopeType;存库为 int,枚举值须与后端一致)。 */\nexport enum DataScopeType {\n All = 1,\n Org = 2,\n OrgAndChildren = 3,\n Self = 4,\n Custom = 5,\n}\n\n/** 角色数据范围配置(后端 SysRoleDataScope;数据范围抽屉回显)。customOrgIds 逗号分隔。 */\nexport interface SysRoleDataScope {\n id: number\n roleId: number\n scopeType: DataScopeType\n customOrgIds: string\n}\n\n/** 新增用户入参(后端 AddUserInput;account 建后不可改,password 留空=系统生成随机强口令)。 */\nexport interface AddUserInput {\n account: string\n password?: string | null\n name: string\n nickname?: string | null\n phone?: string | null\n email?: string | null\n gender?: string | null\n avatar?: string | null\n orgId?: number | null\n positionId?: number | null\n directorId?: number | null\n enabled: boolean\n /** 建号即强制 TOTP。 */\n forceTotp?: boolean\n roleIds: number[]\n}\n\n/** 新增用户出参(后端 AddUserOutput):新 Id + 实际生效的初始口令明文——留空口令时是随机生成的,不展示给管理员就没人知道。 */\nexport interface AddUserOutput {\n id: number\n initialPassword: string\n}\n\n/** 一条可授权路由(后端 PermissionRouteItem);喂菜单表单权限码下拉,code 即写进 SysMenu.Permission 的值。 */\nexport interface PermissionRouteItem {\n code: string\n method: string\n path: string\n}\n\n/** 更新用户入参(后端 UpdateUserInput;无 account/password。roleIds 由 detail 原样带回避免清空)。 */\nexport interface UpdateUserInput {\n name: string\n nickname?: string | null\n phone?: string | null\n email?: string | null\n gender?: string | null\n avatar?: string | null\n orgId?: number | null\n positionId?: number | null\n directorId?: number | null\n enabled: boolean\n forceTotp?: boolean\n roleIds: number[]\n}\n\n/** 用户详情(后端 UserDetail;列表字段 + roleIds,编辑回显用)。 */\nexport interface UserDetail {\n id: number\n account: string\n name: string\n nickname?: string | null\n phone?: string | null\n email?: string | null\n gender?: string | null\n avatar?: string | null\n orgId?: number | null\n positionId?: number | null\n directorId?: number | null\n enabled: boolean\n isSuperAdmin: boolean\n forceTotp?: boolean\n totpEnabled?: boolean\n roleIds: number[]\n createTime?: string\n}\n\n/** 通知类型(后端 NoticeType;存库 int,枚举值须与后端一致)。 */\nexport enum NoticeType {\n Notice = 1,\n Announcement = 2,\n Message = 3,\n}\n\n/** 接收范围(后端 ReceiverType;All=0 对全体广播,Role/User 定向)。 */\nexport enum ReceiverType {\n All = 0,\n Role = 1,\n User = 2,\n}\n\n/**\n * 通知动作(后端 NoticeAction):前端渲染成正文下的按钮。url 以 /api/ 开头是接口调用(按 method 发请求),\n * 其它单个 / 开头的站内路径是页面跳转;协议相对 URL(//host、/\\host)发布时即被拒绝。\n * label 含 `.` 视为 i18n key。comment=true 先弹意见框,把 { comment } 作为请求体带上。\n */\nexport interface NoticeAction {\n label: string\n method: 'GET' | 'POST'\n url: string\n style?: 'primary' | 'default' | 'error' | null\n confirm?: boolean\n comment?: boolean\n}\n\n/** 通知行(后端 SysNotice;管理端列表全字段,int64 收敛为 number)。 */\nexport interface SysNotice {\n id: number\n title: string\n content?: string | null\n type: NoticeType\n createTime?: string\n /** 动作列表原文(JSON 数组);管理端只展示条数 */\n actionsJson?: string | null\n}\n\n/** 我的通知项(后端 NoticeMineItem;含当前用户已读标记)。 */\nexport interface NoticeMineItem {\n id: number\n title: string\n content?: string | null\n type: NoticeType\n publishTime: string\n isRead: boolean\n actions?: NoticeAction[] | null\n}\n\n/** 发布通知入参(后端 NoticePublishInput)。 */\nexport interface NoticePublishInput {\n title: string\n content?: string | null\n type: NoticeType\n /** 接收范围;缺省 All 广播全体。 */\n receiverType: ReceiverType\n /** 接收目标 Id(角色 Id 或用户 Id,取决于 receiverType);All 时忽略。 */\n receiverIds?: number[]\n /** 动作列表(可选,最多 5 条) */\n actions?: NoticeAction[] | null\n}\n\n// ── 导入 / 导出(与后端 Core DTO 对齐) ──\n\n/** 导入列声明。 */\nexport interface ImportColumn {\n key: string\n title: string\n required?: boolean\n dictTypeCode?: string | null\n hint?: string | null\n width?: number\n}\n\n/** 导出列声明(前端选列弹窗用;DefaultSelected 决定默认勾选)。 */\nexport interface ExportColumnDef {\n key: string\n title: string\n defaultSelected?: boolean\n}\n\n/** 单元格级错误:只带码,文案由前端 translateError(code) 渲染。 */\nexport interface CellError {\n columnKey: string\n code: number\n args?: Record<string, unknown> | null\n}\n\n/** 一行导入数据;单元格一律字符串。 */\nexport interface ImportRow {\n index: number\n cells: Record<string, string | null | undefined>\n errors: CellError[]\n}\n\n/** 预览 / 重验结果。 */\nexport interface ImportPreview {\n headers: string[]\n /** 表头文本 → 列 Key */\n mapping: Record<string, string>\n columns: ImportColumn[]\n rows: ImportRow[]\n total: number\n errorRows: number\n columnErrors: CellError[]\n}\n\n/** 重复处理策略(与后端 DuplicateStrategy 一致)。 */\nexport enum DuplicateStrategy {\n Skip = 0,\n Overwrite = 1,\n Error = 2,\n}\n\n/** 提交结果。 */\nexport interface ImportCommitResult {\n total: number\n inserted: number\n updated: number\n skipped: number\n failed: number\n failures: ImportRow[]\n}\n\n// ── 定时任务(与后端 SysJob/SysJobLog/JobInput 对齐) ──\n\n/** 载荷类型(后端 JobHandlerKind;存库 int)。 */\nexport enum JobHandlerKind {\n Compiled = 1,\n Http = 2,\n Sql = 3,\n}\n\n/** 触发类型(后端 JobTriggerKind)。 */\nexport enum JobTriggerKind {\n Cron = 1,\n Interval = 2,\n OneShot = 3,\n}\n\n/** 错过策略(后端 JobMisfireStrategy)。 */\nexport enum JobMisfireStrategy {\n Skip = 1,\n FireOnceNow = 2,\n}\n\n/** 并发模式(后端 JobConcurrencyMode;SerialSkip=上次未结束则跳过本次)。 */\nexport enum JobConcurrencyMode {\n SerialSkip = 1,\n Parallel = 2,\n}\n\n/** 任务状态(后端 JobStatus;无 Running 态——\"正在运行\"由未闭合执行记录推导)。 */\nexport enum JobStatus {\n Ready = 1,\n Paused = 2,\n Completed = 3,\n Panic = 4,\n}\n\n/** 单次执行结果(后端 JobRunStatus)。 */\nexport enum JobRunStatus {\n Running = 1,\n Success = 2,\n Failed = 3,\n Timeout = 4,\n Cancelled = 5,\n Skipped = 6,\n}\n\n/** 触发来源(后端 JobFireMode)。 */\nexport enum JobFireMode {\n Schedule = 1,\n Manual = 2,\n Misfire = 3,\n MissedSkipped = 4,\n}\n\n/** 任务行(后端 SysJob;page 返回整行,编辑表单直接用行数据回填)。 */\nexport interface SysJob {\n id: number\n code: string\n name: string\n handlerKind: JobHandlerKind\n handlerName: string\n /** 属性包 JSON(Dictionary<string,string?> 字符串化;HTTP 的 headers 值读取时已被掩码)。 */\n propsJson?: string | null\n triggerKind: JobTriggerKind\n cronExpression?: string | null\n intervalSeconds?: number | null\n oneShotTime?: string | null\n startTime?: string | null\n endTime?: string | null\n misfireStrategy: JobMisfireStrategy\n concurrencyMode: JobConcurrencyMode\n status: JobStatus\n nextRunTime?: string | null\n lastRunTime?: string | null\n numberOfRuns: number\n numberOfErrors: number\n consecutiveErrors: number\n timeoutSeconds: number\n retryCount: number\n retryIntervalSeconds: number\n failAlertThreshold: number\n alertByNotice: boolean\n alertEmails?: string | null\n isSystem: boolean\n remark?: string | null\n createTime?: string\n}\n\n/** 任务新增/编辑入参(后端 JobInput;code 仅新增时生效,更新被服务层忽略)。 */\nexport interface JobInput {\n code: string\n name: string\n handlerKind: JobHandlerKind\n /** 编译类填处理器标识;HTTP/SQL 由服务端固定填内置处理器名,传空即可。 */\n handlerName: string\n /** 属性包对象(非字符串!后端存成 propsJson;HTTP 的 headers 子键值对序列化成 JSON 字符串放 properties.headers)。 */\n properties?: Record<string, string> | null\n triggerKind: JobTriggerKind\n cronExpression?: string | null\n /** ≥5(<5 后端拒 47004)。 */\n intervalSeconds?: number | null\n oneShotTime?: string | null\n startTime?: string | null\n endTime?: string | null\n misfireStrategy: JobMisfireStrategy\n concurrencyMode: JobConcurrencyMode\n timeoutSeconds: number\n retryCount: number\n retryIntervalSeconds: number\n failAlertThreshold: number\n alertByNotice: boolean\n alertEmails?: string | null\n remark?: string | null\n}\n\n/** 执行记录行(后端 SysJobLog;endTime 为空 = 运行中,同 fireInstanceId 聚合重试)。 */\nexport interface SysJobLog {\n id: number\n jobId: number\n jobName: string\n fireInstanceId: number\n retryIndex: number\n fireMode: JobFireMode\n scheduledTime: string\n startTime: string\n endTime?: string | null\n runStatus: JobRunStatus\n elapsedMs: number\n nodeName: string\n killRequested: boolean\n messageText?: string | null\n errorText?: string | null\n createTime?: string\n}\n\n/** cron 预览结果(后端 CronPreviewOutput)。 */\nexport interface CronPreviewOutput {\n normalized: string\n occurrences: string[]\n /** 秒段等效每秒执行的告警(仅提示,不拦截)。 */\n everySecondWarning: boolean\n}\n\n/** 处理器清单(后端 JobHandlersOutput)。 */\nexport interface JobHandlersOutput {\n /** 已注册的编译类处理器名(IAdminJob.Name)。 */\n handlers: string[]\n /** SQL 载荷总闸(SmartAdmin:Jobs:Sql:Enabled);false 时前端禁选 SQL 并提示。 */\n sqlEnabled: boolean\n}\n\n/** 成败趋势的一天。 */\nexport interface JobTrendPoint {\n date: string\n success: number\n failed: number\n}\n\n/** 即将执行的一项。 */\nexport interface JobUpcomingItem {\n jobId: number\n name: string\n nextRunTime: string\n}\n\n/** 集群节点一行(角色由与锁行比对得出)。 */\nexport interface JobNodeItem {\n nodeName: string\n hostName: string\n isLeader: boolean\n lastHeartbeat: string\n workerId: number\n pid: number\n}\n\n/** 任务监控仪表盘(后端 JobDashboardOutput)。 */\nexport interface JobDashboard {\n todaySuccess: number\n todayFailed: number\n running: number\n totalJobs: number\n /** 按状态的任务数(键 = Ready/Paused/Completed/Panic)。 */\n statusCounts: Record<string, number>\n trend: JobTrendPoint[]\n upcoming: JobUpcomingItem[]\n nodes: JobNodeItem[]\n}\n\n// ── AI 管理(与后端 AiProviderModels/AiUsageModels 对齐;错误码文案在 error.ai.*,别重复) ──\n\n/** 厂商下的一个模型(后端 AiModelView)。 */\nexport interface AiModelView {\n id: number\n name: string\n displayName: string\n enabled: boolean\n isDefault: boolean\n contextWindow: number | null\n inputPrice: number | null\n outputPrice: number | null\n}\n\n/** 厂商行(后端 AiProviderView;列表/详情共用,apiKey 只回 hasApiKey + 掩码提示,不回明文)。 */\nexport interface AiProviderView {\n id: number\n code: string\n name: string\n preset: string\n protocol: string\n baseUrl: string\n authScheme: string\n apiKeyHint: string | null\n hasApiKey: boolean\n enabled: boolean\n sort: number\n remark: string | null\n models: AiModelView[]\n}\n\n/**\n * 模型新增/编辑入参(后端 AiModelInput;id 为 `null` = 新增该行)。\n * 后端定义为位置式 record——字段在请求体里必须都存在(可以是 null),不能整键省略,\n * 这里特意都不带 `?`,免得页面代码漏填导致类型能过编译、实际发请求时字段缺失。\n */\nexport interface AiModelInput {\n id: number | null\n name: string\n displayName: string\n enabled: boolean\n isDefault: boolean\n contextWindow: number | null\n inputPrice: number | null\n outputPrice: number | null\n}\n\n/** 厂商新增入参(后端 AiProviderAddInput;code 仅新增时填,apiKey 传 null 由后端拒绝/提示未配置)。 */\nexport interface AiProviderAddInput {\n code: string\n name: string\n preset: string\n baseUrl: string\n authScheme: string\n apiKey: string | null\n sort: number\n remark: string | null\n models: AiModelInput[]\n}\n\n/** 厂商编辑入参(后端 AiProviderUpdateInput;无 code——编辑禁用;apiKey 传 null = 不修改现有 Key)。 */\nexport interface AiProviderUpdateInput {\n code: string\n name: string\n baseUrl: string\n authScheme: string\n apiKey: string | null\n sort: number\n remark: string | null\n models: AiModelInput[]\n}\n\n/** 厂商预置(GET /api/v1/sys/ai/provider/presets,静态表,表单下拉用)。 */\nexport interface AiModelPreset {\n name: string\n displayName: string\n contextWindow?: number | null\n}\n\n/** 厂商预置(后端 AiProviderPresets.cs 落定的 11 个 code)。 */\nexport interface AiProviderPreset {\n code: string\n name: string\n protocol: string\n baseUrl: string\n authScheme: string\n models: AiModelPreset[]\n}\n\n/**\n * 后端 AiUsageSource 是普通枚举,没配 JsonStringEnumConverter,序列化按数字下发(System.Text.Json 默认行为)。\n * 1=Reported(上游上报的真实用量),2=Missing(上游没给,记 0 或估算兜底)。\n */\nexport const AI_USAGE_SOURCE = { Reported: 1, Missing: 2 } as const\nexport type AiUsageSourceValue = 1 | 2\n\n/** 一次调用的 Token 用量(后端 AiUsage;source 标记数值是上游上报还是估算兜底)。 */\nexport interface AiUsage {\n inputTokens: number\n outputTokens: number\n totalTokens: number\n source: AiUsageSourceValue\n}\n\n/** 测试连接结果(后端 AiTestResult)。 */\nexport interface AiTestResult {\n ok: boolean\n model?: string | null\n latencyMs: number\n usage?: AiUsage | null\n error?: string | null\n}\n\n/**\n * 用量统计分组维度(后端 AiUsageGroupBy,普通枚举,查询参按数字下发/上送)。\n * 1=Provider、2=Model、3=Scene、4=User。\n */\nexport const AI_USAGE_GROUP_BY = { Provider: 1, Model: 2, Scene: 3, User: 4 } as const\nexport type AiUsageGroupBy = 1 | 2 | 3 | 4\n\n/** 用量统计四格指标(后端 AiUsageTotals;failuresByErrorCode 键为 ErrorCode 数值)。 */\nexport interface AiUsageTotals {\n totalTokens: number\n inputTokens: number\n outputTokens: number\n callCount: number\n failureCount: number\n failuresByErrorCode: Record<number, number>\n}\n\n/** 分组维度下的一行(后端 AiUsageGroupRow)。 */\nexport interface AiUsageGroupRow {\n key: string\n label?: string | null\n inputTokens: number\n outputTokens: number\n callCount: number\n sharePercent: number\n avgLatencyMs: number\n}\n\n/** 用量统计汇总(后端 AiUsageSummary)。 */\nexport interface AiUsageSummary {\n totals: AiUsageTotals\n groups: AiUsageGroupRow[]\n}\n\n/** 用量趋势的一天(后端 AiUsageTrendPoint)。 */\nexport interface AiUsageTrendPoint {\n date: string\n inputTokens: number\n outputTokens: number\n callCount: number\n}\n\n/** 用量明细行(后端 SysAiUsageLog;只读,分页项已含全字段)。 */\nexport interface SysAiUsageLog {\n id: number\n providerId: number\n providerCode: string\n model: string\n scene: string\n userId?: number | null\n inputTokens: number\n outputTokens: number\n totalTokens: number\n usageSource: AiUsageSourceValue\n latencyMs: number\n success: boolean\n errorCode?: number | null\n errorMessage?: string | null\n streamed: boolean\n requestId?: string | null\n createTime: string\n}\n"],"names":["UserMenuEffect","UserMenuGrantStatus","DataScopeType","NoticeType","ReceiverType","DuplicateStrategy","JobHandlerKind","JobTriggerKind","JobMisfireStrategy","JobConcurrencyMode","JobStatus","JobRunStatus","JobFireMode","AI_USAGE_SOURCE","AI_USAGE_GROUP_BY"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import o from "./index2.vue.js";
2
2
  /* empty css */
3
3
  import t from "../../../_virtual/_plugin-vue_export-helper.js";
4
- const m = /* @__PURE__ */ t(o, [["__scopeId", "data-v-efde0606"]]);
4
+ const _ = /* @__PURE__ */ t(o, [["__scopeId", "data-v-55547dc5"]]);
5
5
  export {
6
- m as default
6
+ _ as default
7
7
  };
8
8
  //# sourceMappingURL=index.vue.js.map