← 决策总览 / D14 · 原生文件对话框(融合方案) 14 / 15 · D14 已决策 → 确认融合形态
PD-D14-FILEDIALOG(R 融合后冻结)· ledger §14

文件选择 — 融合方案:拖拽 + 系统对话框 + 可信根路径输入

真实任务不变:选择本地 CSV 导入、选择导出保存位置。三入口融合:① 拖拽(所有端);② 系统对话框(桌面端 Tauri);③ 手动路径输入(仅可信根内相对路径)。

安全红线(M1-05 / io 可信根):手动输入路径只允许项目目录/可信根内相对路径(带目录浏览联动),禁止任意绝对路径——Web 端经 loopback server 读取时尤其重要,不得打开任意路径读取面。Web 工作台必须始终可用(拖拽 + input 兜底)。
融合目标形态
同一「选择名单文件」入口:可拖拽文件到区域、可点「浏览…」调系统对话框(桌面端)、可输入可信根内路径。
localhost:8765/class-302/students/import
导入名单 · 选择文件 支持 CSV / XLSX · 拖拽、浏览、路径输入三种方式
📂
将文件拖到此处,或点击「浏览…」
桌面端打开系统对话框
或输入路径: 项目目录/ 🔒 仅可信根内相对路径
路径输入限定在项目目录/可信根内(安全红线):拒绝绝对路径与「..」逃逸;桌面端系统对话框返回的路径同样经 io 层校验(现有路径逃逸防御复用)。
三入口统一封装为「文件选择」组件;Web 端「浏览…」回退到浏览器 input(能力探测驱动)。
设计要点说明
三入口拖拽(所有端)/ 系统对话框(Tauri 桌面端)/ 路径输入(可信根内相对路径,目录浏览联动)
安全边界任意绝对路径禁止(M1-05/io 可信根);Web 端 loopback server 读取必须经校验
能力探测桌面/Web 差异由 capability 目录驱动(Tauri dialog 可用性)
schema/API 影响Tauri dialog 插件依赖 + 权限清单;可信根校验复用 io 层现有防御

待研究(不冻结):

  • 路径输入框交互形态(自动补全/目录浏览联动)
  • E2E 中系统对话框的自动化策略