Skip to content

Releases

v2.2.34

Choose a tag to compare

@github-actions github-actions released this 10 Nov 11:36

v2.2.34:H5 智能中心补成可用工作台,修复报工记录页被占位槽位挤空

这一版的核心是把 H5 员工端的「智能中心」从「七个入口 + 半成品页面」补成一个真正能干活的工作台:知识库能查也能建、助手能查真实数据、数字员工的委托经过能回看、被拦的入口能说清缺哪条权限。同时修掉一个会真实产出错误结果的缺陷——任务量大时「报工记录」页几乎空白。

重点修复

  • 报工记录页在大批量任务下几乎空白。根因不是前端:件次同步逻辑按 assigned_qty 预建 unit_seq=1..N 的 draft 占位槽位,而 /h5/report-units 默认按 id 倒序返回,一百个空槽位把几条真实记录挤出 limit 窗口,前端再本地过滤一次 draft,页面上就什么都不剩。修法是服务端加 exclude_draft(默认 False,管理端看待报槽位的既有行为不变),页面传 true 并取消本地过滤——本地过滤会让 offset 分页错位。
  • 报工记录补齐状态筛选(待初审/待终审/已通过/已驳回)、加载更多、合格/不良小计,以及详情弹层与审核轨迹。驳回原因只存在于审核记录里,列表上看不到,员工被驳回后不知道要改什么,这是这条链路的唯一价值。

知识库

  • 资料页补上写入闭环:新建资料(标题/来源/业务域/正文/向量化开关)、详情页按 can_edit 给出编辑入口、列表支持「我建的」筛选与 is_mine 角标。
  • is_mine / can_edit 由服务端计算并回传,前端不持有用户 id,也不靠前端比对。编辑入口只开给本人创建或持知识库管理权的人,避免现场员工改到别人沉淀的资料。
  • 资料列表支持排序(更新时间/创建时间/标题等白名单)、向量化状态筛选、来源筛选;详情支持「问这篇」单篇问答,回答只依据那一篇。
  • 资料写入接口单独放宽超时到 120s:向量化是同步做的,长资料必然超过全局默认超时。
  • 新增「最近浏览」与命中片段复制,问答依据可以直接跳到原文对应位置。

智能助手

  • 新增「查数据模式」:接上后端 /agent,能调工具读真实数据,例如「今天哪些工单要延期」。默认关闭并记住选择,开启才走工具链路。
  • 回答可展开工具调用轨迹:工具名、成功/失败、耗时、错误原因。
  • 写操作不直接执行:只返回待确认动作(含 token 与有效期),页面弹确认卡片,确认后调 /act 消费一次性令牌;令牌在服务端绑定工具名与参数,客户端没有任何自己拼参数的路径。
  • 空态新增「看看助手能做什么」,按可用/无权限、只读/需确认标注能力清单。
  • 会话支持历史抽屉、重命名、首句自动命名、发送失败重发、标题搜索、复制与导出 Markdown、导出全部会话。

数字员工

  • 执行日志按人隔离:普通员工只看自己的执行记录,持管理权才看全站;新增单条执行明细,含指令、摘要、结构化结果、token 与耗时。
  • 新增「委托会话」:一次委托串起多条技能执行,按会话回看比逐条翻日志更容易还原来龙去脉;支持展开每次执行的工具/指令/摘要/状态,也支持按会话整段删除(二次确认)。
  • 巡检指令支持直接下发(≤200 字透传执行接口),日志支持按技能与状态(ok/degraded/error/locked)筛选。

预警与洞察

  • 预警支持批量处置(≤50 条、去重、缺失项回传)、状态+严重度+维度三重筛选、加载上限提到 500、CSV 导出(带 BOM,Excel 直接可读)、整条复制、一键查相关制度、详情弹层(结构化事实、时间戳、AI 解读、四种状态流转)。
  • 洞察历史支持维度筛选、复制、单条与多选批量删除、导出 CSV / Markdown;场景文书支持归档筛选、分页、复制与导出 Markdown。
  • AI 用量可见:助手当轮回答显示 tokens 输入/输出,洞察与员工执行记录带用量信息。

入口与引导

  • 智能中心新增今日概览(健康分、待处理预警、近 24h 执行)与「最近使用」(本地记录 4 条,被拦入口不进入记录)。
  • 未授权从「模糊拒绝」改为可行动提示:被拦卡片直接显示缺失的权限码,点击弹说明(缺哪条权限、去哪个页面勾选),确认后一键复制,方便直接发给管理员。权限码优先用后端下发的那一条,与真实校验同源。
  • 新增「现场 AI 在哪」分区:拍照计数、缺陷分类、语音报工、报工校验、交班摘要这五项能力嵌在报工流程里,逐条说明并直达对应页面,并明确标注不需要单独开通,避免员工误认为是被门控的付费能力。

工程与一致性

  • 后端新增接口:GET /docs 的 mine/sort/vectorized/source,POST /docs 与 PUT /docs/{id} 的写入回执字段,POST /alerts/batch-handle,POST /runs/batch-delete,GET /logs/{log_id},PATCH /conversations/{conv_id},以及助手 /agent 与 /act 在 H5 侧的接入。
  • 前端新增工具:clipboard.ts(现代 API 失败回退到 execCommand)、download.ts(Blob + revokeObjectURL,避免内存泄漏)、extension-gate.ts(区分「扩展未开通」与「角色未授权」)。
  • 三语文案同步到 561 键,静态引用全部命中,无缺失键。

验证

  • 契约测试 50 passed(新增覆盖:草稿槽位排除真的落到 SQL 绑定参数、默认行为不变、HTTP 层真的把参数传到 CRUD、can_edit 三态、各批次前后端能力防回退)。
  • 后端全量 889 passed,含新增 tests/test_h5_report_history.py 4 例。
  • check:i18n ERROR 0 / WARN 0(561 键);vue-tsc --noEmit 与 npm run build 通过。
  • 干净检出下扩展缺失的用例自动 skip,不会因为缺少商业扩展而报红。

升级影响

  • 接口向后兼容:新增参数全部有默认值,exclude_draft 默认 False,既有响应字段不删不改;管理端看得到 draft 待报槽位的行为完全不变。
  • 无需数据库迁移:复用既有表与 deleted_at 软删字段,未新增列。
  • 权限未放宽:ai.use 与 ext.ai_* 的分配维持原状。当前这些权限只分配给 admin 一个角色,非管理员在智能中心会被拦——现在会明确告知缺哪条权限码,是否给班组长/员工开放属于业务决策,本版未擅自改动权限表。
  • 部署提醒:本次包含商业扩展改动,部署包需确保知识库扩展的列表与写入改动已同步到运行目录(backend/extensions/ai_knowledge/),否则「我建的」筛选与新建/编辑资料会报错。
  • 部署后需重启后端服务,并重新发布 frontend-h5/dist 静态资源;H5 员工端 nginx 挂载按运维侧节奏处理。

v2.2.33

Choose a tag to compare

@github-actions github-actions released this 10 Nov 09:47

v2.2.33:H5 新增知识库资料浏览,洞察历史支持多选批量清理

本次更新给员工端补上「查资料」这条最常用的动线:制度和作业指导书不再只能靠问答碰运气,而是能按标题/来源搜索、按业务域筛选、点开看全文并复制。同时把洞察历史从「一条条删」升级为多选批量清理。后端新增一个批量软删接口与一个扩展状态位,无表结构变更。

新增能力

  • 知识库资料页(/ai-docs):只读浏览员工有权查看的制度、工艺与作业指导书。列表支持按标题/来源搜索(q)、按业务域标签筛选(scope)、分页加载更多(20/页),展示来源、业务域、字数、更新时间与是否已向量化;详情弹层显示全文并支持一键复制。
  • 可见性沿用后端规则:列表与详情都走 ai_knowledge 的 _visibility(scope + role_allowed),越权文档不会出现在结果里,也不会因猜 id 而读到。
  • 智能中心入口:新增「知识库」卡片,纳入 /h5/ai/extensions 预检查(ai_knowledge / ext.ai_knowledge.view),未开通 / 已停用 / 未授权三态与其它 AI 页一致,不会点了才撞 403。
  • 洞察历史批量清理:新增 POST /api/extensions/ai_insight/runs/batch-delete,单次 ≤50 条、去重、软删(deleted_at),回传 succeeded / missing;H5 历史抽屉加「选择」模式,支持全选、取消全选、已选计数与批量删除,部分记录已不存在时提示「已删除 N 条,M 条已不存在」。

工程与一致性

  • ai.ts 补 listKnowledgeDocs / getKnowledgeDoc / batchDeleteInsightRuns 与 KnowledgeDocItem / KnowledgeDoc 类型。
  • 新增 AiDocsPage.vue(约 240 行)与路由 ai-docs;三语各 +27 键(共 439)。
  • README 同步资料页与批量清理能力。

验证

  • 契约测试新增 4 条:资料页/路由/入口/洞察多选能力防回退、扩展状态覆盖 ai_knowledge、批量软删去重与 missing 回传、空选与超 50 条在入口拦截;共 24 passed。
  • 后端全量 860 passed;check:i18n ERROR 0 / WARN 0(439 键,静态引用 386 / 64 文件);vue-tsc 与 vite build 通过,产物含 AiDocsPage chunk。
  • 运行时确认 POST /api/extensions/ai_insight/runs/batch-delete 已挂载,/api/h5/ai/extensions 返回 6 个扩展(含 ai_knowledge)。

升级影响

  • 接口向后兼容:仅新增 POST /runs/batch-delete 与扩展状态数组中的一项,不放宽任何权限、不改既有响应字段。
  • 无需数据库迁移:复用 ext_ai_insight_runs.deleted_at 与 ext_ai_knowledge_* 既有表。
  • 部署后需重启后端服务,并重新发布 frontend-h5/dist 静态资源;H5 员工端 nginx 挂载按运维侧节奏处理。

v2.2.32

Choose a tag to compare

@github-actions github-actions released this 10 Nov 09:18

v2.2.32:H5 智能中心第六批 —— 个人留痕隔离、洞察历史治理与巡检指令

本次更新集中在 H5 员工端智能中心,让「问过什么、分析过什么」能被单独找到并带走,同时修掉员工端能看见全站问答留痕的问题。后端仅一处可选参数新增,无表结构与接口破坏性变更。

新增能力

  • 帮助页个人留痕:GET /api/extensions/ai_knowledge/logs 新增 mine 查询参数(0/1,默认 0),为 1 时按 created_by 只返回本人提问。H5 帮助页「历史提问」抽屉固定走 mine=1,点一条即回填并重新提问;本机仍保留最近 20 条含答案的记录用于回看。
  • 洞察历史治理:历史跑批列表新增「复制报告」与「删除记录」(软删除,二次确认后不可恢复),删除后自动刷新列表与速览。
  • 数字员工巡检指令:执行巡检前可填写指令(≤200 字),随执行结果一并落审计日志;日志抽屉新增按技能、按结果状态(ok / degraded / error / locked)筛选。
  • 场景文书归档增强:归档列表可按场景类型筛选、单份复制全文、分页加载更多,并显示总数。
  • 剪贴板能力收敛:新增 frontend-h5/src/utils/clipboard.ts,navigator.clipboard 不可用(内网 http)时回退 execCommand;工厂助手、深度洞察、场景文书三处复用。

体验与一致性

  • 帮助页服务端历史明确标注「只留问题与命中数,答案不落库」,避免误以为答案可回溯。
  • 所有新增文案进入中 / 英 / 韩三语包,npm run check:i18n 仍为构建门禁(412 键,ERROR 0 / WARN 0)。

验证

  • 契约测试新增 3 条:mine=1 必须带 created_by 过滤、默认全局视图不得加该条件、第六批前端能力防回退;共 20 passed。
  • 后端全量 856 passed;vue-tsc 与 vite build 通过;干净检出下扩展相关用例自动跳过。

升级影响

  • 接口向后兼容:mine 省略时为原行为(全局留痕,供管理端使用),不改变任何既有响应字段。
  • 无需数据库迁移:使用的是 ext_ai_knowledge_logs 已有的 created_by 列。
  • 部署后需重启后端服务,并重新发布 frontend-h5/dist 静态资源;H5 员工端 nginx 挂载按运维侧节奏处理。

v2.2.31

Choose a tag to compare

@github-actions github-actions released this 10 Nov 08:37

智能中心第五批:预警详情闭环、列表完整性、失败重试与会话自动命名

本次在 v2.2.30 基础上继续完善 H5 员工端智能中心,聚焦「看得全、操作闭环、失败不丢输入」。本批为纯前端与契约测试增强,后端接口零改动,运行期扩展源码无需重启即可生效的部分不受影响。

一、预警详情闭环
新增详情弹层,点击列表卡片即可看到完整信息:严重度 / 维度 / 状态标签、规则码与评分、现象、初步根因、处置建议、关键事实(facts 键值)、首次与最近出现时间,以及缓存的 AI 深度解读。支持强制重新解读(interpret 的 refresh 参数),持有 ext.ai_anomaly.manage 的账号可在弹层内完成确认 / 解决 / 忽略 / 恢复待处理四种状态流转,改完即时刷新列表。

二、列表完整性与导出
后端 /alerts 默认只返回 100 条、上限 500 条,此前前端无感知。现补齐「已显示 N 条 / 单次上限」提示与加载更多(100 → 500 逐级递增),切换筛选条件自动回到 100 条;支持把当前列表导出为带 BOM 的 CSV(Excel 直接打开不乱码)。批量处置条新增「恢复待处理」,与详情弹层的状态流转形成闭环。

三、字段口径修正
后端 _alert_out 输出的严重度字段是 severity,早期前端类型写成 level,导致列表严重度标签一直退化为「信息」。现统一按 severity 渲染并兼容旧 level,契约测试加护栏防止回退。

四、工厂助手:失败重试与自动命名
发送失败时不再把用户消息悄悄丢弃,保留该条并标记失败,可一键重新发送;新建会话时按首句生成干净标题(去换行 / 取首句 / 24 字截断)并自动重命名,避免后端把多行长文本直接塞进会话标题。用户手动重命名仍然优先。

五、工程与验证
中 / 英 / 韩三语各新增 26 键(共 395 键),check:i18n ERROR 0 / WARN 0;vue-tsc 与 H5 build 通过;新增 3 个契约测试(第五批能力防回退、详情接口完整字段、批量恢复清空 handled_at),契约测试 17 passed;后端全量 853 passed。

升级影响:无。本批不改动任何后端接口、数据结构与既有预警状态机,无需数据迁移;发布包中的 H5 静态资源按既有部署流程自行更新即可。若此前未重启过 cenkormes 后端(8500),本次重启时会一并把 v2.2.30 新增的 /h5/ai/extensions 路由与批量处置扩展接口加载进来,关于页显示 v2.2.31。

v2.2.30

Choose a tag to compare

@github-actions github-actions released this 10 Nov 08:23

智能中心第四批:扩展状态预检查、预警批量处置、帮助历史与会话导出

本次在 v2.2.29 基础上继续完善 H5 员工端智能中心,新增 1 个核心只读接口、1 个扩展接口与 4 个页面能力。

一、扩展状态预检查
新增 GET /api/h5/ai/extensions,按登录用户一次返回 ai_assistant / ai_anomaly / ai_employee / ai_insight / ai_scene_reports 的「已安装 / 已启用 / 已授权」三态。智能中心首页直接标注未开通、已停用、未授权并拦截跳转,不再逐页撞 403;接口不可用时自动退回本地权限判断,不阻塞页面。接口只返回三态与权限点,不暴露授权快照、版本、健康状态等管理端字段。

二、预警批量处置
ai_anomaly 新增 POST /extensions/ai_anomaly/alerts/batch-handle,沿用单条处置的状态机与 handled_at 语义,支持一次最多 50 条、自动去重、逐条存在性校验,回传 succeeded / missing 便于前端提示部分成功;仅 ext.ai_anomaly.manage 可调。数据预警页新增多选、全选、批量确认 / 解决 / 忽略与二次确认。

三、帮助页问答历史
智能帮助补最近 20 条提问记录,可点击回填重看、一键清空。历史只保存在本机浏览器,避免服务端全局问答日志跨账号可见。

四、会话导出与回答复制
工厂助手支持一键复制回答、导出当前会话为 Markdown;模型不可用或降级时展示提示文案,不再出现空白气泡。

五、工程与验证
中 / 英 / 韩三语各新增 39 键(共 369 键),check:i18n ERROR 0 / WARN 0;vue-tsc 与 H5 build 通过;新增 5 个契约测试(扩展状态三态、批量处置非法状态、去重与部分成功、路由挂载、能力封装),契约测试 14 passed;后端全量 850 passed。运行期扩展源码与私有仓库 mes-extensions 同步提交。

升级影响:无。本次为新增只读接口、新增批量处置接口与前端交互增强,不改变既有预警状态机与数据口径,无需数据迁移。发布后需在宝塔面板重启 cenkormes 后端(8500),「关于」页版本号才会刷新;H5 静态资源按既有部署流程自行更新。

v2.2.29

Choose a tag to compare

@github-actions github-actions released this 10 Nov 08:03

H5 智能中心第三批:会话重命名、知识库帮助与预警三重筛选

v2.2.28 把后端已有能力接到前端,这一版补齐三个仍缺口的交互:会话可命名、帮助页接上真正的知识库检索、预警能按状态与严重程度过滤。均为功能增强,不涉及业务数据口径变更。

新增能力

  • 会话重命名:工厂助手顶部可对当前会话改名,历史抽屉里每个会话也有内联重命名编辑器(带空值校验、长度上限 120、成功/失败提示)。配套在 ai_assistant 扩展新增 PATCH /conversations/{conv_id},按 id + user_id 校验归属后才更新,空标题直接拒绝,会话不存在返回 found=false 且不执行 UPDATE。
  • 智能帮助:HelpPage 从单一基础帮助升级为检索增强问答。默认调用 ai_knowledge 的 /ask,展示回答、命中文档标题 / 片段 / 相关度 / 检索方式;开关可切「仅检索」走 /search,不调用大模型只看命中片段;顶部显示知识库文档数。扩展未开通、已停用或无权限时自动降级回 ai_assistant/help 基础帮助并给出提示,演示环境仍可用。
  • 数据预警筛选:在原维度筛选之外补状态(全部 / 待处理 / 已确认 / 已解决 / 已忽略)与严重程度两行筛选,与维度组成三重过滤;筛选项由后端 /options 提供,文案全部走三语包。

工程与验证

  • http.ts 补 apiPatch;ai.ts 新增 4 个封装(会话重命名、知识库 search / ask / status),listAiAlerts 支持传入 status 覆盖默认值。
  • 三语包各新增 35 键(共 330 键),npm run check:i18n ERROR 0 / WARN 0;vue-tsc、npm run build 通过。
  • backend/tests/test_h5_ai_contract.py 补 4 个用例:第三批接口封装防回退、重命名归属校验 / 空标题 / 正常更新单测。后端全量 pytest 845 passed;模拟公开仓库干净检出 2 passed / 7 skipped,扩展缺失时自动跳过,不会挂 CI。
  • README「H5 智能中心」章节已同步第三批能力。管理端 AI 入口确认齐全(工作台卡片、全局助手、扩展路由、AI 模型配置),本版不重复建设聚合页。

代码分布说明

与 v2.2.28 相同:backend/extensions/ 为运行期安装的商业扩展(.gitignore 忽略),源码在私有仓库 mes-extensions。重命名接口已同步到该仓库 ai_assistant/router.py 并提交 6b772cd(仅本地提交,未 push),本机运行期目录与私有仓库源文件完全一致。发版包由 git archive 生成,不含扩展源码,扩展仍走原有分发通道。

升级影响

纯前端交互增强 + 一个新增的扩展接口,不改动数据库结构、不改动既有接口返回字段、不改动计费与权限模型;旧版本前端调用本版后端无兼容问题。后端需重启一次让新增的 PATCH 路由生效(扩展代码在运行期目录);H5 员工端 nginx 挂载仍由部署方自行配置,发布包内已含预构建的 frontend-h5/dist。私有仓库 mes-extensions 的重命名修复若要进入其它环境,需单独推送该提交。

v2.2.28

Choose a tag to compare

@github-actions github-actions released this 10 Nov 07:42

H5 智能中心第二批:会话续接、历史与归档能力

v2.2.27 把 6 个 AI 页面做出来并三语化,这一版把后端早就存在、前端没接的能力补齐,顺带修掉两个真实缺陷。

新增能力

  • 工厂助手:会话历史查看 / 切换 / 删除 / 新建;切换后可继续在同一会话里对话,不再每问一句都开一个新会话。
  • 数据预警:健康分、活跃 / 已处理 / 累计事件概览,按维度筛选,单条预警可请求 AI 解读。
  • 深度洞察:维度说明由 /axes 提供,新增历史分析记录列表与报告回看。
  • AI 数字员工:执行日志抽屉、扩展启用状态标签。
  • 场景文书:生成前的只读预览(不落库)、历史文书归档列表 / 详情 / 删除。
  • 智能中心:按权限点给卡片加「未授权」角标并提示,不硬拦,保留页面内 403 兜底,避免演示账号被全挡住。

两个缺陷修复

  1. 多轮上下文断裂:ai_assistant 的 /chat 与 /agent 声明了 conversation_id 却没有使用,每次都新建会话。现改为按 id + user_id 校验归属后续接;会话被删或不属于本人时退化为新建。前端 aiChat 同步把 conversation_id 传下去。
  2. 员工端点「扫描 / 标记已处理」必 403:这两个接口要 ext.ai_anomaly.manage,页面以前无条件渲染按钮。现按 /auth/me 的权限点决定是否显示,并保留 403 兜底。

代码分布说明(重要)

公开仓库本版只含前端、README 与契约测试。backend/extensions/ 是运行期安装的商业扩展(.gitignore 忽略),源码在私有仓库 mes-extensions:会话续接修复已同步到该仓库 ai_assistant/router.py 并提交 b5d9874(仅本地提交,未 push),本机运行期目录也已更新、与私有仓库源文件一致。发版包按既有流程由 git archive 生成,不含扩展源码,扩展仍走原有分发通道。

文档与测试

  • README 增补「H5 智能中心(付费扩展)」章节;三语包新增 47 键(共 295 键)。
  • 新增 backend/tests/test_h5_ai_contract.py:校验前端 ai.ts 引用的 /extensions/* 路径都在后端注册过、新增能力封装不被回退,并用 mock 验证会话归属校验;扩展源码缺失的干净检出会自动跳过相关用例。
  • 管理端 AI 入口已由扩展路由机制提供(工作台卡片 + 全局助手 + 「AI 模型」配置),本版未新建页面。

升级影响:无。

不改数据库结构、不动既有业务数据,不涉及计价、税额、折扣等口径。变化集中在 H5 前端展示与交互;后端仅 ai_assistant 的会话续接逻辑,影响范围限于 AI 助手对话上下文(旧会话仍可正常读取)。扩展未启用或账号未授权时页面仍走既有锁定与引导逻辑。

需要做什么

  1. 在宝塔面板重启 cenkormes 后端:本版改了运行期扩展代码,且 system_versions 在启动时同步,「关于」页才会显示新版本号。
  2. H5 员工端部署按自己的节奏;CI 已把预构建 H5 dist 打进发布包。
  3. 若要让会话续接修复进入其它环境,需自行推动 mes-extensions 的 b5d9874(未 push)。

验证

  • npm run check:i18n:ERROR 0 / WARN 0(三语各 295 键)。
  • npm run check(vue-tsc -b):通过;npm run build:成功,6 个 AI 页 chunk 正常产出。
  • 后端全量 pytest:841 passed(新增 5 个)。
  • scripts/release-check.sh --tag v2.2.28 --impact:由发版脚本自动执行。

v2.2.27

Choose a tag to compare

@github-actions github-actions released this 10 Nov 06:56

H5 智能中心:多语言、权限引导与场景文书接口化

本版把上一轮新增的 6 个 H5 智能中心页面从「能用」补到「可用」:文案全部三语化、未开通与未授权分开提示、交互状态补齐,场景文书改为后端场景清单驱动。

新增能力(4f9b66b)

  • H5 新增智能中心 6 个页面与路由:智能中心入口、工厂助手、数据预警、AI 数字员工、深度洞察、场景文书;客户账号统一拦截 /ai-*。
  • 新增扩展门控 extension-gate.ts,付费扩展未开通、未授权时给出明确引导,不再一律报 403。
  • H5 飞书绑定状态与授权 URL、企微 / 钉钉绑定接口打通(受付费扩展开关控制)。
  • 扩展宿主启动时全量同步权限点,并清理已下线扩展的残留权限点;权限点登记与扩展启用状态解耦。
  • 角色管理、缺陷代码页与中英韩文案同步。

完善(ec72e17)

  • zh-CN / en-US / ko-KR 新增 ai 段 83 个键,6 个 AI 页面硬编码中文全部改用 t();列表改为 computed,切换语言即时生效。
  • 门控文案进语包,新增 showAccessDenied():把「扩展未开通」与「当前角色未授权」分成两种提示,避免误导用户去开通其实已开通的功能。
  • 工厂助手补加载态、锁定态、重试入口与发送中禁用输入;数据预警、数字员工、深度洞察、智能中心 4 页统一加载态 / 空态 / 错误提示 / 对话框文案。
  • 场景文书改为后端 /scenarios 驱动:场景名、描述、字段全部来自接口,按 text / number / select 动态渲染表单并回填预填值,保留交期风险分析的计划编号必填校验;移除前端写死的 3 个场景。
  • ai.ts 补 SceneField / SceneScenario 类型,listSceneScenarios() 返回 fields。

升级影响

对既有数据与业务口径无影响。 本版不改数据库结构、不动任何既有业务数据,不涉及计价、报工、订单等口径;新增内容集中在 H5 前端展示与交互。后端仅调用已有的 /scenarios 场景清单接口。

对既有行为的影响有限。 扩展权限点仍在服务启动时按清单同步,禁用或授权过期的扩展不再因权限点登记而改变启用判断;实际调用仍由 require_extension 逐请求按启用状态拦截。升级后如发现个别扩展权限绑定与预期不符,可在角色管理里重新分配。

需要做什么。 在宝塔面板重启 cenkormes 后端,让 system_versions 在启动时同步,「关于」页才会显示新版本号;随后浏览器强刷。H5 前端产物由 CI 构建并打进发布包,部署节奏可自行安排。

验证

  • npm run check:i18n:ERROR 0 / WARN 0(三语各 248 键,源码静态引用 209)。
  • npm run check(vue-tsc -b):通过。
  • npm run build:成功,449 modules,6 个 AI 页 chunk 均正常产出。
  • scripts/release-check.sh --tag v2.2.27 --impact:由发版脚本自动执行。

v2.2.26

Choose a tag to compare

@github-actions github-actions released this 08 Nov 05:32

客户阶梯价(数量区间定价)

v2.2.24 给了客户一个产品一个价,v2.2.25 让同一产品下不同型号可以各自定价。这一版再往前一步:同一个型号,买多买少价格不同——批发场景的真实报价本来就是这样。

怎么配

管理端「生产 → 客户 → 客户详情 → 可下单产品」里,每个产品多了一张「阶梯价」表格,每个型号也多一张:

数量起点 单价
10 件 12.00
100 件 11.00
500 件 10.00
  • 产品那一张是该产品所有型号共用的通用阶梯;型号那一张只对该型号生效。
  • 留空 = 不配置阶梯,继续按原来的单一单价走。
  • 清空整张表 = 取消阶梯,回落到单一单价。

下单时怎么算

按「越具体越优先」四级解析:

型号专属阶梯  >  型号单价  >  产品通用阶梯  >  产品单价

举两个容易踩的例子:

  • 某型号单独配了 1 件 15.00 / 50 件 14.00,产品通用阶梯是 100 件 11.00。买 60 件时命中 14.00,不会被产品的 11.00 抢走——型号维度更具体。
  • 产品通用阶梯最小档是 100 件起。买 10 件会被拒,因为起订量取的是最小档起点,不是命中档起点;反过来买 300 件时也不会被 100 件的门槛拦住。

三道防错

  1. 价格必须随数量递减。配反了(买得多反而更贵)直接拒绝保存——这种错不会抛异常,只会静默把整单金额算错,等对账才发现。
  2. 单价只从服务端价目表取。请求体里依旧没有单价字段,客户改不了自己看到的价格。
  3. 白名单仍是唯一准入。产品不在客户的可下单范围内,配了阶梯也下不了单。

客户侧

客户 H5 下单页会展示「满 X 件 Y 元/件」的下一档提示,购物车按当前数量实时显示命中单价与小计,凑单到下一档会立刻看到单价变化。


升级影响

对既有数据无影响。 只新增一张空表 customer_price_tiers(迁移 0022,幂等建表),不修改任何现有表结构,不动订单、价目、白名单的已有数据。

对既有行为无影响。 没有配置阶梯的客户,下单链路与 v2.2.25 完全一致:仍然走「型号单价 → 产品单价」,金额算法、起订量校验、币种校验都没变。上线后不配阶梯就不会有任何价格变化。

需要做什么。 在宝塔面板重启 cenkormes 后端,让迁移与新代码生效;重启后浏览器强刷管理端与客户 H5。要启用阶梯价,去「客户详情 → 可下单产品」填数量档位即可。


验证

  • 后端全量测试 835 passed(新增 13 个阶梯价用例:按量选档、起订量取最小档、型号档优先、价格递增被拒、清空回落、白名单兜底)。
  • 真实 HTTP 链路验证(seed_demo/37_customer_tier_pricing_flow.py):型号 A 60 件走型号阶梯 14.00、型号 B 100 件走产品阶梯 11.00,订单金额 1940.00 与库内明细逐行一致;99 / 100 / 500 件分别命中 12.00 / 11.00 / 10.00;9 件被起订量拦截;价格递增配置被拒;清空后目录回落到单一价。
  • 三语语言包门禁通过(admin 4021 键、H5 165 键,中英韩齐平)。

v2.2.25

Choose a tag to compare

@github-actions github-actions released this 08 Nov 04:41

升级影响

  • 需要执行数据库迁移:本版新增 customer_sku_prices 表(Alembic 0021_customer_sku_prices)。升级脚本会自动执行,无需手工操作;该迁移只建新表,不修改、不删除任何现有表与数据。
  • 存量数据零影响:customer_products 的产品级价目、已有订单、订单明细金额全部不变。型号级价目是「可选覆盖」,不配置时行为与 v2.2.24 完全一致。
  • 接口向后兼容:客户 H5 下单接口入参未变,只在 catalog 响应里多了一个 price_source 字段(sku / product / none),旧前端忽略即可。
  • 浏览器需强刷一次以加载新的管理端 JS。

本次改动

客户型号级价目

产品级价目只能做到「同产品所有型号同价」,但同一款工装的 M/L 码、不同颜色、不同规格经常要各定各的价。本版新增型号级覆盖:

  • 定价优先级:型号级(price > 0)→ 产品级 → 未定价拒绝下单
  • 管理端位置:客户管理 → 客户详情 → 「可下单产品」Tab,价目表格下方新增「型号级价目(可选)」表格,逐型号填单价 / 起订量 / 币种
  • 留空即继承:型号级的起订量和币种留空时继承产品级,不是取默认值 1 / CNY。这一点很关键 —— 否则只改型号单价会把「起订 10」悄悄重置成 1,把产品级的起订限制抹掉
  • 清空即回落:把型号单价清空保存等于删除该型号的覆盖,回落到产品级,不会留下 0 元行
  • 表格最后一列显示「生效价 + 来源标签」(型号价 / 产品价 / 未定价),排查价格问题时直接看得见

白名单仍是唯一准入

产品不在客户的可下单范围内时,即使库里已经有型号价,下单仍会被拒。定价解析层单独把关,防止历史脏数据或手工改库绕过。

修复币种白名单不一致

CurrencyCode(Pydantic)、SUPPORTED_CURRENCIES(后端)、前端下拉三处此前不一致,都漏了 HKD / GBP —— 在管理端选中后保存会收到 422 或 400。本版统一为 CNY / USD / EUR / KRW / JPY / HKD / GBP。

验证

  • 后端全量 pytest:823 passed(v2.2.24 的 814 + 9 个新增型号定价用例)
  • 新增用例覆盖:型号价覆盖产品价、起订量继承、币种继承、price=0 清覆盖回落、白名单不被绕过、产品范围重存不清空型号价
  • 真实 H5 链路:型号 A 配专属价 15.50、型号 B 回落产品价 12.50,各下 10 件 → 订单金额 280.00,明细 155.00 / 125.00,低于继承后起订量(10 件)的下单被正确拒绝
  • 两个前端 check:i18n ERROR 0 / WARN 0(中英韩 4000 键齐平)、vue-tsc 与 vite build 通过
  • 迁移实测:新表结构正确(price 非空、min_qty / currency 可空表示继承),customer_products 25 行原数据未动