Design v2 實現與驗收
本地 Design v2 目錄包含 110 個場景/120 項有效功能;已注釋的 CRC 對話方塊 F066 不計入。原生實現覆蓋各場景族及 2026-10-14 評審發現的九項功能缺口。本清單區分已實現交互與真實服務、作業系統驗收,不表示已達到像素級設計一致性。
internal/app/testdata/design-v2-scenes.json 固定場景 ID。TestDesignV2Scenes 以 5 種語言 × 2 種主題、900 × 620 尺寸繪製 104 個由應用管理的場景測試資料。這 1,040 項檢查檢測缺失翻譯及被裁切的關閉操作,不能獨立證明所有交互正確。make snapshots 導出英語淺色/深色版本。D11、D12、D47、D53、D54 和 D55 屬於作業系統介面或交接,不計入無視窗繪製數量。
現有能力
這些能力已連接到原生視圖和服務介接器。評審後續工作記錄九組已完成功能及回歸覆蓋。
- 連接:AK、STS、授權碼、HTTPS Endpoint 模式、主動啟用請求者付費、憑據庫支援的保持登入、到期/只讀約束、歷史、書簽和主目錄。
- 瀏覽:列表/網格、前綴搜尋和分頁、地址導航、上下文選單、多選、拖放計劃和有界圖片縮圖。
- Bucket:按區域提供儲存選項、顯式公開 ACL 確認、空桶刪除、分頁分片搜尋及佇列化清理。
- 物件:遞迴複製/移動/重新命名/刪除、同區域跨桶貼上、衝突確認、逐項結果、HTTP 標頭和中繼資料、軟連結、歸檔恢復及受恢復狀態限制的預覽。
- 預覽:文字編輯/Diff/未儲存修改保護、圖片縮放、原生 WebView 音影片,以及明確的文件/FLV/不支援格式回退。文字儲存保留標頭、中繼資料、標籤、ACL 和儲存類型。預設建立副本;替換原物件需要顯式選擇和 ETag 預檢。
- 分享:公開 ACL 校驗、限時簽名 URL、自訂/加速網域、二維碼生成、剪貼簿/瀏覽器交接,以及確認後發送 SMTP 郵件。
- 身份:RAM 使用者和 AccessKey、使用者/組/角色策略授權、多物件策略、新使用者授權碼、STS 角色授權碼和到期時間。部分完成的授權保留在對話方塊內供重試。
- 傳輸:獨立上傳/下載限制、有上限的自動重試、暫停/恢復/移除/清空、診斷詳細資訊、持久化檔案傳輸恢復和 CRC/ETag 校驗。
- 偏好設定/分發:獨立的五分類自動儲存設定對話方塊、系統主題和語言、可搜尋/清空的會話診斷,以及在設定更新源/金鑰的建置中自動下載簽名包、顯示說明、進度/錯誤/重試、確認安裝和重新啟動。未設定建置提供手動發布下載。
評審後續工作
2026-10-14 的检查设计页面实施情况評審發現九項功能缺口。下列程式碼改動完成了這些功能組。路徑相對於儲存庫;設計基線所述本地目錄和 previews/all 仍是視覺參考。
範圍決定:FLV 播放
D25-flv 保留外部打開/下載回退,實現在 internal/app/preview_media.go。應用內解碼仍是獨立的範圍決策。
證據與剩餘驗收
場景測試資料現在涵蓋獨立確認、可編輯儲存 Diff、RAM 結果/郵件失敗、設定介面、批量結果和更新就緒。專項測試覆蓋取消、保留草稿/憑據、過期回呼、重復中繼資料、限定範圍策略及暫存更新。部分無關錯誤場景仍使用通用網路錯誤;繪製覆蓋本身不能證明真實服務行為。真實帳號、編解碼器、作業系統和簽名分發驗收繼續在下文及發布指南中追蹤。
生產邊界
實現期間沒有執行真實 OSS/RAM/SMTP 請求。帳號憑據、Windows/Linux 桌面環境及分發簽名設定仍需所有者提供,見發布指南。原生 macOS 啟動僅為冒煙測試。WebView 編解碼器行為、作業系統對話方塊、憑據庫提示、真實歸檔延遲及簽名更新安裝都需要這些環境。
本地驗證
2026-10-14 在 macOS 上的本地驗證覆蓋已完成的後續工作,不能替代真實驗收:
go test ./...、go test -race ./...、go vet ./...和go tool mygo vet均通過。- 全部 1,040 項場景檢查通過;
make snapshots導出了視覺回歸圖片。 - 原生 macOS 啟動/捕獲和應用打包通過。先前基線評審記錄了 Windows/Linux 交叉編譯;這些平台的桌面運行仍待驗收。
- 文件類型檢查和生產建置通過。Go 格式及空白檢查無問題。
應用限制
應用中明確保留以下邊界:
- 連接使用 HTTPS。遠端文字載入上限 8 MiB,可編輯 UTF-8 上限 5 MiB;圖片解碼上限 2000 萬像素。文件和 FLV 預覽提供外部打開/下載。未支援編解碼器的行為取決於已安裝的原生媒體引擎。
- 中繼資料自複製上限 1 GiB。遞迴計劃最多 100,000 個唯一鍵。伺服器端跨桶複製要求區域一致。物件修改任務僅限目前會話;檔案上傳/下載記錄可在重連後保留。
- OSS ETag 預檢後的刪除/替換不具備原子性,應避免並行寫入。啟用版本控制的 Bucket 中禁止覆蓋語義不同。顯式替換可能建立新物件版本。
- SMTP 要求隱式 TLS 或 STARTTLS。金鑰使用記憶體或作業系統憑據庫。RAM AccessKey Secret 僅在本對話方塊建立時顯示;不能從 RAM 獲取已有 Secret。
- 多物件授權允許列舉公共父目錄以便接收者瀏覽;物件讀寫仍限制在選定資源內。授權前應審查可編輯策略。
- 已移除傳輸記錄使用刪除標記,防止遲到的工作完成將其恢復。移除任務保留可續傳的部分資料;分片刪除是獨立且需確認的操作。
- 未簽名開發建置不能安裝更新。準備簽名發布時必須向
mygo.json提供可信發布者公鑰及更新源;此實現不會自行生成信任金鑰。
場景清單
下表“UI”表示場景在 TestDesignV2Scenes 中有原生狀態測試資料,不代表設計交互或視覺佈局已完整實現。請結合評審後續工作閱讀相關行。服務測試使用注入的 HTTP 響應,不等於雲端驗收。下列無目錄檔案名相對於 internal/app/。保留目錄的原始中文標題,便於按 ID 與源目錄直接比對。
| 場景 | 目錄原始標題 | 實現 | 證據/外部驗收 |
|---|---|---|---|
| P01 | 连接 · AccessKey | connection_view.go, connection_actions.go, saved_locations.go | UI;授權、範圍和連接測試;真實登入/憑據庫待驗收 |
| P02 | 连接 · 授权码 | connection_view.go, connection_actions.go, saved_locations.go | UI;授權、範圍和連接測試;真實登入/憑據庫待驗收 |
| P03 | 所有 Bucket | browser_view.go, browser_controls.go, saved_locations.go | UI;分頁/導航測試;真實 OSS 待驗收 |
| P04 | 对象浏览与详情 | browser_view.go, browser_controls.go, saved_locations.go | UI;分頁/導航測試;真實 OSS 待驗收 |
| P05 | 上传队列 · 完整状态 | transfer_controls.go, internal/transfers | UI;佇列、恢復、校驗和及路徑測試;真實傳輸待驗收 |
| P06 | 下载队列 | transfer_controls.go, internal/transfers | UI;佇列、恢復、校驗和及路徑測試;真實傳輸待驗收 |
| D01 | 连接历史 | connection_view.go, connection_actions.go, saved_locations.go | UI;授權、範圍和連接測試;真實登入/憑據庫待驗收 |
| D02 | 退出连接确认 | connection_view.go, connection_actions.go, saved_locations.go | UI;授權、範圍和連接測試;真實登入/憑據庫待驗收 |
| D03 | 收藏管理 | browser_view.go, browser_controls.go, saved_locations.go | UI;分頁/導航測試;真實 OSS 待驗收 |
| D04 | 创建 Bucket | bucket_tools.go, internal/ossclient/buckets.go | UI;請求/範圍/分頁測試;真實 Bucket 待驗收 |
| D05 | 公开访问风险 | bucket_tools.go, internal/ossclient/buckets.go | UI;請求/範圍/分頁測試;真實 Bucket 待驗收 |
| D06 | Bucket 访问权限 | bucket_tools.go, internal/ossclient/buckets.go | UI;請求/範圍/分頁測試;真實 Bucket 待驗收 |
| D07 | 删除空 Bucket | bucket_tools.go, internal/ossclient/buckets.go | UI;請求/範圍/分頁測試;真實 Bucket 待驗收 |
| D08 | 上传碎片管理 | bucket_tools.go, internal/ossclient/buckets.go | UI;請求/範圍/分頁測試;真實 Bucket 待驗收 |
| D09 | 删除上传碎片 | bucket_tools.go, internal/ossclient/buckets.go | UI;請求/範圍/分頁測試;真實 Bucket 待驗收 |
| D10 | 新建目录 | object_actions.go, object_clipboard.go | UI;遞迴計劃和部分修改測試;真實修改待驗收 |
| D11 | 选择上传文件与目录 | internal/desktop, transfer_actions.go, internal/transfers/download_plan.go | 原生委託;作業系統選擇器/定位及取消待驗收 |
| D12 | 下载保存位置 | internal/desktop, transfer_actions.go, internal/transfers/download_plan.go | 原生委託;作業系統選擇器/定位及取消待驗收 |
| D13 | 文件与目录重命名 | object_actions.go, object_clipboard.go | UI;遞迴計劃和部分修改測試;真實修改待驗收 |
| D14 | 跨桶批量粘贴确认 | object_actions.go, object_clipboard.go | UI;遞迴計劃和部分修改測試;真實修改待驗收 |
| D15 | 复制移动进度 | transfer_controls.go, internal/transfers | UI;佇列、恢復、校驗和及路徑測試;真實傳輸待驗收 |
| D16 | 同名覆盖确认 | object_actions.go, object_clipboard.go | UI;遞迴計劃和部分修改測試;真實修改待驗收 |
| D17 | 批量删除确认 | object_actions.go, object_clipboard.go | UI;遞迴計劃和部分修改測試;真實修改待驗收 |
| D18 | 对象访问权限 | object_actions.go, internal/ossclient/objects.go | UI;屬性/ACL 保留測試;真實更新待驗收 |
| D19 | HTTP 头与元数据 | object_actions.go, internal/ossclient/objects.go | UI;屬性/ACL 保留測試;真實更新待驗收 |
| D20 | 创建软链接 | internal/ossclient/advanced.go, object_actions.go | UI;軟連結、範圍及恢復狀態/請求測試;真實恢復待驗收 |
| D21 | 恢复归档对象 | internal/ossclient/advanced.go, object_actions.go | UI;軟連結、範圍及恢復狀態/請求測試;真實恢復待驗收 |
| D22 | 批量恢复归档 | internal/ossclient/advanced.go, object_actions.go | UI;軟連結、範圍及恢復狀態/請求測試;真實恢復待驗收 |
| D23 | 文本与代码编辑 | object_actions.go, preview_media.go | UI;大小/完整性、未修改/Diff 及放棄測試 |
| D24 | 图片预览 | object_actions.go, preview_media.go | UI;大小/完整性、未修改/Diff 及放棄測試 |
| D25 | 视频预览 | preview_media.go | UI 回退;原生播放器/編解碼器及外部打開待驗收 |
| D26 | 文档预览降级 | preview_media.go | UI 回退;原生播放器/編解碼器及外部打開待驗收 |
| D27 | 不支持的文件格式 | object_actions.go, preview_media.go | UI;大小/完整性、未修改/Diff 及放棄測試 |
| D28 | 保存前差异对比 | object_actions.go, preview_media.go | UI;大小/完整性、未修改/Diff 及放棄測試 |
| D29 | 归档预览检查 | internal/ossclient/advanced.go, object_actions.go | UI;軟連結、範圍及恢復狀態/請求測試;真實恢復待驗收 |
| D31 | 私有对象签名地址 | internal/ossclient/share.go, object_actions.go | UI;二維碼精確解碼、URL 編碼、ACL 及簽名範圍測試;網域綁定待驗收 |
| D32 | 邮件发送下载地址 | mail_tools.go, internal/mail | UI;地址/標頭/取消測試;真實 TLS 投遞待驗收 |
| D33 | 简化 Policy 授权 | ram_tools.go, internal/identity | UI;簽名 RPC、分頁、範圍和授權碼測試;真實 RAM/STS 待驗收 |
| D34 | 创建子用户并授权 | ram_tools.go, internal/identity | UI;簽名 RPC、分頁、範圍和授權碼測試;真實 RAM/STS 待驗收 |
| D35 | 子用户授权结果 | ram_tools.go, internal/identity | UI;簽名 RPC、分頁、範圍和授權碼測試;真實 RAM/STS 待驗收 |
| D36 | 设置 · 传输 | settings_controls.go, system_settings.go, internal/diagnostics | UI;設定校驗和日誌輪轉測試 |
| D37 | 目录临时授权码 | ram_tools.go, internal/identity | UI;簽名 RPC、分頁、範圍和授權碼測試;真實 RAM/STS 待驗收 |
| D38 | RAM 用户管理 | ram_tools.go, internal/identity | UI;簽名 RPC、分頁、範圍和授權碼測試;真實 RAM/STS 待驗收 |
| D39 | 编辑 RAM 用户资料 | ram_tools.go, internal/identity | UI;簽名 RPC、分頁、範圍和授權碼測試;真實 RAM/STS 待驗收 |
| D40 | 删除 RAM 用户确认 | ram_tools.go, internal/identity | UI;簽名 RPC、分頁、範圍和授權碼測試;真實 RAM/STS 待驗收 |
| D41 | AccessKey 管理 | ram_tools.go, internal/identity | UI;簽名 RPC、分頁、範圍和授權碼測試;真實 RAM/STS 待驗收 |
| D42 | 禁用 AccessKey 确认 | ram_tools.go, internal/identity | UI;簽名 RPC、分頁、範圍和授權碼測試;真實 RAM/STS 待驗收 |
| D43 | 删除 AccessKey 确认 | ram_tools.go, internal/identity | UI;簽名 RPC、分頁、範圍和授權碼測試;真實 RAM/STS 待驗收 |
| D44 | 移除未完成任务 | transfer_controls.go, internal/transfers | UI;佇列、恢復、校驗和及路徑測試;真實傳輸待驗收 |
| D45 | 清空传输队列 | transfer_controls.go, internal/transfers | UI;佇列、恢復、校驗和及路徑測試;真實傳輸待驗收 |
| D46 | 传输详情与错误诊断 | transfer_controls.go, internal/transfers | UI;佇列、恢復、校驗和及路徑測試;真實傳輸待驗收 |
| D47 | 下载本地位置 | internal/desktop, transfer_actions.go, internal/transfers/download_plan.go | 原生委託;作業系統選擇器/定位及取消待驗收 |
| D48 | SMTP 测试确认 | mail_tools.go, internal/mail | UI;地址/標頭/取消測試;真實 TLS 投遞待驗收 |
| D49 | 诊断控制台 | settings_controls.go, system_settings.go, internal/diagnostics | UI;設定校驗和日誌輪轉測試 |
| D50 | 关于与检查更新 | update.go, internal/releases, internal/updates | UI;發布解析測試;簽名更新源/安裝/重新啟動待驗收 |
| D51 | 版本发布说明 | update.go, internal/releases, internal/updates | UI;發布解析測試;簽名更新源/安裝/重新啟動待驗收 |
| D52 | 安装与重启确认 | update.go, internal/releases, internal/updates | UI;發布解析測試;簽名更新源/安裝/重新啟動待驗收 |
| D53 | 应用与系统菜单 | menu.go, commands() | 原生委託;編輯/視窗/應用角色;平台選單待驗收 |
| D54 | 单实例窗口激活 | main.go, application.openWindow | 原生委託;實例鎖和激活;平台待驗收 |
| D55 | 外部帮助交接 | window.openDocs, desktop.OpenURL | 原生委託;URL 策略測試;瀏覽器交接待驗收 |
| P01-sts | STS 临时凭证 | connection_view.go, connection_actions.go, saved_locations.go | UI;授權、範圍和連接測試;真實登入/憑據庫待驗收 |
| P01-customize | 自定义 Endpoint | connection_view.go, connection_actions.go, saved_locations.go | UI;授權、範圍和連接測試;真實登入/憑據庫待驗收 |
| P01-cname | CNAME 自定义域连接 | connection_view.go, connection_actions.go, saved_locations.go | UI;授權、範圍和連接測試;真實登入/憑據庫待驗收 |
| P01-privateLink | PrivateLink 私网连接 | connection_view.go, connection_actions.go, saved_locations.go | UI;授權、範圍和連接測試;真實登入/憑據庫待驗收 |
| P01-invalid | 连接失败与保留输入 | connection_view.go, connection_actions.go, saved_locations.go | UI;授權、範圍和連接測試;真實登入/憑據庫待驗收 |
| P01-loading | 正在建立连接 | connection_view.go, connection_actions.go, saved_locations.go | UI;授權、範圍和連接測試;真實登入/憑據庫待驗收 |
| P02-expired | 授权码过期 | connection_view.go, connection_actions.go, saved_locations.go | UI;授權、範圍和連接測試;真實登入/憑據庫待驗收 |
| P03-grid | Bucket 图标视图 | browser_view.go, browser_controls.go, saved_locations.go | UI;分頁/導航測試;真實 OSS 待驗收 |
| P03-empty | 没有 Bucket | browser_view.go, browser_controls.go, saved_locations.go | UI;分頁/導航測試;真實 OSS 待驗收 |
| P03-readonly | 临时只读会话 | browser_view.go, browser_controls.go, saved_locations.go | UI;分頁/導航測試;真實 OSS 待驗收 |
| P04-grid | 对象网格视图 | browser_view.go, browser_controls.go, saved_locations.go | UI;分頁/導航測試;真實 OSS 待驗收 |
| P04-search | 前缀搜索与无匹配 | browser_view.go, browser_controls.go, saved_locations.go | UI;分頁/導航測試;真實 OSS 待驗收 |
| P04-empty | 空目录 | browser_view.go, browser_controls.go, saved_locations.go | UI;分頁/導航測試;真實 OSS 待驗收 |
| P04-loading | 目录正在加载 | browser_view.go, browser_controls.go, saved_locations.go | UI;分頁/導航測試;真實 OSS 待驗收 |
| P04-offline | 网络中断与重试 | browser_view.go, browser_controls.go, saved_locations.go | UI;分頁/導航測試;真實 OSS 待驗收 |
| P04-forbidden | 无权读取当前目录 | browser_view.go, browser_controls.go, saved_locations.go | UI;分頁/導航測試;真實 OSS 待驗收 |
| P04-multi | 多选与批量操作 | browser_view.go, browser_controls.go, saved_locations.go | UI;分頁/導航測試;真實 OSS 待驗收 |
| P04-context | 对象右键菜单 | browser_view.go, browser_controls.go, saved_locations.go | UI;分頁/導航測試;真實 OSS 待驗收 |
| P04-large | 大列表与增量列举 | browser_view.go, browser_controls.go, saved_locations.go | UI;分頁/導航測試;真實 OSS 待驗收 |
| P04-clipboard | 复制移动待粘贴 | browser_view.go, browser_controls.go, saved_locations.go | UI;分頁/導航測試;真實 OSS 待驗收 |
| P06-failed | 下载失败与恢复 | transfer_controls.go, internal/transfers | UI;佇列、恢復、校驗和及路徑測試;真實傳輸待驗收 |
| D01-clear | 清空连接历史确认 | connection_view.go, connection_actions.go, saved_locations.go | UI;授權、範圍和連接測試;真實登入/憑據庫待驗收 |
| D07-nonempty | Bucket 非空删除失败 | bucket_tools.go, internal/ossclient/buckets.go | UI;請求/範圍/分頁測試;真實 Bucket 待驗收 |
| D15-partial | 复制移动部分失败 | transfer_controls.go, internal/transfers | UI;佇列、恢復、校驗和及路徑測試;真實傳輸待驗收 |
| D17-partial | 批量删除部分失败 | object_actions.go, object_clipboard.go | UI;遞迴計劃和部分修改測試;真實修改待驗收 |
| D19-batch | 批量编辑元数据 | object_actions.go, internal/ossclient/objects.go | UI;屬性/ACL 保留測試;真實更新待驗收 |
| D23-readonly | 只读代码预览 | object_actions.go, preview_media.go | UI;大小/完整性、未修改/Diff 及放棄測試 |
| D23-oversize | 文本超过预览上限 | object_actions.go, preview_media.go | UI;大小/完整性、未修改/Diff 及放棄測試 |
| D25-audio | 音频预览 | preview_media.go | UI 回退;原生播放器/編解碼器及外部打開待驗收 |
| D25-flv | FLV 视频预览 | preview_media.go | UI 回退;原生播放器/編解碼器及外部打開待驗收 |
| D27-error | 预览加载失败 | object_actions.go, preview_media.go | UI;大小/完整性、未修改/Diff 及放棄測試 |
| D31-public | 公开对象地址 | internal/ossclient/share.go, object_actions.go | UI;二維碼精確解碼、URL 編碼、ACL 及簽名範圍測試;網域綁定待驗收 |
| D31-domain | 自定义域与二维码 | internal/ossclient/share.go, object_actions.go | UI;二維碼精確解碼、URL 編碼、ACL 及簽名範圍測試;網域綁定待驗收 |
| D33-group | 授权给用户组 | ram_tools.go, internal/identity | UI;簽名 RPC、分頁、範圍和授權碼測試;真實 RAM/STS 待驗收 |
| D33-role | 授权给角色 | ram_tools.go, internal/identity | UI;簽名 RPC、分頁、範圍和授權碼測試;真實 RAM/STS 待驗收 |
| D33-policy | Policy JSON 预览编辑 | ram_tools.go, internal/identity | UI;簽名 RPC、分頁、範圍和授權碼測試;真實 RAM/STS 待驗收 |
| D35-mailfailure | 授权成功但邮件失败 | ram_tools.go, internal/identity | UI;簽名 RPC、分頁、範圍和授權碼測試;真實 RAM/STS 待驗收 |
| D36-system | 设置 · 系统 | settings_controls.go, system_settings.go, internal/diagnostics | UI;設定校驗和日誌輪轉測試 |
| D36-mail | 设置 · 邮件 | settings_controls.go, system_settings.go, internal/diagnostics | UI;設定校驗和日誌輪轉測試 |
| D36-logs | 设置 · 日志 | settings_controls.go, system_settings.go, internal/diagnostics | UI;設定校驗和日誌輪轉測試 |
| D36-other | 设置 · 其他 | settings_controls.go, system_settings.go, internal/diagnostics | UI;設定校驗和日誌輪轉測試 |
| D37-generated | 临时授权码已生成 | ram_tools.go, internal/identity | UI;簽名 RPC、分頁、範圍和授權碼測試;真實 RAM/STS 待驗收 |
| D38-forbidden | RAM 列表权限不足 | ram_tools.go, internal/identity | UI;簽名 RPC、分頁、範圍和授權碼測試;真實 RAM/STS 待驗收 |
| D46-crc | CRC 校验不匹配 | transfer_controls.go, internal/transfers | UI;佇列、恢復、校驗和及路徑測試;真實傳輸待驗收 |
| D46-changed | 源对象变更重新下载 | transfer_controls.go, internal/transfers | UI;佇列、恢復、校驗和及路徑測試;真實傳輸待驗收 |
| D46-disk | 本地写入失败诊断 | transfer_controls.go, internal/transfers | UI;佇列、恢復、校驗和及路徑測試;真實傳輸待驗收 |
| D50-downloading | 更新下载进度 | update.go, internal/releases, internal/updates | UI;發布解析測試;簽名更新源/安裝/重新啟動待驗收 |
| D50-failed | 更新下载失败 | update.go, internal/releases, internal/updates | UI;發布解析測試;簽名更新源/安裝/重新啟動待驗收 |
| D50-finished | 更新已就绪 | update.go, internal/releases, internal/updates | UI;發布解析測試;簽名更新源/安裝/重新啟動待驗收 |
| E03 | 放弃未保存修改确认 | object_actions.go, preview_media.go | UI;大小/完整性、未修改/Diff 及放棄測試 |
協議參考
OSS 儲存類型、請求者付費、RestoreObject 和 PutSymlink。暫存更新器遵循固定 MyGo v0.4.8 模塊的清單/簽名格式;改編程式碼在 internal/updates/LICENSE 中保留 MIT 許可聲明。