/apps/:id/publish → /apps/:appId/releases/new
上传、审核与原子发布
把 checksum、隔离上传、包校验、候选版本、审核和 Gateway 生效拆成可恢复的发布流水线
上传、建版与发布 · 页面级细化任务包
把当前 local 代理上传的一键串行调用拆成上传凭证、完整性、建版与 Gateway 发布的可恢复阶段,并把 Media/S3 直传保留为目标迁移。
从当前 `/apps/:id/publish` 或目标 versions 页进入;先通过 ListApps 确认 app owner。
当前返回 AppVersion 与 gateway.synced;目标只有 Gateway pointer、host smoke 和审计全部确认后才返回 PublishReceipt。
CURRENT: SHA-256 → presign(idempotency key) → local upload proxy → complete → upgrade/create → upgrade/live → Gateway upsert;TARGET: Media presign → S3 quarantine/direct PUT;当前无 review/outbox。
桌面阶段轨 + artifact proof + command rail;手机按阶段折叠,签名 PUT URL 永不进入可复制历史或截图基线。
open_release_stage · upload_result · validation_result · publish_result;不记录 putUrl、signed headers、token、package URL。
- miniapp-open-platform formal main fa9283d;生产 developer-api / gateway 为 fb1a1b4、落后 1 提交;UX bc62595 +1 与 runtime 5e51842 +18 均为未合并 candidate
- 当前 Portal 只有 `/login`、`/apps`、`/apps/new`、`/apps/:id/publish` 四个 React 路由;E06 以 68 个 formal-main 文件为源码边界
- 当前 Portal 把 access token 写入 localStorage key `reits.portal.token`;邮箱写入 `reits.portal.email`
- 生产 Developer API 运行于 :8090,Miniapp Gateway 运行于 :8081,health/ready 200;未授权 `/api/apps` 为 401,OTP/创建/上传/发布写调用为 0
- 生产 `/api/health` 报告 storageBackend=local、ec2PersistentAssetBytes=true;源码只有 APP_ENV=production 时才强制 media;200MB ZIP 上限,前端计算 SHA-256 并发送 idempotencyKey
- 当前 upgrade/live 先 PublishVersion 标 live,再尝试 Gateway UpsertApp;Gateway 失败仍返回 synced=false
- 当前 Portal 上传、complete、建版、发布在一次表单提交中自动连续执行
- 生产尚未迁移到 reits-media / S3 隔离直传,当前字节由 EC2 local backend 持有
- 人工 review、ReleaseCandidate revision、outbox/staged pointer、host smoke 与 rollback 尚未实现
- 当前发布失败不能从稳定阶段恢复
- 当前 Gateway 同步失败可能造成控制面 live 与分发面不同步
八页分别改变身份、发布、配置、版本、能力与审核边界
upload pipeline + current facts
OPEN-PUBLISH-READY→ 选择 ZIP 包active pipeline stage
OPEN-PUBLISH-STAGE-RUNNING→ 查看阶段详情release candidate
OPEN-PUBLISH-NO-PACKAGE→ 选择 ZIPGateway sync
OPEN-PUBLISH-GATEWAY-PARTIAL→ 调查 Gateway 同步pipeline stage
OPEN-PUBLISH-STAGE-FAILED→ 从安全阶段重试release evidence snapshot
OPEN-PUBLISH-OFFLINE→ 重新连接developer:write + owner
OPEN-PUBLISH-OWNER-DENY→ 返回应用列表upgrade/live command
OPEN-PUBLISH-LIVE-CONFIRM→ 确认发布PublishReceipt
OPEN-PUBLISH-LIVE→ 查看发布证据target-open-publishIMPLEMENTATION MAP
目标定义与下一轮逐页细化入口
当前处于 B1/B2:可以拆出架构、设计、交互和 QA 任务,但完成 D01–D12、通过 B3/B4 之前,不得宣称页面已经可以照稿实现。
页面区域
- 应用与环境上下文
- 发布版本状态带
- 不可变流水线
- Artifact 证据
- Manifest 校验
- 人工审核
- 灰度/回滚
- 发布或失败回执
用户动作
- 上传 ZIP
- 恢复上传
- 创建候选版本
- 提交审核
- 撤回候选版本
- 灰度发布
- 查看或执行回滚
必须状态
- 候选版本可提交
- 上传/检疫/校验中
- 尚无候选包
- Gateway 或 Media 部分失败
- 发布流水线失败
- 离线只读证据
- 缺少 release:publish
- 发布/回滚确认
- 发布回执已生成
数据契约
- UploadCapability
- MediaAsset
- PackageIntegrityProof
- ManifestValidation
- ReleaseCandidate
- ReviewDecision
- AtomicPublishCommand
- PublishReceipt
TARGET MODULES
目标页面必须交付的模块
- 01线上/候选版本对照
- 02ZIP 本地校验
- 03Media 隔离上传
- 04Asset/checksum 证据
- 05Manifest/capability diff
- 06审核阻断
- 07灰度与回滚目标
- 08Gateway 发布回执
PRODUCT ROUTE INDEX
开放平台 的 38 个稳定 Screen ID
同一产品内的页面共享 token、导航和状态语言,但每个 Screen ID 保留自己的字段、数据契约和 QA 基线。
/login/apps/apps/new/apps/:id/publish/apps/apps/new/apps/:appId/releases/new/apps/:appId/settings/apps/:appId/config/apps/:appId/versions/apps/:appId/capabilities/apps/:appId/capability-requests/mini-company/list/mini-company/create/console/development/console/developer/console/member/console/role/console/service-accounts/console/log/robot/list/robot/create/robot/baseInfo/:id/robot/devConfig/:id/robot/command/:id/robot/token/:id/robot/:id/deliveries/mini/:type/paymentOrders/:id/mini/:type/userData/:id/mini/:type/payApply/:id/console/finance//mini/mini-company/robot/business/notice/console/my