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
|
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
|
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
|
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
|
3a1bb75417
|
fix: 运营方兜底审核园区级认领/入驻(admin 园区详情可用)
- claims/reviews、companies/applies/reviews:运营方可见全部待审园区级申请
- review_claim/review_apply:park_admin 级允许运营方兜底审核
|
2026-09-07 16:23:43 +08:00 |
|
Pine
|
1cd26e174e
|
feat: 企业认领/企业入驻申请/团队 身份链路
- company_claim_requests:认领园区入驻企业(仅搜索);admin 认领仅当企业无管理员;
审核人:admin→园区管理员,member→有企业管理员则企业管理员否则园区管理员;
证明资料(姓名/身份证/手机号)仅存证
- company_apply_requests:已有企业加入平台;park_entered 园区管理员审,
independent 运营方审;通过后建 ParkCompany 并设提交人为管理员
- teams/team_members:团队即建即用;支持升级为企业(复用企业入驻申请)
- 审核权限:园区管理员=ParkTenant.operator_user_id;企业管理员=is_admin;运营方=operator
- 新表由启动时 create_all 幂等创建
|
2026-09-07 16:15:35 +08:00 |
|
Pine
|
a97c09086a
|
fix: list_models 循环取全部分页,修复模型目录缺失早期 ASR 模型
引擎 /api/models 按 id 倒序分页(默认 100/页),原实现只取第一页,
导致 qwen3-asr-flash-2026-02-10 / qwen-audio-3.0-asr-flash / fun-asr 等
早期 ASR 模型不在 /v1/models 目录中,语音转写页只能选到 realtime 变体
(走流式通道,HTTP 转写 404)。现循环拉取直至 total 取完。
|
2026-09-07 15:24:26 +08:00 |
|
Pine
|
e831fdd34e
|
feat: 内容审核体系(0070)— 违规内容库/举报表/IP采集/统一审核服务/审核API
- 迁移0070:content_moderation_records(违规库,快照+发布者+IP+原因+处置人)、
content_reports(举报队列);各内容表加 ip 列,dm_messages 加 hidden,
community_comments/ratings 加 status,users 加 profile_hidden/original_nickname
- moderation_service:hide/restore/delete(物理删除留档)/list/archive/report/
handle_report/scan + 申诉通知;用户资料隐藏自动脱敏昵称
- rbac_moderation:/admin/moderation/{type} 列表、hide/restore/delete、
violations 违规库、reports 举报处理、scan 巡查;/content/report 用户举报入口
- IP 采集:任务/岗位/服务/社区帖子/评论/私信/评价/主页提交创建端点写入发布者 IP
- 前台可见性:社区评论/私信查询过滤 hidden
|
2026-09-07 15:07:43 +08:00 |
|
Pine
|
f6e66213bd
|
fix: 保存人才档案即上架;新增独立上架/下架接口
- hall_upsert_talent patch 补 published=True:保存即进入人才大厅(修复保存后仍显示已下架/上架后大厅不展示)
- 新增 PUT /talents/me/publish:published 单独上架/下架(下架后大厅不展示,本人仍可见)
|
2026-09-07 14:20:06 +08:00 |
|
Pine
|
edf87cbe5e
|
feat: 算力令牌名称自定义,留空自动编号
- POST /opc/compute/tokens 接受 name 字段
- name 为空时按该用户名下令牌数自动命名(令牌1/令牌2/…)
|
2026-09-07 14:08:02 +08:00 |
|
Pine
|
1462ad3c82
|
feat: 消耗账单加渠道字段(桌面端 / Key·令牌名)
token_name 为空或平台中继令牌 → 桌面端;自建令牌 → Key · 名称
|
2026-09-07 14:03:04 +08:00 |
|
Pine
|
cc5e30f985
|
fix: /opc/compute/usage/logs 时间戳兼容(毫秒转 ISO,双保险)
算力端 /api/log/self 已转 ISO;此处兼容数字毫秒时间戳避免前端显示异常
|
2026-09-07 13:32:51 +08:00 |
|
Pine
|
047d5d8028
|
feat: 我的主页互动数据补充访客昵称/头像(打招呼/点赞)
|
2026-09-07 12:42:10 +08:00 |
|
Pine
|
cdcc50a1c6
|
feat: 个人主页流量/点赞/打招呼
- 新增 user_page_views/user_page_likes/user_page_greets 三表
- UserPageSocialRepository:访问去重计数/一人一赞可取消/打招呼/近7日趋势
- rbac_pages 新增 POST /pages/{uid}/view|like|greet 与 GET /pages/me/social/stats
- get_user_page 返回 social 互动数据(viewCount/likeCount/greetCount/likedByMe)
|
2026-09-07 12:28:35 +08:00 |
|
Pine
|
99612ff5ee
|
修复 relay 记账用户解析缺失 db 参数(否则记账永不触发)
|
2026-09-07 12:20:16 +08:00 |
|
Pine
|
c8870d5b3b
|
算力余额体系闭环:企业分配/个人充值分离记账+退出返还
- users 新增 compute_personal_balance(分):个人充值/企业转入个人账本,
与 company_members.compute_balance(企业分配)彻底分离
- relay 转发引擎后按实际用量记账(deduct_usage_post):
先扣企业分配余额(折扣低→高)、不足扣个人余额,写 compute_usage_records;
流式 SSE 透传时解析 usage chunk 记账,JWT 登录态调用生效、PAT 调用不重复记账
- 个人充值到账(pay/service)与 企业↔个人互转 同步更新个人账本
- 成员退出企业(leave)与管理员移出成员(remove_company_member):
仅返还企业分配剩余(member.compute_balance)至企业余额,同步扣减引擎 quota,
绝不触碰个人充值余额
- GET /compute/user/balance 个人余额改读独立账本(不再引擎倒推)
- 迁移 0067;存量个人充值/互转净额已回填
|
2026-09-07 12:19:50 +08:00 |
|
Pine
|
12f92e2453
|
feat: 桌面端安装包列(0066迁移)+算力定价增强+企业/支付相关更新
|
2026-09-07 10:14:23 +08:00 |
|
Pine
|
105510e170
|
关闭个人微信收款API,返回明确的暂不支持提示
修改内容:
1. POST /opc/pay/bindings/personal 接口返回403,明确提示个人微信收款暂时未开放
2. 引导用户先完成特约商户进件,进件通过并完成分账授权后即可收款
3. 保留接口路径,后续开放时只需恢复service.bind_personal调用
业务决策:
- 暂时关闭个人微信零钱收款(PERSONAL_OPENID分账)
- 当前阶段所有用户必须完成特约商户进件才能收款
- 后续版本有必要时再开放个人微信收款
|
2026-09-06 23:33:33 +08:00 |
|
Pine
|
534a8de023
|
修正:个人收款默认出资方应为服务商特约商户号,非直连商户号
业务逻辑澄清:
- 直连商户号(WECHATPAY_MCHID):用于平台业务(算力、应用包等支付)
- 服务商商户号(WECHATPAY_SP_MCHID):用于给用户商户开户、分账
- 特约商户号(sub_mchid):服务商下属的特约商户,是分账的出资方
修正内容:
1. WECHATPAY_DEFAULT_SUB_MCHID 默认为空,不再回退到直连商户号
2. 未配置默认特约商户号时,给出明确错误提示,引导完成特约商户进件
3. 需通过环境变量 PINEAGENTS_WX_DEFAULT_SUB_MCHID 配置服务商下属的特约商户号
|
2026-09-06 23:24:06 +08:00 |
|
Pine
|
7c110c4c09
|
修复:个人微信收款绑定报错sub_mchid is not assigned
问题:绑定个人微信收款时,服务商分账API需要出资特约商户号(sub_mchid),
但普通用户没有自有商户绑定时sub_mchid为空,导致微信SDK抛出
'sub_mchid is not assigned.'异常。
修复:
1. 配置中新增WECHATPAY_DEFAULT_SUB_MCHID,默认使用平台直连商户号
2. bind_personal函数中,用户无自有商户绑定时使用默认sub_mchid
3. 支持通过环境变量PINEAGENTS_WX_DEFAULT_SUB_MCHID覆盖默认值
|
2026-09-06 23:15:58 +08:00 |
|
Pine
|
7a8cf77775
|
修复:compute路由前缀错误导致404
问题:rbac_compute_pricing.py的路由前缀是/api/compute,
但dispatcher会去掉/api前缀后分发给core_app,
导致实际请求路径变成/compute/...,无法匹配/api/compute/...路由。
修复:将路由前缀从/api/compute改为/compute,
与其他路由(/admin、/hall等)保持一致。
|
2026-09-06 22:58:27 +08:00 |
|
Pine
|
eb7c5371c6
|
新增园区详情和成员列表API
新增API:
- GET /admin/park/tenants/{tid} - 园区详情(含统计:成员数/企业数/管理员信息)
- GET /admin/park/tenants/{tid}/members - 园区成员列表(含用户信息)
- GET /admin/companies/{cid}/members - 企业成员列表(含用户信息)
扩展_park_tenant_public函数,增加更多字段:
operator_user_id、city、address、contact、tags、area_m2、
default_company_discount、default_user_discount、created_at
|
2026-09-06 21:44:56 +08:00 |
|
Pine
|
2ce1626591
|
fix: 彻底修复删除用户外键约束问题;动态查询所有引用users的外键约束(任意列名);临时禁用外键检查避免表间依赖顺序问题
|
2026-09-06 21:28:07 +08:00 |
|
Pine
|
a8a62e5fcb
|
修复数据库配置:支持MySQL分字段配置
问题:config.py只处理了PINEAGENTS_DEMO_DATABASE_URL,没有处理
PINEAGENTS_MYSQL_HOST/PORT/USER/PASSWORD分字段配置,导致服务端
使用空的SQLite数据库,无法识别用户身份(园区/企业)。
修复:
- 支持MySQL分字段配置,自动构建DATABASE_URL
- 优先级:PINEAGENTS_DEMO_DATABASE_URL > MySQL分字段 > SQLite默认
- 与Redis配置方式保持一致
|
2026-09-06 21:13:57 +08:00 |
|
Pine
|
f4742ffbd1
|
fix: 改用information_schema查询有user_id列的表,彻底解决AsyncEngine/Session无法inspect的问题
|
2026-09-06 20:58:08 +08:00 |
|
Pine
|
3bd86b94ed
|
fix: AsyncEngine不支持直接inspect,改用session.run_sync获取表列信息
|
2026-09-06 20:55:45 +08:00 |
|
Pine
|
9b4875912e
|
fix: 删除用户时audit_logs外键约束失败;添加audit_logs到级联删除列表;改进删除逻辑先检查表是否有user_id列
|
2026-09-06 18:47:17 +08:00 |
|
Pine
|
e9c957808a
|
修复rbac_compute_pricing导入错误
- 修复rbac模块导入路径:从 ..rbac 改为 ...rbac
- 修复require_role不存在的问题:使用role_allowed函数创建check_role辅助函数
- 替换所有require_role调用为check_role
|
2026-09-06 18:26:27 +08:00 |
|
Pine
|
9e2b2ad183
|
fix: 修复OpcCertApplyRequest前向引用未导入导致openapi 500; content_items.summary加长为Text
|
2026-09-06 18:18:22 +08:00 |
|
Pine
|
4dedb43d7f
|
算力多级折扣与企业余额体系 - 服务端核心改造
数据模型:
- 新增 tenant_discounts(运营端载体折扣)
- 新增 tenant_user_discounts(载体端账号折扣)
- 新增 compute_recharges(算力充值记录)
- 新增 compute_balance_allocations(余额分配记录)
- 新增 compute_usage_records(算力使用记录)
- 扩展 park_tenants(default_company_discount, default_user_discount)
- 扩展 park_companies(compute_balance, compute_balance_used)
- 扩展 company_members(role, compute_balance, compute_balance_used, left_at, left_reason)
核心服务:
- compute_pricing_service.py:四级折扣价格计算、余额扣费、企业余额管理
API接口(/api/compute):
- 运营端:载体折扣管理、标准价管理
- 载体端:企业折扣设置、账号折扣设置、默认折扣设置
- 企业端:余额充值、成员余额分配/回收、充值/分配记录
- 个人端:我的余额、使用记录、退出企业
- 内部:价格查询、算力扣费
数据库迁移:0064_compute_discount_balance.py
|
2026-09-06 17:59:56 +08:00 |
|