Pine
|
dbfb1d64dc
|
chore(scripts): agent_gate 迁移脚本指向本机 MySQL,同步事件名状态
|
2026-09-13 11:14:21 +08:00 |
|
Pine
|
a163e661a1
|
feat(compute): 模型系列管理 + 图标中心(表、迁移、API)
- ComputeSeries/ComputeIcon 模型 + alembic 0078 迁移
- rbac_compute_assets 系列 CRUD 与图标上传/引用计数
- main.py 挂载 compute_assets 路由
|
2026-09-13 11:14:21 +08:00 |
|
Pine
|
76351cc91a
|
fix(org): 机构/企业成员统一返回格式(补齐姓名、头像)
- _normalize_org_member 统一 user_id/name/username/avatar/role/is_admin
- 机构成员无头像时批量从 users 表补查
|
2026-09-13 11:14:20 +08:00 |
|
Pine
|
000e3b5cb7
|
feat(hall): 任务/岗位编辑与审核接口
- 任务编辑(发布者或运营端,非运营编辑后重新进审核)
- 岗位编辑/审核/上下架(运营端 published 上架)
- JobRepository.update 支持字段白名单更新
|
2026-09-13 11:14:20 +08:00 |
|
Pine
|
27203cb584
|
fix(dispatcher): /api/parks 等 C 端接口前缀路由修复
- TRAINING_EXCLUSIVE_PREFIXES 补充 /api/parks,避免被剥前缀路由到 core_app 后 404
- 核验 training 全部 55 条 API 路径均正确路由到 training_app
|
2026-09-13 11:14:20 +08:00 |
|
Pine
|
5d7d00ae5a
|
fix(compute): /api/opc/compute/base 公开返回中继地址
- 鉴权放开为 optional_current_user,未登录也返回 base_url/relay_path/messages_path/models_path
- 仅登录附 username
|
2026-09-13 11:14:20 +08:00 |
|
Pine
|
9f6c4fc21f
|
feat(relay): 中继新增 /v1/messages(Anthropic 格式)通道与记账
- 显式 relay_messages 路由,支持 x-api-key 鉴权
- _bill_usage_anthropic 按 Anthropic 用量格式记账
|
2026-09-13 11:14:20 +08:00 |
|
Pine
|
f88f4a4e13
|
fix(enterprise): 企业成员列表算力余额改读 compute-engine 实时真实余额
company_members.compute_balance 仅含企业分配,个人充值不进入该字段,
导致企业管理看不到成员真实算力。改为并发查询引擎 users.quota(微元,
个人充值+企业分配全量计入),换算为分返回;引擎不可用时回退平台镜像。
|
2026-09-11 21:54:01 +08:00 |
|
Pine
|
416ade4842
|
feat: 统一权限聚合端点 + 事件名同步昵称 + IM/企业路由补强
- 新增 rbac_permissions 统一权限/组织归属聚合端点
- sync_event_name_to_nickname 脚本:事件名同步用户昵称
- im router/client、rbac_enterprise/opc/org/public 增强
- compute_catalog、nginx 配置、env.example 更新
|
2026-09-11 21:15:36 +08:00 |
|
Pine
|
fec213c9e0
|
fix(bookings): 报名管理实时查询 users.nickname 展示最新昵称
bookings.name 是报名时快照(微信默认昵称等会过期);
改为实时查 users 表最新昵称,快照 name 兜底、最后回退登录名。
|
2026-09-11 21:14:27 +08:00 |
|
Pine
|
2406b9b198
|
perf: 活动列表接口批量查询报名人数,消除N+1查询
【性能问题】
活动列表接口对每个活动单独调用 _count_enrolled 和 _count_applied 查询报名人数,
导致典型的 N+1 查询问题:30个活动 = 60次额外SQL查询,严重拖慢接口响应。
【优化方案】
1. 新增 _batch_count_bookings(event_ids) 批量查询函数
- 一次性查询所有活动的已报名人数和报名占用数
- 使用 GROUP BY event_id,2次SQL查询替代60次
2. 修改 event_out 函数,增加可选参数 enrolled_count / applied_count
- 传入预查询值时直接使用,不再调用 _count_enrolled / _count_applied
- 未传入时保持原有行为(向后兼容,不影响详情页等其他调用)
3. 优化所有活动列表接口,先批量查询再传入 event_out:
- GET /api/events(列表/current/bookable 三种模式)
- GET /api/events/mine(我的活动)
- GET /api/events/managed(我管理的活动)
- GET /api/events/pending/list(待审核列表)
【性能提升】
- SQL查询次数:从约72次(2次全表扫描 + 70次COUNT)减少到约6次
- 预期接口响应时间提升 5-10 倍
- 活动列表越大,优化效果越明显
|
2026-09-11 10:22:21 +08:00 |
|
Pine
|
ef57e51ef0
|
refactor(db): 统一引擎为进程级单例,同一 URL 只一个连接池
此前同一 DATABASE_URL 存在 3 个独立 engine(db 主 engine、
repositories._shared_engine、park._ASYNC_ENGINE),各自 20+20 池,
理论连接上限 120,池间不互济,仍有满载风险。
- _shared_engine:URL==config.DATABASE_URL 时直接复用 db 模块级 engine
- park/tenants._get_session:同样复用主 engine
- 收敛后同一 URL 进程内仅一个池(上限 40),连接数可控、池可互济
|
2026-09-10 22:52:19 +08:00 |
|
Pine
|
396f98c9c5
|
fix(db): 修复生产连接池耗尽(QueuePool 5/10 超时)
根因:生产经公网穿透(腾讯云→阿里云NPS→本地MySQL)访问数据库,
默认池 5+10=15 且无 pool_recycle,穿透断链后半死连接长期占用池,
并发一高即 30s 超时(TimeoutError)。
- 主 engine:pool_size=20, max_overflow=20, pool_recycle=1800(30min),
pool_timeout=30, 保留 pool_pre_ping
- make_async_engine(共享引擎/测试/park):MySQL 场景同样配置
|
2026-09-10 22:40:03 +08:00 |
|
Pine
|
052fb589ca
|
fix: 金额/算力/信用额度列 int→bigint,修复充值 Out of range 500(compute_quota 等 43 列)+ alembic 0077
|
2026-09-10 14:48:09 +08:00 |
|
Pine
|
46b06b28f1
|
feat: 实现 /agents/directory 企业智能体目录接口,返回可调用智能体列表+在线状态,支持管理员/同企业/临时授权三级权限模型
|
2026-09-10 13:24:44 +08:00 |
|
Pine
|
d49719fcf2
|
fix(sms): 验证码发送增加本地60s冷却(独立于验证码记录),SmsError(阿里云流控/冷却)转429友好提示;verify错误文案中文化
|
2026-09-10 12:19:23 +08:00 |
|
Pine
|
c9edad2f98
|
feat(agent-gate): 新增 GET /agents/directory 企业智能体目录接口(成员+可调用智能体,供桌面端选择器/授权页使用)
|
2026-09-10 10:33:53 +08:00 |
|
Pine
|
23e17560f6
|
feat(agent-gate): 智能体互通编排层——authorize_call 三层权限(L1管理员/L2同企业/L3临时授权)+MQTT invoke 派发+agent-events 内部接口+agent-grants CRUD+幂等迁移SQL
|
2026-09-10 01:40:38 +08:00 |
|
Pine
|
c94d4b72d9
|
fix(incubator): 完善昆明市大学生创业园权限矩阵
- resolve_identity: 子管理员(park_members.member_type=admin, active)纳入园区管理方
- 月报(create/update/submit/reopen): 仅企业管理员(is_company_admin)可操作
- list_company_members: 仅企业管理员可查看本企业成员(所有成员权限)
- 请假: list/get 企业管理员看本企业全部; review_leave 企业管理员可审批本企业请假
- 普通企业成员: 仅请假/预约共享区域(维持); 无权限账号一律拒绝
|
2026-09-10 00:32:46 +08:00 |
|
Pine
|
040f8737b3
|
fix: 修复微信手机号一键绑定重复调用微信API导致code二次使用失败的bug
|
2026-09-09 22:58:55 +08:00 |
|
Pine
|
91db9d1a70
|
feat: 微信分享图独立配置 + 默认问卷开关 + 发布方/管理员权限拆分
- 迁移 0074: events/content_items 加 share_img_timeline(朋友圈1:1)/share_img_message(会话5:4)
- 迁移 0075: events 加 show_default_question(默认问卷「最想解决的问题」admin可控)
- 迁移 0076: events 加 publishers_json(发布方手机号绑定,可编辑活动+审核报名)
- 权限拆分: _can_edit_event(发布方+创建者+运营,不含管理员)/ _can_review_booking(发布方+管理员+创建者+运营)
- 审核报名相关端点改用 _can_review_booking;活动编辑用 _can_edit_event
- event_out 输出 canEdit/canReview/publishers;create/update 接收 publishers
- 我管理的活动包含发布方+管理员命中
|
2026-09-09 21:52:37 +08:00 |
|
Pine
|
575b88564f
|
feat: 小程序码环境版本统一配置(admin 端切换落库)
- wechat.get_wxacode env 解析链:显式参数 > system_configs.wxacode.env > 环境变量,
登录/支付/活动/邀请等全部小程序码生成点统一生效
- 报名小程序码接口返回 envVersion 字段,供管理端展示当前指向版本
|
2026-09-09 16:30:13 +08:00 |
|
Pine
|
722ed8ba85
|
fix:修复报名码
|
2026-09-09 15:38:54 +08:00 |
|
Pine
|
d5b322dc22
|
feat:报名
|
2026-09-09 14:23:26 +08:00 |
|
Pine
|
8276bef63b
|
feat(desktop-updates): 新增 artifacts/signature 接口,支持更新包已上传后仅登记/更换 .sig 签名
- 只传签名场景:校验 minisign 签名后仅更新 artifacts[target].signature,保留既有 url/sha256/size
- 更新包未上传时返回 400 提示先传更新包
|
2026-09-09 09:17:07 +08:00 |
|
Pine
|
ffb7833a78
|
fix: 桌面版本排序忽略预发布后缀,beta.2 与 beta.1 排序平局导致下载页/更新源永远选旧版
- _version_key 原只解析主版本号,0.0.1-beta.1 与 0.0.1-beta.2 排序键同为 (0,0,1)
- publishable() 稳定排序保住先插入的 beta.1 → candidates[0] 恒为旧版
- 修复:纳入 PEP 440 预发布后缀(dev<alpha<beta<rc<正式版),同主版本时 pre-release 数字越大越新
- 影响面:/desktop-installers/latest.json(下载页)、/desktop-updates/latest.json(更新源)、admin 版本列表排序
|
2026-09-09 08:51:24 +08:00 |
|
Pine
|
11a9ad0105
|
fix: 云超服待修复清单 #1/#3 + 园区成员公司列表 + main 修复
- #1 站内消息:新增 GET /opc/messages/unread-count(红点角标)、POST /opc/messages/read(批量/全部已读),MessageRepository 补 unread_count/mark_read
- #3 发布活动 500:events 表补 created_at 列(models.Event + alembic 0072 迁移,旧库需执行 alembic upgrade head)
- rbac_admin 园区成员接口补充所属公司列表 companies(含 is_admin)
- main.py 修复 root() 语法错误,APP_NAME 更新为云南省超级个体服务平台
- 补充 nginx ssl 证书(opc.pinesound.cn)
|
2026-09-09 04:50:08 +08:00 |
|
Pine
|
5328835dbe
|
修复个人主页提交审核 422:rbac_pages 缺少 Request 导入
submit_for_review(request: Request) 未导入 Request,注解求值失败被
FastAPI 当作必填 query 参数(loc: query.request)→ 422。补上导入后
request 正确注入,submit 走正常审核流程
|
2026-09-09 03:33:56 +08:00 |
|
Pine
|
e53ac06313
|
服务重新上架(online)提交审核时通知发布者与运营
- 个人重新上架进入 pending 后,通知发布者「已提交重新上架审核,
审核通过后自动上架」,同时 notify_roles(operator) 运营收到待审核提醒,
与发布提交通知一致(此前 online 无任何通知,审核链易断)
|
2026-09-09 03:16:23 +08:00 |
|
Pine
|
f36a2b6059
|
admin/tasks:所有可空外键/关联字段空串统一转 NULL 防 1452
前端未填 publisher_id 时传空字符串违反 tasks_ibfk_3(publisher_id→users.id)外键,
与 category_id 同类问题。将可空关联字段(publisher_id/publisher_org_id/claimed_by/
assign_park_id/assign_opc_id/park_id/category_id 及可空时间字段)统一清洗为 NULL;
NOT NULL 列(deadline/published_at 等)保留空串原样,避免 1048
|
2026-09-09 01:51:38 +08:00 |
|
Pine
|
33a896a0f9
|
admin/tasks:空分类/空截止转 NULL 防外键 500
task_categories 为空时前端传空字符串 category_id 违反 tasks_ibfk_1 外键约束,
create/update 统一将空分类与空截止转 None(列可空),不再 500
|
2026-09-09 01:37:12 +08:00 |
|
Pine
|
71adc35b53
|
nginx:反代上游改为容器名 opc-server:8090,修正 502
- 此前注释/实际生效配置反代 47.108.226.213:8090(已废弃旧服务器 IP),
新服务器为腾讯云 124.221.143.140,请求连到错误主机 → 502 upstream prematurely closed
- 明确前提:nginx 容器需 docker network connect opc-network 才能解析容器名
- .gitignore 排除 nginx ssl 私钥与运行日志(防止敏感信息入库)
|
2026-09-08 22:47:15 +08:00 |
|
Pine
|
a3e82e7113
|
补充缺失依赖 wechatpayv3(支付模块启动必需)
app/pay 模块无条件 import wechatpayv3.async_(AsyncWeChatPay/WeChatPayType/aes_decrypt),
但 pyproject/uv.lock 从未声明,容器干净环境下启动即 ModuleNotFoundError;
本地因旧 venv 残留包掩盖了问题。本次经审计确认仅此一处缺失,已补声明并重新锁定。
|
2026-09-08 22:30:49 +08:00 |
|
Pine
|
ec482bda51
|
移除未使用的 s2s 实时语音栈及重依赖,大幅加速镜像构建
- 删除 app/park/vendor/s2s-cloud(201 文件)与 s2s_bridge.py
- 清理 app.py/config.py/routers.py/rag.py/tools.py 中 s2s 相关代码与配置
- park_config 智能体提示词配置改名 PARK_AGENT_INSTRUCTIONS(原 S2S_INSTRUCTIONS,仍被园区 AI 问答使用)
- pyproject 移除 torch/transformers/scipy/soundfile/nltk/openai(均仅 s2s 使用,Linux 下 torch CUDA 依赖曾致镜像构建下载 4-6GB、耗时 300s+)
- 重新生成 uv.lock(移除 torch 等 40+ 传递依赖)
- 修复 app/api/schemas/admin.py 缺失 Database import(3.14 延迟注解掩盖的既有 bug,3.12 下启动必崩)
- .python-version 同步为 3.12(与镜像一致)
|
2026-09-08 22:18:52 +08:00 |
|
Pine
|
8f3c25ce2f
|
修复镜像构建:排除 .python-version(本地 3.14 与镜像 3.12 冲突,导致 uv sync 报 No interpreter for Python 3.14)
|
2026-09-08 21:40:38 +08:00 |
|
Pine
|
9f3e2be397
|
部署编排完善:serverrun 分层编排(基础设施+三服务+单独启动),统一 opc-network 外部网络与 serverdata 数据策略,依赖源切国内镜像,废弃旧启动脚本
|
2026-09-08 21:30:45 +08:00 |
|
Pine
|
8b8cf6b1c6
|
拆分部署:新增 opc-server 镜像 Dockerfile,补充 serverrun/serverdata 运行与数据说明
|
2026-09-08 21:11:12 +08:00 |
|
Pine
|
c151788f7c
|
feat: 园区成员列表返回企业管理员信息
|
2026-09-08 20:26:28 +08:00 |
|
Pine
|
d57a611c54
|
feat: 桌面更新支持OSS预签名直传与安装包确认登记
|
2026-09-08 20:26:28 +08:00 |
|
Pine
|
92db5a0802
|
fix: 运营端改价同步compute服务models表,修复实际计费仍用旧价的问题
|
2026-09-08 18:17:11 +08:00 |
|
Pine
|
a7100a2a4d
|
feat: 数据库备份+平台配置初始化(证书类型/信用规则/等级/徽章/市场分类)
|
2026-09-08 17:59:22 +08:00 |
|
Pine
|
8db84f27f1
|
feat: 昆明市大学生创业园入驻企业+月报数据导入脚本
|
2026-09-08 00:39:03 +08:00 |
|
Pine
|
b56831eb46
|
feat(rbac): 生态/OPC/培训 RBAC 路由与市场服务更新
|
2026-09-08 00:10:33 +08:00 |
|
Pine
|
60596ecafa
|
feat(incubator): 孵化器入驻与叶子节点管理
|
2026-09-08 00:10:26 +08:00 |
|
Pine
|
ff234f7071
|
feat(sms): 迁移 PineSound 阿里云短信+Redis缓存+真实随机数;强制MySQL禁用SQLite;连接池取消请求shield修复
|
2026-09-08 00:10:16 +08:00 |
|
Pine
|
539282f18f
|
security: 平台中继令牌不对外展示、不允许删除
平台中继令牌由系统自动创建(name='平台中继令牌'),桌面端智能体
调用模型时使用此令牌。为防止用户复制外泄配额或误删导致桌面端
无法调用模型:
1. GET /opc/compute/tokens:过滤掉 name='平台中继令牌' 的令牌,
不返回给前端展示
2. DELETE /opc/compute/tokens/{id}:删除前校验,若目标令牌是
平台中继令牌,返回 403 拒绝删除
3. 定义常量 PLATFORM_RELAY_TOKEN_NAME 统一管理
|
2026-09-08 00:08:27 +08:00 |
|
Pine
|
dfeda0c784
|
feat: URL 名单支持通配 *.gov.cn 与正则 /pattern/ 形态(后端编译校验)
|
2026-09-07 22:25:23 +08:00 |
|
Pine
|
7cce5cd14a
|
feat: 站点 URL 白名单/黑名单管理 API
- GET/POST /admin/site/url-rules、DELETE /admin/site/url-rules?rule_type&host
- 存储于 site.url_whitelist / site.url_blacklist(SystemConfig,公共 /site/config 可读)
- 域名规范化校验;写审计
|
2026-09-07 22:19:26 +08:00 |
|
Pine
|
ff383c0811
|
feat(db): 企业身份链路四表迁移(认领/入驻/团队/成员)
|
2026-09-07 16:57:27 +08:00 |
|
Pine
|
3a1bb75417
|
fix: 运营方兜底审核园区级认领/入驻(admin 园区详情可用)
- claims/reviews、companies/applies/reviews:运营方可见全部待审园区级申请
- review_claim/review_apply:park_admin 级允许运营方兜底审核
|
2026-09-07 16:23:43 +08:00 |
|