diff --git a/.gitignore b/.gitignore index 655a2f1..a56862b 100644 --- a/.gitignore +++ b/.gitignore @@ -31,7 +31,7 @@ Thumbs.db *.key *.log bin/ -/cmd/kratos-admin/kratos-admin +/bin/kratos-admin # Develop tools .vscode/ @@ -41,4 +41,4 @@ bin/ web/dist/ web/node_modules/ -.pnpm-store/ \ No newline at end of file +.pnpm-store/ diff --git a/Makefile b/Makefile index 8006087..a1404f5 100644 --- a/Makefile +++ b/Makefile @@ -21,7 +21,7 @@ api: .PHONY: build # build build: - mkdir -p bin/ && go build -ldflags "-X main.Version=$(VERSION)" -o ./bin/ ./... + mkdir -p bin/ && go build -ldflags "-X main.Version=$(VERSION)" -o ./bin/kratos-admin ./cmd .PHONY: generate # generate diff --git a/README.md b/README.md index cbd1908..b4e6f8e 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Kra 是基于 Kratos 生命周期与 Wire 依赖注入、使用 Gin 提供管理 ## 目录 ```text -cmd/kratos-admin/ 服务入口与 Wire +cmd/ 服务入口与 Wire configs/ 运行配置 internal/biz/ 领域对象、用例和仓储接口 internal/data/ 数据库、缓存、对象存储及仓储实现 @@ -20,7 +20,7 @@ web/ Vue 管理端 先修改 `configs/config.yaml`。首次启动时,如果目标数据库不可用,服务会保留初始化接口;在管理端初始化页面完成建库、建表和种子数据写入后即可登录。 ```shell -go run ./cmd/kratos-admin -conf ./configs +go run ./cmd -conf ./configs ``` 默认 HTTP 地址为 `http://127.0.0.1:8000`。生产环境必须替换 JWT 签名密钥和数据库凭据。 @@ -48,7 +48,7 @@ make config 修改 Wire Provider 或构造函数后执行: ```shell -go generate ./cmd/kratos-admin +go generate ./cmd ``` ## 检查 diff --git a/docs/ADMIN_BACKEND.md b/docs/ADMIN_BACKEND.md index 0b7531f..4f18ae4 100644 --- a/docs/ADMIN_BACKEND.md +++ b/docs/ADMIN_BACKEND.md @@ -40,7 +40,7 @@ Kra 管理后台由 Kratos 应用承载生命周期,Gin 提供兼容管理端 ## 验证 ```bash -go generate ./cmd/kratos-admin +go generate ./cmd go test ./... go vet ./... go build ./... diff --git a/docs/system-pkg-audit.md b/docs/system-pkg-audit.md index dc1dc5d..4c5edf8 100644 --- a/docs/system-pkg-audit.md +++ b/docs/system-pkg-audit.md @@ -1,4 +1,4 @@ -# `app/system` 到 `pkg` 复用性审查 +# `` 到 `pkg` 复用性审查 审查原则:公共包只提供跨模块稳定的机制、协议或无状态纯函数;不能依赖 `app/*/internal`,也不承载 system 的业务表、用例、provider 客户端或运行时 diff --git a/docs/system-structure-audit.md b/docs/system-structure-audit.md index 94cf7eb..4063709 100644 --- a/docs/system-structure-audit.md +++ b/docs/system-structure-audit.md @@ -1,4 +1,4 @@ -# `app/system/internal` 目录结构优化结论 +# `internal` 目录结构优化结论 参考 Go Kratos 的分层方式,顶层保留 `app`、`biz`、`conf`、`data`、 `initialize`、`integration`、`security`、`server`、`service`、`worker` 十个 diff --git a/pkg/README.md b/pkg/README.md index c77dd28..cfe7472 100644 --- a/pkg/README.md +++ b/pkg/README.md @@ -13,4 +13,4 @@ - `protoutil`:与业务无关的 protobuf JSON 局部合并工具 `pkg` 只能提供机制和稳定协议,不能引用任何 `app/*/internal`。数据库配置加载、 -系统集成配置、系统表和 provider 生命周期仍由 `app/system` 负责。 +系统集成配置、系统表和 provider 生命周期仍由 `` 负责。 diff --git a/pkg/logging/zap_test.go b/pkg/logging/zap_test.go index 7827c6a..63c5a7f 100644 --- a/pkg/logging/zap_test.go +++ b/pkg/logging/zap_test.go @@ -89,7 +89,7 @@ func TestErrorEntryIncludesFinalApplicationSource(t *testing.T) { if err := os.WriteFile(filename, []byte(content), 0o600); err != nil { t.Fatal(err) } - entry := errorEntryFromZap(zapcore.Entry{Message: "task failed", Level: zapcore.ErrorLevel, Stack: "kra/app/system/internal/worker.execute\n" + filename + ":4"}, nil) + entry := errorEntryFromZap(zapcore.Entry{Message: "task failed", Level: zapcore.ErrorLevel, Stack: "kra/internal/worker.execute\n" + filename + ":4"}, nil) if !strings.Contains(entry.Info, "最终调用方法:"+filename+":4 (execute lines 3-5)") || !strings.Contains(entry.Info, "func execute()") { t.Fatalf("expected final caller source in error entry: %s", entry.Info) } @@ -103,12 +103,12 @@ func TestSkipStackFileRecognizesServerTransportPackages(t *testing.T) { }{ {name: "handler", path: `D:\workspace\app\system\internal\server\handler\user.go`, want: true}, {name: "middleware", path: `D:\workspace\app\system\internal\server\middleware\auth.go`, want: true}, - {name: "router", path: `/workspace/app/system/internal/server/router/user.go`, want: true}, - {name: "http helper", path: `/workspace/app/system/internal/server/httpx/response.go`, want: true}, + {name: "router", path: `/workspace/internal/server/router/user.go`, want: true}, + {name: "http helper", path: `/workspace/internal/server/httpx/response.go`, want: true}, {name: "legacy flattened middleware", path: `D:\workspace\app\system\internal\server\middleware_auth.go`, want: true}, - {name: "legacy flattened route", path: `/workspace/app/system/internal/server/route_user.go`, want: true}, - {name: "handler remains application boundary", path: `/workspace/app/system/internal/server/handler_user.go`, want: false}, - {name: "legacy middleware", path: `/workspace/app/system/internal/transport/middleware/auth.go`, want: true}, + {name: "legacy flattened route", path: `/workspace/internal/server/route_user.go`, want: true}, + {name: "handler remains application boundary", path: `/workspace/internal/server/handler_user.go`, want: false}, + {name: "legacy middleware", path: `/workspace/internal/transport/middleware/auth.go`, want: true}, } for _, test := range tests { t.Run(test.name, func(t *testing.T) { diff --git a/pkg/paymentkit/README.md b/pkg/paymentkit/README.md index 130aa2c..8459592 100644 --- a/pkg/paymentkit/README.md +++ b/pkg/paymentkit/README.md @@ -2,4 +2,4 @@ Stateless payment protocol helpers live here: amount conversion, status normalization, JSON/XML extraction, and request signing. Provider adapters and -their SDK clients remain under `app/system/internal/integration/payment`. +their SDK clients remain under `internal/integration/payment`.