sa2kit 1.6.43 → 1.6.45

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.
Files changed (273) hide show
  1. package/dist/AliyunOSSProvider-2FARPAQD.js +15 -0
  2. package/dist/{AliyunOSSProvider-HCNGDJL7.js.map → AliyunOSSProvider-2FARPAQD.js.map} +1 -1
  3. package/dist/AliyunOSSProvider-UMVGVBDJ.mjs +9 -0
  4. package/dist/{AliyunOSSProvider-4W47OFEK.mjs.map → AliyunOSSProvider-UMVGVBDJ.mjs.map} +1 -1
  5. package/dist/CollisionBalls-BpHufX3H.d.mts +41 -0
  6. package/dist/CollisionBalls-BpHufX3H.d.ts +41 -0
  7. package/dist/ConfigService-QR67WYNK.mjs +4 -0
  8. package/dist/{ConfigService-V6ZK273Z.mjs.map → ConfigService-QR67WYNK.mjs.map} +1 -1
  9. package/dist/{ConfigService-3DIC6C3Q.js → ConfigService-UYC6ZTCM.js} +3 -3
  10. package/dist/{ConfigService-3DIC6C3Q.js.map → ConfigService-UYC6ZTCM.js.map} +1 -1
  11. package/dist/GenericOrderManager-e4WizpNf.d.mts +28 -0
  12. package/dist/GenericOrderManager-e4WizpNf.d.ts +28 -0
  13. package/dist/LocalStorageProvider-JQF5WK5H.js +15 -0
  14. package/dist/{LocalStorageProvider-PP7MA5OT.js.map → LocalStorageProvider-JQF5WK5H.js.map} +1 -1
  15. package/dist/LocalStorageProvider-PYOHETJV.mjs +9 -0
  16. package/dist/{LocalStorageProvider-3RVPCQB3.mjs.map → LocalStorageProvider-PYOHETJV.mjs.map} +1 -1
  17. package/dist/PMXParser-RLBDO7YK.mjs +4 -0
  18. package/dist/{PMXParser-RNVQL76A.mjs.map → PMXParser-RLBDO7YK.mjs.map} +1 -1
  19. package/dist/{PMXParser-2VTA737I.js → PMXParser-XHNO2KNI.js} +3 -3
  20. package/dist/{PMXParser-2VTA737I.js.map → PMXParser-XHNO2KNI.js.map} +1 -1
  21. package/dist/UniversalFileService-RBV6EN5J.js +15 -0
  22. package/dist/UniversalFileService-RBV6EN5J.js.map +1 -0
  23. package/dist/UniversalFileService-TNYKO6JN.mjs +9 -0
  24. package/dist/UniversalFileService-TNYKO6JN.mjs.map +1 -0
  25. package/dist/analytics/index.js +1 -1
  26. package/dist/analytics/index.mjs +1 -1
  27. package/dist/analytics/server/index.js +1 -1
  28. package/dist/analytics/server/index.mjs +1 -1
  29. package/dist/api/index.js +1 -1
  30. package/dist/api/index.mjs +1 -1
  31. package/dist/audioDetection/index.js +1 -1
  32. package/dist/audioDetection/index.mjs +1 -1
  33. package/dist/auth/client/index.js +1 -1
  34. package/dist/auth/client/index.mjs +1 -1
  35. package/dist/auth/components/index.js +1 -1
  36. package/dist/auth/components/index.mjs +1 -1
  37. package/dist/auth/hooks/index.js +1 -1
  38. package/dist/auth/hooks/index.mjs +1 -1
  39. package/dist/auth/index.js +1 -1
  40. package/dist/auth/index.mjs +1 -1
  41. package/dist/auth/middleware/index.js +1 -1
  42. package/dist/auth/middleware/index.mjs +1 -1
  43. package/dist/auth/routes/index.js +1 -1
  44. package/dist/auth/routes/index.mjs +1 -1
  45. package/dist/auth/schema/index.js +1 -1
  46. package/dist/auth/schema/index.mjs +1 -1
  47. package/dist/auth/services/index.js +1 -1
  48. package/dist/auth/services/index.mjs +1 -1
  49. package/dist/calendar/index.js +12 -12
  50. package/dist/calendar/index.mjs +5 -5
  51. package/dist/calendar/routes/index.js +1 -1
  52. package/dist/calendar/routes/index.mjs +1 -1
  53. package/dist/calendar/server.js +1 -1
  54. package/dist/calendar/server.mjs +1 -1
  55. package/dist/chunk-2PS5PIXV.mjs +443 -0
  56. package/dist/chunk-2PS5PIXV.mjs.map +1 -0
  57. package/dist/chunk-35CXIK5Y.js +277 -0
  58. package/dist/chunk-35CXIK5Y.js.map +1 -0
  59. package/dist/{chunk-GMIUSZXC.mjs → chunk-3JW4X3AC.mjs} +3 -3
  60. package/dist/{chunk-GMIUSZXC.mjs.map → chunk-3JW4X3AC.mjs.map} +1 -1
  61. package/dist/chunk-3M6T5KVD.js +453 -0
  62. package/dist/chunk-3M6T5KVD.js.map +1 -0
  63. package/dist/chunk-3TNR6IMC.js +168 -0
  64. package/dist/chunk-3TNR6IMC.js.map +1 -0
  65. package/dist/chunk-4NFOSCM6.js +34 -0
  66. package/dist/chunk-4NFOSCM6.js.map +1 -0
  67. package/dist/{chunk-3NHAT7D4.mjs → chunk-4VJQZSPU.mjs} +4 -3
  68. package/dist/chunk-4VJQZSPU.mjs.map +1 -0
  69. package/dist/{chunk-SCDDMIF6.js → chunk-4XXIBWCO.js} +66 -66
  70. package/dist/{chunk-SCDDMIF6.js.map → chunk-4XXIBWCO.js.map} +1 -1
  71. package/dist/chunk-6AHYPPUP.js +344 -0
  72. package/dist/chunk-6AHYPPUP.js.map +1 -0
  73. package/dist/{chunk-EGJPS7OL.mjs → chunk-6BJ76BYC.mjs} +3 -3
  74. package/dist/{chunk-EGJPS7OL.mjs.map → chunk-6BJ76BYC.mjs.map} +1 -1
  75. package/dist/chunk-76V7EKBX.mjs +796 -0
  76. package/dist/chunk-76V7EKBX.mjs.map +1 -0
  77. package/dist/chunk-ACLOJXXE.js +195 -0
  78. package/dist/chunk-ACLOJXXE.js.map +1 -0
  79. package/dist/chunk-AEXPAH7Z.mjs +32 -0
  80. package/dist/chunk-AEXPAH7Z.mjs.map +1 -0
  81. package/dist/chunk-CFGX3EKK.js +560 -0
  82. package/dist/chunk-CFGX3EKK.js.map +1 -0
  83. package/dist/{chunk-435LATLS.mjs → chunk-CX5GPCCO.mjs} +3 -4
  84. package/dist/chunk-CX5GPCCO.mjs.map +1 -0
  85. package/dist/chunk-D2HXMGXS.js +46 -0
  86. package/dist/chunk-D2HXMGXS.js.map +1 -0
  87. package/dist/chunk-DM2GUVUH.js +1201 -0
  88. package/dist/chunk-DM2GUVUH.js.map +1 -0
  89. package/dist/{chunk-ZWQJSZEY.js → chunk-DVENFCQY.js} +5 -4
  90. package/dist/chunk-DVENFCQY.js.map +1 -0
  91. package/dist/chunk-EONPKLEJ.mjs +163 -0
  92. package/dist/chunk-EONPKLEJ.mjs.map +1 -0
  93. package/dist/{chunk-L47ZOYHL.js → chunk-EUIXQPPU.js} +4 -4
  94. package/dist/{chunk-L47ZOYHL.js.map → chunk-EUIXQPPU.js.map} +1 -1
  95. package/dist/{chunk-33YOJBQB.js → chunk-JOSNXSA6.js} +3 -4
  96. package/dist/chunk-JOSNXSA6.js.map +1 -0
  97. package/dist/chunk-K7WNCB4V.mjs +554 -0
  98. package/dist/chunk-K7WNCB4V.mjs.map +1 -0
  99. package/dist/chunk-L4ZYBFB2.mjs +44 -0
  100. package/dist/chunk-L4ZYBFB2.mjs.map +1 -0
  101. package/dist/chunk-M4HGHTIC.js +820 -0
  102. package/dist/chunk-M4HGHTIC.js.map +1 -0
  103. package/dist/{chunk-HHVDOIPV.js → chunk-MZKATHB7.js} +4 -4
  104. package/dist/{chunk-HHVDOIPV.js.map → chunk-MZKATHB7.js.map} +1 -1
  105. package/dist/{chunk-UKT3PLON.mjs → chunk-NXQVTAOP.mjs} +3 -3
  106. package/dist/{chunk-UKT3PLON.mjs.map → chunk-NXQVTAOP.mjs.map} +1 -1
  107. package/dist/chunk-OBIPI4GU.mjs +266 -0
  108. package/dist/chunk-OBIPI4GU.mjs.map +1 -0
  109. package/dist/chunk-PAX4S7QM.mjs +94 -0
  110. package/dist/chunk-PAX4S7QM.mjs.map +1 -0
  111. package/dist/chunk-PXWDQFWV.mjs +192 -0
  112. package/dist/chunk-PXWDQFWV.mjs.map +1 -0
  113. package/dist/chunk-QROLPPXP.mjs +5797 -0
  114. package/dist/chunk-QROLPPXP.mjs.map +1 -0
  115. package/dist/chunk-TGNUEULF.mjs +1158 -0
  116. package/dist/chunk-TGNUEULF.mjs.map +1 -0
  117. package/dist/chunk-VBQFVXOW.mjs +2772 -0
  118. package/dist/chunk-VBQFVXOW.mjs.map +1 -0
  119. package/dist/chunk-VLZ5N6XZ.js +5888 -0
  120. package/dist/chunk-VLZ5N6XZ.js.map +1 -0
  121. package/dist/chunk-VTGPHE4Z.mjs +322 -0
  122. package/dist/chunk-VTGPHE4Z.mjs.map +1 -0
  123. package/dist/chunk-WMJKH4XE.mjs +30 -0
  124. package/dist/{chunk-BJTO5JO5.mjs.map → chunk-WMJKH4XE.mjs.map} +1 -1
  125. package/dist/chunk-XYQMAF7H.js +96 -0
  126. package/dist/chunk-XYQMAF7H.js.map +1 -0
  127. package/dist/chunk-Z3G3IXEF.js +2814 -0
  128. package/dist/chunk-Z3G3IXEF.js.map +1 -0
  129. package/dist/chunk-Z6ZWNWWR.js +35 -0
  130. package/dist/{chunk-DGUM43GV.js.map → chunk-Z6ZWNWWR.js.map} +1 -1
  131. package/dist/components/index.d.mts +378 -0
  132. package/dist/components/index.d.ts +378 -0
  133. package/dist/components/index.js +414 -0
  134. package/dist/components/index.js.map +1 -0
  135. package/dist/components/index.mjs +9 -0
  136. package/dist/components/index.mjs.map +1 -0
  137. package/dist/config/index.js +1 -1
  138. package/dist/config/index.mjs +1 -1
  139. package/dist/config/server/index.js +1 -1
  140. package/dist/config/server/index.mjs +1 -1
  141. package/dist/fileService-O3W6YXCI.mjs +4 -0
  142. package/dist/fileService-O3W6YXCI.mjs.map +1 -0
  143. package/dist/fileService-YUDIYOAS.js +13 -0
  144. package/dist/fileService-YUDIYOAS.js.map +1 -0
  145. package/dist/i18n/index.js +7 -7
  146. package/dist/i18n/index.mjs +1 -1
  147. package/dist/imageCrop/index.js +1 -1
  148. package/dist/imageCrop/index.mjs +1 -1
  149. package/dist/index.d.mts +9 -580
  150. package/dist/index.d.ts +9 -580
  151. package/dist/index.js +313 -972
  152. package/dist/index.js.map +1 -1
  153. package/dist/index.mjs +104 -790
  154. package/dist/index.mjs.map +1 -1
  155. package/dist/logger/index.js +8 -8
  156. package/dist/logger/index.mjs +5 -2
  157. package/dist/mikuFireworks3D/index.js +17 -17
  158. package/dist/mikuFireworks3D/index.mjs +2 -2
  159. package/dist/mikuFireworks3D/server/index.js +1 -1
  160. package/dist/mikuFireworks3D/server/index.mjs +1 -1
  161. package/dist/mikuFusionGame/index.js +5 -5
  162. package/dist/mikuFusionGame/index.mjs +4 -4
  163. package/dist/mmd/admin/index.js +1 -1
  164. package/dist/mmd/admin/index.mjs +1 -1
  165. package/dist/mmd/index.js +2 -2
  166. package/dist/mmd/index.mjs +2 -2
  167. package/dist/mmd/server/index.js +1 -1
  168. package/dist/mmd/server/index.mjs +1 -1
  169. package/dist/music/index.js +1 -1
  170. package/dist/music/index.mjs +1 -1
  171. package/dist/music/server/index.js +1 -1
  172. package/dist/music/server/index.mjs +1 -1
  173. package/dist/navigation/index.d.mts +93 -0
  174. package/dist/navigation/index.d.ts +93 -0
  175. package/dist/navigation/index.js +29 -0
  176. package/dist/navigation/index.js.map +1 -0
  177. package/dist/navigation/index.mjs +4 -0
  178. package/dist/navigation/index.mjs.map +1 -0
  179. package/dist/popupConfig-BznThU1O.d.mts +330 -0
  180. package/dist/popupConfig-BznThU1O.d.ts +330 -0
  181. package/dist/portfolio/index.d.mts +57 -0
  182. package/dist/portfolio/index.d.ts +57 -0
  183. package/dist/portfolio/index.js +35 -0
  184. package/dist/portfolio/index.js.map +1 -0
  185. package/dist/portfolio/index.mjs +10 -0
  186. package/dist/portfolio/index.mjs.map +1 -0
  187. package/dist/request/index.js +1 -1
  188. package/dist/request/index.mjs +1 -1
  189. package/dist/showmasterpiece/index.d.mts +2524 -0
  190. package/dist/showmasterpiece/index.d.ts +2524 -0
  191. package/dist/showmasterpiece/index.js +9681 -0
  192. package/dist/showmasterpiece/index.js.map +1 -0
  193. package/dist/showmasterpiece/index.mjs +9631 -0
  194. package/dist/showmasterpiece/index.mjs.map +1 -0
  195. package/dist/showmasterpiece/migration/index.d.mts +120 -0
  196. package/dist/showmasterpiece/migration/index.d.ts +120 -0
  197. package/dist/showmasterpiece/migration/index.js +595 -0
  198. package/dist/showmasterpiece/migration/index.js.map +1 -0
  199. package/dist/showmasterpiece/migration/index.mjs +589 -0
  200. package/dist/showmasterpiece/migration/index.mjs.map +1 -0
  201. package/dist/showmasterpiece/scripts/index.d.mts +28 -0
  202. package/dist/showmasterpiece/scripts/index.d.ts +28 -0
  203. package/dist/showmasterpiece/scripts/index.js +327 -0
  204. package/dist/showmasterpiece/scripts/index.js.map +1 -0
  205. package/dist/showmasterpiece/scripts/index.mjs +325 -0
  206. package/dist/showmasterpiece/scripts/index.mjs.map +1 -0
  207. package/dist/showmasterpiece/server/index.d.mts +2698 -0
  208. package/dist/showmasterpiece/server/index.d.ts +2698 -0
  209. package/dist/showmasterpiece/server/index.js +179 -0
  210. package/dist/showmasterpiece/server/index.js.map +1 -0
  211. package/dist/showmasterpiece/server/index.mjs +6 -0
  212. package/dist/showmasterpiece/server/index.mjs.map +1 -0
  213. package/dist/storage/index.js +8 -8
  214. package/dist/storage/index.mjs +2 -2
  215. package/dist/testYourself/admin/index.js +1 -1
  216. package/dist/testYourself/admin/index.mjs +1 -1
  217. package/dist/testYourself/index.js +2 -2
  218. package/dist/testYourself/index.mjs +2 -2
  219. package/dist/testYourself/server/index.js +1 -1
  220. package/dist/testYourself/server/index.mjs +1 -1
  221. package/dist/universalExport/index.js +154 -1195
  222. package/dist/universalExport/index.js.map +1 -1
  223. package/dist/universalExport/index.mjs +2 -1157
  224. package/dist/universalExport/index.mjs.map +1 -1
  225. package/dist/universalExport/server/index.js +5 -3
  226. package/dist/universalExport/server/index.js.map +1 -1
  227. package/dist/universalExport/server/index.mjs +4 -2
  228. package/dist/universalExport/server/index.mjs.map +1 -1
  229. package/dist/universalFile/index.js +10 -7
  230. package/dist/universalFile/index.js.map +1 -1
  231. package/dist/universalFile/index.mjs +6 -2
  232. package/dist/universalFile/index.mjs.map +1 -1
  233. package/dist/universalFile/server/index.d.mts +592 -265
  234. package/dist/universalFile/server/index.d.ts +592 -265
  235. package/dist/universalFile/server/index.js +298 -5637
  236. package/dist/universalFile/server/index.js.map +1 -1
  237. package/dist/universalFile/server/index.mjs +8 -5559
  238. package/dist/universalFile/server/index.mjs.map +1 -1
  239. package/dist/utils/index.js +12 -12
  240. package/dist/utils/index.mjs +3 -3
  241. package/package.json +36 -1
  242. package/dist/AliyunOSSProvider-4W47OFEK.mjs +0 -6
  243. package/dist/AliyunOSSProvider-HCNGDJL7.js +0 -15
  244. package/dist/ConfigService-V6ZK273Z.mjs +0 -4
  245. package/dist/LocalStorageProvider-3RVPCQB3.mjs +0 -6
  246. package/dist/LocalStorageProvider-PP7MA5OT.js +0 -15
  247. package/dist/PMXParser-RNVQL76A.mjs +0 -4
  248. package/dist/chunk-25OFOKNF.js +0 -171
  249. package/dist/chunk-25OFOKNF.js.map +0 -1
  250. package/dist/chunk-33YOJBQB.js.map +0 -1
  251. package/dist/chunk-3DXPQ4YV.mjs +0 -165
  252. package/dist/chunk-3DXPQ4YV.mjs.map +0 -1
  253. package/dist/chunk-3NHAT7D4.mjs.map +0 -1
  254. package/dist/chunk-435LATLS.mjs.map +0 -1
  255. package/dist/chunk-BJTO5JO5.mjs +0 -10
  256. package/dist/chunk-CIVO4R6N.mjs +0 -37
  257. package/dist/chunk-CIVO4R6N.mjs.map +0 -1
  258. package/dist/chunk-DGUM43GV.js +0 -12
  259. package/dist/chunk-HDMIOOZY.mjs +0 -546
  260. package/dist/chunk-HDMIOOZY.mjs.map +0 -1
  261. package/dist/chunk-HJ6MH7J7.js +0 -552
  262. package/dist/chunk-HJ6MH7J7.js.map +0 -1
  263. package/dist/chunk-KH6RQ4J5.js +0 -28
  264. package/dist/chunk-KH6RQ4J5.js.map +0 -1
  265. package/dist/chunk-Q5EDCKQA.js +0 -336
  266. package/dist/chunk-Q5EDCKQA.js.map +0 -1
  267. package/dist/chunk-YOTQG4NP.mjs +0 -314
  268. package/dist/chunk-YOTQG4NP.mjs.map +0 -1
  269. package/dist/chunk-ZGVB35L2.mjs +0 -25
  270. package/dist/chunk-ZGVB35L2.mjs.map +0 -1
  271. package/dist/chunk-ZRAW3HXA.js +0 -43
  272. package/dist/chunk-ZRAW3HXA.js.map +0 -1
  273. package/dist/chunk-ZWQJSZEY.js.map +0 -1
@@ -0,0 +1,325 @@
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
@@ -0,0 +1 @@
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"]}