从业务访问和数据生命周期设计 Key、值结构、过期、淘汰与集群分布,区分产品建议与 Redis 的硬限制。
## 任务目标 请根据业务访问和数据生命周期设计 Redis Key、缓存策略及数据结构。 交付能用于评审或后续实施的具体方案、规则与样例;未要求实施的部分不声称已经落地。 ## 输入信息(选填) 两项均可留空,也可直接用一句话说明目标并附上已有资料。无需自行整理版本、配置或完整需求表;能读取的内容由执行者补齐。 缓存业务:从当前需求与代码选择一个有明确读取、更新和恢复来源的缓存对象;留空时优先整理已有 Key 的命名与生命周期,不凭空新增缓存业务。 工程与数据资料:读取 Key 构造、序列化、TTL、更新失效和回源代码,以及实体、查询、客户端依赖与 Redis 拓扑配置,自动归纳数据规模和版本边界。 ## 信息不完整时 先使用本次对话中已经说明的信息;用户留空、写“暂无/不清楚”或未替换输入标记,都按缺失处理,不当作真实路径、参数或业务值。已能从资料确定的内容不重复询问,不编造文件、日志、接口、业务值或执行结果。在用户已授权的范围内读取相关工程和材料,不为补齐输入擅自扩大操作范围。 ### 优先确认 - 识别 Redis 是可重建缓存还是唯一存储,追踪每类数据的权威来源。 - 盘点 Key 前缀、实体与租户维度、数据结构、序列化格式和多 Key 操作。 - 读取创建、续期、删除、失效失败及缓存未命中的处理路径。 - 核对单机、哨兵、原生集群或代理模式,检查 hash tag 与集合增长边界。 ### 可采用的默认处理 - 默认输出设计和兼容方案,不清理现有 Key 或改淘汰策略。 - 已有数据源、格式和拓扑优先;未知 TTL 不填固定值,以生命周期依据决定后再落值。 - 不默认引入 Tair 专有数据结构或不存在的租户维度;容量未知则按字节与增长量列估算式。 ### 必须有依据的事项 - 权威数据源和数据丢失后的可恢复性不明时,不能定义自动过期或淘汰后的业务结果。 - 读取一致性与租户或组织归属未确定时,不给可能串数据或改变状态决策的缓存共享规则。 只有缺口会改变业务结果、权限边界或关键实现,且无法从现有资料确认时,才集中提出最多 3 个关键问题;说明影响,并继续完成不依赖答案的部分。一般命名、排版和可逆实现细节按现有约定决定,不逐项等待确认。 ### 资料仍不足时的交付 - 无工程时交付 Key 字典、数据结构选择和生命周期表的可填写示例,明确哪些字段待业务确认。 - 提供首次回源、更新失败、格式升级、多 Key 限制和容量增长的验收用例。 ## 执行要求 适用范围:开源Redis或Tair兼容场景;需要明确单机、哨兵、原生集群或代理模式。Tair增强数据结构不作为开源Redis默认功能。 检查 Key 与值的规模、序列化及集群分布,避免命名或 hash tag 造成倾斜。 检查步骤: 1. 明确Redis在该业务中承担可重建缓存还是唯一数据存储,逐项列出数据丢失、淘汰和节点故障后的业务后果,只有明确恢复来源后才能制定缓存失效策略。 2. 按读取、更新、批量访问和统计需要选择数据结构,说明单个对象与集合边界;估算一条记录、一个Key和全年增长的规模,不用条数代替内存字节数。 3. 给出Key命名表,覆盖业务前缀、环境、版本、实体标识及实际存在的租户维度;控制可读性与长度,避免把敏感信息直接作为可见Key。 4. 设计过期、续期、失效和淘汰后的处理,检查批量同刻过期是否会集中访问权威存储;缓存写入或失效失败时明确业务结果,不把命中率当作一致性保证。 5. 核对多Key操作在目标拓扑中的限制,以及hash tag能否导致大量对象聚集在同一分片;如需序列化升级,规划新旧格式的读取和退出顺序。 6. 生成正常读取、首次回源、更新失败、缓存缺失及容量增长的验证样例,观察延迟、回源量和内存变化;把文档建议阈值与当前业务实测限制分开展示。 ## 交付与验收 输出要求:输出Key字典、数据结构方案、生命周期表、失败行为、容量估算与验收用例。字典需含示例、值定义、过期依据、增长上限、拥有模块和兼容策略,不填写未经测量的性能收益。 只报告有证据支持的问题;区分“已验证”“推测”和“待验证”,涉及变更时给出受影响文件或对象、最小修改和复核方法。代码与操作示例使用占位符,不写入真实密码。 ### 本条完成检查 - Key 字典含值语义、拥有模块、过期依据、增长边界和新旧格式兼容。 - 生命周期说明缓存缺失、淘汰、更新失败与恢复来源,不以命中率代替一致性。 - 多 Key 与分片结论匹配真实拓扑,容量估算和实测数据清楚区分。 按本条要求组织结果,使用简洁中文和一致的编号、术语、缩进及空行;已有项目格式优先。只说明实际完成的内容,将采用的假设、未完成项和缺少的条件写在相关位置,不额外生成无关文档。未执行、无法复现或缺少证据的检查如实标注,不宣称已通过或已有性能收益。 ## 参考资料与适用边界 来源(核验日期:2026-09-08): [阿里云《云数据库 Tair(兼容 Redis)开发运维规范》](https://help.aliyun.com/zh/redis/use-cases/development-and-o-and-m-standards-for-apsaradb-for-redis) 整理范围:仅依据上述公开文档的相关建议,业务场景、变量、检查流程与验收格式均为独立改写,不代表相关企业完整内部规范。
针对报表与高频读取设计路由,明确写后读、事务和复制延迟下的业务结果。
## 任务目标 请设计 MySQL 读写分离方案,并核对各类读取的一致性要求。 交付能用于评审或后续实施的具体方案、规则与样例;未要求实施的部分不声称已经落地。 ## 输入信息(选填) 两项均可留空,也可直接用一句话说明目标并附上已有资料。无需自行整理版本、配置或完整需求表;能读取的内容由执行者补齐。 读写业务链:从当前需求或事务后查询入口识别目标;留空时优先检查写后回显、状态确认和列表查询三类已有读取,按业务后果形成路由分级。 工程与路由资料:读取数据源、代理和驱动配置、事务代码、路由注解或拦截器及已有复制延迟记录,自动确认连接入口和数据库拓扑。 ## 信息不完整时 先使用本次对话中已经说明的信息;用户留空、写“暂无/不清楚”或未替换输入标记,都按缺失处理,不当作真实路径、参数或业务值。已能从资料确定的内容不重复询问,不编造文件、日志、接口、业务值或执行结果。在用户已授权的范围内读取相关工程和材料,不为补齐输入擅自扩大操作范围。 ### 优先确认 - 沿写入提交到立即回读、跨请求查询和分页查询追踪连接与目标节点。 - 读取数据源选择、代理路由、事务绑定与连接复用机制。 - 查找库存、权限和状态判断使用的查询,关联业务可见性要求。 - 读取延迟、只读节点故障和主库压力的既有指标与降级代码。 ### 可采用的默认处理 - 默认交付路由设计,不直接切换数据源或调整代理权重。 - 无法确定可容忍陈旧的读取保留现有路径;新候选不自动分流到只读节点。 - 延迟阈值和回流容量未测量时给观测及估算方法,不把阿里云代理规则套到其他实现。 ### 必须有依据的事项 - 写后读取、权限、库存或状态决策能否容忍旧数据的业务要求不明时,不决定分流与延迟边界。 - 节点异常时允许拒绝、延迟展示还是回流主库没有业务依据时,不默认以成功空数据降级。 只有缺口会改变业务结果、权限边界或关键实现,且无法从现有资料确认时,才集中提出最多 3 个关键问题;说明影响,并继续完成不依赖答案的部分。一般命名、排版和可逆实现细节按现有约定决定,不逐项等待确认。 ### 资料仍不足时的交付 - 没有实际拓扑时交付业务一致性分类、附前提的路由候选及写后读取测试设计。 - 没有可用数据库时给记录实际访问节点与可见时间的方法,故障注入仅列为隔离验证计划。 ## 执行要求 适用范围:具备主库、只读实例或数据库代理的MySQL系统;阿里云代理路由规则须匹配实际版本,其他代理与应用自行路由应独立验证。 使用 RDS 代理分流读取时,核对事务、DDL 等请求的专门路由规则。 检查步骤: 1. 将查询按业务后果分类,分别记录必须看到刚写结果、可接受短暂陈旧和纯历史统计的场景,给出业务能接受的延迟边界,不能用统一延迟数字替代业务判断。 2. 绘制每条链路的连接入口和目标节点,包含事务、批任务、后台管理与故障处理;核对真实配置和调用结果,不能仅凭“只读”方法名称认定已访问从库。 3. 检查提交后立即查询、跨请求查询、分页和状态确认的行为,说明复制落后时用户可能看到什么;对状态决策、库存或权限判断列出需要的保证。 4. 比较代理路由、应用显式路由和保持主库查询的候选,明确驱动连接复用、事务绑定及路由切换的限制;不为了分担读压力把所有查询都切到只读节点。 5. 定义只读节点延迟过高、失联或容量不足时的降级,计算回流主库可能增加的压力;将限流、延迟展示和主库读取的业务影响分别说明。 6. 写入后读取、延迟注入、节点故障和恢复场景只在隔离测试环境或已明确授权的生产演练中验证,普通线上审查只采集已有指标;记录实际节点与数据可见时间;优化验收同时检查业务一致性和主库、只读节点的负载。 ## 交付与验收 输出要求:输出业务一致性分级、路由表、失败处理矩阵、配置修改范围和验收用例。每条路由列出触发条件、目标节点、可见性要求及降级方式;新增数据库字段必须附详细中文注释。 只报告有证据支持的问题;区分“已验证”“推测”和“待验证”,涉及变更时给出受影响文件或对象、最小修改和复核方法。代码与操作示例使用占位符,不写入真实密码。 ### 本条完成检查 - 每条路由对应触发条件、目标节点、事务限制、可见性要求和失败处理。 - 验证不只看读库负载,还核对写后可见、分页和状态决策的业务结果。 - 降级说明主库回流压力及限制,版本专属能力和未验证配置明确标注。 按本条要求组织结果,使用简洁中文和一致的编号、术语、缩进及空行;已有项目格式优先。只说明实际完成的内容,将采用的假设、未完成项和缺少的条件写在相关位置,不额外生成无关文档。未执行、无法复现或缺少证据的检查如实标注,不宣称已通过或已有性能收益。 ## 参考资料与适用边界 来源(核验日期:2026-09-08): [阿里云《RDS MySQL:什么是读写分离》](https://help.aliyun.com/zh/rds/apsaradb-rds-for-mysql/what-is-read-or-write-splitting/) 整理范围:仅依据上述公开文档的相关建议,业务场景、变量、检查流程与验收格式均为独立改写,不代表相关企业完整内部规范。
针对实际查询和数据分布评审索引、扫描范围及写入成本,避免只优化一条SQL却拖慢整体。
## 任务目标 请评审 MySQL SQL 与组合索引的上线方案。 以核查和评审为主,给出有证据的判断及可复核的修改建议;本次用户另有明确实现要求时,按其授权范围执行。 ## 输入信息(选填) 两项均可留空,也可直接用一句话说明目标并附上已有资料。无需自行整理版本、配置或完整需求表;能读取的内容由执行者补齐。 查询与索引:优先采用当前慢查询或待改 SQL;留空时从目标模块的高频列表、关联与分页语句中选取有执行计划或调用证据的一组查询,保留未改索引的基线。 工程与查询资料:从 Mapper XML、迁移 DDL、现有索引和测试样例读取 SQL 与绑定参数,结合已有执行计划、查询指标及数据库版本信息展开审查。 ## 信息不完整时 先使用本次对话中已经说明的信息;用户留空、写“暂无/不清楚”或未替换输入标记,都按缺失处理,不当作真实路径、参数或业务值。已能从资料确定的内容不重复询问,不编造文件、日志、接口、业务值或执行结果。在用户已授权的范围内读取相关工程和材料,不为补齐输入擅自扩大操作范围。 ### 优先确认 - 追踪查询对应的业务过滤、租户权限、排序稳定性与最大结果量。 - 读取字段与绑定参数类型、现有组合索引及其被哪些 SQL 使用。 - 对照代表性参数、已有执行计划和数据分布,识别热门值、空值与深分页差异。 - 检查候选索引对写入、存储和其他查询的影响,以及已有迁移审查方式。 ### 可采用的默认处理 - 默认只读评审,输出候选 SQL 和最小 DDL,不实际创建或删除索引。 - 缺计划和分布时先审查语义、类型及索引复用,性能结论保持条件化,不执行可能有成本或副作用的实际分析。 - 保留权限过滤、稳定排序及不改索引的基线,不自动接受云平台优化建议。 ### 必须有依据的事项 - 查询应返回的数据范围、排序或分页业务含义无法确定时,不采用可能改变结果的 SQL 改写。 只有缺口会改变业务结果、权限边界或关键实现,且无法从现有资料确认时,才集中提出最多 3 个关键问题;说明影响,并继续完成不依赖答案的部分。一般命名、排版和可逆实现细节按现有约定决定,不逐项等待确认。 ### 资料仍不足时的交付 - 只有 SQL 时交付语义与类型检查、附前提的候选索引及获取代表性执行计划的方法。 - 无 SQL 时提供参数分布、索引复用与读写成本的评审表和同数据负载的对比用例。 ## 执行要求 适用范围:MySQL表与查询,具体优化能力以MySQL版本及存储引擎为准。阿里云自动优化是有产品前提的可选能力,不默认启用。 结合实际 SQL 评审索引,检查局部优化是否会使全局性能变差。 检查步骤: 1. 明确查询要返回的业务数据,记录租户或权限条件、排序稳定性、分页方式和最大结果量;先核对SQL语义,不能为速度删掉业务过滤条件。 2. 检查字段类型与参数类型是否一致,梳理等值、范围、关联和排序的组合;索引是否有效以目标版本计划验证,不把函数、非等值等语法一律认定无索引可用。 3. 读取现有计划和代表性参数,比较估算行数、实际可得的扫描信息及返回量;数据分布未知时提出采样方法,说明空值、热门值和历史数据可能改变选择性。 4. 提出最少数量的候选索引与改写方案,逐项说明服务哪些高频SQL、可否复用已有索引以及对写入和空间的影响;保留不改索引的基线方案。 5. 在相同数据与负载下比较正常参数、极端参数和深分页场景,核对返回结果一致;除目标查询延迟外,观察更新耗时、并发吞吐和资源使用。 6. 给出上线顺序、观察窗口及回退条件,索引创建与删除分开说明;如果有DAS建议,先判断其证据和适用范围,不把平台建议直接当成已批准变更。 ## 交付与验收 输出要求:按SQL清单、证据、候选方案对比、最小DDL和验证计划输出。所有性能结论给出测量条件,未执行的优化只写预期;新增字段时必须补齐详细中文COMMENT。 只报告有证据支持的问题;区分“已验证”“推测”和“待验证”,涉及变更时给出受影响文件或对象、最小修改和复核方法。代码与操作示例使用占位符,不写入真实密码。 ### 本条完成检查 - 候选索引逐一关联服务的 SQL、复用机会、写入和空间代价。 - 验证结果集与权限一致,再比较正常、极端参数和深分页的性能。 - 建议注明版本、数据与测量条件,创建删除分别评估,未执行 DDL 不表述为已优化。 按本条要求组织结果,使用简洁中文和一致的编号、术语、缩进及空行;已有项目格式优先。只说明实际完成的内容,将采用的假设、未完成项和缺少的条件写在相关位置,不额外生成无关文档。未执行、无法复现或缺少证据的检查如实标注,不宣称已通过或已有性能收益。 ## 参考资料与适用边界 来源(核验日期:2026-09-08): [腾讯云《云数据库 MySQL 使用规范》](https://intl.cloud.tencent.com/zh/document/product/236/13390?lang=zh) [阿里云《RDS MySQL 自动SQL优化》](https://help.aliyun.com/zh/rds/apsaradb-rds-for-mysql/use-the-automatic-sql-optimization-feature-for-an-apsaradb-rds-for-mysql-instance) 整理范围:仅依据上述公开文档的相关建议,业务场景、变量、检查流程与验收格式均为独立改写,不代表相关企业完整内部规范。
从业务实体、关系和访问需求形成可评审的表结构,所有新字段必须有详细中文注释。
## 任务目标 请完成 MySQL 业务建模和详细字段设计。 交付能用于评审或后续实施的具体方案、规则与样例;未要求实施的部分不声称已经落地。 ## 输入信息(选填) 两项均可留空,也可直接用一句话说明目标并附上已有资料。无需自行整理版本、配置或完整需求表;能读取的内容由执行者补齐。 建模业务:从当前需求、页面字段和现有实体识别需要新增或整理的数据对象;留空时优先补齐已有业务表的实体关系与字段字典,不凭空设计新的业务模块。 需求与表结构资料:读取当前工程的实体、DTO、Mapper、迁移 DDL、表注释、查询样例和状态定义,自动确认 MySQL 版本、字符集与迁移方式。 ## 信息不完整时 先使用本次对话中已经说明的信息;用户留空、写“暂无/不清楚”或未替换输入标记,都按缺失处理,不当作真实路径、参数或业务值。已能从资料确定的内容不重复询问,不编造文件、日志、接口、业务值或执行结果。在用户已授权的范围内读取相关工程和材料,不为补齐输入擅自扩大操作范围。 ### 优先确认 - 将业务实体、关系、当前状态和历史明细对应到现有表与写入路径。 - 核对主要查询、唯一性、租户或组织范围以及删除和保留行为。 - 读取字段单位、精度、空值、默认值、状态枚举和历史数据兼容约定。 - 从项目配置与迁移脚本确认方言、字符集、排序规则及结构变更方式。 ### 可采用的默认处理 - 默认交付设计与 DDL,不在数据库执行结构变更。 - 复用现有命名、主键、字符集与迁移约定;未确认的唯一性和必填关系不写成生效约束。 - 金额、累计量和未知值保留真实语义;新表和新字段均提供详细中文注释,容量未知用估算条件表达。 ### 必须有依据的事项 - 实体之间的基数、业务唯一性、状态含义或删除保留规则无法确定时,不擅自固化唯一键与约束。 - 金额单位、精度边界或实际存在的租户权限归属不明时,不给可直接落库且可能改变业务含义的字段定义。 只有缺口会改变业务结果、权限边界或关键实现,且无法从现有资料确认时,才集中提出最多 3 个关键问题;说明影响,并继续完成不依赖答案的部分。一般命名、排版和可逆实现细节按现有约定决定,不逐项等待确认。 ### 资料仍不足时的交付 - 缺需求细节时先从已有 DDL 交付字段字典、关系疑点与注释补全建议,未确认关系保持候选。 - 既无工程也无业务材料时交付带详细注释的独立建模示例及实体到查询的设计表,注明不是实际业务结构。 ## 执行要求 适用范围:MySQL业务库设计;目标版本、字符集及部署方式以输入为准。DMS流程仅供有相应产品条件的项目采用,自建库可使用现有迁移工具。 上线前审核 SQL;使用 DMS 结构设计时,核对多环境结构一致性。 检查步骤: 1. 先梳理业务实体、实体关系、生命周期和唯一性,区分当前状态、明细记录和历史事实,明确哪些数据必须长期保留,哪些可以归档。 2. 根据真实查询和写入路径确定表的边界,列出需要联查的对象以及是否存在租户或组织隔离;未确认的业务关系不能直接写成唯一键或非空约束。 3. 建立字段字典,说明业务含义、类型长度、单位、精度、是否为空、默认值和枚举值;金额、比例和累计量按业务范围计算精度,未知值不能随意填零。 4. 生成DDL时为每张表写中文注释,并为所有新字段写详细中文COMMENT,包含含义、单位或枚举、空值与默认值语义;禁止只重复字段名充当注释。 5. 把主键、唯一约束及索引分别关联到业务规则和代表性SQL,评估写入成本、历史重复数据及兼容性;不要仅凭字段名称批量添加索引。 6. 给出开发、测试、生产的结构比对与变更顺序,列出旧数据填充、约束生效和回退条件;用新增、修改、删除及边界值样例核对业务能否完整表达。 ## 交付与验收 输出要求:交付实体关系的文字说明、字段字典、带详细中文注释的DDL、索引与查询映射、迁移步骤及验收用例。字段字典与DDL必须逐项对应,资料不足的字段保留待确认说明。 只报告有证据支持的问题;区分“已验证”“推测”和“待验证”,涉及变更时给出受影响文件或对象、最小修改和复核方法。代码与操作示例使用占位符,不写入真实密码。 ### 本条完成检查 - 实体关系、字段字典和 DDL 逐项一致,全部新字段注释解释含义、单位或编码、空值及默认值。 - 主键、唯一约束和索引分别有业务规则或代表性 SQL 依据。 - 迁移说明历史值填充、约束生效和兼容顺序,新增、修改、删除及边界样例能表达业务。 按本条要求组织结果,使用简洁中文和一致的编号、术语、缩进及空行;已有项目格式优先。只说明实际完成的内容,将采用的假设、未完成项和缺少的条件写在相关位置,不额外生成无关文档。未执行、无法复现或缺少证据的检查如实标注,不宣称已通过或已有性能收益。 ## 参考资料与适用边界 来源(核验日期:2026-09-08): [腾讯云《云数据库 MySQL 使用规范》](https://intl.cloud.tencent.com/zh/document/product/236/13390?lang=zh) [阿里云《数据管理 DMS:结构设计》](https://help.aliyun.com/zh/dms/design-schemas) 整理范围:仅依据上述公开文档的相关建议,业务场景、变量、检查流程与验收格式均为独立改写,不代表相关企业完整内部规范。
用于审批、工单、订单等状态流转,检查分支遗漏、重复提交、权限和持久化结果。
## 任务目标 请检查 Java 审批状态分支,并设计业务测试。 以核查和评审为主,给出有证据的判断及可复核的修改建议;本次用户另有明确实现要求时,按其授权范围执行。 ## 输入信息(选填) 两项均可留空,也可直接用一句话说明目标并附上已有资料。无需自行整理版本、配置或完整需求表;能读取的内容由执行者补齐。 审批流程:从当前需求或状态异常定位审批操作;留空时扫描现有审批 Controller、Service 和状态枚举,选择一条包含角色判断与状态写入的流程进行检查。 工程与审批规则:读取状态枚举、分支代码、权限定义、条件更新 SQL、现有用例及业务说明,自动还原实际迁移路径和版本。 ## 信息不完整时 先使用本次对话中已经说明的信息;用户留空、写“暂无/不清楚”或未替换输入标记,都按缺失处理,不当作真实路径、参数或业务值。已能从资料确定的内容不重复询问,不编造文件、日志、接口、业务值或执行结果。在用户已授权的范围内读取相关工程和材料,不为补齐输入擅自扩大操作范围。 ### 优先确认 - 将入口操作、角色、对象归属和状态枚举对应到具体分支。 - 检查 switch 默认分支、复合条件顺序、未知和历史状态的处理。 - 追踪数据库条件更新、版本字段、唯一约束和外部动作,识别重复与并发覆盖。 - 对照现有测试和业务说明,分别记录代码现状与已确认规则。 ### 可采用的默认处理 - 默认只读检查和测试设计,给保持行为的最小整理建议,不自动新增审批步骤。 - 规则缺失时描述当前代码行为并标记待确认,不把现有分支直接当成已批准的业务规则。 - 未知状态不默认放行,权限、短路顺序和副作用按现有可信契约保留。 ### 必须有依据的事项 - 合法状态迁移、批准角色或对象归属规则没有可信依据时,不编造最终状态与越权测试的业务预期。 - 重复审批、撤回或并发竞争应由哪个操作生效不明确时,不擅自决定状态覆盖策略。 只有缺口会改变业务结果、权限边界或关键实现,且无法从现有资料确认时,才集中提出最多 3 个关键问题;说明影响,并继续完成不依赖答案的部分。一般命名、排版和可逆实现细节按现有约定决定,不逐项等待确认。 ### 资料仍不足时的交付 - 有代码无规则时交付实际分支覆盖图、冲突与遗漏证据,以及业务预期待确认的测试表。 - 无工程时给状态迁移表、条件组合与重复并发测试模板,示例角色和状态仅用于说明方法。 ## 执行要求 适用范围:Java实现的有限业务状态与条件分支;状态迁移、权限和幂等策略以业务规则为准,不能按通用审批流程擅自补业务。 保持条件表达式易于理解,明确 switch 中未匹配情况的处理方式和各分支结束条件。 检查步骤: 1. 从业务资料整理状态迁移表,逐项记录起始状态、操作、角色、前置条件和终止状态;资料与代码冲突时列明两种行为并指出需要确认的事实。 2. 将每条合法迁移对应到实际代码路径,检查条件顺序是否遮蔽后续规则,以及缺少字段、未知枚举和历史状态会进入哪一条路径。 3. 为复合判断建立条件组合,找出权限、状态和数据归属之间的联动;不为追求代码简短而改变短路顺序或触发原先不会发生的副作用。 4. 检查重复提交和并发操作是否可能把状态覆盖回旧值,明确数据库约束或更新条件如何保障业务结果;未提供持久化代码时不得认定并发安全。 5. 给出保持行为的分支整理与需要业务决定的行为修正,分别列出改动;替换复杂判断时使用业务含义清楚的命名,不为了形式增加无用抽象。 6. 根据迁移表生成正常、拒绝、越权、重复、并发和异常测试,测试应观察数据库状态、外部动作次数与响应;说明哪些属于单元验证、哪些需真实集成环境。 ## 交付与验收 输出要求:依次提供状态迁移表、遗漏和冲突清单、最小代码修改、测试矩阵。每个测试使用“初始状态|角色与归属|操作及并发条件|预期最终状态|可观察证据”。 只报告有证据支持的问题;区分“已验证”“推测”和“待验证”,涉及变更时给出受影响文件或对象、最小修改和复核方法。代码与操作示例使用占位符,不写入真实密码。 ### 本条完成检查 - 每条迁移列出起始状态、操作、角色、前提和目标状态,并关联代码证据。 - 区分保持行为的整理与需要业务决定的修正。 - 测试观察数据库最终状态、响应及副作用次数,持久化代码缺失时不声称并发安全。 按本条要求组织结果,使用简洁中文和一致的编号、术语、缩进及空行;已有项目格式优先。只说明实际完成的内容,将采用的假设、未完成项和缺少的条件写在相关位置,不额外生成无关文档。未执行、无法复现或缺少证据的检查如实标注,不宣称已通过或已有性能收益。 ## 参考资料与适用边界 来源(核验日期:2026-09-08): [阿里巴巴《P3C-PMD 官方公开规则》](https://github.com/alibaba/p3c/blob/master/p3c-pmd/README.md) 整理范围:仅依据上述公开文档的相关建议,业务场景、变量、检查流程与验收格式均为独立改写,不代表相关企业完整内部规范。
用于账期、日报、到期时间和跨年格式化,检查时间含义、时区转换和并发安全。
## 任务目标 请检查 Java 日期、时区转换与统计周期的边界。 以核查和评审为主,给出有证据的判断及可复核的修改建议;本次用户另有明确实现要求时,按其授权范围执行。 ## 输入信息(选填) 两项均可留空,也可直接用一句话说明目标并附上已有资料。无需自行整理版本、配置或完整需求表;能读取的内容由执行者补齐。 时间字段或周期:优先检查当前报表或日期异常;留空时从格式化、日期范围查询和统计分组中选择一条同时涉及接口与数据库的时间转换链。 工程与时间资料:读取字段类型、序列化与格式化配置、SQL 区间、数据库迁移和现有测试,自动核对 Java 版本、应用时区及已声明的业务周期。 ## 信息不完整时 先使用本次对话中已经说明的信息;用户留空、写“暂无/不清楚”或未替换输入标记,都按缺失处理,不当作真实路径、参数或业务值。已能从资料确定的内容不重复询问,不编造文件、日志、接口、业务值或执行结果。在用户已授权的范围内读取相关工程和材料,不为补齐输入擅自扩大操作范围。 ### 优先确认 - 追踪前端、请求、Java 对象、数据库和导出的时间单位与表示方式。 - 检索日期格式、默认时区、秒毫秒转换、共享可变格式化器及系统当前时间调用。 - 读取日报月报 SQL 的上下界与业务统计分组,核对跨年周所属年和日历年。 - 查找字段注释、历史迁移、测试时钟和既有跨年、闰日用例。 ### 可采用的默认处理 - 默认只读检查,不更改全局时区或批量转换历史数据。 - 工程未声明业务时区时明确保留未知,示例使用显式标注的时区,不按中文环境推断统计口径。 - 用固定时间构造边界样例;候选区间可说明左闭右开优势,但不替换已有业务约定。 ### 必须有依据的事项 - 字段代表时间点、本地日期还是时长,以及既有历史数据的时区解释不明时,不自动转换或回填。 - 结算或统计周期、截点和首尾包含规则没有依据时,不自行制定报表预期。 只有缺口会改变业务结果、权限边界或关键实现,且无法从现有资料确认时,才集中提出最多 3 个关键问题;说明影响,并继续完成不依赖答案的部分。一般命名、排版和可逆实现细节按现有约定决定,不逐项等待确认。 ### 资料仍不足时的交付 - 无工程时交付时间字段字典与跨年、月末、闰日、秒毫秒和多时区样例表。 - 缺业务周期时先检查格式与线程安全,区间样例列条件化结果并标明尚不能判定的统计口径。 ## 执行要求 适用范围:Java日期时间处理及数据库、前端之间的数据转换;使用java.time时需JDK8及以上,旧接口替换须保留既有时区与业务语义。 区分日期格式中的日历年与周所属年,检查旧格式化器的线程安全。 检查步骤: 1. 逐个识别字段表示的是时间点、本地日期、本地时间还是持续时长,注明单位与来源;账期、截止日期和事件发生时间不能仅凭字段名相互转换。 2. 追踪前端、接口、Java对象、数据库到导出文件的转换链,查找默认时区、隐式格式、秒与毫秒混用,以及同一字段在不同入口中使用不同解释。 3. 针对年末年初构造跨年样例,核对格式化、分组、排序和文件名称是否属于正确日历日期;仅在业务确实按周核算时使用周所属年语义。 4. 检查日报和月报的区间边界,明确定义起止是否包含,避免相邻周期重复或漏记;若涉及多个时区,补充本地一天对应的实际时间范围。 5. 核对日期工具对象是否被多线程共享、是否可变、是否依赖服务器当前时间;给出可注入业务时钟的改进范围,让测试不依赖执行当天。 6. 覆盖跨年、月末、闰日、时区转换、缺失时间及夏令时适用地区,分别验证展示和统计结果;若业务只使用固定时区,清楚说明无需扩展的范围。 ## 交付与验收 输出要求:输出时间字段字典、转换链、缺陷及修复建议、边界样例表。样例写明输入、业务时区、期望日期或区间以及实际结果,保留对历史数据解释和接口兼容性的说明。 只报告有证据支持的问题;区分“已验证”“推测”和“待验证”,涉及变更时给出受影响文件或对象、最小修改和复核方法。代码与操作示例使用占位符,不写入真实密码。 ### 本条完成检查 - 转换链逐处说明类型、单位、格式和时区,不混同本地日期与时间点。 - 边界用例具有输入、业务时区、预期区间和实际结果。 - 修正建议说明历史数据与客户端兼容,未定义的统计业务不编造验收结果。 按本条要求组织结果,使用简洁中文和一致的编号、术语、缩进及空行;已有项目格式优先。只说明实际完成的内容,将采用的假设、未完成项和缺少的条件写在相关位置,不额外生成无关文档。未执行、无法复现或缺少证据的检查如实标注,不宣称已通过或已有性能收益。 ## 参考资料与适用边界 来源(核验日期:2026-09-08): [阿里巴巴《P3C-PMD 官方公开规则》](https://github.com/alibaba/p3c/blob/master/p3c-pmd/README.md) 整理范围:仅依据上述公开文档的相关建议,业务场景、变量、检查流程与验收格式均为独立改写,不代表相关企业完整内部规范。
用于订单、审核、库存等写操作,追踪异常、事务提交和外部副作用,避免失败被吞或状态半完成。
## 任务目标 请审查 Java 异常处理与事务结果的一致性。 以核查和评审为主,给出有证据的判断及可复核的修改建议;本次用户另有明确实现要求时,按其授权范围执行。 ## 输入信息(选填) 两项均可留空,也可直接用一句话说明目标并附上已有资料。无需自行整理版本、配置或完整需求表;能读取的内容由执行者补齐。 事务业务操作:从当前异常或写接口定位操作;留空时选择一条同时包含数据库写入与消息、缓存或远程调用的链路,核对用户看到成功的时点。 工程与异常资料:读取业务方法、调用方式、事务管理器与配置、异常类和全局处理器、数据库操作及已有故障测试,自动确定框架版本与回滚行为。 ## 信息不完整时 先使用本次对话中已经说明的信息;用户留空、写“暂无/不清楚”或未替换输入标记,都按缺失处理,不当作真实路径、参数或业务值。已能从资料确定的内容不重复询问,不编造文件、日志、接口、业务值或执行结果。在用户已授权的范围内读取相关工程和材料,不为补齐输入擅自扩大操作范围。 ### 优先确认 - 按顺序追踪校验、数据库变更、消息、缓存和远程调用的可逆性。 - 核对事务代理、自调用、传播、管理器和 rollbackFor 等实际配置。 - 检查 catch、finally、提前返回和统一响应包装是否吞掉原始失败。 - 查找提交后任务、重试、补偿、查询与幂等处理及现有故障样例。 ### 可采用的默认处理 - 默认只读审查并提供最小修复片段,不改异常码、事务边界或执行外部副作用。 - 远程超时归为可能结果未知,不假设本地回滚能撤销外部操作。 - 框架行为以实际配置和调用链为准,缺运行证据时将回滚效果列为待测。 ### 必须有依据的事项 - 用户可见成功的业务定义、允许的部分完成或补偿结果不明确时,不自行把失败转换成成功。 - 外部动作能否查询、撤销或幂等重试的契约未知时,不设计会重复扣款或重复履约的恢复动作。 只有缺口会改变业务结果、权限边界或关键实现,且无法从现有资料确认时,才集中提出最多 3 个关键问题;说明影响,并继续完成不依赖答案的部分。一般命名、排版和可逆实现细节按现有约定决定,不逐项等待确认。 ### 资料仍不足时的交付 - 无工程时交付按失败位置划分的事务结果矩阵和可控故障测试样例。 - 有代码无环境时输出异常传播与事务边界证据,列出核对最终数据和副作用次数的执行步骤。 ## 执行要求 适用范围:Java业务写操作及显式或框架管理的数据库事务;回滚条件必须核对实际框架配置,远程调用和消息不会自动随本地数据库回滚。 结合代码上下文检查异常后的回滚;注意 finally 中的返回可能遮蔽原有结果。 检查步骤: 1. 以一个真实业务操作为单位,按顺序列出校验、数据库变更、消息、缓存和远程请求,标明每个步骤的可逆性,以及用户看见成功的确切时点。 2. 核对事务边界、调用方式和异常到达的位置,分别模拟校验失败、数据库失败、外部超时及运行时异常;不要只看到事务注解就认定回滚一定生效。 3. 检查异常捕获后是否继续执行、改写返回值或丢失原因,区分可以转成业务结果的失败与必须向上交付的技术失败,保留定位问题所需的最少上下文。 4. 对数据库已提交而外部动作失败的情况明确结果,评估幂等重试、补偿和状态对账是否能恢复;对外部成功但响应超时的情况标记结果未知,避免直接重复副作用。 5. 提出能保留现有契约的最小修改,说明异常类型、返回码和事务配置如何协同;只给项目适用的机制,不为了套用模式拆分无必要的微服务。 6. 用可控故障点验证关键步骤,核对数据库最终状态、外部动作次数及用户响应;列出未覆盖的网络分区或并发场景,以及上线后的异常监测和补偿入口。 ## 交付与验收 输出要求:按业务步骤表、异常传播图的文字说明、问题清单、修复片段和故障用例交付。每个用例必须包含初始状态、注入故障、最终数据和预期响应,不能用“未报错”代替一致性结论。 只报告有证据支持的问题;区分“已验证”“推测”和“待验证”,涉及变更时给出受影响文件或对象、最小修改和复核方法。代码与操作示例使用占位符,不写入真实密码。 ### 本条完成检查 - 每个风险关联业务步骤、异常位置、事务结果及用户响应。 - 修复建议保留现有契约并解释数据库提交与外部动作不同步的窗口。 - 用例包含初始状态、故障点、最终数据与响应,不以未报错判定一致性。 按本条要求组织结果,使用简洁中文和一致的编号、术语、缩进及空行;已有项目格式优先。只说明实际完成的内容,将采用的假设、未完成项和缺少的条件写在相关位置,不额外生成无关文档。未执行、无法复现或缺少证据的检查如实标注,不宣称已通过或已有性能收益。 ## 参考资料与适用边界 来源(核验日期:2026-09-08): [阿里巴巴《P3C-PMD 官方公开规则》](https://github.com/alibaba/p3c/blob/master/p3c-pmd/README.md) 整理范围:仅依据上述公开文档的相关建议,业务场景、变量、检查流程与验收格式均为独立改写,不代表相关企业完整内部规范。
排查线程复用导致的用户、租户和请求上下文串用,覆盖异步传递与异常清理。
## 任务目标 请检查 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) 整理范围:仅依据上述公开文档的相关建议,业务场景、变量、检查流程与验收格式均为独立改写,不代表相关企业完整内部规范。
用于导出、批量计算、外部调用等异步任务,审查资源边界、拒绝处理及任务结果可追踪性。
## 任务目标 请评审 Java 线程池容量和异步任务的可靠性。 以核查和评审为主,给出有证据的判断及可复核的修改建议;本次用户另有明确实现要求时,按其授权范围执行。 ## 输入信息(选填) 两项均可留空,也可直接用一句话说明目标并附上已有资料。无需自行整理版本、配置或完整需求表;能读取的内容由执行者补齐。 异步任务:从当前排队或任务失败问题选择执行器;留空时扫描自建线程池和 Spring 异步入口,优先检查共享池中具有业务副作用的任务。 工程与负载资料:读取执行器配置、任务代码、上下游资源、依赖与已有排队耗时指标和测试,自动判断平台线程、虚拟线程或其他调度方式。 ## 信息不完整时 先使用本次对话中已经说明的信息;用户留空、写“暂无/不清楚”或未替换输入标记,都按缺失处理,不当作真实路径、参数或业务值。已能从资料确定的内容不重复询问,不编造文件、日志、接口、业务值或执行结果。在用户已授权的范围内读取相关工程和材料,不为补齐输入擅自扩大操作范围。 ### 优先确认 - 追踪任务来源、提交返回、排队、执行和完成通知,确认是否持久化。 - 核对核心线程、上限、队列、拒绝策略、线程名及所用版本的参数语义。 - 关联数据库连接、远程连接、锁和共享池任务,查找阻塞与相互拖慢的路径。 - 读取异常、取消、停机重启和重试处理,以及现有负载与完成率记录。 ### 可采用的默认处理 - 默认只读评审,不直接扩线程、改拒绝策略或重启服务。 - 没有到达率与耗时分布时给测量方式、容量公式和附假设候选,不设固定最优线程数。 - 虚拟线程和响应式任务按实际实现另列边界,不机械套用传统池规则。 ### 必须有依据的事项 - 任务是否允许丢失、接口何时算业务完成以及拒绝后用户应收到什么结果不明时,不默认静默丢弃或同步执行。 - 带副作用任务在超时、取消和重启后是否允许重试未定义时,不承诺可安全重复执行。 只有缺口会改变业务结果、权限边界或关键实现,且无法从现有资料确认时,才集中提出最多 3 个关键问题;说明影响,并继续完成不依赖答案的部分。一般命名、排版和可逆实现细节按现有约定决定,不逐项等待确认。 ### 资料仍不足时的交付 - 无工程时提供任务可靠性分类、资源关系和容量估算表,以及排队满、下游慢和重启用例。 - 缺负载环境时交付现有配置的静态风险及所需指标,不把未压测候选作为可直接采用参数。 ## 执行要求 适用范围:传统平台线程池与常见Spring异步执行器;虚拟线程、响应式调度器应另行评估,不机械套用旧线程数量建议。 明确线程池的资源边界,并为线程提供可识别的名称。 检查步骤: 1. 按业务列出任务来源、任务是否持久化、完成期限和失败归属,区分允许丢弃的通知与必须完成的业务任务;明确接口返回时任务处于哪个状态。 2. 绘制提交到执行完成的路径,标记线程池、排队、数据库连接、远程连接和锁等限制,找出共享池中可能互相拖慢的任务类型及调用方。 3. 根据到达率与耗时提出容量估算,写清假设、排队容忍时间和内存占用;资料不足时给测量方法与候选区间,不拍脑袋给固定线程数。 4. 逐项核对任务排队已满、执行超时、下游阻塞和提交失败时的行为,说明拒绝处理是否会让请求线程长时间阻塞、任务静默丢失或产生重复执行。 5. 检查任务异常、取消、应用退出和重新启动后的状态,验证调用者能否获知失败;若业务要求可靠执行,给出持久化任务与补偿的边界。 6. 设计平稳负载、突发负载、下游变慢及停机四组验证,采集排队时间、执行时间、完成率、拒绝数和资源占用;根据证据逐项调整,保留回退配置。 ## 交付与验收 输出要求:输出任务分类、资源关系、参数建议表、失败处理矩阵及验证计划。参数建议必须含当前值、依据、候选值、预期影响和回退条件,不把未压测值写成最优配置。 只报告有证据支持的问题;区分“已验证”“推测”和“待验证”,涉及变更时给出受影响文件或对象、最小修改和复核方法。代码与操作示例使用占位符,不写入真实密码。 ### 本条完成检查 - 任务分类明确完成期限、失败归属、持久化与丢失边界。 - 参数建议关联当前值、资源上限、推导条件及拒绝影响。 - 验证排队、完成、拒绝、异常和重启后的任务结果,未测容量保持待验证。 按本条要求组织结果,使用简洁中文和一致的编号、术语、缩进及空行;已有项目格式优先。只说明实际完成的内容,将采用的假设、未完成项和缺少的条件写在相关位置,不额外生成无关文档。未执行、无法复现或缺少证据的检查如实标注,不宣称已通过或已有性能收益。 ## 参考资料与适用边界 来源(核验日期:2026-09-08): [阿里巴巴《P3C-PMD 官方公开规则》](https://github.com/alibaba/p3c/blob/master/p3c-pmd/README.md) 整理范围:仅依据上述公开文档的相关建议,业务场景、变量、检查流程与验收格式均为独立改写,不代表相关企业完整内部规范。
用于批量导入、分页、筛选和去重代码,检查集合共享、视图修改、遍历变更及内存边界。
## 任务目标 请审查 Java 集合视图、转换与批量处理代码。 以核查和评审为主,给出有证据的判断及可复核的修改建议;本次用户另有明确实现要求时,按其授权范围执行。 ## 输入信息(选填) 两项均可留空,也可直接用一句话说明目标并附上已有资料。无需自行整理版本、配置或完整需求表;能读取的内容由执行者补齐。 集合处理链:优先检查当前集合异常或批量接口;留空时从切片、数组转换、去重与批量组装代码选择一条存在共享或变更行为的处理链。 工程与数据样例:读取集合创建和消费者、接口输入、业务键、分页与并发代码、依赖版本和现有边界测试,自动归纳数据规模证据。 ## 信息不完整时 先使用本次对话中已经说明的信息;用户留空、写“暂无/不清楚”或未替换输入标记,都按缺失处理,不当作真实路径、参数或业务值。已能从资料确定的内容不重复询问,不编造文件、日志、接口、业务值或执行结果。在用户已授权的范围内读取相关工程和材料,不为补齐输入擅自扩大操作范围。 ### 优先确认 - 追踪原集合、subList 等视图、独立副本与缓存引用的拥有关系。 - 检查数组与列表转换、增删替换、遍历修改和对象加入后再变更的行为。 - 核对去重键、排序、重复项保留及分页计数的实际契约。 - 读取批次边界、全量加载、中间副本及并发共享路径,核对 JDK 与集合库能力。 ### 可采用的默认处理 - 默认只读给最小替换建议,不统一改 Stream、并行集合或不可变类型。 - 没有业务去重和顺序定义时保留输入顺序与重复语义,不按对象名称猜业务键。 - 没有规模记录时对持有副本和峰值内存列计算条件,不虚构耗时。 ### 必须有依据的事项 - 业务顺序、重复项或缺失关联应如何处理不明时,不选择会改变输出的去重或批量策略。 - 共享集合是否允许实时可见变更及复合操作原子性不明确时,不以换集合类决定并发语义。 只有缺口会改变业务结果、权限边界或关键实现,且无法从现有资料确认时,才集中提出最多 3 个关键问题;说明影响,并继续完成不依赖答案的部分。一般命名、排版和可逆实现细节按现有约定决定,不逐项等待确认。 ### 资料仍不足时的交付 - 无工程时交付视图与副本、转换及遍历变更的可运行边界样例和关系说明。 - 无大规模数据时给批次与内存估算模板,列空集合、重复、空元素、源变更和并发验证条件。 ## 执行要求 适用范围:使用Java集合的业务模块;不可变集合工厂、Stream及第三方集合的能力需匹配JDK与依赖版本。 核对集合视图与原集合的关联,以及具体集合对遍历修改和数组转换的支持。 检查步骤: 1. 标出每个集合的创建者、拥有者、读写方和生命周期,区分原始数据、分页视图、独立副本和缓存引用;指出在哪一层修改可能影响另外一个业务调用。 2. 用真实调用路径检查分页切片、数组转列表和列表转数组,分别验证能否增加、删除、替换及强制转换;将依赖具体实现的假设改为明确契约。 3. 检查筛选与去重是否保持业务要求的稳定顺序,以及重复记录按哪个业务键识别;若对象在加入集合后继续修改,核对后续查找和结果是否仍正确。 4. 评估批量规模,区分一次全量加载、分批读取和流式处理;估算同时持有的数据副本与中间结果,容量结论注明来源,不根据循环层数臆测实际耗时。 5. 检查并发共享是否存在可见性或写入冲突,说明快照、加锁、分段处理等候选方案各自改变的语义;不要仅更换集合类就宣称业务操作整体原子。 6. 提供覆盖空集合、单元素、重复、空元素、源集合变更及大批量输入的验证用例;并发场景必须定义可重复观察的结果,记录未执行的压力验证。 ## 交付与验收 输出要求:交付集合关系说明、缺陷表、最小替换代码和验证矩阵。每处修改说明是否保留原有顺序、重复项和共享语义,另外列出峰值内存估算的假设与需要采集的指标。 只报告有证据支持的问题;区分“已验证”“推测”和“待验证”,涉及变更时给出受影响文件或对象、最小修改和复核方法。代码与操作示例使用占位符,不写入真实密码。 ### 本条完成检查 - 每项缺陷说明创建者、修改者、触发输入和受影响调用。 - 替换建议明确是否保留顺序、重复项、共享关系和批量失败语义。 - 验证包含源集合变更与边界输入,容量和并发结论注明实际执行范围。 按本条要求组织结果,使用简洁中文和一致的编号、术语、缩进及空行;已有项目格式优先。只说明实际完成的内容,将采用的假设、未完成项和缺少的条件写在相关位置,不额外生成无关文档。未执行、无法复现或缺少证据的检查如实标注,不宣称已通过或已有性能收益。 ## 参考资料与适用边界 来源(核验日期:2026-09-08): [阿里巴巴《P3C-PMD 官方公开规则》](https://github.com/alibaba/p3c/blob/master/p3c-pmd/README.md) 整理范围:仅依据上述公开文档的相关建议,业务场景、变量、检查流程与验收格式均为独立改写,不代表相关企业完整内部规范。
检查DTO、数据库查询、远程调用和集合中的空值传播,避免默认值掩盖未知状态。
## 任务目标 请排查 Java 空值传播与包装类型的边界问题。 以核查和评审为主,给出有证据的判断及可复核的修改建议;本次用户另有明确实现要求时,按其授权范围执行。 ## 输入信息(选填) 两项均可留空,也可直接用一句话说明目标并附上已有资料。无需自行整理版本、配置或完整需求表;能读取的内容由执行者补齐。 空值字段链:从当前空指针或字段异常定位输入;留空时优先扫描可空包装类型参与算术、判断和返回的位置,选择一条能追踪到请求或数据库来源的链路。 工程与字段资料:读取 DTO、实体、DDL、映射、远程接口契约和边界用例,自动确认字段可空性、序列化与实际 JDK 依赖。 ## 信息不完整时 先使用本次对话中已经说明的信息;用户留空、写“暂无/不清楚”或未替换输入标记,都按缺失处理,不当作真实路径、参数或业务值。已能从资料确定的内容不重复询问,不编造文件、日志、接口、业务值或执行结果。在用户已授权的范围内读取相关工程和材料,不为补齐输入擅自扩大操作范围。 ### 优先确认 - 沿缺字段、显式 null、无记录和外部不完整响应追踪到业务运算及展示。 - 检索包装类型比较、自动拆箱、集合元素及默认值转换。 - 核对数据库可空、入口校验、字段注释和响应模型是否一致。 - 读取对象值相同但实例不同、正常值与空值的既有测试。 ### 可采用的默认处理 - 默认只读排查并给修复片段,不批量把 null 改为零或空字符串。 - 业务含义缺失时保留未知与合法零值的区别,已有契约优先。 - 对无源码依赖按声明契约和输入样例分析,不编造其内部返回保证。 ### 必须有依据的事项 - 空值代表未知、未提供、关闭还是无记录缺少业务定义时,不替用户决定默认值或改变公共字段类型。 只有缺口会改变业务结果、权限边界或关键实现,且无法从现有资料确认时,才集中提出最多 3 个关键问题;说明影响,并继续完成不依赖答案的部分。一般命名、排版和可逆实现细节按现有约定决定,不逐项等待确认。 ### 资料仍不足时的交付 - 无工程时交付空值传播与包装比较的独立测试样例,以及入口、映射和运算层的校验选择表。 - 仅有字段定义时先完成空值语义疑点和边界请求矩阵,触发路径保留待验证。 ## 执行要求 适用范围:使用Java对象、包装类型和常见持久化框架的业务代码;具体映射和校验行为以JDK与依赖版本为准。 检查包装值比较和自动拆箱中的空值风险,不假定远程调用或数据库查询总能返回值。 检查步骤: 1. 画出目标字段从请求、查询或远程响应到业务计算、持久化及展示的传播路径,区分未提供、未知、无记录、零值和空字符串,不能把所有情况自动合并。 2. 找出可空值参与比较、算术、条件判断、方法返回和集合操作的位置,为每个疑点指出确切输入及可能结果;对无源码依赖只列待验证的接口契约。 3. 检查默认值是否改变业务事实,例如未知计数被展示成零、未提交配置被当成关闭;将需要拒绝输入、保留为空或业务兜底的场景分别列出理由。 4. 对对象比较与集合元素给出包含空值、相同值和不同实例的样例,检查现有结果是否稳定;避免只针对小范围数值验证而遗漏实际业务标识。 5. 提出最小修复,明确校验应放在入口、转换层还是计算前;说明对已有数据和外部调用方的影响,不为消除异常随意改变公共字段类型或业务默认值。 6. 设计能区分修复前后行为的测试,覆盖缺字段、显式空值、查询无记录、远程返回不完整和混合集合;同时保留正常业务样例,记录真正执行的结果。 ## 交付与验收 输出要求:先给空值语义表,再给风险清单、修正代码与测试矩阵。每个风险须给出“来源字段|传播路径|触发输入|错误业务结果”,无法重现的项目保持待验证状态。 只报告有证据支持的问题;区分“已验证”“推测”和“待验证”,涉及变更时给出受影响文件或对象、最小修改和复核方法。代码与操作示例使用占位符,不写入真实密码。 ### 本条完成检查 - 风险表包含来源字段、传播路径、触发输入和错误业务结果。 - 修复建议说明校验位置、旧数据与调用方兼容性,不以消除异常掩盖未知事实。 - 用例覆盖缺字段、显式空值、无记录、外部缺项与混合集合,并保留正常样例。 按本条要求组织结果,使用简洁中文和一致的编号、术语、缩进及空行;已有项目格式优先。只说明实际完成的内容,将采用的假设、未完成项和缺少的条件写在相关位置,不额外生成无关文档。未执行、无法复现或缺少证据的检查如实标注,不宣称已通过或已有性能收益。 ## 参考资料与适用边界 来源(核验日期:2026-09-08): [阿里巴巴《P3C-PMD 官方公开规则》](https://github.com/alibaba/p3c/blob/master/p3c-pmd/README.md) 整理范围:仅依据上述公开文档的相关建议,业务场景、变量、检查流程与验收格式均为独立改写,不代表相关企业完整内部规范。
用于新接口开发和前后端联调,检查字段含义、空值、枚举、序列化兼容及接口说明。
## 任务目标 请评审 Java 接口契约与 DTO 字段。 以核查和评审为主,给出有证据的判断及可复核的修改建议;本次用户另有明确实现要求时,按其授权范围执行。 ## 输入信息(选填) 两项均可留空,也可直接用一句话说明目标并附上已有资料。无需自行整理版本、配置或完整需求表;能读取的内容由执行者补齐。 接口或业务操作:优先使用当前需求或接口变更;留空时从现有 Controller/RPC 入口与调用方选取一条实际业务操作,连同 DTO、响应和异常完成契约评审。 工程与接口资料:读取接口定义、DTO/VO、服务方法、序列化和校验配置、前端或 RPC 调用样例及既有测试,自动确认框架与 Java 模型类型。 ## 信息不完整时 先使用本次对话中已经说明的信息;用户留空、写“暂无/不清楚”或未替换输入标记,都按缺失处理,不当作真实路径、参数或业务值。已能从资料确定的内容不重复询问,不编造文件、日志、接口、业务值或执行结果。在用户已授权的范围内读取相关工程和材料,不为补齐输入擅自扩大操作范围。 ### 优先确认 - 追踪发起角色、前提、数据对象、成功时点和异常到接口返回的映射。 - 核对字段名称、类型、长度、单位、必填条件、枚举、空值及脱敏。 - 检查 DTO 到 Service 到 VO 的转换、可写字段和实际 JSON,识别 record 或特殊模型。 - 读取客户端兼容、分页排序、重复提交、对象归属及真实租户边界的实现与样例。 ### 可采用的默认处理 - 默认只读评审,给最小契约修正示例,不直接修改公共字段和错误码。 - 已有客户端实际使用方式优先纳入兼容评估,不把传统 JavaBean 规则套到所有模型。 - 业务说明不足时分别记录代码现状和待确认语义,不把 HTTP 成功当作异步业务完成。 ### 必须有依据的事项 - 金额单位、时间含义、状态或异步完成标准未定义时,不编造字段默认值与业务验收结果。 - 合法操作角色、对象归属或旧客户端兼容约束存在冲突时,不自行放宽写入权限或破坏公共契约。 只有缺口会改变业务结果、权限边界或关键实现,且无法从现有资料确认时,才集中提出最多 3 个关键问题;说明影响,并继续完成不依赖答案的部分。一般命名、排版和可逆实现细节按现有约定决定,不逐项等待确认。 ### 资料仍不足时的交付 - 无工程时交付接口与字段字典、有效请求和边界请求的契约模板,未定义的业务结果明确标注。 - 只有接口样例时完成字段一致性与兼容风险审查,列出需要从实现确认的转换和权限点。 ## 执行要求 适用范围:常规Java后端的HTTP或RPC接口;先核对JDK与框架版本,不将传统JavaBean约定直接套用于record或特殊序列化模型。 让接口说明覆盖输入、返回及异常,使用能准确表达含义的名称。 检查步骤: 1. 从业务需求列出操作对象、发起角色、前置条件、成功状态和失败状态,逐项对应到接口;不能用接口返回成功替代业务实际完成,异步任务要明确状态查询入口。 2. 建立请求与响应字段字典,逐个核对名称、类型、长度、单位、必填条件、空值含义、枚举和脱敏要求;遇到金额、时区、状态码等缺少定义时指出具体缺口。 3. 追踪DTO到业务方法再到响应对象的转换,检查重命名、漏传、默认值和字段覆盖;对布尔属性核对实际序列化结果,并用现有客户端样例验证兼容性。 4. 检查路径、查询参数与请求体是否承担清晰职责,列出重复提交、分页、排序、越权对象访问等边界;只在项目确有多租户时核对租户字段的可信来源。 5. 补齐接口注释需要表达的业务规则,给出一组有效请求和至少三组边界请求,响应需包含可处理的业务信息;不要向用户暴露堆栈或内部连接信息。 6. 将需求、接口、字段和验收用例逐条关联,区分新增接口与兼容改动;评估旧客户端在字段缺失、增加或枚举扩展时的行为,并给出分阶段联调顺序。 ## 交付与验收 输出要求:依次给出接口清单、字段字典、问题表、最小修改示例和联调用例。问题表使用“位置|触发条件|实际影响|修正建议|验证方式”,用例写明请求、期望业务状态及期望响应。 只报告有证据支持的问题;区分“已验证”“推测”和“待验证”,涉及变更时给出受影响文件或对象、最小修改和复核方法。代码与操作示例使用占位符,不写入真实密码。 ### 本条完成检查 - 需求、接口、字段和用例能够对应,问题具有位置、触发条件、影响和验证方式。 - 检查实际序列化、字段覆盖与越权写入,说明新增和兼容改动的区别。 - 至少给有效请求及三类边界请求,分别标明预期业务状态与响应,未验证行为不写通过。 按本条要求组织结果,使用简洁中文和一致的编号、术语、缩进及空行;已有项目格式优先。只说明实际完成的内容,将采用的假设、未完成项和缺少的条件写在相关位置,不额外生成无关文档。未执行、无法复现或缺少证据的检查如实标注,不宣称已通过或已有性能收益。 ## 参考资料与适用边界 来源(核验日期:2026-09-08): [阿里巴巴《P3C-PMD 官方公开规则》](https://github.com/alibaba/p3c/blob/master/p3c-pmd/README.md) 整理范围:仅依据上述公开文档的相关建议,业务场景、变量、检查流程与验收格式均为独立改写,不代表相关企业完整内部规范。