---
name: architecture-redline
when: '架构设计, 系统架构, 模块划分, 服务边界, 架构红线, 跨模块调用, 服务拆分'
scope:
  - backend
products:
  - '*'
id: ka-pattern-architecture-redline
asset_kind: pattern
lifecycle_status: active
authority: supporting
routes:
  - '*'
primary_triggers:
  - 架构设计
  - 系统架构
  - 模块划分
  - 服务边界
  - 架构红线
  - 跨模块调用
  - 服务拆分
priority: P2
specificity: 3
version: 1.0.0
last_reviewed: '2026-05-22'
consumes: []
emits: []
secondary_triggers: []
negative_triggers: []
type: pattern
status: active
---

## 决策规则
- 禁止绕过统一认证和数据范围控制直接暴露业务接口
- 禁止通过 Patch JAR、docker commit 或运行时文件替换交付代码
- 禁止前端、Controller 或定时任务跨服务边界直接访问持久化实现
- 禁止将事务、认证、金额、库存、安全策略或数据库 Schema 变更打包为"小修改"而无设计追溯
- 禁止菜单可见性与接口可调用性解耦（菜单隐藏但接口暴露，或菜单存在但无权限支撑）
- 禁止异步消息、定时任务或补偿逻辑绕过主路径审计和幂等控制
- 所有新增写操作必须有可追溯的审计记录
- 禁止在循环内执行数据库操作（N+1），必须使用批量查询
- 禁止在事务内执行远程调用（HTTP/RPC），防止长事务锁表
- 禁止 catch 后空处理，至少记录日志并标注忽略原因
- 禁止直接使用 new Date() 获取时间，必须通过时钟服务注入便于测试
- 禁止在 Service 层注入 HttpServletRequest/Response，保持层级清晰

## 验收项
- [AC-01] 业务接口经过统一认证
- [AC-02] 无跨边界直接持久化访问
- [AC-03] 菜单与接口权限同步定义
- [AC-04] 写操作有审计记录
- [AC-05] 无循环内数据库调用
- [AC-06] 无事务内远程调用
- [AC-07] 无空 catch 块
