@goplusvn/core 0.1.50 → 0.1.52
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/features/README.md +6 -2
- package/features/error-logs/migrations/0001_init.sql +32 -0
- package/features/error-logs/schema.prisma +28 -0
- package/package.json +4 -1
- package/src/system/pages/error-logs-page.tsx +652 -0
- package/src/tasks/__tests__/task-runner.test.ts +213 -0
- package/src/tasks/index.ts +19 -0
- package/src/tasks/task-runner.ts +307 -0
- package/src/tasks/ui/task-list-client.tsx +128 -0
package/features/README.md
CHANGED
|
@@ -29,5 +29,9 @@ GENERATED — đừng sửa tay) và tạo thư mục migration
|
|
|
29
29
|
## Feature hiện có
|
|
30
30
|
|
|
31
31
|
- `background-tasks` — bảng `background_tasks` cho trung tâm tác vụ nền
|
|
32
|
-
(export/import chạy nền). Runtime
|
|
33
|
-
|
|
32
|
+
(export/import chạy nền). Runtime: `@goerp/core/tasks`
|
|
33
|
+
(`configureTaskRunner`) + UI `@goerp/core/tasks/ui`.
|
|
34
|
+
- `error-logs` — bảng `error_logs` cho hệ ghi lỗi server
|
|
35
|
+
(`createErrorLogger`/`buildServerError` ở `errors/server-error`) + trang
|
|
36
|
+
admin `system/pages/error-logs-page` (app cung cấp API, mẫu vinhhoa
|
|
37
|
+
/api/error-logs).
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
-- goerp feature: error-logs — bước 0001 (idempotent). Bảng cho createErrorLogger
|
|
2
|
+
-- (@goerp/core/errors/server-error) + trang admin ErrorLogsPage.
|
|
3
|
+
-- gen_random_uuid() là hàm sẵn của PostgreSQL 13+.
|
|
4
|
+
CREATE TABLE IF NOT EXISTS "error_logs" (
|
|
5
|
+
"id" TEXT NOT NULL DEFAULT gen_random_uuid(),
|
|
6
|
+
"error_id" TEXT NOT NULL,
|
|
7
|
+
"fingerprint" TEXT,
|
|
8
|
+
"code" TEXT,
|
|
9
|
+
"message" TEXT NOT NULL,
|
|
10
|
+
"detail" TEXT,
|
|
11
|
+
"context" TEXT,
|
|
12
|
+
"module" TEXT,
|
|
13
|
+
"user_id" TEXT,
|
|
14
|
+
"url" TEXT,
|
|
15
|
+
"user_agent" TEXT,
|
|
16
|
+
"severity" TEXT NOT NULL DEFAULT 'error',
|
|
17
|
+
"resolved" BOOLEAN NOT NULL DEFAULT false,
|
|
18
|
+
"occurrence_count" INTEGER NOT NULL DEFAULT 1,
|
|
19
|
+
"last_seen_at" TIMESTAMPTZ(6) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
20
|
+
"created_at" TIMESTAMPTZ(6) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
21
|
+
|
|
22
|
+
CONSTRAINT "error_logs_pkey" PRIMARY KEY ("id")
|
|
23
|
+
);
|
|
24
|
+
|
|
25
|
+
CREATE INDEX IF NOT EXISTS "idx_error_logs_code" ON "error_logs"("code");
|
|
26
|
+
CREATE INDEX IF NOT EXISTS "idx_error_logs_created_at" ON "error_logs"("created_at");
|
|
27
|
+
CREATE INDEX IF NOT EXISTS "idx_error_logs_error_id" ON "error_logs"("error_id");
|
|
28
|
+
CREATE INDEX IF NOT EXISTS "idx_error_logs_fingerprint" ON "error_logs"("fingerprint");
|
|
29
|
+
CREATE INDEX IF NOT EXISTS "idx_error_logs_module" ON "error_logs"("module");
|
|
30
|
+
CREATE INDEX IF NOT EXISTS "idx_error_logs_resolved" ON "error_logs"("resolved");
|
|
31
|
+
CREATE INDEX IF NOT EXISTS "idx_error_logs_severity" ON "error_logs"("severity");
|
|
32
|
+
CREATE INDEX IF NOT EXISTS "idx_error_logs_user_id" ON "error_logs"("user_id");
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
model ErrorLog {
|
|
2
|
+
id String @id @default(dbgenerated("gen_random_uuid()")) @map("id")
|
|
3
|
+
errorId String @map("error_id")
|
|
4
|
+
fingerprint String? @map("fingerprint")
|
|
5
|
+
code String? @map("code")
|
|
6
|
+
message String @map("message")
|
|
7
|
+
detail String? @map("detail")
|
|
8
|
+
context String? @map("context")
|
|
9
|
+
module String? @map("module")
|
|
10
|
+
userId String? @map("user_id")
|
|
11
|
+
url String? @map("url")
|
|
12
|
+
userAgent String? @map("user_agent")
|
|
13
|
+
severity String @default("error") @map("severity")
|
|
14
|
+
resolved Boolean @default(false) @map("resolved")
|
|
15
|
+
occurrenceCount Int @default(1) @map("occurrence_count")
|
|
16
|
+
lastSeenAt DateTime @default(now()) @map("last_seen_at") @db.Timestamptz(6)
|
|
17
|
+
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz(6)
|
|
18
|
+
|
|
19
|
+
@@index([code], map: "idx_error_logs_code")
|
|
20
|
+
@@index([createdAt], map: "idx_error_logs_created_at")
|
|
21
|
+
@@index([errorId], map: "idx_error_logs_error_id")
|
|
22
|
+
@@index([fingerprint], map: "idx_error_logs_fingerprint")
|
|
23
|
+
@@index([module], map: "idx_error_logs_module")
|
|
24
|
+
@@index([resolved], map: "idx_error_logs_resolved")
|
|
25
|
+
@@index([severity], map: "idx_error_logs_severity")
|
|
26
|
+
@@index([userId], map: "idx_error_logs_user_id")
|
|
27
|
+
@@map("error_logs")
|
|
28
|
+
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@goplusvn/core",
|
|
3
3
|
"description": "GoPlusVN Platform Kit - ERP kernel: layout, RBAC, CRUD, multi-tenant, system pages",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.52",
|
|
5
5
|
"private": false,
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"registry": "https://registry.npmjs.org",
|
|
@@ -43,6 +43,8 @@
|
|
|
43
43
|
"./assets/*": "./src/assets/*",
|
|
44
44
|
"./styles/*": "./src/styles/*",
|
|
45
45
|
"./auth/api-handler": "./src/auth/api-handler.ts",
|
|
46
|
+
"./tasks": "./src/tasks/index.ts",
|
|
47
|
+
"./tasks/ui": "./src/tasks/ui/task-list-client.tsx",
|
|
46
48
|
"./auth/proxy-gate": "./src/auth/proxy-gate.ts",
|
|
47
49
|
"./rbac/route-handlers": "./src/rbac/route-handlers.ts",
|
|
48
50
|
"./rbac/permissions-version": "./src/rbac/permissions-version.ts",
|
|
@@ -75,6 +77,7 @@
|
|
|
75
77
|
"./system/services/system-category-service": "./src/system/services/system-category-service.ts",
|
|
76
78
|
"./system/pages/system-settings-page": "./src/system/pages/system-settings-page.tsx",
|
|
77
79
|
"./system/pages/system-category-page": "./src/system/pages/system-category-page.tsx",
|
|
80
|
+
"./system/pages/error-logs-page": "./src/system/pages/error-logs-page.tsx",
|
|
78
81
|
"./rbac/role-service": "./src/rbac/role-service.ts",
|
|
79
82
|
"./rbac/resource-service": "./src/rbac/resource-service.ts",
|
|
80
83
|
"./infrastructure/cron/cron-manager": "./src/infrastructure/cron/cron-manager.ts",
|