TARGETF4B2 PARTIALQA 0/5 VERIFIEDR06 · 7/21 PASS COMPLETEAdmin · 有 release:create 与 release:publish 权限的应用发布者

上传、审核与原子发布

把 checksum、隔离上传、包校验、候选版本、审核和 Gateway 生效拆成可恢复的发布流水线

/apps/:appId/releases/newminiapp-open-platform对照 CURRENT · openapi-publish →
R06 · KNIFE 7 / 21

上传、建版与发布 · 页面级细化任务包

把当前 local 代理上传的一键串行调用拆成上传凭证、完整性、建版与 Gateway 发布的可恢复阶段,并把 Media/S3 直传保留为目标迁移。

CURRENT / TARGET ROUTE

/apps/:id/publish → /apps/:appId/releases/new

ENTRY

从当前 `/apps/:id/publish` 或目标 versions 页进入;先通过 ListApps 确认 app owner。

SUCCESS OUTPUT

当前返回 AppVersion 与 gateway.synced;目标只有 Gateway pointer、host smoke 和审计全部确认后才返回 PublishReceipt。

COMMAND MODEL

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。

RESPONSIVE + A11Y

桌面阶段轨 + artifact proof + command rail;手机按阶段折叠,签名 PUT URL 永不进入可复制历史或截图基线。

TELEMETRY

open_release_stage · upload_result · validation_result · publish_result;不记录 putUrl、signed headers、token、package URL。

CURRENT SOURCE + PRODUCTIONfa9283d / fb1a1b
  • 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、建版、发布在一次表单提交中自动连续执行
IMPLEMENTATION GAPNOT PRODUCT UI
  • 生产尚未迁移到 reits-media / S3 隔离直传,当前字节由 EC2 local backend 持有
  • 人工 review、ReleaseCandidate revision、outbox/staged pointer、host smoke 与 rollback 尚未实现
  • 当前发布失败不能从稳定阶段恢复
  • 当前 Gateway 同步失败可能造成控制面 live 与分发面不同步
四个 current Portal 路由与八张目标工作页分开记录;目标页面不能作为产品完成证据。
72-STATE PROGRAM / THIS SCREEN

八页分别改变身份、发布、配置、版本、能力与审核边界

QA 0 / 5 VERIFIED
READY发布流水线可以开始

upload pipeline + current facts

OPEN-PUBLISH-READY→ 选择 ZIP 包
LOADING正在执行当前发布阶段

active pipeline stage

OPEN-PUBLISH-STAGE-RUNNING→ 查看阶段详情
EMPTY尚未选择候选包

release candidate

OPEN-PUBLISH-NO-PACKAGE→ 选择 ZIP
PARTIAL ERROR版本已标记 live,但 Gateway 未确认

Gateway sync

OPEN-PUBLISH-GATEWAY-PARTIAL→ 调查 Gateway 同步
ERROR发布阶段失败

pipeline stage

OPEN-PUBLISH-STAGE-FAILED→ 从安全阶段重试
OFFLINE离线只能查看发布证据

release evidence snapshot

OPEN-PUBLISH-OFFLINE→ 重新连接
FORBIDDEN没有发布该应用的权限

developer:write + owner

OPEN-PUBLISH-OWNER-DENY→ 返回应用列表
CONFIRM将候选版本发布到 Gateway?

upgrade/live command

OPEN-PUBLISH-LIVE-CONFIRM→ 确认发布
SUCCESS发布已由所有目标门禁确认

PublishReceipt

OPEN-PUBLISH-LIVE→ 查看发布证据
OPEN PLATFORM BOUNDARYR06/E06 只细化 developer.reits.tech 的开放平台目标 UI 与可复核执行合同;不使用真实开发者凭证,不发送 OTP,不创建应用,不上传 ZIP,不发布或回滚版本,不轮换 secret,不提交能力申请,也不把 candidate 或目标路由冒充为当前生产事实。
UI STUDIOtarget-open-publish
Admin1440 × 900100%
100%
/apps/:appId/releases/new
TARGET UI1440 × 900FIT 100%
R06 DESIGN CANDIDATE · target-open-publish · NOT PRODUCT UI
PUBLIC GATEWAY SAMPLE / TARGET WORKSPACEProduction evidence
AU
RELEASE PIPELINE · CURRENT ROUTE /apps/:id/publish

上传与发布

现有一键表单串行完成五个真实阶段;目标拆分检查点、迁移 Media/S3,并修复先 live 后同步的非原子边界。

CURRENT PRODUCTversion 未读取Portal 没有 versions list API
→
TARGET RELEASEMedia + review + staged pointerGateway + host smoke 后才 SUCCESS
IMMUTABLE RELEASE JOURNEY

发布阶段

source fa9283d
✓
浏览器 SHA-256本地计算,不上传原文
CURRENT
✓
Storage presign返回 local upload proxy
CURRENT
✓
local upload + completeEC2 persistent bytes + bounded ZIP
CURRENT
✓
upgrade/create保存 asset/sha/version
CURRENT
05
upgrade/live先写 live,再 Gateway upsert
RISK
06
Media/S3 + review/outbox当前生产尚未迁移
TARGET
发布一致性 Gate

当前代码先更新 app_versions=live,再尝试 Gateway sync;目标必须用 outbox / staged publish,避免 gateway.synced=false 时出现假 live。

ARTIFACT PROOF · NO REAL UPLOAD

等待选择 ZIP

上限
200 MB · ZIP
Checksum
SHA-256 · 64 hex
Storage · CURRENT
local · EC2 persistent bytes
版本证据
asset_id + sha256 + optional s3_version_id
Media/S3 · TARGET
quarantine + direct PUT
当前校验production verified

✓ 浏览器计算 SHA-256

✓ presign 带 idempotencyKey

✓ local complete 做 bounded ZIP 校验

! Media 迁移 / review / rollback / host smoke 未实现

REFERENCE VIEWPORT1440 × 900Desktop first · responsive
PRIMARY TASK上传 ZIP主操作、权限与完成反馈必须同屏可验证
DATA CONTRACTUploadCapabilityready / loading / empty / error 使用同一 fixture
ACCESSIBILITYKeyboard + WCAG AA焦点顺序、可读名称、对比度进入 UI CI
VISUAL BASELINETARGET · 2026-07-17桌面/移动、浅色/错误态按稳定 Screen ID 留档

IMPLEMENTATION MAP

目标定义与下一轮逐页细化入口

当前处于 B1/B2:可以拆出架构、设计、交互和 QA 任务,但完成 D01–D12、通过 B3/B4 之前,不得宣称页面已经可以照稿实现。

01

页面区域

  • 应用与环境上下文
  • 发布版本状态带
  • 不可变流水线
  • Artifact 证据
  • Manifest 校验
  • 人工审核
  • 灰度/回滚
  • 发布或失败回执
02

用户动作

  • 上传 ZIP
  • 恢复上传
  • 创建候选版本
  • 提交审核
  • 撤回候选版本
  • 灰度发布
  • 查看或执行回滚
03

必须状态

  • 候选版本可提交
  • 上传/检疫/校验中
  • 尚无候选包
  • Gateway 或 Media 部分失败
  • 发布流水线失败
  • 离线只读证据
  • 缺少 release:publish
  • 发布/回滚确认
  • 发布回执已生成
04

数据契约

  • UploadCapability
  • MediaAsset
  • PackageIntegrityProof
  • ManifestValidation
  • ReleaseCandidate
  • ReviewDecision
  • AtomicPublishCommand
  • PublishReceipt

TARGET MODULES

目标页面必须交付的模块

  1. 01线上/候选版本对照
  2. 02ZIP 本地校验
  3. 03Media 隔离上传
  4. 04Asset/checksum 证据
  5. 05Manifest/capability diff
  6. 06审核阻断
  7. 07灰度与回滚目标
  8. 08Gateway 发布回执

PRODUCT ROUTE INDEX

开放平台 的 38 个稳定 Screen ID

同一产品内的页面共享 token、导航和状态语言,但每个 Screen ID 保留自己的字段、数据契约和 QA 基线。

01
开发者登录/login
Web
02
我的小程序/apps
Web
03
创建小程序/apps/new
Web
04
应用发布/apps/:id/publish
Web
05
应用索引与控制面健康/apps
Admin
06
三步创建应用/apps/new
Admin
07
上传、审核与原子发布/apps/:appId/releases/new
Admin
08
应用基本信息与生命周期/apps/:appId/settings
Admin
09
环境、回调与凭证/apps/:appId/config
Admin
10
版本历史、对比与回滚/apps/:appId/versions
Admin
11
接口、Scope 与使用量/apps/:appId/capabilities
Admin
12
能力申请与审核/apps/:appId/capability-requests
Admin
13
组织目录与企业边界/mini-company/list
Admin
14
创建与验证企业/mini-company/create
Admin
15
开发治理概览/console/development
Admin
16
开发者身份与资源关系/console/developer
Admin
17
成员、邀请与离职治理/console/member
Admin
18
角色、策略与有效权限/console/role
Admin
19
服务账号与工作负载身份/console/service-accounts
Admin
20
操作、授权与安全审计/console/log
Admin
21
机器人目录与运行健康/robot/list
Admin
22
创建机器人与最小授权/robot/create
Admin
23
机器人基本信息与生命周期/robot/baseInfo/:id
Admin
24
事件订阅与开发配置/robot/devConfig/:id
Admin
25
命令定义、权限与测试/robot/command/:id
Admin
26
Bot Token 与运行凭证/robot/token/:id
Admin
27
事件交付、重试与 Redelivery/robot/:id/deliveries
Admin
28
支付订单与资金生命周期/mini/:type/paymentOrders/:id
Admin
29
用户数据、授权与主体请求/mini/:type/userData/:id
Admin
30
支付能力申请与独立复核/mini/:type/payApply/:id
Admin
31
组织财务、结算与对账/console/finance
Admin
32
公共开发者首页与能力总览/
Web
33
Mini App 产品、Quickstart 与宿主边界/mini
Web
34
企业开发与组织治理介绍/mini-company
Web
35
机器人、命令与事件自动化介绍/robot
Web
36
商业合作、场景准入与能力边界/business
Web
37
平台公告、变更影响与订阅中心/notice
Web
38
个人账号、安全、授权与偏好中心/console/my
Admin