从真实页面的测量与复现出发,优化请求竞态、状态同步、列表渲染、包体积和表单反馈,并验证接口幂等边界、代码规范及关键业务交互。适用于保留现有技术栈的 Vue 存量工程。
## 任务目标 请完成选定 Vue 页面或模块的性能、状态一致性与交付质量优化,先测量问题,再落地代码并验证。指标未给出时先记录基线并提出与场景相符的目标,不虚构响应时间、提升比例或用户规模。 在现有授权范围内完成实际改动和验证;缺少外部条件时先完成可独立实现的部分,不能只停留在计划。 ## 输入信息(选填) 两项均可留空,也可直接用一句话说明目标并附上已有资料。无需自行整理版本、配置或完整需求表;能读取的内容由执行者补齐。 优化对象或现象:优先定位对话中提到的慢操作或状态错乱;未描述现象时,从当前页面的首屏、筛选、分页和编辑切换建立基线,先处理可复现的状态错误和重复请求。 工程或复现资料:使用已确认工程的路由、组件、请求封装、store、测试数据和现有性能记录;可运行时自行采集网络、渲染和构建产物证据。 ## 信息不完整时 先使用本次对话中已经说明的信息;用户留空、写“暂无/不清楚”或未替换输入标记,都按缺失处理,不当作真实路径、参数或业务值。已能从资料确定的内容不重复询问,不编造文件、日志、接口、业务值或执行结果。在用户已授权的范围内读取相关工程和材料,不为补齐输入擅自扩大操作范围。 ### 优先确认 - 核实 Vue 2/3、JS/TS、请求库、UI 库、路由缓存及现有 watcher 清理方式,不要求用户手填版本。 - 沿筛选、翻页和切换记录检查状态写入、请求取消、旧响应及 finally 的生效条件。 - 记录代表性操作的数据规模、模式、缓存、设备和网络条件,分开测量接口等待、重复请求、计算与组件更新。 - 检查模板循环、字典查找、资源导入、路由拆包和真实产物,确定优化影响范围。 ### 可采用的默认处理 - 未给性能指标时先采集可复查基线,以消除已证实浪费且业务不回归为目标,不承诺任意提速比例。 - 优先局部状态、纯 computed 与必要副作用清理;未证实瓶颈前不引入虚拟列表、全局缓存或 memo。 - 保留当前分页、选择及字典语义,写请求超时显示结果待确认,不把取消请求当作撤销业务。 ### 必须有依据的事项 - 优化涉及跨页选中、缓存失效或租户切换,而代码与接口无法确定需要保留的业务状态。 - 写操作结果未知且接口没有查单、幂等或补偿依据,不能自行重试并宣称提交成功。 只有缺口会改变业务结果、权限边界或关键实现,且无法从现有资料确认时,才集中提出最多 3 个关键问题;说明影响,并继续完成不依赖答案的部分。一般命名、排版和可逆实现细节按现有约定决定,不逐项等待确认。 ### 资料仍不足时的交付 - 无法运行页面时交付按代码证据排序的瓶颈候选、状态写入图和最小修正,另给同条件测量步骤。 - 没有代码时给出筛选竞态、重复提交、页面恢复的复现与验收用例,不填造耗时或包体数据。 ## 执行要求 关注用户操作结果和可复查证据,不为了使用优化技巧改动系统架构。 ### 读取工程并建立可比基线 确认目标目录、分支和 dirty 改动,保留原有内容,只改选定范围。核实 Vue 2/3、JS/TS、API 风格、构建框架、UI 库、store、路由、请求库和锁文件,保留选型,不默认升级或迁移。复现首屏、筛选、翻页、弹窗、切换记录等实际问题;记录数据规模、生产构建或开发模式、缓存状态、设备及网络。结合浏览器性能、网络、Vue DevTools 和构建分析,区分接口等待、重复请求、脚本计算、组件更新和资源加载;权限或数据错误优先于微小速度收益。 ### 定位结构与状态责任 页面编排流程,业务组件承接领域交互,通用组件负责稳定通用契约,composables/hooks 管理组合式逻辑和清理,API 层统一请求契约,store 管理必要共享状态,types 与 styles 各归其位;按问题整理现有模块,不建空目录。纯无副作用函数进入 util,领域规则集中在业务模块,真正共用的响应式能力才复用。不要把数据、权限、表单和所有展示塞进万能组件或 util,也不为性能把所有状态搬入全局。 ### 消除状态不同步 为查询条件、分页、选择项、表单和缓存分别确定唯一写入来源,派生值用 computed,props、事件载荷和 v-model 契约明确,不直接修改父级状态。检查路由返回、筛选重置、切换租户或记录、删除末页数据后的状态;分页和选择项的保留规则必须对应业务。编辑副本说明与源数据同步时机,避免双向 watch 相互回写。枚举和魔法值与服务端数据库码、权限及字典一致,已有字典继续复用,禁止复制另一套状态映射;失效缓存不得让旧权限或旧字典继续控制操作。未知或停用字典码保留原始值并作可识别提示,禁止映射为成功、首项或任意合法状态;编辑提交按真实接口契约处理,不为消除告警擅自改写原值。 ### 处理请求竞态和副作用 快速输入、连续翻页、切换弹窗记录会形成并发请求。按当前请求库取消可取消的旧请求,同时用序号或请求条件快照保护结果、错误和 finally,确保过期请求不能覆盖当前内容或解除新请求的 loading;不同业务请求分别维护状态。取消客户端请求不代表服务端业务已撤销,写操作超时不能直接自动重试。watch 只监听必要源,避免无边界 deep 和回写循环;清理失效请求、监听、定时器与订阅。Vue 3.5+ 的 onWatcherCleanup 必须同步注册,低版本使用其支持的清理机制和生命周期;离开、卸载及缓存页面停用时按实际行为处理。 ### 控制计算与渲染成本 v-for 采用稳定唯一的业务 key,排序和编辑列表不用索引、随机值或时间戳。将模板和循环中昂贵过滤、排序、格式化、字典查找移到有明确依赖的派生层;computed 保持纯计算,不夹带请求或状态修改。对重复查找按数据规模建立合适索引,注意索引随源数据更新。避免每项都发请求;优先真实可用的批量查询或服务端分页,没有接口时说明限制并控制并发,不伪造后端能力。检查 props 是否反复创建无意义新对象、组件是否无关更新;按证据减少渲染,不盲目 memo、深比较、shallow API 或缓存,防止失去必要更新。 ### 按场景优化列表与资源 根据实测 DOM 数量、交互延迟和数据规模选择分页或虚拟列表,核验行高、滚动定位、选择项、键盘操作与 UI 库能力,不用固定条数一刀切。测量实际生产包、关键路由资源和重复依赖,按既有构建能力优化导入、路由懒加载及重资源加载时机;确保首个操作不会因拆包失败失效。移除代码或依赖前核查自动导入、动态路由、按需组件与注册入口。缓存明确键、有效期、失效条件及身份边界,不用长期全局缓存掩盖接口问题。任何优化都要有前后相同场景的记录,不能以依赖宣传体积代替实际产物。 ### 完成可用的业务反馈 区分 loading、empty、error、成功及权限不足,失败不可显示成空数据,保留数据或清空数据按场景说明。正确区分 null、未提供、0、false 和空字符串。表单按输入、失焦与提交时机校验,错误就近展示并可纠正;服务端失败保留合理输入,弹窗关闭、重新打开不残留旧结果。提交时即时反馈并防重复点击,后端幂等键、唯一约束和事务仍由接口承担;没有后端能力时写明局限,不能把防抖当幂等。失败后给出真实可行的恢复路径,不吞错、不伪造成功。 ### 把优化纳入既有规范 保持政企中文界面的层级、对齐、间距、表格密度、主次操作和反馈一致,不添加非业务口号与技术说明。命名清楚,注释解释业务原因、接口限制和性能取舍,不逐行注释。使用兼容版本的 ESLint、eslint-plugin-vue,TS 工程配套 typescript-eslint,并保留 .vue 与脚本解析器分工;沿用 flat/legacy 模式和现有 ESLint 或 Prettier 格式方案。统一空格、缩进、换行、引号、分号、导入及文件区块顺序,对齐 .editorconfig;兼容配置只解决格式职责冲突,不降低质量门槛。零新增 lint 违规,不用 disable、扩大 ignore、any 或 ts-ignore 隐藏问题,不整仓格式化制造无关差异。 ## 交付与验收 ### 验证结果并完成交付 实际执行相关 lint、适用的 typecheck、生产 build 和关键交互验收;JS 工程无类型检查时说明不适用,工具或环境缺失则标记未执行。至少覆盖正常与空数据、未知与停用字典码、接口失败与恢复、快速筛选翻页、旧响应晚到、连续提交、切换记录、返回页面和权限变化;验证表单失焦、弹窗焦点、中文换行及新产生的控制台错误。只在隔离且获准的测试环境模拟网络故障,不影响真实业务。性能比较保持设备、数据、模式及缓存条件一致,多次记录波动,分别列包体积、请求量、渲染或交互指标;改善不能以业务回归为代价,未改善也如实报告。 输出:①问题、复现及基线;②已实现改动与关键路径,说明结构、状态和请求规则;③实际生效的检查与格式配置;④优化前后指标和测量条件;⑤验收项目、命令或操作、结果及未执行原因;⑥剩余限制和最小后续工作。保留历史失败与新增问题的区分,未跑不宣称通过,没有测量不宣称提速。完成已授权实现,不只提交建议,不生成无关 Markdown 文档。 ### 本条完成检查 - 记录问题、基线、实际修改和相同条件下的优化前后指标,未改善或未测量如实列明。 - 验收旧响应晚到、finally 竞态、快速分页、记录切换、权限变化及未知字典码,不以性能收益抵消业务错误。 - 执行相关 lint、适用类型检查、生产构建与关键交互,列出真实命令、结果和剩余限制。 按本条要求组织结果,使用简洁中文和一致的编号、术语、缩进及空行;已有项目格式优先。只说明实际完成的内容,将采用的假设、未完成项和缺少的条件写在相关位置,不额外生成无关文档。未执行、无法复现或缺少证据的检查如实标注,不宣称已通过或已有性能收益。 ## 参考资料与适用边界 官方依据:Vue 性能:https://vuejs.org/guide/best-practices/performance.html、Vue 监听清理:https://vuejs.org/guide/essentials/watchers.html、阿里前端规约:https://github.com/alibaba/f2e-spec、Vue 插件配置:https://eslint.vuejs.org/user-guide/、Prettier 与 Linter:https://prettier.io/docs/integrating-with-linters。 收录核验(2026-09-08):已核对公开资料和本次项目要求的覆盖范围;尚未使用真实项目执行本模板或进行模型效果评测。具体改动、性能和回归结果须在目标工程中验证。
从真实负载和故障证据出发,完成批量访问、幂等、事务、重试与外部副作用优化,同时落实编码与XML SQL规范。
## 任务目标 请在当前目标工程中,完成本次范围内的 Java 性能、幂等与可靠性优化。必须先查证瓶颈,再完成代码修改和验证;不能只提出缓存、异步或加线程的建议。资料可从工程获得时自行读取,仅对影响正确性的关键缺口提问,继续完成其余已授权工作。 在现有授权范围内完成实际改动和验证;缺少外部条件时先完成可独立实现的部分,不能只停留在计划。 ## 输入信息(选填) 两项均可留空,也可直接用一句话说明目标并附上已有资料。无需自行整理版本、配置或完整需求表;能读取的内容由执行者补齐。 优化链路:优先选择当前对话指出的慢接口或重复执行问题;未指定时从当前 Java 工程的已有慢调用证据、循环访问和写操作中识别一条可定位、可验证的链路,说明选择依据后先完成该链路。 工程与性能资料:读取当前仓库的模块依赖、入口、SQL、事务、重试、已有测试和可用性能记录,自动确认版本、格式规则与验证命令,不要求用户重新填写这些信息。 ## 信息不完整时 先使用本次对话中已经说明的信息;用户留空、写“暂无/不清楚”或未替换输入标记,都按缺失处理,不当作真实路径、参数或业务值。已能从资料确定的内容不重复询问,不编造文件、日志、接口、业务值或执行结果。在用户已授权的范围内读取相关工程和材料,不为补齐输入擅自扩大操作范围。 ### 优先确认 - 沿入口追踪 SQL 与远程调用次数、循环取数、事务和锁范围,以及下游连接与线程资源。 - 读取业务幂等键、唯一约束、处理中记录、重试接管和结果查询实现,核对权限与租户范围。 - 检查实际 Maven 或 Gradle、MyBatis XML、数据库迁移、静态检查和格式配置。 - 查找代表性测试数据、已有压测结果、延迟与资源指标;没有实测时识别能够本地复现的访问模式。 ### 可采用的默认处理 - 沿用现有版本、接口契约与中间件;先修正有代码或测试证据的重复工作,不默认加缓存、异步或线程。 - 缺负载数据时先记录调用次数、批量边界和可测指标,性能收益保留待测,不编造吞吐或最优参数。 - 保留稳定数据库编码与旧数据语义,XML SQL 和局部格式规则按原约束实施,限制本轮改动范围。 ### 必须有依据的事项 - 同一业务意图的判定、同键异参处理或处理中接管规则没有可信依据时,不自行改变幂等业务结果。 - 批量改造会改变事务原子性、顺序、权限或外部副作用,而其业务容忍度无法确定时,暂停该项语义变更。 只有缺口会改变业务结果、权限边界或关键实现,且无法从现有资料确认时,才集中提出最多 3 个关键问题;说明影响,并继续完成不依赖答案的部分。一般命名、排版和可逆实现细节按现有约定决定,不逐项等待确认。 ### 资料仍不足时的交付 - 无工程时交付循环批量化与幂等状态的可执行示例、测量清单和故障用例,标明示例假设及尚未实施到项目。 - 缺运行环境时完成可执行的编译、静态检查和隔离回归,给出按同一数据与负载比较前后的测量步骤。 ## 执行要求 以实际运行版本和部署约束为准,不默认升级框架或引入中间件。SQL全部放XML、编码与字典分工等是本项目硬约束;MyBatis支持SQL注解,本项目明确禁用。 1. 只读确定范围和基线。确认仓库分支、未提交改动、真实入口及调用链,记录权限租户、返回字段、顺序分页、事务原子性和错误语义。保护无关改动,先运行已有相关检查,区分原有故障。用代表性数据和请求记录SQL/远程调用次数、延迟分位、吞吐、错误、连接等待、CPU与内存,写明并发、样本、冷热状态和时间窗口。缺少监控只能标记假设,不能虚构瓶颈或收益。 2. 按证据选择最小改动。区分数据库扫描、N+1、远程等待、锁竞争、重复计算和大对象分配,列出根因证据、候选方案、代价和可回退点。优先修正错误访问模式与重复工作,不为局部变快改变业务结果或降低权限校验,不一次叠加多个难以归因的优化。涉及架构或接口变化时明确新旧兼容,先完成范围内可验证的修改。 3. 优化for中的数据访问。定位循环查库、远程调用、懒加载和对象转换暗含的请求,按租户及业务键去重批量取数,再使用有界映射组装;没有批量接口时评估有界并发及下游限制,不能改成无界并行。控制单批参数量、页大小、事务时长和内存,避免巨大IN与全表加载。保留重复项、顺序、缺失关联和错误语义;联表注意行数膨胀与分页计数,跨页修改要考虑稳定游标与并发变化。for清晰就保留,不一律改Stream或parallelStream。 4. SQL统一落在XML Mapper。MyBatis的全部SQL从Java业务层、SQL注解、Provider、字符串或SQL Builder/Wrapper中迁入XML,Mapper接口只留契约和必要参数绑定;核对namespace、参数、resultMap、主键回填和加载。值使用#{参数}绑定,动态列、表和排序方向须服务端白名单并由XML选择固定片段,禁止将用户值送入美元符文本替换。空集合、全空更新和条件缺失不能变成全表操作。依据真实执行计划和数据分布调整查询及索引,不能仅以语法或扫描告警判断性能。 5. 将幂等设计落实到持久化。明确“同一次业务意图”的业务键、租户与操作范围、参数摘要和保留期,用数据库唯一约束或等效原子条件及事务争用执行资格,先查后插只能辅助。区分首次执行、处理中、成功、确定失败和结果不明;同键同内容按契约返回既有结果,同键不同内容拒绝冲突。并发唯一冲突须查询归属正确的记录,先核对当前事务是否仍可用,不吞异常后假成功;缓存锁和前端防抖都不能替代业务唯一性。 6. 处理超时、重试及接管。客户端超时不证明服务端未提交,优先用业务键查询最终状态,未经确认不得换新键重做。按失败类型定义可重试项、次数、退避和总时限;死锁等重试要重建正确事务边界,状态不明先对账。处理中记录须有合法接管条件,避免超时后旧执行者仍能写入;必要时用版本或执行令牌拒绝过期持有者。跨租户查询及结果回放都要重新验证权限。 7. 验证事务和外部副作用。核对代理方式、传播、事务管理器、锁范围及回滚规则;默认代理模式下自调用不会触发被调方法的事务语义,但可能仍处于外层事务。受检异常是否回滚按配置验证,不让catch吞掉失败。数据库事务不覆盖远程扣款、发信或消息投递;按已有能力使用下游业务幂等键、结果查询、可靠事件或补偿,并覆盖本地提交与外部成功不同步的窗口。afterCommit回调不等于可靠投递,不能承诺跨系统天然恰好一次。 8. 控制资源和失败放大。避免持数据库锁等待慢远程响应;减少事务范围前先保持业务原子性,不能随意拆批提交。线程池、队列、连接池、超时和并发上限按负载及下游容量设界,正确传播并清理租户和追踪上下文,处理中断与取消。缓存必须说明权限维度、更新失效与一致性要求,不能把数据库故障降级成成功空结果;优化不能把压力转嫁给下游而掩盖本地指标。 9. 同步完成编码与结构标准化。消除状态、类型、阈值和业务字符串魔法值;稳定有限的数据库编码用显式code的enum,核对序列化和TypeHandler,禁止ordinal持久化及随名称变化改库值。可配置字典数据库为唯一来源,不手工重复维护enum加字典;常量和配置各按语义归属。保留旧值、停用值和未知编码,读取可标未知但不篡改原值,写入或状态迁移需受控校验。Controller管协议入口,Service管领域和事务,Mapper管持久化;DTO、DO、VO明确转换,禁止越权批量赋值。 10. 复用、清理与防御并行。只抽取已证实共性,纯通用函数才入Util,领域逻辑留领域Service,不建万能Util或无必要的泛型框架。检查null拆箱、空集合、重复键、金额精度、时间边界与不可信参数;异常保留原因和业务标识,脱敏记录且不假成功。删除无用及重复代码前核对反射、XML、SPI、扫描、序列化和配置引用。规整命名结构,为类、关键字段、枚举及方法写清晰Javadoc和业务原因注释;新增表全部字段及新增字段须用COMMENT或对应语法补齐中文数据库注释,详细说明含义、单位、编码、空值和默认值。格式仅用既有规则及单一工具处理本轮文件,禁止整仓无关格式化,不生成无关Markdown。 11. 用实际结果验收。运行编译、现有检查和必要回归,在隔离验证环境覆盖重复提交、同键异参、多线程争用、越权租户、未知编码、空输入、批量边界、事务回滚、提交后响应丢失、外部成功但本地未确认、重试及过期接管。既核对响应也核对业务记录、金额和副作用次数,禁止仅断言HTTP成功。记录实际执行与未覆盖项;没有执行条件时完成可执行检查,不填写通过。 ## 交付与验收 对比并交付。在相同数据、并发、负载与观测窗口下对比修改前后延迟、吞吐、错误、查询次数和资源,不只报一次平均耗时;确认业务结果一致、尾延迟和下游未恶化。输出已改文件及原因、基线与证据、批量边界、幂等状态与唯一约束方案、事务及外部副作用矩阵、验证记录、回退和剩余风险。新增持久化结构使用项目既有迁移方式并验证历史重复数据与兼容回退;未实测不能声称性能提升,交付实际完成的修改而非待办方案。 格式落地补充:工程缺少成文配置时,以同模块稳定风格制定一套最小规则,明确空格、缩进、换行、空行、导入顺序及成员组织,用兼容的格式化或静态检查工具固化到现有构建。列出实际采用的规则和检查入口,不能只口头要求代码整齐,也不能额外引入相互冲突的格式工具。 ### 本条完成检查 - 交付实际修改及证据,说明 SQL/远程调用、批量内存、事务和幂等约束如何变化。 - 验证同键异参、并发争用、超时未知、过期接管、租户越权和外部副作用次数,不仅检查 HTTP 成功。 - 有实测才比较延迟、吞吐和资源;没有实测则明确未证实收益,并保留回退与历史数据兼容说明。 按本条要求组织结果,使用简洁中文和一致的编号、术语、缩进及空行;已有项目格式优先。只说明实际完成的内容,将采用的假设、未完成项和缺少的条件写在相关位置,不额外生成无关文档。未执行、无法复现或缺少证据的检查如实标注,不宣称已通过或已有性能收益。 ## 参考资料与适用边界 官方依据(2026-09-08核验,具体能力按项目版本确认,不代表完整企业内部规范): - 阿里巴巴《P3C-PMD 公开编码规则》:https://github.com/alibaba/p3c/blob/master/p3c-pmd/README.md - MyBatis《MyBatis 3:Mapper XML Files》:https://mybatis.org/mybatis-3/sqlmap-xml.html - MyBatis《MyBatis 3:Dynamic SQL》:https://mybatis.org/mybatis-3/dynamic-sql.html - Spring《Spring Framework:Using @Transactional》:https://docs.spring.io/spring-framework/reference/data-access/transaction/declarative/annotations.html - Spring《Spring Framework:Rolling Back a Declarative Transaction》:https://docs.spring.io/spring-framework/reference/data-access/transaction/declarative/rolling-back.html 收录核验(2026-09-08):已核对公开资料和本次项目要求的覆盖范围;尚未使用真实项目执行本模板或进行模型效果评测。具体改动、性能和回归结果须在目标工程中验证。
排查线程复用导致的用户、租户和请求上下文串用,覆盖异步传递与异常清理。
## 任务目标 请检查 Java ThreadLocal 上下文传递及租户隔离。 以核查和评审为主,给出有证据的判断及可复核的修改建议;本次用户另有明确实现要求时,按其授权范围执行。 ## 输入信息(选填) 两项均可留空,也可直接用一句话说明目标并附上已有资料。无需自行整理版本、配置或完整需求表;能读取的内容由执行者补齐。 上下文链路:从当前请求或异步任务定位上下文;留空时扫描自定义 ThreadLocal、过滤器和线程池,选择一条能追踪到数据库或缓存访问的复用线程链路。 工程与隔离资料:读取上下文类、身份过滤器、任务包装、线程池、鉴权与持久化代码及相关测试,自动确认运行版本和实际存在的用户或租户维度。 ## 信息不完整时 先使用本次对话中已经说明的信息;用户留空、写“暂无/不清楚”或未替换输入标记,都按缺失处理,不当作真实路径、参数或业务值。已能从资料确定的内容不重复询问,不编造文件、日志、接口、业务值或执行结果。在用户已授权的范围内读取相关工程和材料,不为补齐输入擅自扩大操作范围。 ### 优先确认 - 盘点上下文字段的可信写入来源、读取消费者和清理位置。 - 追踪正常、异常、提前返回、重复分发及嵌套切换后的恢复。 - 核对异步提交时的取值快照、定时任务身份和工作线程清理责任。 - 将上下文追踪到 SQL 过滤与缓存 Key,读取已有连续任务隔离测试。 ### 可采用的默认处理 - 默认只读检查,不关闭权限过滤或新增项目不存在的租户模型。 - 缺上下文不默认使用上一次任务或管理员身份,具体拒绝方式沿用可信契约。 - 测试使用匿名用户和最小上下文字段,生命周期候选优先显式传参或受控包装。 ### 必须有依据的事项 - 用户、租户或组织的可信身份来源与合法数据访问范围不明时,不能认定隔离通过或自行制定默认身份。 - 定时或异步任务合法代表哪个主体执行不明时,不自动继承调用线程或全局管理员权限。 只有缺口会改变业务结果、权限边界或关键实现,且无法从现有资料确认时,才集中提出最多 3 个关键问题;说明影响,并继续完成不依赖答案的部分。一般命名、排版和可逆实现细节按现有约定决定,不逐项等待确认。 ### 资料仍不足时的交付 - 没有工程时交付上下文生命周期表和同线程先后执行不同身份任务的隔离用例。 - 有上下文代码但无数据层时先指出残留路径,给 SQL 与缓存范围取证点,不宣称数据隔离已验证。 ## 执行要求 适用范围:使用ThreadLocal、请求上下文或线程池的Java项目;仅在项目实际存在租户模型时检查租户,不能凭空增加业务隔离维度。 在线程复用场景中,检查自定义 ThreadLocal 是否在使用结束后清理。 检查步骤: 1. 列出所有上下文字段的写入来源、读取位置和清理位置,标注由认证结果生成还是直接来自请求参数;明确客户端传入标识不能自行证明其访问权限。 2. 沿一次请求追踪正常、异常、提前返回和重复分发路径,检查每条路径结束时上下文状态;给出可能残留的位置和下一次请求受影响的具体业务操作。 3. 追踪异步提交、定时执行和回调,确认上下文是否需要传递、传递哪些最小字段、何时冻结取值;不能假定父线程数据自动正确到达工作线程。 4. 核对嵌套调用临时切换上下文后的恢复策略,以及工作线程原有值如何处理;提出显式传参或受控包装方案时说明兼容影响和清理责任。 5. 在相同线程连续处理两个不同用户或租户的任务,第二个任务分别设置有效、缺失和错误上下文,验证数据访问范围;异常完成后再执行同样序列。 6. 把定位结果追踪到数据库查询和缓存键,验证实际数据边界而非只观察日志;如果权限依据缺失,应报告无法判定,不声称通过隔离检查。 ## 交付与验收 输出要求:交付上下文生命周期表、越界场景、最小修复及隔离验证结果。风险表应写明残留字段、复用入口、可能访问的数据和证据,测试使用匿名样本并避免记录真实身份凭证。 只报告有证据支持的问题;区分“已验证”“推测”和“待验证”,涉及变更时给出受影响文件或对象、最小修改和复核方法。代码与操作示例使用占位符,不写入真实密码。 ### 本条完成检查 - 风险说明残留字段、线程复用入口及可能访问的数据,并具有路径证据。 - 覆盖异常清理、嵌套恢复和异步传递,不只检查是否调用 remove。 - 验证第二个任务的有效、缺失与错误上下文对数据库和缓存的实际影响。 按本条要求组织结果,使用简洁中文和一致的编号、术语、缩进及空行;已有项目格式优先。只说明实际完成的内容,将采用的假设、未完成项和缺少的条件写在相关位置,不额外生成无关文档。未执行、无法复现或缺少证据的检查如实标注,不宣称已通过或已有性能收益。 ## 参考资料与适用边界 来源(核验日期:2026-09-08): [阿里巴巴《P3C-PMD 官方公开规则》](https://github.com/alibaba/p3c/blob/master/p3c-pmd/README.md) 整理范围:仅依据上述公开文档的相关建议,业务场景、变量、检查流程与验收格式均为独立改写,不代表相关企业完整内部规范。