Files
Nexus/docs/design/specs/2026-05-19-code-review-followup.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

3.9 KiB

files.php 迭代 — 代码审查跟进项

⚠️ 已归档 — 2026-05-22 本文档审查的 PHP 文件 (api_proxy.php, files.php, webfm.php) 已被 Tailwind CSS v4 + Alpine.js 前端替代。 相关功能已迁移到: web/app/files.html + server/api/sync_v2.py 保留本文档供历史参考。

审查日期: 2026-05-19
审查范围: web/api_proxy.php, web/files.php
审查结论: 零 [必须修复] 项,可合入主干


建议修改 (4 项) — 下次迭代顺手改

#1 api_proxy.php 重复鉴权加注释

位置: web/api_proxy.php:22
当前代码:

// Auth check: return 401 JSON for unauthenticated API requests
if (empty($_SESSION['logged_in'])) {

改动: 加一行说明这是兜底检查(auth.php 已处理主路径)

// 兜底:auth.php 已校验 AJAX 请求,此处防止 auth.php 未拦截的边缘情况
if (empty($_SESSION['logged_in'])) {

工时: 1min


#2 删除未使用的 fm.uploadRaw

位置: web/files.php:208-210
当前代码:

fm.uploadRaw=function(action,fd){
    return fetch(API+'?action='+action,{method:'POST',headers:{'X-Requested-With':'XMLHttpRequest'},body:fd});
};

改动: 删除这 3 行。上传已用 XHR 直接处理,此函数未被任何代码调用。

工时: 1min


#3 toast 元素残留清理

位置: web/files.php:213-214 (fm.load 函数开头)
问题: 用户在上传完成前离开页面(点面包屑导航等),上传 toast 不会自动移除。

改动: 在 fm.load 开头加一行清理:

fm.load=async function(path){
    // 清理残留的上传 toast
    document.querySelectorAll('div[style*="z-index:9999"]').forEach(function(el){el.remove();});
    state.path=path||state.path;
    // ...

工时: 5min


#4 ACE 本地化

位置: web/files.php:189
原方案: CDN 引入 cdnjs
决策: 改为本地文件 web/ace/ace.js (444KB),不依赖外部 CDN
状态: 已实施
附带好处: CDN fallback 提示无需再做(本地文件始终可用)


仅供参考 (2 项) — 不改也行

#5 done 闭包变量加注释

位置: web/files.php:363
说明: done 在单线程事件循环中不会有竞态,但要让维护者明白。加一行注释即可:

let total=files.length, done=0, errors=[];
// done 在所有 XHR 回调中共享,JS 单线程保证无竞态

#6 CORS origin 精确匹配

位置: web/api_proxy.php:13
说明: strpos($origin, $serverHost) 在子域名场景可能误判。当前影响极低(同源策略 + 鉴权已有保护),如有跨子域需求时再改用 parse_url 精确比较。


待确认 (1 项) — 已决策

#7 restart_nexus 端点 — 保留

位置: web/api_proxy.php:227-229
决策人: 用户 — 2026-05-19
决策: 保留(已恢复)
依据: 运维管理后台场景下,Web 重启是合理需求;鉴权已到位



WebFM 集成审查 (2026-05-19)

#8 未登录 <meta refresh> → PHP header — [必须修复]

位置: web/webfm.php:1076 建议: PHP header 跳转,避免加载整个 <head> 后再跳转

#9 safePath 标准已确立 —

结论: api_proxy.php 的做法是对的——不存在时返回原始路径 $p,父目录 realpath 兜底。已写入设计标准 §4。

#10 logout 跳转 login.php — [建议修改]

位置: web/webfm.php:357 现状: session_destroy() 后跳回 $self (webfm.php),多跳一次才到 login.php


执行计划

类型 工时 执行
#1-#4 下次迭代一并改 12min 工程部
#8 改 meta→header 1min 工程部
#10 logout 跳转 1min 工程部
#5-#6 不改也能合
#7 等产品决策 产品部