Sub 项目整体代码检查报告

检查时间:2026-05-16 21:05:51 CST

项目当前运行正常、语法检查通过、核心接口健康;主要风险集中在单文件体量过大、root 运行、systemd unit 未 reload、前端内联复杂度与部分输入校验不足。

一、检查范围

模块路径/服务说明
前端主页面/root/projects/www/sub/index.html
/var/www/sub/index.html
订阅、账号、资产、数据页入口;线上文件与源文件一致。
数据页/root/projects/www/sub/data.html数据中心/导出/日志视图。
后端 API/root/projects/sub-api.jsNode 原生 HTTP + SQLite。
服务sub-api.service运行于 127.0.0.1:5211,Nginx 通过 /sub-api/ 代理。

二、健康状态

activesub-api.service 正在运行
0Node 语法错误
200核心本地 API 均正常
200/sub/ 公网页面正常
检查项结果备注
后端 node --check通过sub-api.js 语法通过。
前端主页面脚本检查通过index.html 内联 JS 可被 Node 解析。
数据页脚本检查通过data.html 内联 JS 可被 Node 解析。
本地接口通过service-categories、services、subscriptions、stats、accounts、virtual-assets、asset-categories、logs 均 200。
公网接口通过virtual-assets、asset-categories、accounts、virtual_assets JSON/CSV 导出均 200。
浏览器自动化未完成Hermes browser 工具访问该页仍 60 秒超时;curl/API/静态检查正常。

三、规模与复杂度

文件行数大小评价
sub-api.js117961 KB单文件后端,功能集中,后续维护成本偏高。
www/sub/index.html203196 KBHTML/CSS/JS 全内联,已接近需要拆分的体量。
www/sub/data.html26914 KB体量可控。

四、数据完整性

检查结果
服务数量32
订阅数量44
账号数量23
虚拟资产数量14
资产类别数量14
订阅引用不存在服务0
负价格订阅0
资产无对应类别0
负资产数量/估值0
账号坏父级引用0

五、主要发现

级别发现证据建议
服务以 root 用户运行。sub-api.serviceUser=root,WorkingDirectory 在 /root/projects迁移到低权限用户与 /opt/sub-api 或可遍历目录;数据库/备份目录单独授权。
systemd unit 文件已变更但未 daemon-reload。systemctl 输出:sub-api.service changed on disk下次维护窗口执行 systemctl daemon-reload 并确认服务状态;若会重启 Hermes 无关,但仍建议先记录变更。
前端主页面单文件过大且内联 JS 函数多。index.html 2031 行,内联函数 122 个。拆分为 sub.jsasset.jsaccount.jssub.css;保留静态部署方式。
前端大量使用 innerHTML主页面 23 处、数据页 3 处。目前多数拼接经过 escapeHtml,但建议把渲染 helper 标准化,禁止未转义字段进入 HTML。
资产日期格式校验不统一。资产表可接受任意字符串;前端新增批量到期用 YYYYMMDD,单项保存也可能传 YYYYMMDD后端统一校验/归一化 YYYY-MM-DDYYYYMMDD,避免排序和提醒逻辑漂移。
后端有多个空 catch。catch(e) {} 17 处,多用于迁移/兼容。迁移类可保留,但建议至少注释原因或只吞掉已知错误码。
批量资产操作是前端逐项请求。P2 功能通过循环 PUT/DELETE 实现。资产规模增大后可增加后端批量 API,减少部分成功/部分失败状态。

六、安全与边界

七、建议修复路线

优先级动作收益
P0.5执行并验证 systemctl daemon-reload消除 unit 状态漂移,避免下次重启加载非预期版本。
P1后端迁移到低权限用户运行。降低 Web/API 被打穿后的系统权限风险。
P1后端增加日期/数值统一校验。提升订阅提醒、资产排序、统计稳定性。
P2拆分前端资产/账号/订阅模块。降低继续迭代时误改概率。
P2增加批量 API 与事务。减少批量操作部分失败,便于审计。
P3建立最小自动化冒烟测试。每次修改后自动验证核心 GET、页面 token、JS syntax、数据完整性。

八、结论

Sub 项目当前可用性健康,近期前端功能改造未引入语法级错误;下一步最值得做的是低权限运行、输入校验规范化和前端模块拆分。