Pine
|
06ad2b0fc1
|
feat(admin): 用户管理加来源/认证/所属/账号类型/微信绑定/算力额度列+分类编辑
- 列表列: 来源/认证/所属(独立OPC|园区)/账号类型/微信绑定/算力额度
- 「分类」弹窗: 认证状态/账号类型/所属/园区名 编辑, 调 /admin/users/{id}/classification
- UserRow 类型补全部新字段; tsc+build 通过
|
2026-08-25 16:28:19 +08:00 |
|
Pine
|
21dcf2ea41
|
feat(compute): 引擎用户页加载即对账同步+同步按钮
- 挂载时自动调 /admin/compute/sync-users 对账(平台全用户→引擎) 后刷新列表
- 增「同步用户」按钮+同步结果提示
|
2026-08-25 15:31:34 +08:00 |
|
Pine
|
bde861910e
|
feat(compute): 用量统计页(全局概览+按模型费用分布)
- 新增 stats.tsx: 总请求/输入输出token/总费用/模型数 KPI + 按模型费用分布表(quota→¥)
- compute 分区加「用量统计」页签; 调 /api/stats/overview + /api/stats/by_model
|
2026-08-25 14:41:08 +08:00 |
|
Pine
|
29ad1f5a95
|
fix(compute): 能力检测失败/空模型时在对话框提示,便于定位
- detectCaps 增加 try/catch; 空模型/失败置 err 提示
|
2026-08-25 13:24:26 +08:00 |
|
Pine
|
02d390646e
|
feat(compute): 模型能力检测改为手动按钮(去掉失焦自动)
- 移除 actual_model 失焦自动检测; 能力区加「检测支持能力」按钮, 点击按当前模型预填能力
|
2026-08-25 13:19:58 +08:00 |
|
Pine
|
1948434110
|
feat(compute): 模型页选中模型自动检测能力并预填
- 新增模型表单: 实际模型失焦自动调 /model/capabilities 预填视觉/图像/音频/视频
- 能力复选框(视觉理解/图像/语音/视频); 列表改'能力'汇总徽标列
|
2026-08-25 13:18:20 +08:00 |
|
Pine
|
81f1cb496a
|
feat(compute): 通道编辑表单 mosdel字段加「从 API 获取模型」按钮
- 支持从供应商 API 拉取模型列表,选择后自动填入 models(需先填 Base URL+Key)
|
2026-08-25 12:54:16 +08:00 |
|
Pine
|
24f8ad1eda
|
fix(compute): 通道列表「编辑」置 creating=true 打开对话框
|
2026-08-25 12:48:56 +08:00 |
|
Pine
|
4451d48cad
|
feat(compute): 通道表单新增「支持查询余额」开关+测试查询模型列表
- channel 新增/编辑表单加 can_query_balance 复选框(默认开启, 关闭则更新余额跳过查询)
- 测试通过后自动把上游模型列表写回通道 models(查询模型列表)
|
2026-08-25 12:45:44 +08:00 |
|
Pine
|
ee79b12156
|
fix(compute): 通道测试/更新余额读真实结果(data.ok/message/latency)
- testRow/balanceRow 改用 data.ok + data.message + data.balance 判断, 避免外层 success 恒真的误判
|
2026-08-25 12:37:55 +08:00 |
|
Pine
|
c1c7168dfa
|
feat(compute): 模型创建改关联通道(供应商=通道)+移除重复供应商页签
- models: 创建/编辑改选「所属通道(供应商)」, 实际模型取该通道支持的 models(datalist 建议+可自定义); 保存时把模型挂进通道 models 保证可服务
- 撤下 metadata vendors 页(供应商=通道, 避免菜单歧义): 删除 vendors.tsx, 通道页签合并为「通道 / 供应商」
- blank 简化(vendor_id 承载通道 id)
|
2026-08-25 12:34:44 +08:00 |
|
Pine
|
b8bb1ce38b
|
feat(compute): 供应商可编辑+模型创建优化设计
- vendors: 新增编辑支持, 表单含「支持的模型」清单(逗号分隔, 创建模型时可选)
- models: 创建改「选供应商→从该供应商支持模型选实际使用模型」(datalist 建议+可自定义); 完整配置: 模型名称/模型标识/实际使用模型/所属分组/计费单位/输入/输出/缓存命中价格/视觉支持/标签/描述/状态
- 列表新增实际模型/分组/输入输出价/视觉列; 供应商下拉+模型建议经 computeProxy 拉取
|
2026-08-25 12:32:12 +08:00 |
|
Pine
|
aaedbfe3d4
|
feat(compute): 算力中心管理页(镜像 new-api 契约,经 server-core 代理)
新增 useCompute.ts(分页+computeProxy) 与 11 个子页:总览(ping/开通算力)、通道、供应商、模型、分组(prefill)、令牌、用户(只读镜像)、使用日志、兑换码、钱包/充值、订阅、系统设置(option)。
- 通道/模型/供应商/令牌/兑换码 完整 CRUD;分组/预填分组;订阅套餐开关;option 键值编辑
- 契约: {success,message,data} 包装, 分页 {items,total,page,page_size}, 通道创建嵌套 {mode,channel}
- 引擎用户页改只读(用户最终与平台一致,生命周期自动同步)
|
2026-08-25 12:08:35 +08:00 |
|
Pine
|
35623354f7
|
feat(算力中心): 新增 computeProxy() 经 server-core 透传 compute-engine 管理 API
- computeProxy(method,path,body,params) 调 /admin/compute/proxy/<path>
- 不抛错(new-api 非2xx),解包 {success,message,data};okData() 取 data
- 供后续通道/模型/分组/令牌/日志等管理页复用
|
2026-08-25 01:53:40 +08:00 |
|
Pine
|
45c5598da6
|
feat(园区端): 园区管理页新增「视频识别」Tab(per-tenant)
- vision-tab: 配置本园区识别服务地址(可局域网),读写 /park/api/vision/config
- park.ts 增 getVisionConfig/setVisionConfig(tenantId)
- 移除运营端全局 /vision-config 页,改由园区端 per-tenant 控制
|
2026-08-25 01:53:12 +08:00 |
|
Pine
|
005c3fda26
|
feat(园区端): 按连接码绑定大屏 + 状态显示
screens-tab 增「按连接码绑定」(输入大屏 8 位码→绑定+命名)、状态列(已绑定/未绑定);
parkApi 增 bindScreenByCode;ParkScreen 类型补 status/tenant_id。npm run build 通过。
|
2026-08-24 20:13:56 +08:00 |
|
Pine
|
d31ad5ba14
|
feat(平台端): 账号创建角色改中文三类 — 子账号/OPC/园区账号
新增账号「账号类型」下拉改中文:子账号(平台端/operator)、OPC 账号(其它端口通用/opc_member)、
园区账号(园区端/用于绑定园区管理员/carrier),附类型提示;未选择项不显示历史端口。npm run build 通过。
|
2026-08-24 19:06:08 +08:00 |
|
Pine
|
560641eb27
|
fix(平台端): Tenant 类型补 status 字段
|
2026-08-24 18:54:38 +08:00 |
|
Pine
|
08336c7d76
|
feat(平台端): 园区列表支持 状态显示/禁用启用/级联删除
园区管理每园显示状态(启用/已禁用);可【禁用】(不删,禁止园区端登录/data)【启用】【删除】;
删除为联级:后端 delete_tenant 一并删 企业/知识库/屏幕 + 引擎缓存;禁用后 /park/auth/login 返回 403。
npm run build 通过。
|
2026-08-24 18:54:24 +08:00 |
|
Pine
|
75ce902448
|
feat(平台端): 园区创建不建账号 + 绑定已有账号为管理员
园区管理:创建园区(名称/两段式简介,无账号);列表每园「绑定管理员」— 从已有平台账号选择绑定(展示 admin_username/解除绑定)。
园区端登录 = 该绑定账号。parkApi 增 bindAdmin/unbindAdmin。npm run build 通过。
|
2026-08-24 18:46:15 +08:00 |
|
Pine
|
867cd6fde0
|
fix(平台端): usersApi.create 允许 password 字段
|
2026-08-24 18:43:14 +08:00 |
|
Pine
|
c07297ed45
|
feat(平台端): 完整用户管理 CRUD — 新增/编辑/删除/启禁用 + 端口角色选择
UsersPage 增 新增/编辑 对话框(账号/昵称/端口角色/子角色/初始密码,编辑锁账号)、删除、启禁用;
usersApi 增 update(PUT)/remove(DELETE)。后端 /admin/users 增 PUT/DELETE。npm run build 通过。
|
2026-08-24 18:42:57 +08:00 |
|
Pine
|
d8ef5b94eb
|
fix(平台端): 平台登录即显示完整管理菜单(navForRole 平台恒operator) + 去除副屏
- navForRole:平台(authed && !园区)恒按 operator 返回完整导航(总览/平台管理/内容与业务+园区管理),
不再因角色未加载或被当作园区而只显示园区管理(修复须刷新才加载其它菜单)。
- 屏幕管理/大屏控制台:去除「主屏/副屏」角色,仅主屏;不再管理/选择副屏。
|
2026-08-24 18:42:04 +08:00 |
|
Pine
|
539e2824b5
|
feat(平台端): 完善管理系统 — 新增 资讯/任务审核/服务商/系统配置/角色权限 页面
- 新增 pages:content(资讯:新增/发布/下线)、tasks(任务审核:通过/下架)、providers(服务商:评级/拉黑)、config(系统配置:改值)、roles(角色权限:只读概览)。
- resources.ts 增 content/tasks/providers/config/roles API。
- App.tsx 增 5 路由;rbac NAV 重组:「平台管理(用户/角色权限/算力/园区管理) + 内容与业务(资讯/课程/活动/报名/测评/任务/服务商/系统配置)」。
- npm run build 通过;后端 /admin/* 全 200。
|
2026-08-24 18:36:30 +08:00 |
|
Pine
|
1e550aaa8a
|
fix(平台端): 平台登录清除园区端登录态 — 修复登录只见园区管理
平台登录时 clearParkAuth,避免残留园区账密登录态被 isParkUser 劫持回 /park,导致只见园区管理
而看不到完整运营(用户/培训业务/算力)+园区管理。operator 导航含全部,npm run build 通过。
|
2026-08-24 18:32:10 +08:00 |
|
Pine
|
caeaadfed0
|
feat(平台端): 平台端只保留运营(operator)单一角色 — 去掉其它端口/角色入口
- rbac NAV「总览」由 8 端口开放改为仅 operator(平台端单一角色);其它端口(政务/企业/服务商/投资人/OPC/载体/开发者)不再作为平台端角色入口。
- 平台登录:多身份时仅展示 operator 身份(过滤其它端口),其余端口走各自端(园区账密等)入口。
- npm run build 通过。
|
2026-08-24 18:29:41 +08:00 |
|
Pine
|
25ab5b969c
|
feat(运营端): 平台端园区+账号管理(创建园区并管理其管理员账号)
创建园区(名称/两段式简介/管理员账密);园区列表每园可「管理账号」— 改管理员账号/重置密码,
该账号即园区端登录账号。后端 /park/tenants PUT 已修。npm run build 通过。
|
2026-08-24 18:28:14 +08:00 |
|
Pine
|
118b5e1fdf
|
feat(园区端): 角色逻辑修正 — 运营端=平台建园区;园区端=园区账密登录仅管本园区
- lib/parkAuth:园区账密登录(/park/auth/login)→长效 token+tenant(localStorage 持久)。
- login:双 Tab「平台登录(运营端) / 园区端登录(园区端,园区账密)」,园区账密登录→/park。
- RequireAuth 接受 平台 token 或 园区账密;/park 不套 RoleRoute(园区端无平台角色)。
- rbac.navForRole:园区端显示「园区管理」;auth.logout 一并清除园区登录态(防回跳循环)。
- Park 页按角色:园区端→绑定本园区(无园区选择器/无创建),屏幕管理优先;运营端→园区创建(TenantTab)+选择器+全 Tab。
- npm run build 通过。
|
2026-08-24 18:24:44 +08:00 |
|
Pine
|
e022146c51
|
fix(园区端): 接口无反应(代理补 /park/tenants,/park/auth)+ 园区端改为管理屏幕
- vite: 增 /park/tenants、/park/auth 代理键(此前仅 /park/api,/park/tenants 被当作 SPA 返回 HTML→JSON 解析失败→界面空白/无反应)。
- park.ts/types: 增 screens CRUD(按 tenant) + ParkScreen。
- 新增 screens-tab(屏幕管理):登记本园区大屏设备(device_id/name/role/location)+删除;腾换 index 的“配置/建园区”为“屏幕管理”。
(“创建园区”改为运营端平台功能,见下一步园区账密登录的园区端视图建设。)
|
2026-08-24 18:22:44 +08:00 |
|
Pine
|
a935ad8904
|
feat(园区端): admin-portal 多租户化 + 大屏数据全量编辑
- park.ts 全面传 tenant_id(?tenant_id=) + tenants CRUD;display/command 带 tenant_id。
- 新增 ParkTenantProvider(Context:tenantId/tenants/切换) + 园区选择器;六 Tab 全按 tenantId 作用域。
- 新增 tenant-tab:创建园区(名称/两段式简介/账密) + 园区列表;仅 operator/多园管理用。
- screen-data-tab 扩为全量编辑:页眉名称+两段简介、基础数据(成立/容量/投入/就业/面积/营收/税利/地址/电话)、动态 feed 增删改。
- npm run build 通过。
|
2026-08-24 18:12:19 +08:00 |
|
Pine
|
6c2bc47882
|
fix(admin-portal): 刷新不丢身份 — 启动还原 saved + /auth/me 重灌权威状态
原启动只还原 username,role/identities/currentIdentity 为 null,刷新后 isAuthed 真但 role 空,
守卫/导航失效。改为:有 token 时先本地还原 saved user(role/identity) 立即可用,再 fetchMe()
从后端还原 identities/当前身份/permissions;getSavedUser 类型补 identity;401 由 client 触发
auth:expired 登出。npm run build 通过。
|
2026-08-24 17:47:51 +08:00 |
|
Pine
|
746a6cb375
|
fix(园区端): 大屏指令页名对齐 PAGE_ALIAS — 修复 navigate 无法切页
大屏 resolvePage 用 PAGE_ALIAS(home/twin/ai/screen/wall),原下发 page=data/voice 解析为
null 故不切页;改为 home=数据大屏/twin/ai/screen=媒体轮播/wall + voice=voice_start。
|
2026-08-24 17:43:33 +08:00 |
|
Pine
|
3ea1bdbaf5
|
fix(admin-portal): /park 代理改 /park/api — 修复园区页刷新 404
vite 代理若以 /park 为键会拦截 SPA 路由 /park,刷新时 GET /park 被代理到 server-core
返回 FastAPI 404。改为仅代理 /park/api(园区 API),SPA 路由 /park 走前端回退。
|
2026-08-24 17:38:25 +08:00 |
|
Pine
|
3a9966b67a
|
feat(园区端): admin-portal 园区管理页 — 大屏控制/入驻企业/知识库/智能体/大屏数据
新增 src/api/park.ts(/park/api/* 端点)+ src/pages/park/ 5 组 Tab 页:
大屏控制台(在线设备/指令下发 MQTT)、入驻企业 CRUD(状态流转)、园区知识库(文档 CRUD+重索引)、
园区智能体(提示词/模型/工具开关)、大屏数据设置。vite 代理增 /park。npm run build 通过。
|
2026-08-24 17:15:05 +08:00 |
|
Pine
|
258bccfad3
|
chore: 初始化云超服运营管理平台(admin-portal)
- 脚手架:Vite6 + React18 + TypeScript(strict) + Tailwind4
- shadcn/ui 基座(依 design/installation.md):components.json + src/components/ui/* + cn(),radix-ui 单片
- 认证:登录(密码+多身份选择 select-identity),lib/auth.tsx(上下文+localStorage)
- RBAC:lib/rbac.tsx 八端口导航过滤 + App.tsx RequireAuth/RoleRoute
- 布局:AppShell(侧边栏+顶栏+身份切换+用户菜单)
- API:client.ts(fetch+token+401登出) + resources.ts(用户/课程/活动/报名/测评/算力/园区)
- 页面:登录/总览 + 用户/课程/活动/报名/测评/算力/园区 7 个管理页(未实现端点优雅降级)
- npm run build 通过;.env.example / README.md / .gitignore
|
2026-08-24 13:07:09 +08:00 |
|