c9a99f4fb3
代码修复: - 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>
109 lines
4.0 KiB
Markdown
109 lines
4.0 KiB
Markdown
# 文件管理器 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 层,点击展开时懒加载子目录。
|