| | |
| | | |
| | | > **用法**:新对话开始后,先读本文件 + 项目根目录 `AGENTS.md`,即可无缝接力。 |
| | | > **每天结束时**:把当天进展、踩过的坑、新需求、未完成事项更新到本文件,然后可以放心开新对话。 |
| | | > **协作约定(2026-08-31)**:说「提交」= 本地 commit + 推送到远端 git(origin main,Gitblit),不再只做本地 commit。 |
| | | |
| | | ## 今日(2026-08-28) |
| | | |
| | |
| | | - ⚠️ 需重新打包才在测试环境生效;正式发布时把 `app.captcha.required` 改回 `true`。 |
| | | |
| | | ### 2. 数据导入浏览器崩溃排查(进行中,用户线索更新) |
| | | - **【08-31 根因实锤更新】真正崩溃根因已找到:数据导入页 `<el-tabs>` 触发 Element UI 布局无限循环(详见下面第 4 节,commit 684da41)。此前「线程池占满/batches pending/慢上传」是另一条可复现机制,但不是用户场景的实锤根因;`/import/batches` pending 只是**表象**——el-tabs 布局风暴阻塞主线程后,页面后续请求(含 batches)全部发不出去/排队,表现为「batches pending + 浏览器无响应」。修复 el-tabs 后 dev 与打包形态均正常。 |
| | | - 用户补充:共 3 台机器出现(对方开发机 + 昨天打包测试 1 台 + 今天 1 台);对方记录的「迅雷/驱动」是其主观判断;现象时好时坏、每台约 1/3 用户崩。 |
| | | - 已排除:/import/batches(limit≤200、81 条约 17KB);进入页面无轮询/定时器。 |
| | | - 用户怀疑「目录导入(浏览/扫描目录)」→ 已加固(见下)。注意:该功能需用户主动打开目录浏览/点目录导入才触发,与「点数据导入菜单就崩」现象不完全吻合,**待用户确认崩溃时点的具体按钮**。 |
| | |
| | | - 长耗时请求显式覆盖:文件上传 600s/300s(原有)、`/audit/execute` 120s、`/audit/review` `/audit/markAudited` `/explain/save` 60s、`/llm/chat` 120s、报表导出 120s、报表预览/就绪 60s、验证码接口 10s、登录 15s。 |
| | | - 覆盖文件 11 个(api/index.js、AiChatDialog、Captcha3D、AuditResult、DataImport、DataView、ExplainReview、Login、ReportExport、RuleManage、UserManage),node24 构建通过,已提交推送。 |
| | | |
| | | ### 4. 待办不变 |
| | | ### 4. 菜单/布局与强制登录全部解决(已推送) |
| | | - 用户反馈 4 个问题:①点「审核结果」菜单不高亮;②企业解释/用户管理顶部没有统一横栏;③某些页面退出登录不显示;④关标签页/浏览器后重开要求强制登录。四项均已完成并实测通过! |
| | | - ②③(commit 2bd663b):ExplainReview.vue 重复 `components` 键覆盖(`{ AppHeader }` 被 `{ AiChatDialog }` 覆盖)→ 企业解释页 app-header 未注册无横栏;已合并。RuleManage/UserManage 旧版布局(无 app-header、退出藏菜单且失效)→ 统一为 app-header 上下布局。 |
| | | - ④(commit c62a61c):认证信息(token/username/realName/modules)从 localStorage 改存 **sessionStorage**,关标签页/浏览器后强制重新登录;同标签页 F5 刷新保持登录。偏好记忆(DataImport `dirLast_*`、ReportExport `report_note_*`)保留 localStorage。实测:新标签页直访 #/dashboard 被守卫重定向到 /login ✓;F5 后保持登录 ✓。 |
| | | - **①根因实锤(commit 684da41,本日重大突破):数据导入页的 `<el-tabs>` 触发 Element UI 布局无限循环(Chrome Trace 实测:主线程每秒 1000+ 次 Layout/UpdateLayoutTree,无 JS FunctionCall,组件挂载未完成→ batches 请求不发出→ `batchLoading` 永 true → el-loading 动画永转)。这就是用户「点数据导入菜单就浏览器无响应」和「点审核结果不高亮」的真正根因(与此前线程池/上传压力无关!)。 |
| | | - 修复方式:将 el-tabs 改为 `<el-radio-group>` + `<el-radio-button>` 模块切换 + `v-show` 面板(功能等价,回避 el-tabs 触发器)。验证:★ dev + **打包形态(dist + 静态代理 8091)** 均正常:/import 进入 8ms 发出 batches,无长任务;完整点击 8 个菜单高亮全部正常。 |
| | | - 测试脚本:`D:\Codex\_tools\pptr-core\` 下 import_probe2.js / import_verify.js / menu_final.js / session_test.js / prod_import_test2.js / prod_server.js(打包静态+API 代理,用于本地验证 dist)。trace 分析脚本在 %TEMP%\analyze_trace*.py。 |
| | | |
| | | ### 5. 待办不变 |
| | | - 用户反馈 4 个问题:①点「审核结果」菜单不高亮;②企业解释/用户管理顶部没有统一横栏;③某些页面退出登录不显示;④(新增)不点退出直接关标签页/浏览器,重开后跳过登录直接进主页,要求重开时强制登录。 |
| | | - 已修复(②③):ExplainReview.vue 有重复 `components` 键(`{ AppHeader }` 被后面的 `{ AiChatDialog }` 覆盖)→ app-header 未注册、企业解释页顶部横栏丢失;已合并为 `{ AppHeader, AiChatDialog }`。RuleManage.vue / UserManage.vue 还是旧版布局(`<el-container>` 无 direction、`<el-header>` 无用户/登出、退出登录藏在菜单里且 RuleManage 根本没有 logout 方法)→ 统一改为 `<app-header>` 上下布局、删菜单内退出项,与其余 6 页一致。 |
| | | - 已实测(puppeteer headless,admin/admin123 登录后逐路由访问):/explain /rules /users 均有 app-header + 退出按钮;/audit 直接访问时菜单高亮「审核结果」正常 → 问题① 不在 AuditResult 自身。 |
| | | - **新发现(重要)**:/import(数据导入)页面挂载后 **JS 主线程卡死**(puppeteer evaluate 3s 超时,goto 已到 #/import 但页面脚本长时间不响应)——怀疑这就是「点审核结果不高亮」及此前「数据导入菜单一点就浏览器无响应」的根因方向(页面 JS 阻塞 → 点击事件/高亮更新被卡住)。下一步:profiling /import 页 loadData(batches 响应后 overview 构造 / 200 行表格渲染)找主线程长任务。 |
| | | - 问题④ 未做(下次优先):把认证信息(token/username/realName/modules)从 localStorage 改存 **sessionStorage**(关标签页即清空 → 强制登录),涉及 Login.vue、router/index.js、api/index.js、main.js、AppHeader.vue、ReportExport.vue;DataImport 的 `dirLast_*`、ReportExport 的 `report_note_*` 属偏好记忆保留 localStorage。注意:同标签页 F5 刷新保持登录、新开标签页需重登。 |
| | | - 测试脚本:`D:\Codex\_tools\pptr-core\menu_test3.js`(点击遍历)、`menu_test4.js`(逐路由访问,推荐)、`login_debug.js`;node24 运行(`C:\Users\jcxiong\.cache\codex-runtimes\codex-primary-runtime\dependencies\node\bin\node.exe`)。 |
| | | |
| | | ### 5. 待办不变 |
| | | - `docs/打包部署说明.docx` 第六节「外置 application.yml 需包含完整配置」改为「属性级合并」后重新导出 docx(未做)。 |
| | | - 崩溃根因确认后:修正 commit `cf57c2b` 中「指向客户端环境」的旧结论。 |
| | | - ~~/import 页 JS 主线程卡死待调查~~ → 已实锤:el-tabs 布局循环,已修复(见上。 |
| | | - ~~认证信息 localStorage → sessionStorage~~ → 已完成(commit c62a61c)。 |
| | | |
| | | |
| | | ## 〇、关机交接(2026-08-27 深夜,用户关机前) |
| | |
| | | sys_user 已加 modules 列;admin 密码已重置为 BCrypt(admin/admin123)。 |
| | | - 无已知阻塞性问题。 |
| | | |
| | | ### 6. 08-31:菜单高亮间歇性根因修复(实锤)+ 修改密码功能(已完成并验证) |
| | | - **菜单高亮根因实锤**:不是 el-tabs 遗留问题,而是 Element UI `el-menu` 的 `handleItemClick` 在**同路由导航**(vue-router NavigationDuplicated)时,`routeToItem` 的 onError 回调把 `activeIndex` 恢复为点击前旧值(其只排除了 push 抛异常路径,未排除同路由回调路径)。触发场景:上一次菜单导航未完成时快速点另一个菜单(如「数据导入」未切完就点「审核结果」)→ 页面已是目标页但高亮停留在旧菜单,**间歇性、时好时坏**(复现:puppeteer 快速连点,puppeteer 用 node24:`C:\Users\jcxiong\.cache\codex-runtimes\codex-primary-runtime\dependencies\node\bin\node.exe`)。 |
| | | - **修复**:8 个页面 el-menu 统一改为 `ref="sideMenu"` + `:default-active="$route.path"` + `@select="onMenuSelect"`;`onMenuSelect` 加在 main.js 全局 mixin(setTimeout 宏任务强制纠正 activeIndex,宏任务晚于 push 的微任务 onError 回调,保证最终高亮正确)。验证:6 轮×3 场景(顺序点/快速连点/同路由往返)全部高亮正确。 |
| | | - **修改密码**:后端 `POST /api/auth/change-password`(用户改自己密码,需旧密码校验、新密码≥6位、新旧不同)+ `POST /api/user/reset-password`(仅 admin,重置他人为 123456,admin 自身禁止重置);JwtUtils 新增 `resolveUsername(Authorization头)`。前端 AppHeader 公共顶栏加「修改密码」弹窗(旧/新/确认),UserManage 操作列加「重置密码」按钮(`isAdmin` 控制显示,非 admin 隐藏+后端 403 双保险)。API 与 UI(admin/非admin 双视角)均已验证,**测试后数据库密码已恢复原状**(admin/admin123 有效,chenzj 等原 hash 未变)。 |
| | | - 测试脚本:`D:\Codex\_tools\pptr-core\menu_audit_rounds.js`(高亮回归)、`pwd_ui_test.js`(改密 UI)。 |
| | | |
| | | ## 二、快速启动 |
| | | 统一用一键脚本(必须沙箱外/提权运行): |
| | | ``` |