sa2kit 1.6.52 → 1.6.58
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/dist/AliyunOSSProvider-KSYW2IOG.js +15 -0
- package/dist/{AliyunOSSProvider-2FARPAQD.js.map → AliyunOSSProvider-KSYW2IOG.js.map} +1 -1
- package/dist/AliyunOSSProvider-TBK3G7YK.mjs +6 -0
- package/dist/{AliyunOSSProvider-UMVGVBDJ.mjs.map → AliyunOSSProvider-TBK3G7YK.mjs.map} +1 -1
- package/dist/LocalStorageProvider-2DGYRQAB.mjs +6 -0
- package/dist/{LocalStorageProvider-PYOHETJV.mjs.map → LocalStorageProvider-2DGYRQAB.mjs.map} +1 -1
- package/dist/LocalStorageProvider-SSRW3ZJW.js +15 -0
- package/dist/{LocalStorageProvider-JQF5WK5H.js.map → LocalStorageProvider-SSRW3ZJW.js.map} +1 -1
- package/dist/UniversalFileService-336GFY6N.mjs +6 -0
- package/dist/{UniversalFileService-TNYKO6JN.mjs.map → UniversalFileService-336GFY6N.mjs.map} +1 -1
- package/dist/UniversalFileService-J6ET6KZK.js +15 -0
- package/dist/{UniversalFileService-RBV6EN5J.js.map → UniversalFileService-J6ET6KZK.js.map} +1 -1
- package/dist/booking-BXtkG2ns.d.mts +386 -0
- package/dist/booking-BXtkG2ns.d.ts +386 -0
- package/dist/bookingAdminService-B2QDjSHJ.d.ts +193 -0
- package/dist/bookingAdminService-Dmg7dC6V.d.mts +193 -0
- package/dist/calendar/index.js +11 -11
- package/dist/calendar/index.mjs +4 -4
- package/dist/cart-CcZ7rQyG.d.mts +176 -0
- package/dist/cart-D3o67Q3H.d.ts +176 -0
- package/dist/chunk-25OFOKNF.js +171 -0
- package/dist/chunk-25OFOKNF.js.map +1 -0
- package/dist/chunk-3DXPQ4YV.mjs +165 -0
- package/dist/chunk-3DXPQ4YV.mjs.map +1 -0
- package/dist/{chunk-4VJQZSPU.mjs → chunk-3NHAT7D4.mjs} +3 -4
- package/dist/chunk-3NHAT7D4.mjs.map +1 -0
- package/dist/{chunk-3JW4X3AC.mjs → chunk-622Y6LTH.mjs} +3 -3
- package/dist/{chunk-3JW4X3AC.mjs.map → chunk-622Y6LTH.mjs.map} +1 -1
- package/dist/chunk-ANKVXRPY.mjs +30 -0
- package/dist/chunk-ANKVXRPY.mjs.map +1 -0
- package/dist/chunk-CIVO4R6N.mjs +37 -0
- package/dist/chunk-CIVO4R6N.mjs.map +1 -0
- package/dist/{chunk-IZOIVYOW.js → chunk-DENROXAE.js} +2 -2
- package/dist/{chunk-IZOIVYOW.js.map → chunk-DENROXAE.js.map} +1 -1
- package/dist/{chunk-6BJ76BYC.mjs → chunk-EGJPS7OL.mjs} +3 -3
- package/dist/{chunk-6BJ76BYC.mjs.map → chunk-EGJPS7OL.mjs.map} +1 -1
- package/dist/chunk-EKIOJEJK.js +2719 -0
- package/dist/chunk-EKIOJEJK.js.map +1 -0
- package/dist/chunk-EOWTOG7Y.js +119 -0
- package/dist/chunk-EOWTOG7Y.js.map +1 -0
- package/dist/chunk-HDMIOOZY.mjs +546 -0
- package/dist/chunk-HDMIOOZY.mjs.map +1 -0
- package/dist/{chunk-MZKATHB7.js → chunk-HHVDOIPV.js} +4 -4
- package/dist/{chunk-MZKATHB7.js.map → chunk-HHVDOIPV.js.map} +1 -1
- package/dist/chunk-HJ6MH7J7.js +552 -0
- package/dist/chunk-HJ6MH7J7.js.map +1 -0
- package/dist/chunk-KH6RQ4J5.js +28 -0
- package/dist/chunk-KH6RQ4J5.js.map +1 -0
- package/dist/{chunk-GFVAIT6Y.mjs → chunk-MFG2Y6UR.mjs} +2 -2
- package/dist/{chunk-GFVAIT6Y.mjs.map → chunk-MFG2Y6UR.mjs.map} +1 -1
- package/dist/{chunk-35CXIK5Y.js → chunk-NCOXT7SK.js} +11 -11
- package/dist/{chunk-35CXIK5Y.js.map → chunk-NCOXT7SK.js.map} +1 -1
- package/dist/chunk-NZZZUMMX.mjs +784 -0
- package/dist/chunk-NZZZUMMX.mjs.map +1 -0
- package/dist/{chunk-OBIPI4GU.mjs → chunk-OFYBMMWT.mjs} +4 -4
- package/dist/{chunk-OBIPI4GU.mjs.map → chunk-OFYBMMWT.mjs.map} +1 -1
- package/dist/chunk-PVLLRDUT.js +6944 -0
- package/dist/chunk-PVLLRDUT.js.map +1 -0
- package/dist/chunk-Q5EDCKQA.js +336 -0
- package/dist/chunk-Q5EDCKQA.js.map +1 -0
- package/dist/{chunk-SHY424RZ.mjs → chunk-SNBILYSH.mjs} +6 -6
- package/dist/{chunk-SHY424RZ.mjs.map → chunk-SNBILYSH.mjs.map} +1 -1
- package/dist/chunk-TJZDPOO7.js +34 -0
- package/dist/chunk-TJZDPOO7.js.map +1 -0
- package/dist/{chunk-7JN25DJB.js → chunk-UVHPCLP6.js} +14 -14
- package/dist/{chunk-7JN25DJB.js.map → chunk-UVHPCLP6.js.map} +1 -1
- package/dist/chunk-WGD2NBVR.mjs +6904 -0
- package/dist/chunk-WGD2NBVR.mjs.map +1 -0
- package/dist/chunk-WS3QZYBI.mjs +2701 -0
- package/dist/chunk-WS3QZYBI.mjs.map +1 -0
- package/dist/chunk-XLR6QUDR.mjs +113 -0
- package/dist/chunk-XLR6QUDR.mjs.map +1 -0
- package/dist/chunk-YMS6BPXS.js +807 -0
- package/dist/chunk-YMS6BPXS.js.map +1 -0
- package/dist/chunk-YOTQG4NP.mjs +314 -0
- package/dist/chunk-YOTQG4NP.mjs.map +1 -0
- package/dist/chunk-ZGVB35L2.mjs +25 -0
- package/dist/chunk-ZGVB35L2.mjs.map +1 -0
- package/dist/chunk-ZRAW3HXA.js +43 -0
- package/dist/chunk-ZRAW3HXA.js.map +1 -0
- package/dist/{chunk-4XXIBWCO.js → chunk-ZRWED7Q6.js} +66 -66
- package/dist/{chunk-4XXIBWCO.js.map → chunk-ZRWED7Q6.js.map} +1 -1
- package/dist/{chunk-DVENFCQY.js → chunk-ZWQJSZEY.js} +4 -5
- package/dist/chunk-ZWQJSZEY.js.map +1 -0
- package/dist/components/index.js +104 -104
- package/dist/components/index.mjs +4 -4
- package/dist/index.js +146 -148
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +8 -11
- package/dist/index.mjs.map +1 -1
- package/dist/logger/index.js +7 -7
- package/dist/logger/index.mjs +1 -4
- package/dist/mikuFusionGame/index.js +4 -4
- package/dist/mikuFusionGame/index.mjs +3 -3
- package/dist/portfolio/index.js +10 -10
- package/dist/portfolio/index.mjs +5 -5
- package/dist/showmasterpiece/db/index.d.mts +3028 -0
- package/dist/showmasterpiece/db/index.d.ts +3028 -0
- package/dist/showmasterpiece/db/index.js +179 -0
- package/dist/showmasterpiece/db/index.js.map +1 -0
- package/dist/showmasterpiece/db/index.mjs +6 -0
- package/dist/showmasterpiece/db/index.mjs.map +1 -0
- package/dist/showmasterpiece/index.d.mts +10 -1729
- package/dist/showmasterpiece/index.d.ts +10 -1729
- package/dist/showmasterpiece/index.js +439 -9659
- package/dist/showmasterpiece/index.js.map +1 -1
- package/dist/showmasterpiece/index.mjs +12 -9633
- package/dist/showmasterpiece/index.mjs.map +1 -1
- package/dist/showmasterpiece/logic/index.d.mts +372 -0
- package/dist/showmasterpiece/logic/index.d.ts +372 -0
- package/dist/showmasterpiece/logic/index.js +91 -0
- package/dist/showmasterpiece/logic/index.js.map +1 -0
- package/dist/showmasterpiece/logic/index.mjs +6 -0
- package/dist/showmasterpiece/logic/index.mjs.map +1 -0
- package/dist/showmasterpiece/server/index.d.mts +3 -2704
- package/dist/showmasterpiece/server/index.d.ts +3 -2704
- package/dist/showmasterpiece/server/index.js +43 -43
- package/dist/showmasterpiece/server/index.mjs +2 -2
- package/dist/showmasterpiece/ui/miniapp/index.d.mts +86 -0
- package/dist/showmasterpiece/ui/miniapp/index.d.ts +86 -0
- package/dist/showmasterpiece/ui/miniapp/index.js +196 -0
- package/dist/showmasterpiece/ui/miniapp/index.js.map +1 -0
- package/dist/showmasterpiece/ui/miniapp/index.mjs +183 -0
- package/dist/showmasterpiece/ui/miniapp/index.mjs.map +1 -0
- package/dist/showmasterpiece/ui/web/index.d.mts +600 -0
- package/dist/showmasterpiece/ui/web/index.d.ts +600 -0
- package/dist/showmasterpiece/ui/web/index.js +131 -0
- package/dist/showmasterpiece/ui/web/index.js.map +1 -0
- package/dist/showmasterpiece/ui/web/index.mjs +14 -0
- package/dist/showmasterpiece/ui/web/index.mjs.map +1 -0
- package/dist/universalExport/server/index.js +2 -4
- package/dist/universalExport/server/index.js.map +1 -1
- package/dist/universalExport/server/index.mjs +1 -3
- package/dist/universalExport/server/index.mjs.map +1 -1
- package/dist/universalFile/index.js +6 -9
- package/dist/universalFile/index.js.map +1 -1
- package/dist/universalFile/index.mjs +1 -5
- package/dist/universalFile/index.mjs.map +1 -1
- package/dist/universalFile/server/index.js +5852 -291
- package/dist/universalFile/server/index.js.map +1 -1
- package/dist/universalFile/server/index.mjs +5764 -8
- package/dist/universalFile/server/index.mjs.map +1 -1
- package/dist/utils/index.js +11 -11
- package/dist/utils/index.mjs +2 -2
- package/package.json +26 -1
- package/dist/AliyunOSSProvider-2FARPAQD.js +0 -15
- package/dist/AliyunOSSProvider-UMVGVBDJ.mjs +0 -9
- package/dist/LocalStorageProvider-JQF5WK5H.js +0 -15
- package/dist/LocalStorageProvider-PYOHETJV.mjs +0 -9
- package/dist/UniversalFileService-RBV6EN5J.js +0 -15
- package/dist/UniversalFileService-TNYKO6JN.mjs +0 -9
- package/dist/chunk-4NFOSCM6.js +0 -34
- package/dist/chunk-4NFOSCM6.js.map +0 -1
- package/dist/chunk-4VJQZSPU.mjs.map +0 -1
- package/dist/chunk-6AHYPPUP.js +0 -344
- package/dist/chunk-6AHYPPUP.js.map +0 -1
- package/dist/chunk-76V7EKBX.mjs +0 -796
- package/dist/chunk-76V7EKBX.mjs.map +0 -1
- package/dist/chunk-ACLOJXXE.js +0 -195
- package/dist/chunk-ACLOJXXE.js.map +0 -1
- package/dist/chunk-AEXPAH7Z.mjs +0 -32
- package/dist/chunk-AEXPAH7Z.mjs.map +0 -1
- package/dist/chunk-CFGX3EKK.js +0 -560
- package/dist/chunk-CFGX3EKK.js.map +0 -1
- package/dist/chunk-D2HXMGXS.js +0 -46
- package/dist/chunk-D2HXMGXS.js.map +0 -1
- package/dist/chunk-DVENFCQY.js.map +0 -1
- package/dist/chunk-K7WNCB4V.mjs +0 -554
- package/dist/chunk-K7WNCB4V.mjs.map +0 -1
- package/dist/chunk-L4ZYBFB2.mjs +0 -44
- package/dist/chunk-L4ZYBFB2.mjs.map +0 -1
- package/dist/chunk-M4HGHTIC.js +0 -820
- package/dist/chunk-M4HGHTIC.js.map +0 -1
- package/dist/chunk-PKKIDPXE.mjs +0 -5797
- package/dist/chunk-PKKIDPXE.mjs.map +0 -1
- package/dist/chunk-PXWDQFWV.mjs +0 -192
- package/dist/chunk-PXWDQFWV.mjs.map +0 -1
- package/dist/chunk-TSTBLX6B.js +0 -5888
- package/dist/chunk-TSTBLX6B.js.map +0 -1
- package/dist/chunk-VTGPHE4Z.mjs +0 -322
- package/dist/chunk-VTGPHE4Z.mjs.map +0 -1
- package/dist/popupConfig-BznThU1O.d.mts +0 -330
- package/dist/popupConfig-BznThU1O.d.ts +0 -330
- package/dist/showmasterpiece/migration/index.d.mts +0 -120
- package/dist/showmasterpiece/migration/index.d.ts +0 -120
- package/dist/showmasterpiece/migration/index.js +0 -595
- package/dist/showmasterpiece/migration/index.js.map +0 -1
- package/dist/showmasterpiece/migration/index.mjs +0 -589
- package/dist/showmasterpiece/migration/index.mjs.map +0 -1
- package/dist/showmasterpiece/scripts/index.d.mts +0 -28
- package/dist/showmasterpiece/scripts/index.d.ts +0 -28
- package/dist/showmasterpiece/scripts/index.js +0 -327
- package/dist/showmasterpiece/scripts/index.js.map +0 -1
- package/dist/showmasterpiece/scripts/index.mjs +0 -325
- package/dist/showmasterpiece/scripts/index.mjs.map +0 -1
|
@@ -1,325 +0,0 @@
|
|
|
1
|
-
import '../../chunk-WMJKH4XE.mjs';
|
|
2
|
-
import { writeFileSync } from 'fs';
|
|
3
|
-
|
|
4
|
-
var CONFIG_MIGRATION_MAP = {
|
|
5
|
-
// OSS 配置
|
|
6
|
-
ALIYUN_OSS_REGION: {
|
|
7
|
-
displayName: "OSS\u533A\u57DF",
|
|
8
|
-
description: "\u963F\u91CC\u4E91OSS\u5B58\u50A8\u533A\u57DF",
|
|
9
|
-
type: "string",
|
|
10
|
-
isRequired: true,
|
|
11
|
-
isSensitive: false,
|
|
12
|
-
category: "oss"
|
|
13
|
-
},
|
|
14
|
-
ALIYUN_OSS_BUCKET: {
|
|
15
|
-
displayName: "OSS\u5B58\u50A8\u6876",
|
|
16
|
-
description: "\u963F\u91CC\u4E91OSS\u5B58\u50A8\u6876\u540D\u79F0",
|
|
17
|
-
type: "string",
|
|
18
|
-
isRequired: true,
|
|
19
|
-
isSensitive: false,
|
|
20
|
-
category: "oss"
|
|
21
|
-
},
|
|
22
|
-
ALIYUN_OSS_ACCESS_KEY_ID: {
|
|
23
|
-
displayName: "AccessKey ID",
|
|
24
|
-
description: "\u963F\u91CC\u4E91AccessKey ID",
|
|
25
|
-
type: "string",
|
|
26
|
-
isRequired: true,
|
|
27
|
-
isSensitive: true,
|
|
28
|
-
category: "oss"
|
|
29
|
-
},
|
|
30
|
-
ALIYUN_OSS_ACCESS_KEY_SECRET: {
|
|
31
|
-
displayName: "AccessKey Secret",
|
|
32
|
-
description: "\u963F\u91CC\u4E91AccessKey Secret",
|
|
33
|
-
type: "password",
|
|
34
|
-
isRequired: true,
|
|
35
|
-
isSensitive: true,
|
|
36
|
-
category: "oss"
|
|
37
|
-
},
|
|
38
|
-
ALIYUN_OSS_CUSTOM_DOMAIN: {
|
|
39
|
-
displayName: "\u81EA\u5B9A\u4E49\u57DF\u540D",
|
|
40
|
-
description: "OSS\u81EA\u5B9A\u4E49\u57DF\u540D\uFF08\u53EF\u9009\uFF09",
|
|
41
|
-
type: "string",
|
|
42
|
-
isRequired: false,
|
|
43
|
-
isSensitive: false,
|
|
44
|
-
category: "oss"
|
|
45
|
-
},
|
|
46
|
-
ALIYUN_OSS_SECURE: {
|
|
47
|
-
displayName: "\u4F7F\u7528HTTPS",
|
|
48
|
-
description: "\u662F\u5426\u4F7F\u7528HTTPS\u8FDE\u63A5",
|
|
49
|
-
type: "boolean",
|
|
50
|
-
isRequired: false,
|
|
51
|
-
isSensitive: false,
|
|
52
|
-
category: "oss"
|
|
53
|
-
},
|
|
54
|
-
ALIYUN_OSS_INTERNAL: {
|
|
55
|
-
displayName: "\u5185\u7F51\u8BBF\u95EE",
|
|
56
|
-
description: "\u662F\u5426\u4F7F\u7528\u5185\u7F51\u8BBF\u95EE",
|
|
57
|
-
type: "boolean",
|
|
58
|
-
isRequired: false,
|
|
59
|
-
isSensitive: false,
|
|
60
|
-
category: "oss"
|
|
61
|
-
},
|
|
62
|
-
// CDN 配置(可选)
|
|
63
|
-
ALIYUN_CDN_DOMAIN: {
|
|
64
|
-
displayName: "CDN\u57DF\u540D",
|
|
65
|
-
description: "\u963F\u91CC\u4E91CDN\u52A0\u901F\u57DF\u540D",
|
|
66
|
-
type: "string",
|
|
67
|
-
isRequired: false,
|
|
68
|
-
isSensitive: false,
|
|
69
|
-
category: "cdn"
|
|
70
|
-
},
|
|
71
|
-
ALIYUN_CDN_ACCESS_KEY_ID: {
|
|
72
|
-
displayName: "CDN AccessKey ID",
|
|
73
|
-
description: "\u963F\u91CC\u4E91CDN AccessKey ID",
|
|
74
|
-
type: "string",
|
|
75
|
-
isRequired: false,
|
|
76
|
-
isSensitive: true,
|
|
77
|
-
category: "cdn"
|
|
78
|
-
},
|
|
79
|
-
ALIYUN_CDN_ACCESS_KEY_SECRET: {
|
|
80
|
-
displayName: "CDN AccessKey Secret",
|
|
81
|
-
description: "\u963F\u91CC\u4E91CDN AccessKey Secret",
|
|
82
|
-
type: "password",
|
|
83
|
-
isRequired: false,
|
|
84
|
-
isSensitive: true,
|
|
85
|
-
category: "cdn"
|
|
86
|
-
},
|
|
87
|
-
// 文件服务相关配置
|
|
88
|
-
MAX_FILE_SIZE: {
|
|
89
|
-
displayName: "\u6700\u5927\u6587\u4EF6\u5927\u5C0F",
|
|
90
|
-
description: "\u5141\u8BB8\u4E0A\u4F20\u7684\u6700\u5927\u6587\u4EF6\u5927\u5C0F\uFF08\u5B57\u8282\uFF09",
|
|
91
|
-
type: "number",
|
|
92
|
-
isRequired: false,
|
|
93
|
-
isSensitive: false,
|
|
94
|
-
category: "file"
|
|
95
|
-
},
|
|
96
|
-
FILE_STORAGE_PATH: {
|
|
97
|
-
displayName: "\u672C\u5730\u5B58\u50A8\u8DEF\u5F84",
|
|
98
|
-
description: "\u672C\u5730\u6587\u4EF6\u5B58\u50A8\u8DEF\u5F84",
|
|
99
|
-
type: "string",
|
|
100
|
-
isRequired: false,
|
|
101
|
-
isSensitive: false,
|
|
102
|
-
category: "file"
|
|
103
|
-
},
|
|
104
|
-
FILE_BASE_URL: {
|
|
105
|
-
displayName: "\u6587\u4EF6\u57FA\u7840URL",
|
|
106
|
-
description: "\u6587\u4EF6\u8BBF\u95EE\u57FA\u7840URL",
|
|
107
|
-
type: "string",
|
|
108
|
-
isRequired: false,
|
|
109
|
-
isSensitive: false,
|
|
110
|
-
category: "file"
|
|
111
|
-
}
|
|
112
|
-
};
|
|
113
|
-
var NON_MIGRATED_CONFIGS = {
|
|
114
|
-
DATABASE_URL: "\u6570\u636E\u5E93\u8FDE\u63A5\u5B57\u7B26\u4E32 - \u5EFA\u8BAE\u7531\u5E73\u53F0\u7EDF\u4E00\u7BA1\u7406",
|
|
115
|
-
DATABASE_POOL_SIZE: "\u6570\u636E\u5E93\u8FDE\u63A5\u6C60\u914D\u7F6E - \u5EFA\u8BAE\u7531\u5E73\u53F0\u7EDF\u4E00\u7BA1\u7406",
|
|
116
|
-
DATABASE_TIMEOUT: "\u6570\u636E\u5E93\u8D85\u65F6\u914D\u7F6E - \u5EFA\u8BAE\u7531\u5E73\u53F0\u7EDF\u4E00\u7BA1\u7406",
|
|
117
|
-
DATABASE_SSL_MODE: "\u6570\u636E\u5E93SSL\u914D\u7F6E - \u5EFA\u8BAE\u7531\u5E73\u53F0\u7EDF\u4E00\u7BA1\u7406",
|
|
118
|
-
NODE_ENV: "\u8FD0\u884C\u73AF\u5883\u6807\u8BC6 - \u7531\u90E8\u7F72\u73AF\u5883\u51B3\u5B9A",
|
|
119
|
-
NEXTAUTH_SECRET: "NextAuth\u5BC6\u94A5 - \u5EFA\u8BAE\u7531\u5E73\u53F0\u7EDF\u4E00\u7BA1\u7406",
|
|
120
|
-
NEXTAUTH_URL: "NextAuth\u56DE\u8C03URL - \u5EFA\u8BAE\u7531\u5E73\u53F0\u7EDF\u4E00\u7BA1\u7406",
|
|
121
|
-
QINIU_ACCESS_KEY: "\u4E03\u725B\u4E91\u914D\u7F6E - ShowMasterpiece\u6A21\u5757\u4E0D\u4F7F\u7528",
|
|
122
|
-
QINIU_SECRET_KEY: "\u4E03\u725B\u4E91\u914D\u7F6E - ShowMasterpiece\u6A21\u5757\u4E0D\u4F7F\u7528",
|
|
123
|
-
QINIU_BUCKET_NAME: "\u4E03\u725B\u4E91\u914D\u7F6E - ShowMasterpiece\u6A21\u5757\u4E0D\u4F7F\u7528",
|
|
124
|
-
QINIU_DOMAIN: "\u4E03\u725B\u4E91\u914D\u7F6E - ShowMasterpiece\u6A21\u5757\u4E0D\u4F7F\u7528",
|
|
125
|
-
OPENAI_API_KEY: "OpenAI\u914D\u7F6E - \u4E0D\u5C5E\u4E8E\u6587\u4EF6\u5B58\u50A8\u8303\u7574",
|
|
126
|
-
REDIS_URL: "Redis\u914D\u7F6E - \u5EFA\u8BAE\u7531\u5E73\u53F0\u7EDF\u4E00\u7BA1\u7406",
|
|
127
|
-
"EMAIL_*": "\u90AE\u4EF6\u670D\u52A1\u914D\u7F6E - \u4E0D\u5C5E\u4E8E\u6587\u4EF6\u5B58\u50A8\u8303\u7574"
|
|
128
|
-
};
|
|
129
|
-
async function migrateConfigToShowmasterpiece(services, options = {}) {
|
|
130
|
-
const { configDbService, showmasterConfigService } = services;
|
|
131
|
-
const { dryRun = false, environment = "development", overwrite = false } = options;
|
|
132
|
-
console.log("\u{1F680} [\u914D\u7F6E\u8FC1\u79FB] \u5F00\u59CB\u8FC1\u79FB\u516C\u5171\u914D\u7F6E\u5230ShowMasterpiece\u72EC\u7ACB\u914D\u7F6E...");
|
|
133
|
-
console.log(`\u{1F4CB} [\u914D\u7F6E\u8FC1\u79FB] \u9009\u9879: \u9884\u6F14=${dryRun}, \u73AF\u5883=${environment}, \u8986\u76D6=${overwrite}`);
|
|
134
|
-
const migrationResult = {
|
|
135
|
-
categories: 0,
|
|
136
|
-
migrated: 0,
|
|
137
|
-
skipped: 0,
|
|
138
|
-
errors: [],
|
|
139
|
-
migratedConfigs: [],
|
|
140
|
-
skippedConfigs: [],
|
|
141
|
-
nonMigratableConfigs: Object.keys(NON_MIGRATED_CONFIGS)
|
|
142
|
-
};
|
|
143
|
-
console.log("\u{1F4E6} [\u914D\u7F6E\u8FC1\u79FB] \u521B\u5EFA\u914D\u7F6E\u5206\u7C7B...");
|
|
144
|
-
const categories = [
|
|
145
|
-
{
|
|
146
|
-
name: "oss",
|
|
147
|
-
displayName: "\u963F\u91CC\u4E91OSS\u914D\u7F6E",
|
|
148
|
-
description: "ShowMasterpiece\u6A21\u5757\u4E13\u7528\u7684\u963F\u91CC\u4E91\u5BF9\u8C61\u5B58\u50A8\u670D\u52A1\u914D\u7F6E",
|
|
149
|
-
icon: "fas fa-cloud",
|
|
150
|
-
sortOrder: 1
|
|
151
|
-
},
|
|
152
|
-
{
|
|
153
|
-
name: "cdn",
|
|
154
|
-
displayName: "\u963F\u91CC\u4E91CDN\u914D\u7F6E",
|
|
155
|
-
description: "ShowMasterpiece\u6A21\u5757\u4E13\u7528\u7684\u963F\u91CC\u4E91\u5185\u5BB9\u5206\u53D1\u7F51\u7EDC\u914D\u7F6E",
|
|
156
|
-
icon: "fas fa-globe",
|
|
157
|
-
sortOrder: 2
|
|
158
|
-
},
|
|
159
|
-
{
|
|
160
|
-
name: "file",
|
|
161
|
-
displayName: "\u6587\u4EF6\u670D\u52A1\u914D\u7F6E",
|
|
162
|
-
description: "ShowMasterpiece\u6A21\u5757\u7684\u6587\u4EF6\u5B58\u50A8\u548C\u5904\u7406\u914D\u7F6E",
|
|
163
|
-
icon: "fas fa-file",
|
|
164
|
-
sortOrder: 3
|
|
165
|
-
}
|
|
166
|
-
];
|
|
167
|
-
for (const category of categories) {
|
|
168
|
-
if (!dryRun) {
|
|
169
|
-
try {
|
|
170
|
-
const existingCategory = await showmasterConfigService.getCategoryByName(category.name);
|
|
171
|
-
if (!existingCategory) {
|
|
172
|
-
await showmasterConfigService.createCategory({
|
|
173
|
-
...category,
|
|
174
|
-
isActive: true
|
|
175
|
-
});
|
|
176
|
-
migrationResult.categories++;
|
|
177
|
-
console.log(`\u2705 [\u914D\u7F6E\u8FC1\u79FB] \u521B\u5EFA\u5206\u7C7B: ${category.displayName}`);
|
|
178
|
-
} else {
|
|
179
|
-
console.log(`\u2139\uFE0F [\u914D\u7F6E\u8FC1\u79FB] \u5206\u7C7B\u5DF2\u5B58\u5728: ${category.displayName}`);
|
|
180
|
-
}
|
|
181
|
-
} catch (error) {
|
|
182
|
-
console.error(`\u274C [\u914D\u7F6E\u8FC1\u79FB] \u521B\u5EFA\u5206\u7C7B\u5931\u8D25: ${category.displayName}`, error);
|
|
183
|
-
migrationResult.errors.push(`\u521B\u5EFA\u5206\u7C7B\u5931\u8D25: ${category.displayName}`);
|
|
184
|
-
}
|
|
185
|
-
} else {
|
|
186
|
-
console.log(`\u{1F50D} [\u914D\u7F6E\u8FC1\u79FB] \u9884\u6F14: \u5C06\u521B\u5EFA\u5206\u7C7B ${category.displayName}`);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
console.log("\u{1F4CB} [\u914D\u7F6E\u8FC1\u79FB] \u83B7\u53D6\u516C\u5171\u914D\u7F6E\u9879...");
|
|
190
|
-
const publicConfigItems = await configDbService.getAllConfigItems();
|
|
191
|
-
const categoryMap = /* @__PURE__ */ new Map();
|
|
192
|
-
if (!dryRun) {
|
|
193
|
-
const allCategories = await showmasterConfigService.getAllCategories();
|
|
194
|
-
for (const cat of allCategories) {
|
|
195
|
-
categoryMap.set(cat.name, cat);
|
|
196
|
-
}
|
|
197
|
-
} else {
|
|
198
|
-
categoryMap.set("oss", { id: "mock-oss-id", name: "oss", displayName: "\u963F\u91CC\u4E91OSS\u914D\u7F6E" });
|
|
199
|
-
categoryMap.set("cdn", { id: "mock-cdn-id", name: "cdn", displayName: "\u963F\u91CC\u4E91CDN\u914D\u7F6E" });
|
|
200
|
-
categoryMap.set("file", { id: "mock-file-id", name: "file", displayName: "\u6587\u4EF6\u670D\u52A1\u914D\u7F6E" });
|
|
201
|
-
}
|
|
202
|
-
console.log("\u{1F504} [\u914D\u7F6E\u8FC1\u79FB] \u5F00\u59CB\u8FC1\u79FB\u914D\u7F6E\u9879...");
|
|
203
|
-
for (const [configKey, migrationInfo] of Object.entries(CONFIG_MIGRATION_MAP)) {
|
|
204
|
-
try {
|
|
205
|
-
const publicConfigItem = publicConfigItems.find((item) => item.key === configKey);
|
|
206
|
-
if (!publicConfigItem) {
|
|
207
|
-
console.log(`\u26A0\uFE0F [\u914D\u7F6E\u8FC1\u79FB] \u516C\u5171\u914D\u7F6E\u4E2D\u672A\u627E\u5230: ${configKey}`);
|
|
208
|
-
migrationResult.skippedConfigs.push(`${configKey} (\u516C\u5171\u914D\u7F6E\u4E2D\u4E0D\u5B58\u5728)`);
|
|
209
|
-
migrationResult.skipped++;
|
|
210
|
-
continue;
|
|
211
|
-
}
|
|
212
|
-
const existingConfig = !dryRun ? await showmasterConfigService.getConfigItemByKey(configKey, environment) : null;
|
|
213
|
-
if (existingConfig && !overwrite) {
|
|
214
|
-
console.log(`\u2139\uFE0F [\u914D\u7F6E\u8FC1\u79FB] \u914D\u7F6E\u5DF2\u5B58\u5728\uFF0C\u8DF3\u8FC7: ${configKey}`);
|
|
215
|
-
migrationResult.skippedConfigs.push(`${configKey} (\u5DF2\u5B58\u5728)`);
|
|
216
|
-
migrationResult.skipped++;
|
|
217
|
-
continue;
|
|
218
|
-
}
|
|
219
|
-
const category = categoryMap.get(migrationInfo.category);
|
|
220
|
-
if (!category) {
|
|
221
|
-
console.error(`\u274C [\u914D\u7F6E\u8FC1\u79FB] \u5206\u7C7B\u4E0D\u5B58\u5728: ${migrationInfo.category} for ${configKey}`);
|
|
222
|
-
migrationResult.errors.push(`\u5206\u7C7B\u4E0D\u5B58\u5728: ${migrationInfo.category}`);
|
|
223
|
-
continue;
|
|
224
|
-
}
|
|
225
|
-
if (!dryRun) {
|
|
226
|
-
const configData = {
|
|
227
|
-
categoryId: category.id,
|
|
228
|
-
key: configKey,
|
|
229
|
-
displayName: migrationInfo.displayName,
|
|
230
|
-
description: migrationInfo.description,
|
|
231
|
-
value: publicConfigItem.value || publicConfigItem.defaultValue || "",
|
|
232
|
-
defaultValue: publicConfigItem.defaultValue || "",
|
|
233
|
-
type: migrationInfo.type,
|
|
234
|
-
isRequired: migrationInfo.isRequired,
|
|
235
|
-
isSensitive: migrationInfo.isSensitive,
|
|
236
|
-
environment,
|
|
237
|
-
sortOrder: migrationResult.migrated + 1,
|
|
238
|
-
isActive: true
|
|
239
|
-
};
|
|
240
|
-
if (existingConfig && overwrite) {
|
|
241
|
-
await showmasterConfigService.updateConfigItem(existingConfig.id, {
|
|
242
|
-
...configData,
|
|
243
|
-
value: publicConfigItem.value || existingConfig.value
|
|
244
|
-
});
|
|
245
|
-
console.log(
|
|
246
|
-
`\u{1F504} [\u914D\u7F6E\u8FC1\u79FB] \u66F4\u65B0\u914D\u7F6E: ${configKey} = ${publicConfigItem.value ? "***" : "(empty)"}`
|
|
247
|
-
);
|
|
248
|
-
} else {
|
|
249
|
-
await showmasterConfigService.createConfigItem(configData);
|
|
250
|
-
console.log(`\u2705 [\u914D\u7F6E\u8FC1\u79FB] \u8FC1\u79FB\u914D\u7F6E: ${configKey} = ${publicConfigItem.value ? "***" : "(empty)"}`);
|
|
251
|
-
}
|
|
252
|
-
migrationResult.migratedConfigs.push(configKey);
|
|
253
|
-
migrationResult.migrated++;
|
|
254
|
-
} else {
|
|
255
|
-
console.log(
|
|
256
|
-
`\u{1F50D} [\u914D\u7F6E\u8FC1\u79FB] \u9884\u6F14: \u5C06\u8FC1\u79FB ${configKey} = ${publicConfigItem.value ? "***" : "(empty)"}`
|
|
257
|
-
);
|
|
258
|
-
migrationResult.migratedConfigs.push(configKey);
|
|
259
|
-
}
|
|
260
|
-
} catch (error) {
|
|
261
|
-
console.error(`\u274C [\u914D\u7F6E\u8FC1\u79FB] \u8FC1\u79FB\u914D\u7F6E\u5931\u8D25: ${configKey}`, error);
|
|
262
|
-
migrationResult.errors.push(`\u8FC1\u79FB\u914D\u7F6E\u5931\u8D25: ${configKey} - ${error}`);
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
console.log("\n\u{1F4CA} [\u914D\u7F6E\u8FC1\u79FB] \u8FC1\u79FB\u5B8C\u6210\uFF01\u751F\u6210\u62A5\u544A...\n");
|
|
266
|
-
const report = `
|
|
267
|
-
# ShowMasterpiece \u914D\u7F6E\u8FC1\u79FB\u62A5\u544A
|
|
268
|
-
|
|
269
|
-
## \u8FC1\u79FB\u6982\u8981
|
|
270
|
-
- **\u8FC1\u79FB\u6A21\u5F0F**: ${dryRun ? "\u9884\u6F14\u6A21\u5F0F" : "\u5B9E\u9645\u8FC1\u79FB"}
|
|
271
|
-
- **\u76EE\u6807\u73AF\u5883**: ${environment}
|
|
272
|
-
- **\u8986\u76D6\u6A21\u5F0F**: ${overwrite ? "\u542F\u7528" : "\u7981\u7528"}
|
|
273
|
-
- **\u6267\u884C\u65F6\u95F4**: ${(/* @__PURE__ */ new Date()).toLocaleString()}
|
|
274
|
-
|
|
275
|
-
## \u8FC1\u79FB\u7EDF\u8BA1
|
|
276
|
-
- **\u521B\u5EFA\u5206\u7C7B**: ${migrationResult.categories} \u4E2A
|
|
277
|
-
- **\u6210\u529F\u8FC1\u79FB**: ${migrationResult.migrated} \u4E2A\u914D\u7F6E\u9879
|
|
278
|
-
- **\u8DF3\u8FC7\u9879\u76EE**: ${migrationResult.skipped} \u4E2A\u914D\u7F6E\u9879
|
|
279
|
-
- **\u9519\u8BEF\u6570\u91CF**: ${migrationResult.errors.length} \u4E2A
|
|
280
|
-
|
|
281
|
-
## \u5DF2\u8FC1\u79FB\u7684\u914D\u7F6E\u9879
|
|
282
|
-
${migrationResult.migratedConfigs.length > 0 ? migrationResult.migratedConfigs.map(
|
|
283
|
-
(key) => `- \u2705 ${key}: ${CONFIG_MIGRATION_MAP[key]?.displayName}`
|
|
284
|
-
).join("\n") : "- \u65E0"}
|
|
285
|
-
|
|
286
|
-
## \u8DF3\u8FC7\u7684\u914D\u7F6E\u9879
|
|
287
|
-
${migrationResult.skippedConfigs.length > 0 ? migrationResult.skippedConfigs.map((item) => `- \u23ED\uFE0F ${item}`).join("\n") : "- \u65E0"}
|
|
288
|
-
|
|
289
|
-
## \u4E0D\u53EF\u8FC1\u79FB\u7684\u914D\u7F6E\u9879 (\u9700\u8981\u4EBA\u5DE5\u5904\u7406)
|
|
290
|
-
${Object.entries(NON_MIGRATED_CONFIGS).map(([key, reason]) => `- \u26A0\uFE0F ${key}: ${reason}`).join("\n")}
|
|
291
|
-
|
|
292
|
-
## \u9519\u8BEF\u5217\u8868
|
|
293
|
-
${migrationResult.errors.length > 0 ? migrationResult.errors.map((error) => `- \u274C ${error}`).join("\n") : "- \u65E0\u9519\u8BEF"}
|
|
294
|
-
|
|
295
|
-
## \u540E\u7EED\u6B65\u9AA4
|
|
296
|
-
|
|
297
|
-
### 1. \u9A8C\u8BC1\u8FC1\u79FB\u7ED3\u679C
|
|
298
|
-
\u8BBF\u95EE ShowMasterpiece \u914D\u7F6E\u9875\u9762\u9A8C\u8BC1\u914D\u7F6E\u662F\u5426\u6B63\u786E\u8FC1\u79FB\uFF1A
|
|
299
|
-
\`\`\`
|
|
300
|
-
http://localhost:3000/testField/ShowMasterPieces/config
|
|
301
|
-
\`\`\`
|
|
302
|
-
|
|
303
|
-
### 2. \u6D4B\u8BD5\u6587\u4EF6\u4E0A\u4F20\u529F\u80FD
|
|
304
|
-
\u5C1D\u8BD5\u5728 ShowMasterpiece \u4E2D\u4E0A\u4F20\u56FE\u7247\uFF0C\u9A8C\u8BC1 OSS \u914D\u7F6E\u662F\u5426\u6B63\u5E38\u5DE5\u4F5C\u3002
|
|
305
|
-
|
|
306
|
-
### 3. \u5904\u7406\u654F\u611F\u914D\u7F6E
|
|
307
|
-
\u4EE5\u4E0B\u654F\u611F\u914D\u7F6E\u9879\u9700\u8981\u4EBA\u5DE5\u586B\u5165\u5B9E\u9645\u503C\uFF1A
|
|
308
|
-
${migrationResult.migratedConfigs.filter((key) => CONFIG_MIGRATION_MAP[key]?.isSensitive).map((key) => `- ${key}: ${CONFIG_MIGRATION_MAP[key]?.displayName}`).join("\n")}
|
|
309
|
-
|
|
310
|
-
### 4. \u6E05\u7406\u65E7\u914D\u7F6E\uFF08\u53EF\u9009\uFF09
|
|
311
|
-
\u8FC1\u79FB\u6210\u529F\u540E\uFF0C\u53EF\u4EE5\u8003\u8651\u5728\u516C\u5171\u914D\u7F6E\u7BA1\u7406\u5668\u4E2D\u7981\u7528\u6216\u5220\u9664\u5DF2\u8FC1\u79FB\u7684\u914D\u7F6E\u9879\uFF0C\u907F\u514D\u914D\u7F6E\u51B2\u7A81\u3002
|
|
312
|
-
|
|
313
|
-
### 5. \u66F4\u65B0\u6587\u6863
|
|
314
|
-
\u66F4\u65B0\u9879\u76EE\u6587\u6863\uFF0C\u8BF4\u660E ShowMasterpiece \u6A21\u5757\u73B0\u5728\u4F7F\u7528\u72EC\u7ACB\u914D\u7F6E\u3002
|
|
315
|
-
`;
|
|
316
|
-
const reportPath = `showmasterpiece-config-migration-report-${environment}-${Date.now()}.md`;
|
|
317
|
-
writeFileSync(reportPath, report);
|
|
318
|
-
console.log(report);
|
|
319
|
-
console.log(`\u{1F4C4} [\u914D\u7F6E\u8FC1\u79FB] \u8BE6\u7EC6\u62A5\u544A\u5DF2\u4FDD\u5B58\u5230: ${reportPath}`);
|
|
320
|
-
return migrationResult;
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
export { migrateConfigToShowmasterpiece };
|
|
324
|
-
//# sourceMappingURL=index.mjs.map
|
|
325
|
-
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/showmasterpiece/scripts/migrateConfig.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * ShowMasterpiece 配置迁移脚本\n *\n * 将公共配置管理器中的 OSS 及相关配置复制到 showmasterpiece 独立配置中\n */\n\nimport { writeFileSync } from 'fs';\n\nexport interface ConfigDbServiceLike {\n getAllConfigItems(): Promise<any[]>;\n}\n\nexport interface ShowmasterConfigServiceLike {\n getCategoryByName(name: string): Promise<any | null>;\n createCategory(payload: any): Promise<any>;\n getAllCategories(): Promise<any[]>;\n getConfigItemByKey(key: string, environment?: string): Promise<any | null>;\n updateConfigItem(id: number | string, payload: any): Promise<any>;\n createConfigItem(payload: any): Promise<any>;\n}\n\nexport interface MigrateConfigOptions {\n dryRun?: boolean;\n environment?: 'development' | 'production';\n overwrite?: boolean;\n}\n\nexport interface MigrationServices {\n configDbService: ConfigDbServiceLike;\n showmasterConfigService: ShowmasterConfigServiceLike;\n}\n\n/**\n * 需要迁移的配置项映射\n */\nconst CONFIG_MIGRATION_MAP = {\n // OSS 配置\n ALIYUN_OSS_REGION: {\n displayName: 'OSS区域',\n description: '阿里云OSS存储区域',\n type: 'string',\n isRequired: true,\n isSensitive: false,\n category: 'oss',\n },\n ALIYUN_OSS_BUCKET: {\n displayName: 'OSS存储桶',\n description: '阿里云OSS存储桶名称',\n type: 'string',\n isRequired: true,\n isSensitive: false,\n category: 'oss',\n },\n ALIYUN_OSS_ACCESS_KEY_ID: {\n displayName: 'AccessKey ID',\n description: '阿里云AccessKey ID',\n type: 'string',\n isRequired: true,\n isSensitive: true,\n category: 'oss',\n },\n ALIYUN_OSS_ACCESS_KEY_SECRET: {\n displayName: 'AccessKey Secret',\n description: '阿里云AccessKey Secret',\n type: 'password',\n isRequired: true,\n isSensitive: true,\n category: 'oss',\n },\n ALIYUN_OSS_CUSTOM_DOMAIN: {\n displayName: '自定义域名',\n description: 'OSS自定义域名(可选)',\n type: 'string',\n isRequired: false,\n isSensitive: false,\n category: 'oss',\n },\n ALIYUN_OSS_SECURE: {\n displayName: '使用HTTPS',\n description: '是否使用HTTPS连接',\n type: 'boolean',\n isRequired: false,\n isSensitive: false,\n category: 'oss',\n },\n ALIYUN_OSS_INTERNAL: {\n displayName: '内网访问',\n description: '是否使用内网访问',\n type: 'boolean',\n isRequired: false,\n isSensitive: false,\n category: 'oss',\n },\n\n // CDN 配置(可选)\n ALIYUN_CDN_DOMAIN: {\n displayName: 'CDN域名',\n description: '阿里云CDN加速域名',\n type: 'string',\n isRequired: false,\n isSensitive: false,\n category: 'cdn',\n },\n ALIYUN_CDN_ACCESS_KEY_ID: {\n displayName: 'CDN AccessKey ID',\n description: '阿里云CDN AccessKey ID',\n type: 'string',\n isRequired: false,\n isSensitive: true,\n category: 'cdn',\n },\n ALIYUN_CDN_ACCESS_KEY_SECRET: {\n displayName: 'CDN AccessKey Secret',\n description: '阿里云CDN AccessKey Secret',\n type: 'password',\n isRequired: false,\n isSensitive: true,\n category: 'cdn',\n },\n\n // 文件服务相关配置\n MAX_FILE_SIZE: {\n displayName: '最大文件大小',\n description: '允许上传的最大文件大小(字节)',\n type: 'number',\n isRequired: false,\n isSensitive: false,\n category: 'file',\n },\n FILE_STORAGE_PATH: {\n displayName: '本地存储路径',\n description: '本地文件存储路径',\n type: 'string',\n isRequired: false,\n isSensitive: false,\n category: 'file',\n },\n FILE_BASE_URL: {\n displayName: '文件基础URL',\n description: '文件访问基础URL',\n type: 'string',\n isRequired: false,\n isSensitive: false,\n category: 'file',\n },\n} as const;\n\n/**\n * 不迁移的配置项(将在报告中列出)\n */\nconst NON_MIGRATED_CONFIGS = {\n DATABASE_URL: '数据库连接字符串 - 建议由平台统一管理',\n DATABASE_POOL_SIZE: '数据库连接池配置 - 建议由平台统一管理',\n DATABASE_TIMEOUT: '数据库超时配置 - 建议由平台统一管理',\n DATABASE_SSL_MODE: '数据库SSL配置 - 建议由平台统一管理',\n\n NODE_ENV: '运行环境标识 - 由部署环境决定',\n NEXTAUTH_SECRET: 'NextAuth密钥 - 建议由平台统一管理',\n NEXTAUTH_URL: 'NextAuth回调URL - 建议由平台统一管理',\n\n QINIU_ACCESS_KEY: '七牛云配置 - ShowMasterpiece模块不使用',\n QINIU_SECRET_KEY: '七牛云配置 - ShowMasterpiece模块不使用',\n QINIU_BUCKET_NAME: '七牛云配置 - ShowMasterpiece模块不使用',\n QINIU_DOMAIN: '七牛云配置 - ShowMasterpiece模块不使用',\n\n OPENAI_API_KEY: 'OpenAI配置 - 不属于文件存储范畴',\n REDIS_URL: 'Redis配置 - 建议由平台统一管理',\n 'EMAIL_*': '邮件服务配置 - 不属于文件存储范畴',\n} as const;\n\nexport async function migrateConfigToShowmasterpiece(\n services: MigrationServices,\n options: MigrateConfigOptions = {},\n): Promise<any> {\n const { configDbService, showmasterConfigService } = services;\n const { dryRun = false, environment = 'development', overwrite = false } = options;\n\n console.log('🚀 [配置迁移] 开始迁移公共配置到ShowMasterpiece独立配置...');\n console.log(`📋 [配置迁移] 选项: 预演=${dryRun}, 环境=${environment}, 覆盖=${overwrite}`);\n\n const migrationResult = {\n categories: 0,\n migrated: 0,\n skipped: 0,\n errors: [] as string[],\n migratedConfigs: [] as string[],\n skippedConfigs: [] as string[],\n nonMigratableConfigs: Object.keys(NON_MIGRATED_CONFIGS),\n };\n\n // 1. 创建配置分类\n console.log('📦 [配置迁移] 创建配置分类...');\n const categories = [\n {\n name: 'oss',\n displayName: '阿里云OSS配置',\n description: 'ShowMasterpiece模块专用的阿里云对象存储服务配置',\n icon: 'fas fa-cloud',\n sortOrder: 1,\n },\n {\n name: 'cdn',\n displayName: '阿里云CDN配置',\n description: 'ShowMasterpiece模块专用的阿里云内容分发网络配置',\n icon: 'fas fa-globe',\n sortOrder: 2,\n },\n {\n name: 'file',\n displayName: '文件服务配置',\n description: 'ShowMasterpiece模块的文件存储和处理配置',\n icon: 'fas fa-file',\n sortOrder: 3,\n },\n ];\n\n for (const category of categories) {\n if (!dryRun) {\n try {\n const existingCategory = await showmasterConfigService.getCategoryByName(category.name);\n if (!existingCategory) {\n await showmasterConfigService.createCategory({\n ...category,\n isActive: true,\n });\n migrationResult.categories++;\n console.log(`✅ [配置迁移] 创建分类: ${category.displayName}`);\n } else {\n console.log(`ℹ️ [配置迁移] 分类已存在: ${category.displayName}`);\n }\n } catch (error) {\n console.error(`❌ [配置迁移] 创建分类失败: ${category.displayName}`, error);\n migrationResult.errors.push(`创建分类失败: ${category.displayName}`);\n }\n } else {\n console.log(`🔍 [配置迁移] 预演: 将创建分类 ${category.displayName}`);\n }\n }\n\n // 2. 获取公共配置项\n console.log('📋 [配置迁移] 获取公共配置项...');\n const publicConfigItems = await configDbService.getAllConfigItems();\n\n // 3. 获取所有分类的映射\n const categoryMap = new Map<string, any>();\n if (!dryRun) {\n const allCategories = await showmasterConfigService.getAllCategories();\n for (const cat of allCategories) {\n categoryMap.set(cat.name, cat);\n }\n } else {\n categoryMap.set('oss', { id: 'mock-oss-id', name: 'oss', displayName: '阿里云OSS配置' });\n categoryMap.set('cdn', { id: 'mock-cdn-id', name: 'cdn', displayName: '阿里云CDN配置' });\n categoryMap.set('file', { id: 'mock-file-id', name: 'file', displayName: '文件服务配置' });\n }\n\n // 4. 迁移配置项\n console.log('🔄 [配置迁移] 开始迁移配置项...');\n for (const [configKey, migrationInfo] of Object.entries(CONFIG_MIGRATION_MAP)) {\n try {\n const publicConfigItem = publicConfigItems.find((item) => item.key === configKey);\n\n if (!publicConfigItem) {\n console.log(`⚠️ [配置迁移] 公共配置中未找到: ${configKey}`);\n migrationResult.skippedConfigs.push(`${configKey} (公共配置中不存在)`);\n migrationResult.skipped++;\n continue;\n }\n\n const existingConfig = !dryRun\n ? await showmasterConfigService.getConfigItemByKey(configKey, environment)\n : null;\n\n if (existingConfig && !overwrite) {\n console.log(`ℹ️ [配置迁移] 配置已存在,跳过: ${configKey}`);\n migrationResult.skippedConfigs.push(`${configKey} (已存在)`);\n migrationResult.skipped++;\n continue;\n }\n\n const category = categoryMap.get(migrationInfo.category);\n if (!category) {\n console.error(`❌ [配置迁移] 分类不存在: ${migrationInfo.category} for ${configKey}`);\n migrationResult.errors.push(`分类不存在: ${migrationInfo.category}`);\n continue;\n }\n\n if (!dryRun) {\n const configData = {\n categoryId: category.id,\n key: configKey,\n displayName: migrationInfo.displayName,\n description: migrationInfo.description,\n value: publicConfigItem.value || publicConfigItem.defaultValue || '',\n defaultValue: publicConfigItem.defaultValue || '',\n type: migrationInfo.type,\n isRequired: migrationInfo.isRequired,\n isSensitive: migrationInfo.isSensitive,\n environment,\n sortOrder: migrationResult.migrated + 1,\n isActive: true,\n };\n\n if (existingConfig && overwrite) {\n await showmasterConfigService.updateConfigItem(existingConfig.id, {\n ...configData,\n value: publicConfigItem.value || existingConfig.value,\n });\n console.log(\n `🔄 [配置迁移] 更新配置: ${configKey} = ${publicConfigItem.value ? '***' : '(empty)'}`,\n );\n } else {\n await showmasterConfigService.createConfigItem(configData);\n console.log(`✅ [配置迁移] 迁移配置: ${configKey} = ${publicConfigItem.value ? '***' : '(empty)'}`);\n }\n\n migrationResult.migratedConfigs.push(configKey);\n migrationResult.migrated++;\n } else {\n console.log(\n `🔍 [配置迁移] 预演: 将迁移 ${configKey} = ${publicConfigItem.value ? '***' : '(empty)'}`,\n );\n migrationResult.migratedConfigs.push(configKey);\n }\n } catch (error) {\n console.error(`❌ [配置迁移] 迁移配置失败: ${configKey}`, error);\n migrationResult.errors.push(`迁移配置失败: ${configKey} - ${error}`);\n }\n }\n\n // 5. 生成迁移报告\n console.log('\\n📊 [配置迁移] 迁移完成!生成报告...\\n');\n\n const report = `\n# ShowMasterpiece 配置迁移报告\n\n## 迁移概要\n- **迁移模式**: ${dryRun ? '预演模式' : '实际迁移'}\n- **目标环境**: ${environment}\n- **覆盖模式**: ${overwrite ? '启用' : '禁用'}\n- **执行时间**: ${new Date().toLocaleString()}\n\n## 迁移统计\n- **创建分类**: ${migrationResult.categories} 个\n- **成功迁移**: ${migrationResult.migrated} 个配置项\n- **跳过项目**: ${migrationResult.skipped} 个配置项\n- **错误数量**: ${migrationResult.errors.length} 个\n\n## 已迁移的配置项\n${\n migrationResult.migratedConfigs.length > 0\n ? migrationResult.migratedConfigs\n .map(\n (key) =>\n `- ✅ ${key}: ${CONFIG_MIGRATION_MAP[key as keyof typeof CONFIG_MIGRATION_MAP]?.displayName}`,\n )\n .join('\\n')\n : '- 无'\n}\n\n## 跳过的配置项\n${\n migrationResult.skippedConfigs.length > 0\n ? migrationResult.skippedConfigs.map((item) => `- ⏭️ ${item}`).join('\\n')\n : '- 无'\n}\n\n## 不可迁移的配置项 (需要人工处理)\n${Object.entries(NON_MIGRATED_CONFIGS)\n .map(([key, reason]) => `- ⚠️ ${key}: ${reason}`)\n .join('\\n')}\n\n## 错误列表\n${\n migrationResult.errors.length > 0\n ? migrationResult.errors.map((error) => `- ❌ ${error}`).join('\\n')\n : '- 无错误'\n}\n\n## 后续步骤\n\n### 1. 验证迁移结果\n访问 ShowMasterpiece 配置页面验证配置是否正确迁移:\n\\`\\`\\`\nhttp://localhost:3000/testField/ShowMasterPieces/config\n\\`\\`\\`\n\n### 2. 测试文件上传功能\n尝试在 ShowMasterpiece 中上传图片,验证 OSS 配置是否正常工作。\n\n### 3. 处理敏感配置\n以下敏感配置项需要人工填入实际值:\n${migrationResult.migratedConfigs\n .filter((key) => CONFIG_MIGRATION_MAP[key as keyof typeof CONFIG_MIGRATION_MAP]?.isSensitive)\n .map((key) => `- ${key}: ${CONFIG_MIGRATION_MAP[key as keyof typeof CONFIG_MIGRATION_MAP]?.displayName}`)\n .join('\\n')}\n\n### 4. 清理旧配置(可选)\n迁移成功后,可以考虑在公共配置管理器中禁用或删除已迁移的配置项,避免配置冲突。\n\n### 5. 更新文档\n更新项目文档,说明 ShowMasterpiece 模块现在使用独立配置。\n`;\n\n const reportPath = `showmasterpiece-config-migration-report-${environment}-${Date.now()}.md`;\n writeFileSync(reportPath, report);\n\n console.log(report);\n console.log(`📄 [配置迁移] 详细报告已保存到: ${reportPath}`);\n\n return migrationResult;\n}\n"]}
|