Commit Graph

53 Commits

Author SHA1 Message Date
Pine 2da34dfc2c fix: MQTT 一次性密码适配 - 禁用自动重连,断开后重新获取凭证
1. reconnectPeriod: 0 禁用 mqtt.js 自动重连(旧密码已失效)
2. close 事件:延迟后重新调用 connect() 获取新凭证
3. error 事件:强制断开并重新获取凭证
4. 确保每次重连都使用新的一次性密码
2026-09-03 10:11:56 +08:00
Pine 1403d5b83a fix: RoleBadge 中 account_type_label 已是中文,不应再用 t() 翻译 2026-09-03 09:43:37 +08:00
Pine 761ee8be14 refactor: 角色组织账号模型重构 - 阶段一
1. 移除 enterprise/provider/government/investor/developer 角色
2. 重写 builtinRoutes/builtinMenu 只保留三角色
3. 删除 portal 下五个孤立页面目录
4. capabilities 写入 JWT,前端统一基于 capabilities 判断
5. AuthUser 增加 account_type/account_type_label
6. Header RoleBadge 优先使用 account_type_label
7. 修复 ChatWindow 自己消息右侧、客服消息区分
8. Operator/Users 增加在线状态
9. 修复多个预存 TS 错误
2026-09-03 00:35:58 +08:00
Pine e78fabf1f6 fix(desktop): 新增 /courses /cert/types /me/certs /hall/tasks/mine 转发路由;_app.py 优先注册 /api/hall/tasks/mine 避免参数路由抢先匹配 2026-09-02 18:58:23 +08:00
Pine dda19e7ce4 feat: 新增关于页面,说明软件许可、版权与权利声明
- 创建设置/关于页面,包含产品信息、许可协议、修改说明、第三方组件声明
- 明确分发形式为二进制桌面应用,不随附源代码
- 内嵌商业许可协议与 Apache 2.0 摘要,满足二进制分发场景的声明义务
- LICENSE/LICENSE_QwenPaw/NOTICE 随 Tauri 打包分发
- 菜单位于智能体设置分组末尾
2026-09-02 18:51:03 +08:00
Pine 3f5a1eec21 style: 侧边栏助理模块增加上边距,避免紧贴顶部
- agentScopedSection 添加 margin-top: 12px
- 简单模式和完整模式均生效
2026-09-02 18:27:34 +08:00
Pine 6a87496a4b fix: 统一桌面端登录与 token 管理逻辑,修复模型列表 401
- PineAgents provider base_url 改为动态使用 DEMO_API_BASE_URL(远程服务器)
- list_provider_info 支持从请求头透传 console 端 JWT,优先用于 /v1/models
- forward/forward_upload 未显式传 auth_header 时自动使用本地持久化 token
- auth_token_store 添加日志,便于排查 token 保存/加载问题
- fetch_models 超时增加到 15s,添加获取结果日志
2026-09-02 18:18:55 +08:00
Pine 9103465506 fix: PineAgents provider base_url 改为动态使用 OPC 服务端地址,修复桌面端模型列表为空
- base_url 从硬编码 http://127.0.0.1:8090/v1 改为 {DEMO_API_BASE_URL}/v1
- 桌面端连接远程服务器时,模型请求不再发到本地 8090
- fetch_models 超时从 5s 增加到 15s
- 添加模型获取日志,便于排查问题
2026-09-02 18:08:29 +08:00
Pine 2aeb656db0 fix(skill): 安装时过滤文件名式名称(SKILL.md),优先取 display_name/title 中文显示名 2026-09-02 15:06:50 +08:00
Pine dc070b46f4 feat(market): 应用市场识别已安装状态、版本对比、更新按钮;已安装显示禁用按钮带本地版本 2026-09-02 14:41:33 +08:00
Pine b2c085a701 fix(plugins): discover_plugins 支持 scoped 命名空间(@scope/name)嵌套目录
根因:discover_plugins 只扫描插件目录的直接子目录 plugin.json,
scoped 插件安装在 @scope/name/ 下,直接子目录 @scope/ 没有
plugin.json 被跳过,导致重启后所有 scoped 插件(@kmu/incubator、
@pineagents/* 等)丢失。

修复:当直接子目录名以 @ 开头且无 plugin.json 时,递归扫描其
下一级子目录。提取 _discover_one / _load_manifest_static 复用。
2026-09-02 14:16:01 +08:00
Pine 66ab84c749 console: 修复应用菜单入口点击无反应(scoped-id 深链接匹配)
- AppCenter 深链接 find 增加 a.entry_page === '/apps/'+appId 兜底
  (URL 段 kmu-incubator 与真实 id @kmu/incubator 不匹配导致应用打不开)
- 侧边栏「应用」分组 i18n: appsGroup(跟随核心.apps-group 分组)
- 新增 scoped-id 深链接单测,12/12 通过
2026-09-01 23:16:53 +08:00
Pine e3a81f6bf5 fix(api): getApiToken fallback reads JWT from user profile when qwenpaw_auth_token missing
桌面端部分构建路径将 OPC JWT 存于 pineagents_user_profile.token,
而 localStorage qwenpaw_auth_token 缺失导致 getApiToken() 返回空、
所有 API 请求无 Authorization -> 401。增加 fallback:仅当 profile.token
为三段式 JWT 时兜底,避免演示/占位 token 混入请求头。
2026-09-01 21:42:52 +08:00
Pine dcdcdeaad5 refactor(console): 工作分组菜单重构 + 五大工作页 + 工作台重做
菜单(工作):工作台/大厅/任务/服务/岗位/人才/财税(合并税务申报)/政策/政务/通知/信用;
移除 智能体助手、服务市场(旧)、消息中心、个人资料(路由保留兼容)

- 任务页:接单中/我的投标/被指派/我发布的 四 Tab(做单/交付/完成操作 + 发布者接单投标计数)
- 服务页:我下单的/我收到的/我发布的服务 三 Tab(订单全链路流转 + 服务下架)
- 岗位页:我发布的岗位 + 收到的投递(聚合展示)
- 人才页:我的档案编辑 + 我的沟通(站内会话列表 + 聊天抽屉 10s 轮询)
- 财税页:收支流水 + 税务申报 合并(Segmented 切换)
- 工作台重做:待办横幅(进行中任务/待接订单/待评标) + 六宫格入口 + 月度收入 + 政策速览
2026-09-01 21:35:54 +08:00
Pine 701624ca56 fix(console): Opc/Dashboard useAuth 导入指向真实模块 auth/guards
src/auth 目录不存在 context,useAuth/RequireRole 均在 auth/guards.tsx;
修复 import 解析失败导致 vite dev/build 中断(与 RequireRole 合并为一行)
2026-09-01 21:29:05 +08:00
Pine 4033647628 feat(console): 主菜单栏插件/应用菜单聚合到自动'应用'分组(算力分组之后)
- store.ts: menuRegistry 对 primary.portal 的非原生游离顶层菜单项
  (非 builtin、非分组、无有效 parentId)自动聚合到 core.apps-group
  '应用' 分组,order 306 紧跟算力分组(core.compute-group 305)之后;
  分组不带 roles → 对所有登录账号可见
- hostExternals.ts: registerRoutes 的 legacy 菜单落点从
  primary.settings/plugins-group 改为 primary.portal(由聚合收进'应用'分组),
  删除 ensurePluginsGroup
- 更新 hostExternals.compat.test 断言 + 新增 menu.test 聚合用例(20/20 通过)
2026-09-01 21:06:51 +08:00
Pine 0ff03c1d64 fix(frontend_plugin): 支持含斜杠的 scoped 插件 id 的静态文件服务
市场安装的 app/插件 id 可为 @scope/name 形式(如 @kmu/incubator)。
原路由 /{plugin_id}/files/{file_path:path} 会把 @kmu/incubator 按 '/' 拆段,
导致 get_loaded_plugin('@kmu') 未命中 → bundle 404 → 前端路由未注册 →
应用中心提示该应用尚未加载,请先从侧边栏打开一次后重试。

改为 /{rest:path} 捕获整个剩余路径,按 '/files/' 标记拆分 plugin_id 与 file_path,
兼容简单 id(qwenpaw-creator)与 scoped id(@kmu/incubator);
路径穿越防护仍由 serve_plugin_ui_file 的 is_relative_to 承担。
2026-09-01 20:36:24 +08:00
Pine c98899bcd4 fix(market): 修复桌面端云超服安装链路(技能 source_url 补全完整 bundle URL;插件安装对市场相对源内部直连下载,避免 HTTP 自请求环回超时) 2026-09-01 18:20:17 +08:00
Pine 65fa9b3a11 feat(task): 载体端任务管理页面(平台级任务+本载体下架/上架,不可编辑)+pineagents 转发
- console: Carrier/Tasks.tsx 新增载体端任务管理页(列表+下架/上架 Popconfirm,无编辑入口)
- builtinRoutes/builtinMenu: core.car.tasks 路由与菜单(任务管理,order 25)
- api/modules/auth.ts: getCarrierTasks/hideCarrierTask/unhideCarrierTask + CarrierTaskItem 类型
- pineagents opc.py: /carrier/tasks、/carrier/tasks/{id}/hide|unhide 纯转发
- 清理上轮遗留 unused import(HallTasks authApi、Dashboard Progress)
2026-09-01 14:44:21 +08:00
Pine aa79f0a4d6 fix(market): 清除技能/插件/官方市场演示数据残留,全部改走 server-core 真实接口
- 删除 _DEMO_SKILLS、_PINEAGENTS_DEMO_PLUGINS、_PINEAGENTS_DEMO_OFFICIAL_PLUGINS
- Operator Dashboard/DataStats 删除硬编码统计,改真实接口聚合
- 修复下载代理 httpx 未 follow 302;端到端验证三市场返回真实商品、下载 sha256 一致
2026-09-01 11:22:34 +08:00
Pine c82d4a47a9 feat(task): 任务系统统一合并到大厅,删除独立任务/独立社区
- 删除旧任务广场 /opc/square(TaskSquare.tsx)与独立社区 /opc/community 路由;社区保留为大厅 tab(OpcCommunityView)
- HallTasks 抢单/投标改走 hallApi(/hall/tasks/grab|bid);hall.ts 新增 grab/grab-by-code/bid/doing/complete/deliver/recommend
- MyTasks 改真实聚合展示(承接/投标、交付走 /hall/tasks/deliver)
- Dashboard activeTasks 适配真实任务状态(移除无真实来源的进度圆环)
- auth.ts 删除旧 /opc/tasks API(getOpcTasks/grabOpcTask/bidOpcTask/deliverOpcTask),OpcTask 类型扩展真实字段
- pineagents 新增 hall.py 转发 /hall/* 与 /community/* 到 server-core;删除 /opc/tasks 失效代理
- 演示数据清除(上一轮):技能/插件/官方市场改真实接口、Operator Dashboard/DataStats 去硬编码
2026-09-01 11:22:28 +08:00
Pine 8faa207ccb feat(console): 桌面端多轮功能更新(认证/品牌/多语言/算力中心/大厅细节) 2026-08-31 23:43:00 +08:00
Pine 213eb1c806 feat(market): 桌面端市场适配(云超服实时源 + 定价购买/小程序码支付/状态轮询/已购校验 + 安装包下载代理) 2026-08-31 23:42:53 +08:00
Pine eb39352759 refactor(console): 大厅收敛为 Tab 容器 + 服务订单/发包方管理
- Hall.tsx 改为 antd Tabs 容器:任务/人才/岗位/服务/社区 五 Tab 页内切换;
  菜单收敛为单一「大厅」入口(/opc/tasks 等旧路由保留兼容)
- HallTasks:详情抽屉增加发包方管理面板(投标列表定标、报名选定、取消任务)
- HallServices:咨询升级为预约下单(预约时间+联系方式+需求);新增我的订单弹窗
  (买/卖双视角,接单/婉拒/开始/交付/确认完成/取消全链路)
- 五个厅页面拆分 View 组件供 Tab 容器复用(default 导出保留为独立页)
2026-08-31 23:22:23 +08:00
Pine a925e8f91f feat(console): OPC 大厅与社区(四厅 + 帖子流 + 实体载体)
- api/modules/hall.ts:/hall/* /community/* 全量请求封装
- Hall.tsx 大厅 Hub(四厅统计卡 + 社区入口)
- HallTasks.tsx 任务大厅:模式筛选/发布任务弹窗/详情抽屉(抢/投/报名,报名含名额与已报名态);旧 TaskSquare 保留为 /opc/square 兼容路由
- HallTalents(OPC/求职者 + 档案抽屉)、HallJobs(筛选 + 详情 + 投递)、HallServices(发布 + 详情 + 咨询)
- Community.tsx:线上社区(话题筛选 + 发帖 + 点赞)与实体社区(载体列表/详情/关注/申请入驻)
- 菜单新增 大厅/人才大厅/岗位大厅/服务大厅/社区,任务广场更名任务大厅
2026-08-31 22:58:58 +08:00
Pine 1dcb4816d8 chore(brand): 默认后端指向 opc.pinesound.cn + 更新品牌标识资源
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-30 22:32:05 +08:00
Pine a610c22f45 feat(compute): 算力中心充值(小程序码支付)与转发端点
- PineAgents 供应商按登录态注入 JWT(登出移除)
- 本地后端新增充值转发(packages/orders/pay-params/status/orders)与算力余额路由
- console 充值弹窗:套餐/自定义金额→小程序码→轮询到账;余额卡加充值入口;i18n 文案

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-30 22:32:04 +08:00
Pine a88cfebf8a feat(auth-proxy): 补齐短信/扫码登录转发端点(send-code/phone-login/wx-qr/mp-qr等11个) + status透传login_modes + forward支持params 2026-08-28 17:40:55 +08:00
Pine 219136797f feat(console): 品牌统一云超服OPC + 扫码登录倒计时/失效蒙版
- branding.ts: name=云超服OPC + fullName=云南省超级个体服务平台;登录页标题/logo alt 同步
- 扫码登录组件:真实倒计时(截止时间驱动)+失效模糊蒙版+手动刷新(失效即停轮询,绝不自动刷新)
2026-08-28 17:28:20 +08:00
Pine e0017f3a9a brand: 顶栏/登录页/favicon/官方logo 统一使用 logo.png 2026-08-27 19:53:45 +08:00
Pine b300c682a8 feat(profile): 桌面端账户管理「绑定小程序」—— 小程序码+扫码确认绑定
- 小程序行加「绑定」按钮 → Modal(bind-start小程序码, 轮询确认); auth.ts 加 bindMpStart
2026-08-26 12:48:17 +08:00
Pine f0ad772b92 feat(profile): 桌面端账户管理加登录绑定 —— 绑定/解绑 手机号·小程序·微信
- Account 页加「登录方式绑定」: 绑定手机号(验证码), 解绑 手机/小程序/微信; 展示绑定状态
- auth.ts 加 bindPhone(合并返新令牌)/unbind; UserProfile 加 phoneBound/wxBound/wxMiniBound
2026-08-26 12:37:19 +08:00
Pine 2f108b5d60 feat(auth): 登录页支持小程序码(qr_image)渲染 —— 微信扫码自动拉起小程序 2026-08-26 12:01:59 +08:00
Pine 1f75cf6362 feat(auth): 登录页支持四种登录(账号/短信/微信扫码/小程序扫码)
- Login 页改 antd Tabs 四方式,PollingQr 用 antd QRCode 渲染+轮询 wx-qr/mp-qr
- auth.ts 加 sendCode/phoneLogin/wxQrStart/wxQrPoll/mpQrStart/mpQrPoll
2026-08-25 22:47:45 +08:00
Pine 0a5f4dd743 feat(models): PineAgents 模型卡市场风重构(含描述/价格/分类/免费徽标)
- ModelInfo 前端类型镜像后端新增字段 description/price/category/tags。
- PineAgentsModelCards:卡片改为市场风(品牌图标+名/id、描述 2 行、分类/能力/标签
  chips、免费徽标、价格行、启用开关+管理),网格自适应铺满整行(minmax 190px),
  勿套 providerCards(minmax 400px) 网格。
- index.module.less 新增 pineModel* 系列类,含 dark 与移动端覆盖。
- 新增 PineAgentsModelCards.test.tsx(描述/价格/分类/免费/降级/管理/开关),5 passed。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-25 18:03:30 +08:00
Pine eee2f6547b feat(pineagents): 模型静态展示目录(描述/价格/分类/标签) + ModelInfo 扩展
- ModelInfo 追加可选 description/price/category/tags(默认为空,不破坏现有构造,经
  model_dump + response_model 自动透传前端,无需改序列化)。
- 新增 providers/pineagents_catalog.py:按模型 id 的静态展示目录(覆盖 Qwen/DeepSeek/
  GLM/Kimi/MiniMax/MiMo/ModelScope 等) + enrich_catalog() 在拉取结果上回填;未命中
  优雅降级为仅名+能力标签,不修改调用参数。
- provider_manager.list_provider_info:pineagents 拉取成功后回填目录元数据。
- 新增 tests/test_pineagents_catalog.py(命中/免费/未命中/空/大小写),6 passed。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-25 18:03:18 +08:00
Pine 4f665a6034 fix(models): 修正 JSX 注释位置(嵌套注释置前致 babel 解析失败)
PineAgentsModelCards 的整行容器保留,注释移到 div 内部,避免三元分支
括号后直接跟 JSX 注释表达式触发 parseParenAndDistinguishExpression 报错。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-25 17:40:51 +08:00
Pine 89e10182f9 fix(models): PineAgents 模型卡不再包 minmax(400px) 网格
PineAgentsModelCards 是单个自适应网格组件,却被外层 styles.providerCards
(300px: repeat(auto-fill,minmax(400px,1fr))) 当作一个网格单元,仅占第一个
400px 单元格,导致模型卡只在页面第一列显示、其余列留空。

改为整行 width:100% 普通容器,交由其内部 minmax(170px) 自适应网格铺满。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-25 17:37:34 +08:00
Pine 628671883a fix(models): 模型卡网格强制全宽(去类里 minmax 400px 影响), 一行自适应多张
- 容器改纯内联 grid auto-fill minmax(170px,1fr) + width:100%, 不再受 providerCards 类 400px 列宽限制
- 保证大屏铺满一行多张, 不右侧留空
2026-08-25 17:33:37 +08:00
Pine 5d5f4b07ff feat(models): 桌面端模型卡紧凑化+一行多张(自适应网格)
- 模型卡: 缩内边距/高度, 加彩色首字母图标+名称+id, 能力徽标, 紧凑底部(启用/管理)
- 容器改 CSS Grid auto-fill(minmax 160px), 一行自适应多张, 去掉固定宽
- 解决卡片大而内容小/单行一张
2026-08-25 17:30:15 +08:00
Pine 729c7d86dc feat(opc): 客户端标记 X-Client:desktop(来源零推断)
- 所有 API 请求带 X-Client:desktop, server-core /auth 据此识别 source=desktop
2026-08-25 16:32:25 +08:00
Pine 6b5cda6a73 feat(opc): 算力中心页加「我的用量」(余额+本月按模型 token/费用)
- Compute.tsx 新增用量卡片: 余额/已用(¥), 总token/费用, 按模型表(请求/token/费用, quota→¥)
- authApi 增 getOpcComputeBalance/Usage; i18n zh 补充
2026-08-25 14:41:07 +08:00
Pine c033e3f824 feat(opc): 算力中心 /opc/compute 转发 server-core(修复 base/模型/令牌)
- 新增 GET /opc/compute/{base,models,prices,tokens} + POST /opc/compute/tokens + DELETE /opc/compute/tokens/{id}
- 转发到 server-core(DEMO_API_BASE_URL) 并透传 JWT; 修复 OPC 桌面端算力中心页数据与令牌创建/删除(此前 404)
2026-08-25 14:03:40 +08:00
Pine 119c6d0185 feat(models): 桌面端 PineAgents 页拆平成模型卡片(admin 模型)
- 不再显示 PineAgents 提供商, 直接渲染其支持的每个模型为卡片(后端已改为算力中心 admin 模型)
- 每卡片: 模型名称/能力标签 + 「启用」开关(本地启用态) + 「管理」(打开该供应商模型管理)
- 仅影响 PineAgents 标签页; 云端/本地自定义供应商不动
2026-08-25 13:58:09 +08:00
Pine 81d52ffee9 refactor(models): 删除 PineAgents 旧的硬编码模型提供逻辑(迁至算力中心)
- PROVIDER_PINEAGENTS models=[] 不再硬编码 DEEPSEEK_MODELS; 模型源=算力中心 admin 模型(fetch_models 拉 server-core /v1/models)
- DEEPSEEK_MODELS 仅保留给 DeepSeek 云供应商(仍保留); 云端/本地自定义供应商不动
- 与 list_provider_info 的 fetch_models 并存: 桌面端 PineAgents = admin 模型
2026-08-25 13:57:24 +08:00
Pine 2759e138b0 feat(models): 桌面端 pineagents 提供商动态拉取算力中心 admin 模型
- list_provider_info 对 pineagents 调 fetch_models()(server-core /v1/models=admin 模型), 成功替换其模型列表, 失败回退静态
- 桌面端模型源迁至算力中心(admin 模型), 不再展示硬编码 DEEPSEEK 4 个
2026-08-25 13:52:34 +08:00
Pine bfd5face4c feat(opc): 用户端算力中心页面(令牌/基础API/可用模型/价目)
- 新增 pages/portal/Opc/Compute.tsx: 基础 API 地址(一键复制)+我的令牌(创建/复制/删除)+可用模型+模型价目
- 注册路由 core.opc.compute(/opc/compute) + 侧边菜单(算力中心) + i18n(nav.portal.compute + role.opc.compute*, zh/en)
- authApi 新增 getOpcComputeBase/Models/Prices/Tokens + create/deleteOpcComputeToken, 调 server-core /opc/compute/*
2026-08-25 12:21:43 +08:00
Pine f44b12f6b3 feat(console): OPC 任务广场升级 - 模式标签/发起人信息/空态,同步中英文案(merge 自旧仓库 77de732d) 2026-08-24 14:50:22 +08:00
Pine 24a717b0ad docs: 文档、测试与项目配置 2026-08-23 22:44:18 +08:00
Pine 7b0fa26399 build: 部署编排与打包脚本(deploy/scripts/Docker) 2026-08-23 22:44:06 +08:00