@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.
@@ -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 hiện ở app (vinhhoa `src/server/tasks`);
33
- sẽ dời lên core ở đợt F1.
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.50",
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",