Pine
|
b56831eb46
|
feat(rbac): 生态/OPC/培训 RBAC 路由与市场服务更新
|
2026-09-08 00:10:33 +08:00 |
|
Pine
|
ff234f7071
|
feat(sms): 迁移 PineSound 阿里云短信+Redis缓存+真实随机数;强制MySQL禁用SQLite;连接池取消请求shield修复
|
2026-09-08 00:10:16 +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
|
edf87cbe5e
|
feat: 算力令牌名称自定义,留空自动编号
- POST /opc/compute/tokens 接受 name 字段
- name 为空时按该用户名下令牌数自动命名(令牌1/令牌2/…)
|
2026-09-07 14:08:02 +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
|
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 |
|
Pine
|
1e9c4343d3
|
算力中心新增消耗明细和趋势统计接口
- compute_client.py 新增 user_logs 方法,封装引擎日志接口(支持分页)
- rbac_opc.py 新增两个接口:
- GET /opc/compute/usage/logs - 消耗明细(分页,统一字段格式为前端期望的 snake_case)
- GET /opc/compute/usage/trend - 消耗趋势统计(近N天趋势、模型分布、时段分布)
- 趋势接口基于引擎日志数据聚合计算:
- 近N天消耗趋势(按日期聚合 cost 和 tokens)
- 模型分布(按模型名聚合调用次数,Top 5 + 其他)
- 时段分布(按24小时聚合消耗)
- 引擎对接失败时返回空数据,不报错(避免前端白屏)
- 模型分布自动分配颜色,便于前端饼图展示
|
2026-09-05 23:33:24 +08:00 |
|
Pine
|
0fd1307d57
|
全线加入Redis缓存:1)统一Redis配置支持PINEAGENTS_REDIS_*前缀;2)增强cache.py:JSON序列化/缓存装饰器/批量删除/分布式锁/全局单例+连接池;3)大厅任务列表缓存8秒(key含用户ID+筛选条件);4)大厅总览缓存30秒;5)人才/服务/岗位列表缓存20秒;6)用户档案_actor_profile缓存30秒(can_accept核心依赖);7)认证类型列表缓存5分钟;8)应用启动时连接Redis,失败自动降级无缓存
|
2026-09-05 14:33:38 +08:00 |
|
Pine
|
166b0440c7
|
优化大厅任务列表性能:修复 N+1 查询问题。can_accept 支持传入预取的 actor_profile 参数;hall_tasks 预取一次用户档案后用 asyncio.gather 并发判断所有任务资格,避免每个任务都重复查询用户档案(23任务×4查询=92次串行查询→1次查询+并发判断)。tasks接口从4.5s降到0.8s
|
2026-09-05 14:14:22 +08:00 |
|
Pine
|
9b1df88bf0
|
任务资格要求:最低信用分/要求勋章/要求认证(0061),can_accept 校验,发布端点接收
|
2026-09-05 11:33:37 +08:00 |
|
Pine
|
e131bba599
|
任务流程按模式适配:新增 assigned(指派/邀约待确认)/signed(签约托管) 状态 + accept-invite/sign 端点 + 按模式时间线 + 超时释放
|
2026-09-05 11:18:18 +08:00 |
|
Pine
|
6d0385ef88
|
task claim 表单承载:0058 迁移修复(TEXT 去 server_default) + register/grab 申请表单落库 + claims 返回 form
|
2026-09-05 11:08:55 +08:00 |
|
Pine
|
3061ceb2d8
|
实时通知体系后端:NotificationService 三通道(落库+MQTT+SSE)、迁移0057、通知接口增强(分页/分类/单条已读/未读计数/公告)、SSE /notify/events 鉴权流,事件接入任务/接单/认证/信用/培训/服务/点赞/评论/运营审核
|
2026-09-05 10:37:14 +08:00 |
|
Pine
|
c12380cf8c
|
任务系统 v2/v3:状态机统一、v2 发布字段、接单/交付/验收/返工/结算/发票全链路
|
2026-09-05 03:40:58 +08:00 |
|
Pine
|
e4d8534155
|
信用体系与徽章体系完整实现:L1-L8等级+无上限累加积分+26事件规则+26徽章引擎+全量重算+用户/运营端接口
|
2026-09-05 03:05:56 +08:00 |
|
Pine
|
3fe6bf6dbc
|
feat: 登录注入 MQTT 凭证、官方智能体平台化、会话ID扩容、微信支付分账/认证迁移
|
2026-09-03 12:40:05 +08:00 |
|
Pine
|
cb1492f2d6
|
fix: 完整审查修复 - 5个问题
1. _resolve_identity: permissions_for 未归一化 role → 使用 account_type+permission_role
2. rbac_org.py: 用 user.role 判断 operator → 改用 capabilities
3. membership_service: sync_user_affiliation 不同步 organization_members → 新增 _sync_org_members
4. repositories.to_profile: capabilities 只查旧表 → 增加 organization_members 查询
5. Header.RoleBadge: account_type_label 被 t() 重复翻译 → 优先直接显示中文
|
2026-09-03 09:43:34 +08:00 |
|
Pine
|
0f4a951c38
|
feat(admin): 调研/政策详情匹配题目定义返回 answer_list;新增 5 模块汇总统计 API + 调研题目定义 API
|
2026-09-02 17:20:45 +08:00 |
|
Pine
|
e67636f6d3
|
fix(auth): 小程序码 page 路径修正为 pages-extra/scan-login/index
scan-login 页面在 subPackages(root=pages-extra) 中,完整路径应为
pages-extra/scan-login/index,之前误写为 pages/scan-login/index,
导致微信扫码后找不到页面→白屏。
修改3处:
- /auth/mp-qr/start
- /auth/mp-qr/bind-start
- wechat.get_wxacode 默认参数
|
2026-09-02 11:13:13 +08:00 |
|
Pine
|
541c60e64f
|
feat(test): 测评逐题答案存储与详情展示
- alembic 0043: tests 表增加 answers 列(TEXT,JSON 格式逐题答案)
- report_test(POST /api/tests): 接收并存储 answers 字段
- get_test: 返回 answers + answer_list(带题目文本/part/选项/用户选择的逐题列表)+ 答题进度
- pack_test: 增加 answers 字段
|
2026-09-02 10:57:26 +08:00 |
|
Pine
|
751e8ae02f
|
feat(admin): 测评/报名/调研/政策/流程 五模块统一补齐详情与删除接口
- training_admin_bridge: pack_test 增加 username;新增 get_test/delete_test、get_booking/delete_booking、get_survey/delete_survey、get_policy/delete_policy、get_plan/delete_plan
- rbac_operator: 新增 10 个接口(5 模块 × GET详情 + DELETE删除),删除写 audit_log
- 详情接口返回完整字段(含 JSON 解析后的 answers/tracks/topics)
|
2026-09-02 10:49:45 +08:00 |
|
Pine
|
e346d952c1
|
fix(training): 驳回报名 status 置 rejected 与审核一致——消除 admin 端「驳回仍显示待审核」
- update_booking:审核 rejected → status=rejected(终态),而非 pending
- _count_enrolled:排除 rejected(被驳回不计入已报名人数)
- 仪表盘 stats 补 rejected 分类
- 历史数据:1 条 rejected+pending 已同步为 rejected
- 冒烟测试同步更新
|
2026-09-02 10:35:48 +08:00 |
|
Pine
|
4d027db5a8
|
fix(training): 报名审核状态与生命周期状态联动一致——消除 admin 端「状态全是待审核」
- create_booking:免费+自动审核活动报名即置 status=confirmed(与 audit_status=approved 一致);人工审核/付费活动保持 pending
- update_booking:审核 approved→status=confirmed;rejected→status=pending;显式 status 不覆盖
- 修正历史数据:approved+pending 的报名已同步为 confirmed(4 条)
- 新增冒烟测试 scripts/smoke_booking_status.py
|
2026-09-02 10:30:44 +08:00 |
|
Pine
|
700bafdb26
|
feat(invite): 完整邀请归因系统
数据模型:
- User表添加inviter_id/invite_code/invited_at/invite_share_count字段
- 新建invite_records表记录分享/扫码/注册归因
- MySQL迁移已执行
后端API(/invite/*):
- GET /invite/me 获取我的邀请码和统计
- GET /invite/qrcode 生成带邀请参数的小程序码(体验版/正式版)
- POST /invite/share 记录分享行为
- POST /invite/scan 记录扫码行为(无需登录)
- GET /invite/invitees 获取我邀请的用户列表
登录归因:
- wx_login支持inviter参数,新用户自动绑定邀请人
- 用户列表返回inviter_name和invite_count
服务层:
- invite_service.py:邀请码生成、归因绑定、小程序码生成、统计
|
2026-09-02 02:18:41 +08:00 |
|
Pine
|
0fd210ac1f
|
feat(pay): 微信服务商分账+资金托管改造——OPC个人/商户双绑定收款、验收95/5分账、回调确认、escrow资金托管字段扩展
- profitsharing.py:服务商分账客户端(添加接收方/发起分账/查分账/退款/回调验签)
- payment_bindings + settlement_logs:OPC 收款绑定(personal openid / merchant 子商户号)与分账流水镜像
- settlement_service.release_escrow:验收后优先发起微信分账(95%接单者/5%平台),未配置时降级台账结算(channel=manual)
- handle_split_notify:分账回调确认 escrow released(幂等)
- 路由:分账回调 + 绑定创建/列表/停用
- 迁移:alembic 0039(新表 + escrows 幂等加列)+ 兜底迁移脚本 + 冒烟测试
|
2026-09-01 18:39:41 +08:00 |
|
Pine
|
61c572a19a
|
feat(task,sms): 任务功能增量合并到大厅 + 短信生态配置
- 任务统一合并到 /hall:新增 grab/grab-by-code/bid/doing/complete/deliver/recommend 操作端点(走 TaskService 真实逻辑)
- 删除 rbac_opc 全部旧任务端点(广场/详情/grab/bid/doing/complete/assign/recommend/select/deliver),/opc/tasks 返回 404
- /opc/my-tasks 改真实聚合(task_claims 承接 + bids 投标,附任务信息),不再读 opc_tasks 演示表
- dashboard_service.opc_dashboard 改 task_claims 统计
- 删除 opc_tasks 演示表(models/seed/repositories)
- BidRepository 新增 list_by_opc
- 短信生态(上一轮):sms.py 阿里云签名、seed 7 项配置、send-code scene、rbac_hall 预约/订单短信
|
2026-09-01 11:22:19 +08:00 |
|
Pine
|
4602c8dac7
|
feat(hall): 大厅/社区接口 + 任务报名(register)模式
- 新增 rbac_hall.py:/hall/*(overview/任务列表详情/发布任务/报名/接单列表/
人才列表详情/档案维护/岗位发布详情投递/服务发布列表详情编辑询单)+
/community/*(Hub/帖子/发帖/点赞/评论/载体列表详情/关注/入驻)
- TaskService.register/register_select:报名即占位状态机(复用 can_accept 资格判定,
register_quota 限额、去重、选定转 assigned,任务保持 published)
- can_accept 修复 actor 不在 users 表时 full=None 崩溃;写权限按叠加制 capabilities 判定
- 路由挂载 app/main.py(/hall + /community)
|
2026-08-31 22:20:16 +08:00 |
|
Pine
|
dbc29eee59
|
feat(membership): 成员制归属重构与叠加制身份(多对多成员表+转园两级审核)
- park_members/company_members 多对多成员表(0028),users.affiliation 为派生缓存由 sync_user_affiliation 刷新
- 转园两级审核状态机(0029):pending_from→pending_to→approved,支持用户/企业整体转园与运营端兜底
- 叠加制身份(0030):身份恒为运营/载体/OPC,企业管理员为能力叠加非身份,去除 enterprise/carrier 直写角色
- rbac 新增 memberships/park-transfers/企业管理员工作台 /admin/ent/* 接口
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-31 20:36:26 +08:00 |
|
Pine
|
bb3559bd51
|
feat(pay): 微信支付子应用与活动定价报名(event_orders/EV_ 前缀/支付后自动确认)
- app/pay 域新增活动订单模型与事件服务,复用充值支付链路(JSAPI+回调验签+幂等+15 分钟过期+对账补单)
- 0027: bookings 加 pay_status/order_no,events 加 price_fen(0=免费)
- 运营端桥透传活动定价字段
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-31 20:36:16 +08:00 |
|
Pine
|
7493383f6a
|
feat(users): 建号规则收紧与手机号绑定
- 管理端/园区端创建用户:账号系统随机生成不可指定,手机号必填且全局唯一
- 管理端用户管理支持绑定/更换手机号(PATCH /admin/users/{id}/phone)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-30 22:29:44 +08:00 |
|
Pine
|
e44fea96ca
|
feat(compute): /v1中继鉴权重写与平台用户余额视图
- relay 鉴权重写:JWT→引擎 PAT 逐用户归属,拒绝匿名调用,余额<=0 预检 403
- compute_client 增 list_engine_users/get_engine_user/sync_user_mirror 等
- 运营端新增 /admin/compute/platform-users 平台用户视图(引擎真实余额/折扣/用量)与充值镜像回写
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-30 22:29:44 +08:00 |
|
Pine
|
9c4908fb87
|
feat(auth): 停用账密登录 + 扫码会话有效期下发 + 叠加制身份模型
- /auth/login 全端口停用(403 引导手机号/小程序扫码登录)
- 扫码会话接口下发 expires_in(前端二维码倒计时)
- role_allowed 叠加制身份:所有账号自带 OPC 基础身份,operator/carrier 仅业务叠加,35 处 C 端端点统一放行
|
2026-08-28 17:17:58 +08:00 |
|
Pine
|
985b85cb4e
|
feat(oss): 统一OSS/CDN对象存储与直链出口体系
- infrastructure/oss.py 重写:服务端上传/预签名上下行/CDN鉴权直链(方式A)/resolve_url·to_object_path 出入口规范
- config.py 新增 OSS_REGION/OSS_CDN_BASE_URL/OSS_CDN_AUTH_KEY
- media_upload 统一走 oss 单例,返回 CDN 直链;dispatcher /oss 前缀路由
- 管理端用户列表头像出口 CDN 化
|
2026-08-28 17:17:38 +08:00 |
|
Pine
|
076f96af74
|
feat(tasks): 阶段A后端核心 —— 多模式任务字段 + 接单资格判定 + 各模式限额守卫 + 公开广场/详情can_accept
- Task 增扩展列:publisher_role/visibility/c_visible/park_public/assign_type/assign_park_id/assign_opc_id/park_id/park_released/bid_quota/win_quota/eligibility(JSON)/settle_mode(默认operator_escrow)
- TaskRepository._to_dict/create/update 同步新字段;迁移 0020_task_multi_mode
- TaskService.can_accept(task,user):仅被指派/园区专属/指派园区未发单 + eligibility(证书/地域/性别/工时/领域/专长/案例) 判定,返回 ok/reasons
- 抢单(grab)与投标(bid)接入 can_accept 守卫;bid 加报名上限与重复报名校验
- /opc/tasks 公开广场改为 published+c_visible;/opc/tasks/{id} 详情同;登录后附带 can_accept/accept_reasons(经 optional_current_user)
|
2026-08-27 19:05:18 +08:00 |
|
Pine
|
74d50c829d
|
feat(upload): 媒体上传优先走 OSS(OSS_ENDPOINT 启用→桶,返回 endpoint/bucket/key 绝对URL),本地降级
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-27 14:53:59 +08:00 |
|
Pine
|
71b1f03bca
|
feat(content): 资讯富编辑(封面/图集/视频/外链/发布人) + 媒体上传
- 迁移0016:content_items 加 cover/images_json/video/video_cover/link/publisher_name/publisher_avatar
- ContentRepository:_to_dict/create/update 支持富字段;images(list)↔images_json;update 白名单含 publisher_id
- schemas:ContentCreate/UpdateRequest 加富字段
- rbac_operator:POST /content 注入发布人(actor 昵称/头像快照);新增 POST /admin/upload(媒体上传)
- app/services/media_upload.py:统一上传(serverdata/uploads + abs_url),与 /api/upload 同契约
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-27 14:35:32 +08:00 |
|
Pine
|
5840a5cb4c
|
feat(ops): 课程/活动管理支持编辑与删除
- training_admin_bridge:+update_course/delete_course/update_activity/delete_activity(tdb.update_row/delete_row)
- schemas.operator:+CourseUpdateRequest/ActivityUpdateRequest(字段全可选,仅更新传入项)
- rbac_operator:+PUT/DELETE /admin/courses/{id}、/admin/activities/{id}(action:course.manage/activity.manage + 审计)
- 富操作(增/改/删/态)齐备
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-27 10:33:15 +08:00 |
|
Pine
|
8697119aaa
|
feat(park-company): 园区企业→成员 + 企业算力(折扣%/配额,只增不减) 后端
- 迁移0015:park_companies 加 compute_discount/compute_quota/compute_quota_used/engine_group/owner_user_id;users 加 park_company_id(成员归属一家企业)
- tenants.py:company_members/get/add/remove(写 users.park_company_id)、available_members(候选)、set_company_compute(折扣%/配额 单调非降,越界 ValueError)、sync_company_engine(引擎组倍率同步,best-effort)
- park/routers.py:carrier 端点 company-members GET/POST/DELETE、company-pool、companies/{cid}/compute(monotonic+引擎同步);鉴权 _carrier_user+_my_park 隔离本园区
- compute_client.py:set_user_group_by_username、set_group_group_ratio(组倍率=1-discount%)、grant_user_quota_by_username(解析引擎id后 add_quota)
- rbac_admin.py:平台兜底 GET /park/tenants/{tid}/companies、PUT .../companies/{cid}/compute(monotonic+audit)
- _user_to_dict 暴露 park_company_id
- 单调校验服务端强判:折扣降/配额负增 → 400
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-26 19:57:37 +08:00 |
|
Pine
|
ac2df72b21
|
refactor(auth): 去多身份/多端口——账号单一角色,删 user_identities/select-identity/多端口路由
- 删 UserIdentity 模型/IdentityRepository/db.identities,账号统一单一角色(users.role)
- auth.py 去 select-identity/_identity_summaries,登录恒返回 identities=[];_login_response_for_user 按单角色签发
- 删多端口路由 rbac_government/investor/developer 及其 main 挂载
- seed 去多身份回填(_migrate_identities/_ensure_port_agents/多端身份/端口标签映射)
- dependencies: require_port 去端口隔离(单角色放宽)、optional_current_user 修 identity_id 多余参数
- user_admin_service create_user 不再建端口身份;schemas 去 SelectIdentityRequest
- 新增迁移 0014_drop_user_identities(drop user_identities 表)
- 测试改写为单角色契约(登录空 identities、无 select-identity、账号级智能体)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-26 19:15:51 +08:00 |
|
Pine
|
53521b9438
|
feat(auth): 支持通过小程序码「绑定小程序」到当前账号
- WxQrSessionStore 支持 bind_user_id(绑定态)+message; bind_user() 访问器
- POST /auth/mp-qr/bind-start(当前账号发起,返小程序码); confirm 检测绑定态: 把openid绑到目标账号(若该微信属另一账号则按手机号/微信合并)
- poll 返回 message(bound); repositories 加 set_wx_mini_openid
|
2026-08-26 12:47:55 +08:00 |
|
Pine
|
fa06678e92
|
feat(auth): 运行环境(生产/开发)+ 小程序码版本(体验版trial/正式版release)可配
- PINEAGENTS_ENV=prod|dev 判定运行环境; /auth/status 回显 env + wxacode_env 以便确认
- PINEAGENTS_WXACODE_ENV=release|trial|develop 决定小程序码指向(默认 prod→release, dev→trial=体验版)
- get_wxacode 用该 env_version(支持体验版测试)
|
2026-08-26 12:21:30 +08:00 |
|
Pine
|
53cb18efe5
|
feat(auth): 小程序扫码登录其它端口 —— 生成小程序码(微信扫一扫自动拉起)
- wechat.get_wxacode(access_token缓存+getwxacodeunlimit),scene短token<=32
- /auth/mp-qr/start 返回 qr_image(小程序码,扫码自动打开小程序pages/scan-login) ,无凭据回退 qr_url
- mp-qr gate 改 AUTH_WECHAT_QR(默认开)
|
2026-08-26 11:59:54 +08:00 |
|
Pine
|
e761a089b9
|
feat(compute): 算力中心 余额门控+充值+真实来源数值
- relay 匿名不再回落admin令牌(root无限额)→401或受限RELAY令牌(修无余额可用)
- /admin/compute/user-balance(充值add/subtract/override)+审计; compute_client.adjust_user_quota
- proxy follow_redirects(修gin尾斜杠301/307空数据); ping 返 version+quota_per_unit
|
2026-08-26 11:59:54 +08:00 |
|
Pine
|
32ca580a06
|
feat(auth): 统一四种登录 —— 短信演示码123456 + 微信扫码OAuth + 小程序扫码
- sms stub 固定演示码123456
- 微信扫码(开放平台标准OAuth): /auth/wx-qr/start|wx-callback(GET/POST)|wx-qr/poll
- 小程序扫码: /auth/mp-qr/start|poll|confirm
- /auth/status 返回四 login_modes;WECHAT_OPEN_APPID/SECRET、AUTH_WECHAT_QR、WECHAT_QR_REDIRECT_URI 配置
|
2026-08-25 22:47:27 +08:00 |
|
Pine
|
ea904d3a50
|
feat(task): 完善任务系统 —— 分类字典/字段/四种接单方式/独占限额/交付时限
- Task 加 published_at/delivery_days/headcount/exclusive/publisher_id/category_id;新增 TaskCategory 分类字典表(35 类)。
- mode 归一 grab/bid/assign/recommend(旧 designated→assign、dispatch→recommend);TaskService 加 assign/recommend/select_recommend,claim 支持独占/限额、published+claimed 均可抢(多人)。
- TaskClaim 支持 source=assign/recommend、status=assigned/recommended/withdrawn + count_active_by_task;TaskCategoryRepository;Database 装配 task_categories。
- 端口:operator GET /admin/task-categories + POST tasks/{id}/assign|recommend|select;opc 同;park /api/tasks 返回 mode/deadline/delivery_days/headcount/exclusive/publisher_name。
- 迁移 0009(tasks 加列+task_categories)已应用+stamp;seed 35 分类字典 + task 新字段(含独占/推荐演示) + 补种已初始化库。
- 测试 test_task_system.py(独占/限额/指派/推荐/list_published/publish/category)+补齐 test_task_claim 语义, 15 passed。
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-25 19:30:16 +08:00 |
|
Pine
|
b9b5e2e2ff
|
feat(task): 任务中心扫码接单(多端) —— 服务端任务状态机/端口/迁移
- Task 加 task_code/tags/display_priority/claimed_by/claimed_at/doing_at;新增 TaskClaim 流水表。
- TaskService 加 claimed/doing/completed 状态机(claim/start_doing/complete),grab 并入 claim。
- TaskRepository 加 list_published/get_by_code/update/claim/set_doing + TaskClaimRepository;挂 Database。
- 端口:
· opc /tasks/grab-by-code、/tasks/{id}/doing、/tasks/{id}/complete
· operator POST /tasks(auto task_code) + PATCH /tasks/:id
· park /park/api/tasks(大屏展示,含 scan_payload 二维码载荷)
· training /api/tasks/claim-by-code、/api/tasks/my(小程序 C 端账号→OPC 身份 find-or-create 领单)
- 迁移 0008(tasks 加列 + task_claims)已应用+stamp;seed 补 task_code/tags/grab demo。
- tests/test_task_claim.py(自包含内存库, 状态机+流水+list_published), 直接 async 校验通过。
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-25 18:40:35 +08:00 |
|
Pine
|
b8131aec35
|
feat(compute): compute_catalog 透传模型富字段(模态/作者/供应商/区间价/窗口/输出/免费试用)给 OPC 端
|
2026-08-25 17:03:31 +08:00 |
|
Pine
|
879396b532
|
feat(user): 全局用户准确来源 + 丰富跨端字段(全端口兼容)
- users 增: wx_unionid/wx_mini_openid(微信绑定), source(来源枚举), auth_type, register_ip, last_login_ip/at, email, gender, birthday, compute_provisioned/username/quota/used_quota(算力镜像); alembic 0006
- 来源: register/phone-login/wx-login(读 X-Client 头,回退 body.source,再回退按 auth_type 推断)、admin 创建=admin、seed=seed
- auth: 登录(签发令牌)记 last_login; profile 返回 source/auth_type/compute; email/gender/birthday 可编辑
- 对账 sync-users 回写 compute_* 镜像到平台用户
- _user_to_dict 含全部新字段; 迁移已应用, 导入/零依赖校验通过(dict 含 source/算力)
|
2026-08-25 16:21:20 +08:00 |
|