Commit Graph
3 Commits
Author SHA1 Message Date
Guangfei.ZhaoandClaude Code aca7487be2 feat: Kotlin 语法约束——只当语法糖用,不当新范式用
新增 docs/13-kotlin-style.md,并把它落成可执行的构建门禁,而不是一份只能靠
自觉遵守的建议。两条准入标准:只当语法糖(不引入新的思维模型)、每条规则必须
说得出它挡住的具体故障。

- KotlinSyntaxScanTest(源码扫描):禁 !! / lateinit / suspend / kotlinx.coroutines
  / RxJava / Reactor / data class Entity。走源码文本而非 ArchUnit,是因为这些在
  字节码上看不出来——!! 编译成 Intrinsics.checkNotNull(...) 调用,和其他 null
  检查混在一起。
- ArchitectureRulesTest 加「禁止工具类」:只禁 Utils/Util/Helper/Common 四个
  后缀,不禁 XxxManager——Spring 自身大量使用这个命名,一刀切会误伤。
- PersistedEntity + requiredId:把「从 repository 读出来的实体必有 id」变成
  一个有名字的类型,替掉 AuthAppService / LocalSeedDataConfig 里 7 处 .id!!。
- 5 个 Entity 实现 PersistedEntity。

两条故意不自动强制的写进了文档:companion object 靠 review 判断(现存 14 处
用法均合法,硬规则只会误伤);Entity 可被 Hibernate 代理目前没守住——未 apply
kotlin("plugin.jpa"),Entity 是 final 类,fetch = LAZY 会静默降级为 eager,现
因为零懒加载关联而未暴露。

docs/01-project-structure.md 顺带补了 Gradle 版本行的双向约束说明;README 修正
了 12 篇→13 篇文档、10 条→11 条规则,并补上工具类禁名。

验证:./gradlew build -PexcludeIntegration 通过。ArchitectureRulesTest 11 项、
KotlinSyntaxScanTest、NativeQueryScanTest 全绿;两条新规则均以「植入一个故意
违规、确认它变红」的方式验证过不是空转。

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-30 16:01:22 +08:00
Guangfei.ZhaoandClaude Code 54f3b35245 build: 钉 Gradle 9.5.0,Maven 依赖走阿里云镜像
- wrapper 9.5.1 → 9.5.0:Boot 4.1 插件要求 8.14+ 或 9.x,而 KGP 2.4.10 的完全
  支持上限是 9.5.0,9.5.1 已在 KGP 支持区间之外。
- settings.gradle 加 pluginManagement:插件走 Gradle Plugin Portal,不经过
  Maven Central,只配根 build.gradle 的 repositories 覆盖不到插件那一半。
- 两处均保留官方源兜底,镜像在前、官方源在后,镜像缺失时自动回落。
- 不加 google():那是 Android 构件的仓,后端项目用不到。
- 实测构件可下载,全项目 Gradle 弃用警告归零(url 用 `=` 赋值,非空格赋值)。

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-30 16:01:05 +08:00
Guangfei.Zhao 84fc2c0677 backend scaffold 2026-08-17 15:31:27 +08:00