Pine
|
3fe6bf6dbc
|
feat: 登录注入 MQTT 凭证、官方智能体平台化、会话ID扩容、微信支付分账/认证迁移
|
2026-09-03 12:40:05 +08:00 |
|
Pine
|
6bac6b5c80
|
fix: RatingRepository 添加 list_for 方法,修复 /me/credit 500 错误
/me/credit 接口调用了 db.ratings.list_for(),但 RatingRepository 只有 avg_for 和 create 方法,
导致 AttributeError 返回 500。添加 list_for 方法返回用户收到的评价列表。
|
2026-09-03 11:16:23 +08:00 |
|
Pine
|
ab52d4013d
|
fix: 修复接口错误 - _loads未定义+重新注册ecosystem路由
1. repositories.py: 添加 _loads 函数定义(之前从 hall_repositories 隐式依赖导致 NameError)
- 修复 /cert/types 返回 500 错误
2. main.py: 重新注册 rbac_ecosystem 路由(通知/信用/任务/合同/争议等基础功能)
- 修复 /me/credit 返回 404 错误
3. rbac_ecosystem.py: 将已移除的 service 角色统一替换为 opc_member
- _ANY 元组移除 service
- 所有 require_roles 中的 service 替换为 opc_member
|
2026-09-03 11:05:37 +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
|
5b229f3de8
|
refactor: users.role 归一化为默认端口标记
1. 创建 normalize_user_roles.py 迁移脚本
2. 8 个旧角色用户(developer/enterprise/investor/provider)归一化为 opc_member
3. account_types.py 注释明确 role 语义:仅用于默认端口和前端展示
4. 权限判断完全依赖 capabilities 叠加制,role 仅作回退安全网
|
2026-09-03 09:20:24 +08:00 |
|
Pine
|
d851b54755
|
refactor: 角色组织模型重构 - 阶段二完成
1. 运行迁移脚本:同步 2 条园区管理员 + 1 条企业管理员到 organization_members
2. 新增 get_user_organizations / get_user_primary_org 辅助函数
3. 改造各路由优先从 organization_members 查询组织:
- rbac_org.py: /org/me 返回所有绑定组织
- rbac_portals.py: referrals 和 carrier_park 优先用 organization_members
- rbac_hall.py: 发布岗位优先用 organization_members 获取企业
4. users.org_id 保留作回退,不删除字段,风险可控
|
2026-09-03 09:18:28 +08:00 |
|
Pine
|
97f3c1956c
|
refactor: 角色组织账号模型重构 - 阶段二(保守)
1. 创建数据迁移脚本 migrate_members_to_org.py
- ParkMember.admin 同步到 organization_members (type=carrier)
- CompanyMember.is_admin 同步到 organization_members (type=enterprise)
- 自动创建缺失的 organization 记录,幂等
2. 修改 _compute_capabilities,优先查 organization_members
- carrier 能力:org_members.role=admin + org.type=carrier
- enterprise 能力:org_members.role=admin + org.type=enterprise
- 旧表 park_members/company_members 保留兼容
3. 不删除旧表,不修改表结构,风险可控
|
2026-09-03 00:39:41 +08:00 |
|
Pine
|
6bb988cc3e
|
refactor: 角色组织账号模型重构 - 阶段一
1. capabilities 写入 JWT,避免每次请求查库
2. 移除 service 账号类型,非 operator/carrier 统一归为 opc_member
3. 前端统一基于 capabilities 判断权限
4. 清理登录接口死代码,恢复账号密码登录
5. 移除 enterprise/provider/government/investor/developer 角色
6. 清理 seed.py 中多余角色和权限定义
7. 重写 rbac_portals.py 只保留 carrier 路由
|
2026-09-03 00:35:40 +08:00 |
|
Pine
|
8dc48ac072
|
fix(hall): /tasks/mine 和 /jobs/mine 移至参数化路由之前注册,避免被 {task_id}/{job_id} 抢先匹配返回任务不存在
|
2026-09-02 18:58:23 +08:00 |
|
Pine
|
0f4a951c38
|
feat(admin): 调研/政策详情匹配题目定义返回 answer_list;新增 5 模块汇总统计 API + 调研题目定义 API
|
2026-09-02 17:20:45 +08:00 |
|
Pine
|
153b61bec6
|
fix(market): skill bundle 注入商品中文 display_name;_parse_skill_bundle 优先从 frontmatter 取 name
|
2026-09-02 15:06:31 +08:00 |
|
Pine
|
1a8cd4a3ee
|
fix(market): 技能包名称解析——优先从 SKILL.md frontmatter 取 name,修复根目录 zip 名称变成 SKILL.md 的 bug
|
2026-09-02 14:50:19 +08:00 |
|
Pine
|
581ef33112
|
fix(market): bundle_json 字段 MySQL 已 ALTER 为 MEDIUMTEXT(skill 内嵌 SKILL.md 可能超 64KB)
|
2026-09-02 14:44:03 +08:00 |
|
Pine
|
a689fbdf7f
|
fix(market): 详情接口浏览量+1,下载接口下载量+1(bump_stats 此前定义未调用)
|
2026-09-02 14:41:33 +08:00 |
|
Pine
|
5db03936f9
|
feat(pay): 支付支持代付——任意登录用户均可为订单支付,余额到账订单创建者
移除所有支付相关接口的订单归属校验和 opc_member 角色限制:
【算力充值 pay/service.py + pay/routers.py】
- build_pay_params: 移除 order.user_id != user.id 归属校验
- recharge_pay_params: require_roles(opc_member) → get_current_user(任意登录用户)
- recharge_status: 移除归属校验,角色放宽为任意登录用户
【市场购买 market/service.py + market/routers.py】
- build_pay_params: 移除归属校验
- query_status: 移除归属校验
- market_pay_params / market_order_status: 角色放宽为任意登录用户
【到账逻辑不变】
- process_paid_order 按订单 engine_user_id(订单创建者)加款
- 支付者 B 的 openid 仅用于 JSAPI 下单,不影响到账目标
- 审计日志 user_id 记录订单创建者
场景:A 用户 web 端创建充值订单 → B 用户小程序扫码 → B 登录并支付 → 余额到账 A 用户
|
2026-09-02 12:13:21 +08:00 |
|
Pine
|
86c6d24b17
|
fix(pay): 所有支付小程序码 page 路径修正为 pages-extra 子包路径
统一修正3处支付相关小程序码的 page 参数(之前误写为主包 pages/ 路径,
扫码后微信找不到页面→白屏):
- app/pay/service.py: 算力充值支付 → pages-extra/pay/index
- app/market/service.py: 市场购买支付 → pages-extra/pay/index
- app/training/main.py: 活动报名支付 → pages-extra/pay-qr/index
加上之前修复的 scan-login(auth.py + wechat.py 默认参数),
后端所有 get_wxacode 调用的 page 路径现已全部正确。
|
2026-09-02 11:47:34 +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
|
cae96824ec
|
fix(auth): mp-qr失败时返回详细错误信息,便于排查小程序码生成失败
- /auth/mp-qr/start 和 /auth/mp-qr/bind-start 在 get_wxacode 失败时
返回 error 字段,包含具体失败原因(缺少 WECHAT_APPID/SECRET 或微信API调用失败)
- 之前只返回 mp_enabled:false + qr_url,前端无法区分是配置问题还是API问题
|
2026-09-02 11:03:53 +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
|
052349a496
|
incubator: 申请时段/时长校验+平台运营方管理兜底
- create_reservation 增加开放时段(open_hour_start/end)与单次时长(max_minutes)校验
- resolve_identity 增加 operator 角色管理方兜底(平台运营方可管理本园区)
- 保留 yunpeng(admin_username) 精确绑定为园区载体管理员
|
2026-09-01 23:16:47 +08:00 |
|
Pine
|
ece9dcc7ee
|
feat(incubator): 园区设置+企业/成员信息自动识别接口
- 新增 IncubatorSetting 模型与迁移 0042:开放区域说明/申请注意事项/月报说明
- GET/PUT /incubator/settings(管理方维护,提交方只读)
- GET /incubator/company(提交方企业资料,月报/申请表单自动带出)
- GET /incubator/company/members(企业绑定成员,联系人自动填入)
|
2026-09-01 22:31:53 +08:00 |
|
Pine
|
684f4253b9
|
fix(incubator): 身份判定限定「昆明市大学生创业园」本园
本应用仅服务昆明市大学生创业园(按名称精确定位 park_tenants):
- 管理方 = 本园管理员(operator_user_id 或 admin_username 绑定,当前 admin_username=yunpeng)
- 提交方 = 本园(tenant_id=T001)的在园企业成员
- 其他账号 → 无权限,明确提示'不属于昆明市大学生创业园'
(移除此前 operator/carrier 任意角色放宽;数据范围本已按 identity.tenant_id 隔离)
|
2026-09-01 21:16:26 +08:00 |
|
Pine
|
04624ab477
|
feat(dm): 站内会话 + 我发布的任务/岗位(0041)
- 0041 迁移:dm_messages 点对点私信表(会话按双方聚合,read_at 未读标记)
- DmRepository:send/conversations(聚合末条+未读数)/thread/mark_read
- /dm/conversations、/dm/messages(GET 记录+已读、POST 发送,禁自发、校验接收人存在)
- /hall/tasks/mine(发布者视角,附接单/报名/投标计数)、/hall/jobs/mine(附投递计数)
|
2026-09-01 20:19:04 +08:00 |
|
Pine
|
85efb770ab
|
feat(task): 载体端任务管理——平台级任务下发载体端显示,载体端可下架/上架(不可编辑),大屏联动
- park 子应用 /park/api/park/tasks 扩展:返回本园任务 + 平台级任务(受载体端下架控制,附 hidden 标记)
- 新增 /park/api/park/tasks/{id}/visibility 载体展示开关(hide/unhide,tenant 身份)
- 小程序载体端 park-tasks 页面升级为任务管理:平台任务+本园任务展示、可下架/上架
- 小程序分包治理(80051 主包超 2MB):主包 5 tabBar 页 + pages-extra/pages-op 两分包
- tabBar 测评改为大厅(测评页保留、首页入口 navigateTo)
- 小程序上传前图片压缩(ensureUploadSize)规避 2MB 上传限制
|
2026-09-01 20:02:46 +08:00 |
|
Pine
|
7a9741a333
|
feat(pay): 特约商户进件接口——平台以服务商身份代提交进件+素材上传+状态查询自动激活
- profitsharing.py:submit_applyment / query_applyment / upload_image(复用服务商 API 证书加密敏感字段)
- service.py:create_merchant_applyment(幂等:已有 applying/active 商户绑定返回已有);query_merchant_applyment(FINISHED 自动回填 sub_mchid + 添加 MERCHANT_ID 接收方激活;REJECTED 标记+原因)
- routers.py:POST upload-media / POST applyment / GET {binding_id}/applyment
- payment_bindings 增加 detail 列(0040_payment_binding_detail,接在 0040_incubator 之后)
- 冒烟测试覆盖进件闭环(提交幂等/通过自动激活/驳回)
|
2026-09-01 19:49:50 +08:00 |
|
Pine
|
53f7f495d3
|
feat(incubator): 昆明大学生创业园运营系统子应用——月度报告(填报/审核/统计) + 共享区域(直播间/会议室)申请/审批/备案
- app/incubator/ 独立子应用(service.py + routers.py,prefix=/incubator,21 接口)
- 身份自动判定:管理方=role carrier(归属 park_tenants.operator_user_id 或权限码),提交方=company_members 关联 park_companies.tenant_id 非空
- 月度报告:一企业一月一报告(UNIQUE),状态 draft/submitted/approved/rejected,统计维度对齐《派音人工智能2608》纸质月报
- 共享区域:live/meeting 两类,冲突检测按 (area_id,start_at,end_at) 与 pending/approved 重叠,承诺勾选校验,审批+备案
- models.py 追加三 ORM 模型;main.py 挂载路由;0040_incubator 迁移(父=0039_wx_profitsharing)
|
2026-09-01 19:48:51 +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
|
496c006ba0
|
feat(task): 载体端任务流通——平台级任务下发载体端+可下架/上架(不可编辑)+大屏联动
- 新增 task_park_visibility 表(task_id+park_id+visible,唯一约束),alembic 0038 迁移
- TaskParkVisibilityRepository:get/set(幂等 upsert)/hidden_ids
- rbac_portals 新增载体端任务管理:GET /carrier/tasks(平台级任务+本载体下架状态)、POST /carrier/tasks/{id}/hide|unhide(不可编辑,无 update 端点)
- 大屏 /park/api/tasks 过滤升级:本园专属 ∪ 平台级任务(受载体下架控制)
- seed:u_car_01 幂等绑定默认园区 T001
|
2026-09-01 14:44:14 +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
|
92d0c43419
|
fix(market): 修复安装包下载 500 并新增示例包上架 CLI
- service._row 补充 bundle_json/bundle_url 字段,修复 /market/items/{id}/bundle
因 KeyError 返回 500(skill 内嵌 bundle / plugin-app OSS 直链均受影响)
- bundle_payload 适配已解析的 bundle_json dict
- 新增 scripts/dev/publish_market_examples.py:issue-token / publish / verify 三子命令,
支持一键上架技能/插件/应用示例包(创建→上传→提交→审核→上架→精选)
|
2026-09-01 00:12:15 +08:00 |
|
Pine
|
0a6f753584
|
fix(db): 补回 system_configs.description 列(修复 /admin/config 500)
- 此前 MySQL 适配时模型编辑误删 description,导致仓储序列化 AttributeError
- 0037_system_config_description:幂等补列(SQLite 已有则跳过)并回填存量说明
- 与并行的 0037_market 分叉建 merge 版本,统一迁移线(当前 head=02d10eccb1f9)
|
2026-08-31 23:45:03 +08:00 |
|
Pine
|
04808aaf76
|
feat(market): 技能/插件/应用统一市场子应用(目录/管理/定价/购买/支付分发)+ 0037 迁移与权限种子
|
2026-08-31 23:41:59 +08:00 |
|
Pine
|
6d0bfae6aa
|
feat(hall): 服务订单状态机 + 发包方任务操作(0036)
- 0036 迁移 + ServiceOrder ORM/仓储(service_orders:预约/下单→接单→交付→完成)
- /hall/services/{id}/order 预约下单(禁下自己的单);/hall/orders/bought|selling 双视角
- /hall/orders/{id}/{action} 六动作流转(accept/reject/start/deliver/complete/cancel),
服务方/买方/运营三方权限约束 + 状态机非法流转校验
- /hall/tasks/{id}/win|assign|select|cancel:评标定标/指派/报名选定/取消(仅发包方或运营端)
|
2026-08-31 23:09:27 +08:00 |
|
Pine
|
40c2f75b18
|
feat(admin): 大厅与社区治理接口(岗位/OPC服务/人才/大厅任务/帖子)
- /admin/hall/jobs* 岗位列表与审核上下架
- /admin/hall/services* OPC 服务审核
- /admin/hall/talents* 人才档案列表与上架下架
- /admin/hall/tasks* 大厅任务审核列表(含 pending)与通过/驳回/下架
- /admin/community/posts* 帖子列表、隐藏/恢复、置顶/取消置顶
- 全部走 operator 角色 + write_audit 审计
|
2026-08-31 23:05:13 +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
|
edf9691d7e
|
feat(hall): 大厅与社区数据层(0035 迁移 + ORM + 仓储)
- 0035 迁移:jobs/job_applications/opc_services/service_inquiries/talent_profiles/
community_posts/community_comments/community_likes/community_follows 建表;
tasks.register_quota、bids.material、park_tenants.area_m2/services_json 扩展
- models.py 新增九张大厅/社区表 ORM;tasks/bids/park_tenants 同步扩展列
- 新增 infrastructure/hall_repositories.py(岗位/投递/服务/询单/人才/帖子/评论/点赞/关注仓储,
驼峰出参契约)并挂载进 Database 门面(hall_* / community_*)
- TaskRepository.create/update/_to_dict 补 register_quota;
ParkAdmissionRepository.create(社区入驻复用,source=community)
|
2026-08-31 22:20:16 +08:00 |
|
Pine
|
374767bbca
|
chore: 清理废弃 SQLite 代码与过时注释
- 删除死代码 app/db.py / app/repositories.py / app/dependencies.py(legacy 模块,
import 即损坏且全仓无引用,活跃实现在 app/infrastructure/)
- 删除废弃库文件 serverdata/data/opc.db(2026-08-24 并入总库前的旧分库)
- 注释措辞同步 SQLite→统一总库(DATABASE_URL 决定方言)
|
2026-08-31 21:46:22 +08:00 |
|
Pine
|
176bafdfe5
|
refactor(training): 数据层收编 SQLAlchemy 统一走 DATABASE_URL(去 sqlite3 直连)
- db.py:原生 sqlite3 模块重写为 SQLAlchemy 同步引擎(经 infrastructure.make_sync_engine,
同源 config.DATABASE_URL,SQLite/MySQL 双方言);保留 get_conn/fetch_one/list_all/
insert/update_row/delete_row 签名,get_conn 返回「? 占位符兼容 shim」,20+ 调用点零改动
- SCHEMA 常量存档不再执行(表由 alembic 0003+ 管理);新增 reset_engine 供测试/切库
- main.py:删除 sqlite3 直连残余(未支付订单关闭路径)
|
2026-08-31 21:40:31 +08:00 |
|
Pine
|
ee1dfdfed9
|
feat(db): 数据库层 MySQL 适配(方言钩子/同步驱动映射/种子方言分支)
- infrastructure/db.py:MySQL 方言编译钩子(String 无长度→VARCHAR(255),Text→MEDIUMTEXT);
新增 sync_database_url/make_sync_engine(sqlite+aiosqlite→sqlite,mysql+asyncmy→mysql+pymysql)
- models.py:sessions.token 显式 String(2048)、system_configs.value 改 Text(存量数据超 255,MySQL 需兼容)
- seed.py:_add_agent 幂等插入按方言分支(SQLite=INSERT OR IGNORE / MySQL=INSERT IGNORE)
- park/tenants.py:同步只读引擎改走 make_sync_engine(原 +aiosqlite replace 对 MySQL 无效)
- 依赖补 pymysql;.env.example 补 PINEAGENTS_DEMO_DATABASE_URL 说明
|
2026-08-31 21:40:17 +08:00 |
|
Pine
|
9a5e9176b0
|
feat(park): 载体资料与云南载体地图数据层(0034)
- park_tenants 新增坐标/封面/地址/区域/富文本介绍·政策·入驻流程/联系方式/标签/展示统计列
- 审核流:载体端改动写草案待审(pending),运营端通过后合并生效;运营端直接编辑即时生效
- 接口:运营端 /park/tenants/{tid}/profile(GET/PUT/review),载体端 /park/api/my-park-profile
- C 端公开载体 API:GET /api/parks、GET /api/parks/{pid}(training 子应用)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-31 20:36:53 +08:00 |
|
Pine
|
614804a0a6
|
feat(training): 活动体系重构与报名生命周期闭环
- 活动三维标签(区域/类型/模式)+ 发布范围(本园区/公开)+ 审核流(0031):C 端仅展示 approved,园区活动仅本园区可见
- 独立字段:富文本介绍 body、注意事项 notice(0032)、外链报名 signup_mode/external_url、发布者信息
- 审核端点 /api/events/{eid}/review 双身份(operator 任意 / carrier 限本园区)+ /api/events/mine
- 报名生命周期闭环(0033):未支付/待审核=删除,待参加=取消,结束未签到=爽约可申诉,未支付 15 分钟自动关闭删除
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-31 20:36:42 +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
|
9f57ef25d6
|
refactor(training): 用户识别支持手机号身份并规范同步旁路注释
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-30 22:29:44 +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 |
|