Releases: SmartCode-X/SmartAdmin
Releases · SmartCode-X/SmartAdmin
Release list
v10.12.1
Fixed
- AI 网关:厂商不支持 OpenAI
json_schema严格结构化输出时不再静默失效。OpenAiCompatibleAdapter此前对所有 openai 协议厂商一律透传response_format.type: "json_schema";智谱 GLM 等厂商官方协议只支持text/json_object,收到该字段既不报错也不降级,只会忽略约束按自由文本作答(常见还会用 Markdown 代码块包裹结果),ResponseSchema契约悄悄失效。厂商预设新增SupportsJsonSchema能力位(智谱标记为false),网关在发起上游调用前按此直接拒绝(49033),不把一个对方读不懂的字段透传过去。(#8)
v10.12.0
Added
- AI 网关:
IAiChatClient消息支持多模态内容(图片),对话请求支持结构化输出约束(JSON Schema)。AiChatMessage.User(parts)接收文本与图片混排的内容(AiChatContentPart.Text/.Image,图片来源支持 base64 或 URL),两个协议适配器分别按 OpenAI 兼容协议的image_url与 Anthropic 协议的image内容块序列化,DeepSeek、通义千问、智谱、Kimi、豆包等中国厂商与 OpenAI/DeepSeek 共用同一套OpenAiCompatibleAdapter,无需单独适配。AiChatRequest.ResponseSchema约束模型输出必须匹配给定 JSON Schema,OpenAI 兼容协议映射到response_format.json_schema,Anthropic 映射到output_config.format;System角色消息不支持多段内容,传了直接抛49032;厂商或模型不支持图片或结构化输出时,上游报错按现有49020系列错误码映射,网关不做静默降级。两条都是追加的可选字段,不传就是原有的纯文本行为,不影响现有调用方。(#7)
v10.11.0
Added
- AI 管理:统一大模型接入网关。 新增
IAiChatClient统一入口(ChatAsync/StreamAsync),按协议适配 OpenAI 兼容与 Anthropic 两套协议,覆盖 OpenAI、Azure OpenAI、Anthropic、DeepSeek、通义千问、智谱 GLM、Kimi、豆包、Gemini、Ollama 十个预置厂商及自定义厂商;不引入任何厂商 SDK,HttpClient 直连并套 SSRF 围栏(与定时任务共用同一套围栏实现)。后台新增「AI 管理」目录(AI 模型、用量统计两页),运维选厂商预设、填 Key 即可,Key 经ISecretProtector加密落库,接口只回脱敏尾四位;每次调用按厂商 / 模型 / 场景 / 用户记 Token 用量,用量页支持多维度聚合、占比与按天趋势。两个控制器挂[Module("Ai")],可用Api:DisabledModules整体下线(IAiChatClient不受影响);内置AiUsageLogCleanupJob按保留天数(默认 90 天)定期清理用量记录。用法与消费者调用示例见文档。
Fixed
v10.10.1
Added
- 应用可以生成自己的
ph离线图标子集。smart-admin-web带上命令smart-admin-icons:扫描应用src里的ph:*名字,从 Phosphor 整集裁出这些图标写成 JSON;--check只比对不写盘,产物过期或有拼错的名字时非 0 退出,给 CI 用。createSmartAdmin新增iconSets选项,启动时把这份子集和内核子集一起同步注册,业务页的ph图标首帧就能离线渲染,不再懒加载整套ph(约 946 KB gz)。模板已经接好:npm run gen:icons写出src/assets/icons/ph-subset.json,main.ts经iconSets传入。已有应用照这两处补上即可。应用的子集不剔除内核子集已有的名字,内核升级不会让应用提交的子集过期。(#3)
Fixed
- 模板装依赖不再提示 esbuild 的安装脚本待批准。
web/template/package.json加上"allowScripts": { "esbuild": true }。degit 出去的模板没有 lockfile,esbuild 的补丁版本会浮动,所以按包名批准、不钉版本;npm 11 对未批准的依赖安装脚本会在npm install末尾列出警告。 - 网关子路径部署下,外部登录回调与待绑定认领不再一律 40014。 两个 binder cookie(
tn_oauth_state、tn_oauth_pending)的 Path 跟随对外路径前缀:配了CallbackBaseUrl取它的路径部分(https://gw.example.com/admin→/admin/api/v1/auth/external),没配时(仅开发环境)取Request.PathBase,开发环境回退拼出的回调地址也带上 PathBase。根路径部署不受影响。在网关上改写 cookie Path 的临时绕法(如 nginxproxy_cookie_path /api/ /admin/api/;)升级后不再匹配,自然失效,可以删掉。(#1) smart-admin-web的枚举可以当值导入。 包入口把types/api整体导出(类型与枚举一起),DuplicateStrategy、DataScopeType、NoticeType、ReceiverType与Job*系列都能直接用成员值,比如给ImportWizard传:strategies="[DuplicateStrategy.Skip]",不必再自己镜像一份数值。(#2)
v10.10.0
后端 13 个 NuGet 包、前端 npm 包 smart-admin-web 与项目模板同号发布。能力清单见 README.md 的「内置功能」,接入与扩展见文档站。
Added
- 后端内核。 元包
SmartAdmin引入四个分层包:SmartAdmin.Core(契约)、SmartAdmin.SqlSugar(数据层)、SmartAdmin.Services(领域服务)、SmartAdmin.AspNetCore(宿主集成),宿主里AddSmartAdmin/MapSmartAdmin两行接入。覆盖认证与会话、RBAC(权限码即规范化路由)、五种数据范围、多应用门户、组织与用户、字典与配置中心、通知公告、日志、文件、定时任务,以及 SQLite / MySQL / SQL Server / PostgreSQL 四种方言与多副本部署。内置服务一律接口化、virtual、经TryAdd注册,消费方可以整体替换,也可以子类覆写单步。 - 可选包与工具包。
SmartAdmin.Excel(xlsx 导入导出)、SmartAdmin.Caching.Redis(Redis 缓存,多副本共享会话)、SmartAdmin.Auth.WeCom/.DingTalk/.GitHub/.WeChat(第三方登录);测试基础设施SmartAdmin.Testing;项目模板SmartAdmin.Templates(dotnet new smart-app)。 - 前端内核
smart-admin-web。 布局壳、动态菜单路由、登录鉴权、v-auth、全部内置页、共享组件、stores 与语言包,预编译成 ESM +.d.ts+ 一份style.css。应用从web/template起步(npx degit SmartCode-X/SmartAdmin/web/template web),自己的页面、文案、静态路由、图标经createSmartAdmin(...)交给内核,页面 key 与内置页相同即覆盖内置页;vue、vue-router、pinia、vue-i18n、naive-ui、@vueuse/core、@iconify/vue、smart-naive-table、smart-naive-icon是 peerDependencies,由应用安装。