90 lines
3.4 KiB
JSON
90 lines
3.4 KiB
JSON
{
|
||
"patterns": {
|
||
"pat-2026-03-20-001": {
|
||
"name": "多模块Maven项目构建",
|
||
"confidence": 0.95,
|
||
"applications": 1,
|
||
"created": "2026-03-20",
|
||
"category": "workflow",
|
||
"pattern": "子模块修改后必须执行 mvn install",
|
||
"problem": "修改子模块代码后启动类不加载新代码",
|
||
"solution": "执行 mvn install -pl {module} -am -DskipTests",
|
||
"quality_rules": [
|
||
"修改子模块后重新构建",
|
||
"启动前确认模块已安装"
|
||
]
|
||
},
|
||
"pat-2026-03-20-002": {
|
||
"name": "Spring Security自动配置冲突",
|
||
"confidence": 0.95,
|
||
"applications": 1,
|
||
"created": "2026-03-20",
|
||
"category": "backend",
|
||
"pattern": "前后端分离项目需排除Security自动配置",
|
||
"problem": "自定义SecurityConfig不生效,被默认配置覆盖",
|
||
"solution": "在application.yml排除SecurityFilterAutoConfiguration",
|
||
"quality_rules": [
|
||
"前后端分离项目禁用CSRF",
|
||
"使用JWT认证"
|
||
]
|
||
},
|
||
"pat-2026-03-20-003": {
|
||
"name": "前端登录状态判断",
|
||
"confidence": 0.95,
|
||
"applications": 1,
|
||
"created": "2026-03-20",
|
||
"category": "frontend",
|
||
"pattern": "路由守卫需同时检查localStorage和store",
|
||
"problem": "token存储在localStorage但store初始化时为空",
|
||
"solution": "isLoggedIn()优先读取localStorage",
|
||
"quality_rules": [
|
||
"登录状态判断检查localStorage",
|
||
"Pinia store初始化时机可能晚于路由守卫"
|
||
]
|
||
},
|
||
"pat-2026-03-20-004": {
|
||
"name": "调试代码清理",
|
||
"confidence": 0.95,
|
||
"applications": 1,
|
||
"created": "2026-03-20",
|
||
"category": "code_style",
|
||
"pattern": "上线前移除所有调试代码和日志",
|
||
"problem": "生产环境日志过多或泄露调试信息",
|
||
"solution": "移除console.log,敏感日志改为debug级别",
|
||
"quality_rules": [
|
||
"上线前清理console.log",
|
||
"生产日志使用debug级别"
|
||
]
|
||
},
|
||
"pat-2026-03-20-005": {
|
||
"name": "测试账号密码管理",
|
||
"confidence": 0.95,
|
||
"applications": 1,
|
||
"created": "2026-03-20",
|
||
"category": "workflow",
|
||
"pattern": "密码使用BCrypt格式并同步到文档",
|
||
"problem": "测试账号密码修改后忘记更新文档",
|
||
"solution": "使用BCryptPasswordEncoder生成,同步到test-users.sql",
|
||
"quality_rules": [
|
||
"密码必须BCrypt加密",
|
||
"修改密码后更新文档"
|
||
]
|
||
},
|
||
"pat-2026-03-21-006": {
|
||
"name": "Spring Security 6 JWT认证实现",
|
||
"confidence": 0.95,
|
||
"applications": 1,
|
||
"created": "2026-03-21",
|
||
"category": "backend",
|
||
"pattern": "Spring Security 6的SessionCreationPolicy.STATELESS模式与JWT认证的冲突",
|
||
"problem": "使用STATELESS时SecurityContextHolderFilter会清空SecurityContext,导致JWT认证被覆盖返回403",
|
||
"solution": "使用SessionCreationPolicy.IF_REQUIRED + HttpSessionSecurityContextRepository,JWT Filter放在AuthorizationFilter之前",
|
||
"quality_rules": [
|
||
"Spring Security 6 JWT认证不要使用STATELESS模式",
|
||
"JWT Filter必须放在AuthorizationFilter之前",
|
||
"使用HttpSessionSecurityContextRepository保存认证上下文",
|
||
"从JWT claims中解析用户角色而非硬编码"
|
||
]
|
||
}
|
||
}
|
||
} |