Files
Nexus/docs/design/specs/2026-05-18-file-manager-v2-design.md
T
Your Name c9a99f4fb3 fix: 全项目文档对齐 + 代码清理
代码修复:
- web/agent/agent.py: datetime.utcnow() → datetime.now(timezone.utc)
- requirements.txt: 移除 paramiko==3.5.0 (已无活跃引用)
- 删除 server/infrastructure/ssh/pool.py (DEPRECATED, 无引用)

连接池三层对齐 (config.py/.env.example/session.py):
- DB_POOL_SIZE 100→160, DB_MAX_OVERFLOW 100→120
- 基于 MySQL max_connections=400, install.php 公式

文档修复 (21项):
- P0: 硬编码域名/IP替换为配置变量占位符
- P1: 10个过时设计文档加归档标注 (引用旧文件结构)
- P2: step-3-webssh报告 paramiko引用修正
- 6份审查报告连接池参数勘误 100/100→160/120
- ECC安全报告 EC5 datetime.utcnow 标记已修复
- docs/README.md 文档索引重写
- docs/memory/mem_nexus_overview.md 移除硬编码凭证
- docs/project/tech-stack-inventory.md paramiko标记已移除

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22 08:19:56 +08:00

109 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 文件管理器 v2 设计规格
> ⚠️ **已归档** — 2026-05-22
> 本文档引用的文件结构已过时:`web/files.php` 已迁移到 `web/app/files.html` (Tailwind CSS v4 + Alpine.js + SFTP API)`web/file_actions.php` 和 `web/browse_dirs.php` 已不存在,文件操作通过 `server/api/sync_v2.py` SFTP 端点实现。功能已实现,保留本文档供历史参考。
**日期**: 2026-05-18
**状态**: 已确认
## 一、布局
```
┌─ 工具栏 ──────────────────────────────────────────┐
│ ← → 🔄 | 📁+ 📄+ | ✂ 📋 | 🔍___________ | ⬆ 上传 │
│ /www/wwwroot/project/src/ │
├──────────┬─────────────────────────────────────────┤
│ 📁 www │ 名称 大小 权限 修改时间 │
│ 📁 wwwr │ 📄 .env 256B 644 05-17 22:01 │
│ 📁 pro │ 📁 src/ - 755 05-17 22:01 │
│ 📁 sr │ 📄 main.py 3.2K 644 05-17 22:00 │
│ 📁 lo │ │
│ 📁 backup│ │
│ 📁 opt │ │
├──────────┴─────────────────────────────────────────┤
│ 3 个文件,2 个目录 │ 拖拽文件到此上传 │
└───────────────────────────────────────────────────┘
```
- **左侧目录树**(可折叠,宽 200px)
- **右侧文件列表**(表格,按名称/大小/时间可排序)
- **底部状态栏**(文件计数 + 拖拽上传区)
- **面包屑**(可点击导航)
## 二、右键菜单
```
[ 📂 打开 ]
[ ✏ 编辑 ]
[ ──────────── ]
[ ✂ 剪切 ]
[ 📋 复制 ]
[ 📌 粘贴 ]
[ ──────────── ]
[ ✏ 重命名 ]
[ 🗑 删除 ]
[ ──────────── ]
[ 📦 压缩... ]
[ 🔓 权限... ]
```
## 三、快捷键
| 快捷键 | 操作 |
|--------|------|
| Ctrl+C | 复制 |
| Ctrl+V | 粘贴 |
| Ctrl+X | 剪切 |
| Ctrl+A | 全选 |
| Delete | 删除选中 |
| F2 | 重命名 |
| F5 | 刷新 |
| Backspace | 上级目录 |
## 四、Monaco Editor
- CDN: `https://cdn.jsdelivr.net/npm/monaco-editor@0.45.0/min/vs`
- 双击文件 → 全屏编辑器
- 语法高亮、自动补全、多光标
- Ctrl+S 保存
- 状态栏显示行列号、编码
```
┌─ 编辑: main.py (UTF-8) ──────────── [保存] [关闭] ─┐
│ 1 │ import os │
│ 2 │ from flask import Flask │
│ 3 │ │
│ 4 │ app = Flask(__name__) │
│ Python │
└─ 行 1, 列 1 ────────────────────────────────────────┘
```
## 五、上传
- 工具栏上传按钮(选文件)
- **拖拽文件到文件列表区直接上传**
- 上传进度条
## 六、压缩/解压
- 右键选中 → 压缩 → 输入名称 → 生成 .zip
- 右键 .zip/.tar.gz → 解压到当前目录
- 解压进度提示
## 七、涉及文件
| 文件 | 变更 |
|------|------|
| `web/files.php` | 重写:目录树 + 文件列表 + 右键菜单 + 拖拽上传 |
| `web/file_actions.php` | 加解压进度、移动操作 |
| `web/browse_dirs.php` | 支持递归目录树查询 |
## 八、目录树 API
```
GET browse_dirs.php?action=tree&path=/www/wwwroot
→ {tree: [{name:"www",type:"dir",children:[...]}]}
```
只返回目录,深度 1 层,点击展开时懒加载子目录。