Files
wecom_it_smart_desk/outputs/itdesk-project-folder-audit-20260809.html
T
2026-08-11 14:17:39 +08:00

8 lines
11 KiB
HTML
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.
<!doctype html><html lang="zh-CN"><head><meta charset="utf-8"><title>IT智能服务台项目目录审计报告</title><style>body{font-family:Arial,"Microsoft YaHei",sans-serif;background:#f6f8fa;color:#172033;margin:0}.wrap{max-width:1180px;margin:auto;padding:28px}.hero{background:#fff;border:1px solid #dfe5ec;border-left:6px solid #07c160;padding:24px;border-radius:12px}.muted{color:#667085}.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:18px 0}.stat{background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:16px}.stat b{font-size:28px;display:block}.section{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:20px;margin:16px 0}table{width:100%;border-collapse:collapse}th,td{text-align:left;border-bottom:1px solid #edf0f2;padding:10px;vertical-align:top}th{background:#f8fafc}.tag{display:inline-block;border-radius:999px;padding:3px 9px;font-size:12px;font-weight:700}.P0{background:#fee4e2;color:#b42318}.P1{background:#fff0c2;color:#8a5b00}.P2{background:#e6f4ea;color:#137333}code{background:#f2f4f7;padding:2px 4px;border-radius:4px}li{margin:7px 0}.bar{height:10px;background:#e7edf2;border-radius:8px;overflow:hidden}.fill{height:100%;background:#07c160}</style></head><body><main class="wrap"><section class="hero"><h1>IT智能服务台项目目录审计报告</h1><p class="muted">审计对象:D://资料//03-项目开发//wecom_it_smart_desk;只读扫描,未移动、重命名或删除任何文件。</p><p class="muted">扫描时间:2026-08-09 08:25:34</p></section><div class="grid"><div class="stat"><span class="muted">文件数</span><b>29,548</b></div><div class="stat"><span class="muted">目录数</span><b>3,698</b></div><div class="stat"><span class="muted">重复组(含非依赖目录)</span><b>300</b></div><div class="stat"><span class="muted">10MB以上大文件</span><b>12</b></div></div><section class="section"><h2>一、结论摘要</h2><p>该目录已从单一应用仓库演变为“源码 + 多环境部署 + 历史归档 + 调试工作区 + 构建产物 + WorkBuddy 运行数据”的混合工作区。主要问题不是单个文件,而是<strong>版本边界、事实源、敏感信息和可再生产物没有彻底分离</strong>。不建议直接批量删除;应先冻结基线、完成分类和凭据轮换,再按批次治理。</p><ol><li><strong>最高优先级:</strong>凭据轮换与历史/备份扫描。</li><li><strong>第二优先级:</strong>统一 src 运行时源,隔离根目录遗留前端树与 dist/归档/临时目录。</li><li><strong>第三优先级:</strong>建立单一生产配置、状态看板和质量门禁。</li></ol></section><section class="section"><h2>二、问题与优化建议</h2><table><thead><tr><th style="width:70px">等级</th><th style="width:180px">问题</th><th>证据与影响</th><th style="width:34%">建议</th></tr></thead><tbody><tr><td><span class="tag P0">P0</span></td><td><strong>凭据与敏感信息暴露</strong></td><td>在版本目录中发现硬编码数据库/Redis/Neo4j密码或部署凭据迹象;例如 docker-compose.yml、deploy-server/docker-compose.yml、archives/add_full.py、archives/add_neo4j.py。即使文件被忽略,也可能存在 Git 历史或备份副本。</td><td>立即轮换已出现过的密码/令牌;用 secrets/env 文件或 Vault 注入;对 Git 历史和 archives/.backup 做凭据扫描,确认未被远端保存。</td></tr><tr><td><span class="tag P0">P0</span></td><td><strong>工作树与版本边界失控</strong></td><td>git status 显示大量已修改/未跟踪内容,包含源码、PRD、部署脚本、dist 版本目录、归档包和临时修复脚本;当前目录同时存在根目录旧 frontend-* 与 src/frontend-* 两套代码。</td><td>冻结当前工作树并先生成基线清单;明确 src 为唯一运行时源;按“源码/文档/部署/临时/备份”分区,分批提交,禁止直接 git add -A。</td></tr><tr><td><span class="tag P1">P1</span></td><td><strong>构建产物与历史备份混入项目目录</strong></td><td>扫描到 29,548 个文件、3,698 个目录;src 约 752 MB、neo4j5_chunks 约 300 MB、.backup 约 164 MB、archives 约 162 MB;多个 dist_*、zip、tar.gz、part、截图目录。</td><td>将构建产物、部署包、备份和运行数据迁移到仓库外对象存储/制品库;仓库只保留可复现构建输入与小型示例。清理动作需另行确认,当前未执行任何删除。</td></tr><tr><td><span class="tag P1">P1</span></td><td><strong>重复文件与重复前端树</strong></td><td>检测到大量 SHA-256 相同文件组(其中 1,314 组含非 node_modules 路径),包括 tools 下重复资源、frontend-h5 多个 dist 版本与备份/归档副本。</td><td>先按“运行必需/回滚必需/历史留档/可再生”四类标注,再用 manifest + hash 去重;不要直接删除根目录 frontend-*,先核对其未提交修改与 src 版本差异。</td></tr><tr><td><span class="tag P1">P1</span></td><td><strong>文档状态与实现状态可能失配</strong></td><td>README 最后更新为 2026-06-03,仍写“AI 回复未集成”等旧状态;而当前记忆/源码治理已推进到 2026-08-09,另有架构图、情况报告、看板 HTML/Markdown、PRD 和评审材料多套并存。</td><td>建立单一权威状态源;README 仅保留入口与快速开始,项目状态、风险、发布记录分别由看板/变更日志维护,并在 CI 中检查文档日期与版本号。</td></tr><tr><td><span class="tag P1">P1</span></td><td><strong>部署配置存在多份事实源</strong></td><td>根 docker-compose.yml、docker-compose.dev.yml、deploy-server/docker-compose.yml、docker-compose.split.yml 和多批 deploy-* 脚本并存;配置中还存在默认密码、不同 worker/端口/挂载方式,容易造成“本地验证通过、生产路径不同”。</td><td>区分 local/dev/staging/prod 配置;生产 compose 只保留一份模板,部署脚本只做参数化渲染;加入 compose config、nginx -t、健康检查和回滚演练的发布门禁。</td></tr><tr><td><span class="tag P1">P1</span></td><td><strong>自动化测试与类型债务</strong></td><td>README 声明 pytest/Vitest 未完善;项目记忆记录坐席前端全仓 vue-tsc 存量错误约 105 处,虽未落在本次审批改动文件。</td><td>建立分层质量门禁:后端单测/集成测、前端 vue-tsc、关键 E2E;先允许存量基线,禁止新增错误,再按模块偿还。</td></tr><tr><td><span class="tag P2">P2</span></td><td><strong>文件命名与编码污染</strong></td><td>根目录出现以 Markdown 粗体标记、特殊字符或乱码编码生成的零字节文件,如“**REQ编号**:”及其乱码变体;说明某些脚本/导出链路将文档文本错误地转成了文件名。</td><td>禁止从 Markdown 内容生成未清洗文件名;统一 UTF-8、路径安全字符白名单;增加零字节异常文件和非法命名检查。</td></tr><tr><td><span class="tag P2">P2</span></td><td><strong>临时调试与运维脚本散落</strong></td><td>根目录、archives、deploy-staging、deploy-temp、jumpserver-webcli、.workbuddy/tmp 中有大量一次性修复、上传、诊断、命令记录。</td><td>将可复用脚本归入 scripts/并加入口/参数/说明;一次性脚本放到仓库外;部署命令记录改为不可含密钥的 runbook。</td></tr></tbody></table></section><section class="section"><h2>三、目录体量重点</h2><table><thead><tr><th>位置</th><th>约占体量</th><th>判断</th></tr></thead><tbody><tr><td><code>src</code></td><td>717.1 MB</td><td>重点治理:源码树/依赖/备份/制品混合</td></tr><tr><td><code>neo4j5_chunks</code></td><td>300.0 MB</td><td>重点治理:源码树/依赖/备份/制品混合</td></tr><tr><td><code>.backup</code></td><td>163.7 MB</td><td>重点治理:源码树/依赖/备份/制品混合</td></tr><tr><td><code>archives</code></td><td>161.8 MB</td><td>重点治理:源码树/依赖/备份/制品混合</td></tr><tr><td><code>frontend-h5</code></td><td>101.9 MB</td><td>重点治理:源码树/依赖/备份/制品混合</td></tr><tr><td><code>deploy-temp</code></td><td>48.6 MB</td><td>纳入分类清单</td></tr><tr><td><code>test-screenshots</code></td><td>28.4 MB</td><td>纳入分类清单</td></tr><tr><td><code>docs</code></td><td>24.8 MB</td><td>纳入分类清单</td></tr><tr><td><code>packages</code></td><td>23.9 MB</td><td>纳入分类清单</td></tr><tr><td><code>chat_export</code></td><td>22.9 MB</td><td>纳入分类清单</td></tr><tr><td><code>deploy-staging-ki</code></td><td>22.3 MB</td><td>纳入分类清单</td></tr><tr><td><code>backend</code></td><td>14.7 MB</td><td>纳入分类清单</td></tr><tr><td><code>frontend-admin</code></td><td>11.4 MB</td><td>纳入分类清单</td></tr><tr><td><code>.workbuddy</code></td><td>5.2 MB</td><td>纳入分类清单</td></tr><tr><td><code>frontend-agent</code></td><td>3.5 MB</td><td>纳入分类清单</td></tr></tbody></table><p class="muted">说明:目录大小按根目录第一层前缀聚合;未将扫描结果中的运行时依赖误判为业务源码。</p></section><section class="section"><h2>四、建议的目标目录边界</h2><pre><code>src/ # 唯一运行时源码(后端、前端)
docs/ # 当前有效产品/技术/测试/运维文档
scripts/ # 可复用、参数化、可审计脚本
nginx/ # 当前有效配置模板
tests/ # 自动化测试
ops/ # 经评审的运维入口(可选)
.artifacts/ # 不入仓,或迁移到制品库
archive-external/ # 不入工作树,进入外部归档</code></pre><p>根目录不再放部署包、dist 版本、数据库分片、截图批次和一次性修复脚本。根目录保留 README、变更日志、贡献指南、许可证和少量构建配置。</p></section><section class="section"><h2>五、实施路线图</h2><ol><li><strong>0—1天:</strong>冻结工作树;导出 Git status 和文件 manifest;轮换已暴露凭据;确认 Gitea 远端历史是否含敏感信息。</li><li><strong>1—3天:</strong>建立 src 唯一源声明;将根目录旧 frontend-*、dist_*、deploy-temp、archives、压缩包标注为“待迁移”;生产 compose 和 nginx 配置确定唯一事实源。</li><li><strong>1周:</strong>文档按产品/技术/测试/运维/项目管理分层,README 改为导航;清理乱码零字节文件;为状态看板、发布记录和风险表建立更新责任。</li><li><strong>2—4周:</strong>接入 CIsecret scan、compose config、Python lint/type、vue-tsc 增量门禁、后端关键接口测试、构建产物完整性检查。</li></ol></section><section class="section"><h2>六、审计边界与风险提示</h2><ul><li>本次为只读审计;没有执行删除、移动、重命名、压缩或 Git 清理。</li><li>重复文件大量来自依赖树、source map、截图和历史制品;重复不等于可以删除,必须结合运行时引用和回滚要求复核。</li><li>扫描发现的“password/secret”只是敏感内容候选,不代表每一项仍有效;但暴露过的凭据应按已泄露处理。</li><li>审计过程生成的中间扫描数据位于 <code>.workbuddy/audit_scan.json</code><code>.workbuddy/audit_content.json</code>,建议不要提交到仓库。</li></ul></section></main></body></html>