Files
model-platform/frontend
tao.chen d68055a96c feat(scripts/resources): align list_scripts visibility with list_resources
69a9a48 把 data resources 的可见性从 list 恒真改成
workspace-wide + visibility 过滤 + admin 短路,但 scripts 端
没动。两端不对称,导致:

* 非 admin 调 list_scripts 走 user_relative_path →
  workspace/{当前用户ID}/...,永远拿不到别人的脚本
* count_scripts 同样 user-scoped,dashboard "全部脚本"
  只统计自己
* list_resources 响应没带 owner_display_name,data-only
  owner 的目录名回退到 userId.slice(-6),显示不友好

修复:
* list_scripts / count_scripts 改 workspace-wide(新建
  _build_list_scripts_workspace_descendant_prefix helper;
  旧 _build_list_scripts_descendant_prefix 保留标 deprecated
  避免破坏其它调用方);非 admin 追加
  or_(owner_user_id = me, visibility in {workspace, public})
  与 list_resources 完全对称;admin 短路
* resource_payload 加 owner_display_name 字段(与
  script_payload 对称);list_resources SELECT 加
  Users.display_name + outerjoin
* 前端 ScriptExplorer displayName 回退链:scripts 的
  owner_display_name → data resources 的 owner_display_name
  → 本人 user.display_name → userId.slice(-6) 占位
  ;ResourceItem 类型同步加 owner_display_name?: string|null

存储物理布局仍是 workspace/{user_id}/...,仅读取侧
listing/count 跨 owner。
2026-08-21 14:06:45 +08:00
..
2026-08-20 20:11:06 +08:00
2026-08-20 20:11:06 +08:00
2026-08-11 16:19:34 +08:00
2026-08-20 19:23:42 +08:00
2026-08-11 21:26:55 +08:00

Frontend

React Router SPA,已将原前端按功能拆分到 app/

app/components/          通用图标组件
app/features/platform/   主框架、脚本工作区和 Jupyter 编辑
app/features/schedules/  DAG 调度页面
app/features/admin/      工作台与系统管理
app/routes/              React Router 路由入口
app/services/            API 请求、DTO 和演示上下文
app/styles/              分功能样式

本地开发:

pnpm install
pnpm dev

生产构建由根目录 nginx/Dockerfile 完成,构建结果复制到 Nginx 静态目录。