18 Commits

Author SHA1 Message Date
0335083b71 fix(wallet): 充值登记显示层——msg带回余额/累计充值前后值(登记即见随之改变)+弹窗改VScrollPanel填充防按钮溢出不可点+弹窗放大 2026-09-15 17:23:12 +08:00
a23a0193ab feat(wallet): 供应商账号列表「充值登记」工具栏——选中账号行→弹窗输金额→balance+=充值(复用recharge_account:流水+total_recharge+治理缓存刷新),充值后列表自动刷新,机构隔离同待办弹窗 2026-09-15 16:33:07 +08:00
6d0ecc5d21 feat(wallet): 账号钱包门禁+会话粘性轮询+出账后扣减+余额不足待办(2026-09-11用户定夺)——①门禁:balance<阈值(params缺省5元)从轮询集剔除,全剔除报可行动错误;②粘性:同会话同模型固定账号(Redis llm_sticky TTL1h滑动续期)省上游缓存钱,粘性失效自动重选,session_id经payload._session_id透传;③轮询:跨会话INCR取模替代余额加权;④扣减:产品记账成功后按流水account_id扣调用账号钱包(supplier_cost),与cost回填同事务原子,cost≠0幂等跳过防重置重跑重复扣,允许透支为负;⑤待办:状态派生provider(充值到账自动消失天然单发)给属主机构operator角色(params可配,按.后缀动态匹配)+详情弹窗内直接充值 2026-09-11 15:29:40 +08:00
69fe362dde feat(trace): 调用原文追踪「查看IO」前端闭环+按项目费用页(2026-09-10定夺落地)
- json/llm_call_trace_list.json: noedit只读列表;exclouded隐藏id/req_path/resp_path/org_id;
  url/note加宽;kind/method内联枚举(含gen同步生成,此前草稿引用的get_llm_kind_options.dspy不存在);
  删color_mapping(bricks全库0消费的死配置);toolbar查看IO+binds urlwidget→PopupWindow(85%)
  url不带?id=${id}$——生成期ArgsConvert会eval成<built-in function id>垃圾串,
  行数据id经_add_event_data自动并入params(dapi/llmage生产同款)
- api/llm_call_trace_io.dspy: 薄代理(get_user门禁+get_userorgid机构隔离)→env.llm_call_trace_io;
  修草稿4处实锤bug:get_user未await/user.get当dict/sor块外使用/返回PopupWindow套娃
- init.py: llm_call_trace_io读表+同批次+llm_usage上下文(块内读全拷dict)→读文件
  (trace.trace_root realpath前缀校验防穿越)→TabPanel三tab(摘要Html+pre escape防注入/
  请求/响应CodeEditor readonly mode=null);单侧150K截断提示盘上路径;env注册
- api/llm_project_cost_query.dspy: 改{total,rows}契约接Tabular data_url(PageDataLoader);
  wwwroot/llm_project_cost/index.ui: InlineForm(date_from/date_to/status)+Tabular;
  script内getWidgetById起点bricks.app(弹窗DOM挂body下,app.root搜不到)
- card_popup.dspy: titles加llm_call_trace;新增page_targets白名单挂按项目费用页;
  index.ui挂两张卡片(调用原文追踪/按项目费用)
- accounting.py: _maybe_cleanup_traces每日一次接cleanup_expired(trace.py铁律3
  文档承诺worker每日调但循环没接,补齐);放抢锁前(清理幂等多进程同日无害)
- scripts/load_path.py: 注释说明/**通配已覆盖新页面(rbac check_roles_path前缀匹配)
- models/mysql.ddl/README/design-spec: 9张表同步(kind补gen枚举;3.9节;F19/F20)
- scripts/test_llm_call_trace_io.py: stub harness 22断言全过(隔离/穿越/转义/截断/每日门控)
- .gitignore: wwwroot/llm_call_trace/生成目录不入库
2026-09-11 14:58:21 +08:00
427cd7cbc1 feat(usage): usages全量不截断为计费唯一事实源(m0021删token冗余列)+llm_call_trace上下行原文追踪+project_id按项目统计费用(2026-09-10) 2026-09-11 14:17:40 +08:00
bd732bf35f feat(ui): 模型治理卡片全部弹窗化(card_popup白名单)+模型注册弹窗加自动配置(auto_config_popup:API/定价链接或正文→内部助手全链)与上线检查(online_check_popup:选模型→真实调用+记账检查+状态复核→告知结果);删下方llm_content展示容器(2026-09-07用户定夺) 2026-09-07 13:24:31 +08:00
34ef256fe6 feat(llm): 供应商账号改为供应商CRUD子表(llm_account_by_vendor)——弹窗进入只显示/处理选定供应商账号;账号归属服务端守卫(vendor_id不可改/跨供应商禁删);删独立账号列表页(index.ui卡片同步移除) 2026-09-06 21:51:05 +08:00
8e32cb85f3 feat(llm): 会话agent可选模型收窄为对话能力t2t/i2t/m2t+能力字典加m2t(2026-09-06用户定夺)
- selection.CHAT_CAPS=('t2t','i2t','m2t') 作为会话形态能力白名单唯一事实源
- model_options/resolve_model_name 加 capabilities 参数('chat'哨兵),
  IN 列表展开占位符(sqlor传list会崩),capability 空串按 t2t 归一(COALESCE+NULLIF)
- chat_inference 同步门禁从「只认 t2t」放宽到 CHAT_CAPS——
  实测根因:测试库 6 个机构策略主模型全是 qwen3.8-max(i2t),
  16:28 已产生 FAILED「capability mismatch: i2t != t2t」,会话agent选它必挂
- m2t 入字典四处同步:种子 init/data.json + 端点注释 models.dspy
  + design-spec §6 能力表(+ 提取提示词在 pipeline-platform)
2026-09-06 19:32:59 +08:00
671d320d59 feat(llm): status统一枚举SUCCEEDED/FAILED/PENDING/RUNNING+非SUCCEEDED记账状态NULL;llm_api_profile加method独立列(2026-09-06用户定夺)
- llm_usage.status 各家归一枚举(其他=recharge对账行);accounting_status仅SUCCEEDED行写created,其余NULL不冒充待记账
- govern_settle失败行不再挂created;充值行不写accounting_status
- 出账循环拾取条件 status='SUCCEEDED';面板/概览统计同步改
- llm_api_profile.method GET/POST独立列(默认POST),运行时读列决定动词;查询步骤存量兼容回退解析request_template.$.method
- 字典llm_usage_status更新五枚举;README同步
2026-09-06 17:15:40 +08:00
c3cf1a3a4f feat(llm): 能力字典加r2v(参考生视频)/i2i(图生图)——种子+models.dspy端点注释两处同步 2026-09-06 09:30:12 +08:00
2ee4b7893c feat(docs): /v1/docs端点——四语言API文档(中英日韩)+index.ui按_lang分发ApiDoc(照sage docs同款逻辑) 2026-09-05 15:43:20 +08:00
beef2d81a2 feat(capability): 能力枚举补i2v图生视频——字典种子+模型列表注释;修复LLM提取时图生视频被迫塞进t2v的静默错分类 2026-09-05 10:55:13 +08:00
f965e4b4d6 refactor(llm_model): 删除价格/成本四字段(price/cost input/output)——定价统一走ppid定价平台,记账改路后为死库存;结算cost恒0,展示/列表/迁移同步清理 2026-09-04 21:02:58 +08:00
611008cb38 feat(llm): 统一推理API(v1/chat/completions+v1/models按能力分类照llmage)+模型选择收敛层selection(下拉/引用解析唯一入口)+旧表迁移脚本;agent调用经llm_bridge HTTP自调用收敛至此 2026-09-04 17:03:48 +08:00
d5dd9f4be2 feat(llm): profile表补path/headers自含字段;model表补query_profile_ids后续步骤模板链(异步模型提交→查询→[下载]);CRUD接helper+placeholder说明 2026-09-04 14:00:15 +08:00
3c3d6a35d3 feat(llm): 端点目录支持一行一URL输入(归一化+中文校验提示);账号APIKEY可配置(加密存储/掩码守卫/空=不改)+机构自动注入+endpoint_ids逗号兼容;CRUD接模块helper薄封装 2026-09-03 17:36:57 +08:00
dd19641175 fix: endpoint_pref字典parentid缩短为llm_ep_pref——组合键超appcodes_kv.id 32字符限制 2026-09-01 17:31:24 +08:00
660ad21365 feat(pipeline-llm): 模型治理模块v1.0.0 — 供应商/端点目录/账号钱包/模型注册/组织容错策略/限额限流/双维度记账
- 8张llm_前缀表(手写幂等DDL): vendor/account/model/api_profile/org_policy/org_quota/user_quota/usage
- gateway.py 门禁链: 限流→限额→策略选模型(主备容错)→账号×端点轮转(偏好过滤+余额加权+冷却避让)→预授权-结算
- api_key AES单层加密(非RC4,盐不对称不可解); 限流Redis分钟窗口(db4) fail-open
- 双维度记账: 一次调用同行记cost(账号侧)+charge(组织池侧); 充值=recharge行
- CRUD+index.ui 8卡片导航+总览; appcodes字典5组; 设计规范+30测试用例
- 策略即开关: 机构无策略→__LEGACY__走旧llm表(向后兼容零改动)
2026-09-01 17:27:17 +08:00