@windrun-huaiin/diaomao 29.0.0 → 30.0.0
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/.env.local.txt +3 -3
- package/package.json +12 -12
- package/src/lib/site-config.ts +1 -1
- package/src/lib/site-docs-base.ts +1 -1
- package/src/mdx/blog/cheatsheet.mdx +158 -68
- package/src/mdx/blog/index.mdx +1 -1
- package/src/mdx/blog/ioc.mdx +1 -1
- package/src/proxy.ts +1 -1
package/.env.local.txt
CHANGED
|
@@ -140,14 +140,14 @@ CREDITS_ONE_TIME_EXPIRED_DAYS=30
|
|
|
140
140
|
## Project->Database->Settings->ResetPassword
|
|
141
141
|
#### Transaction Mode, IPv4 supported, great concurrency performance, Prisma prepared statements not supported
|
|
142
142
|
## ⚠️⚠️DO NOT use sslmode=require/no-verify, but config SSL cert env: SUPABASE_DB_CA_CERT
|
|
143
|
-
## DATABASE_URL="postgresql://YOURS_app.PROJECT_ID:PASSWORD@SERVER_HOST.pooler.supabase.com:6543/postgres?
|
|
143
|
+
## DATABASE_URL="postgresql://YOURS_app.PROJECT_ID:PASSWORD@SERVER_HOST.pooler.supabase.com:6543/postgres?schema=YOURS&pgbouncer=true"
|
|
144
144
|
#### Session Mode, IPv4 supported, consumes connections with slightly poorer concurrency performance, but supports Prisma prepared statements
|
|
145
|
-
## DATABASE_URL="postgresql://YOURS_app.PROJECT_ID:PASSWORD@SERVER_HOST.pooler.supabase.com:5432/postgres?
|
|
145
|
+
## DATABASE_URL="postgresql://YOURS_app.PROJECT_ID:PASSWORD@SERVER_HOST.pooler.supabase.com:5432/postgres?schema=YOURS"
|
|
146
146
|
|
|
147
147
|
# DB Config, Local Supabase Docker Image
|
|
148
148
|
## 🚨⚠️Superuser Account Access🚨⚠️, extremely high risk, will completely invalidate multi-schema permission isolation for one database
|
|
149
|
-
## DATABASE_URL="postgresql://postgres:YOURS_PASSWORD@localhost:5432/postgres?schema=YOURS"
|
|
150
149
|
## Project dedicated account access, recommended, ⚠️⚠️ windrun-huaiin/backend-core has limited safety, so in local env you should siable ssl
|
|
150
|
+
## DATABASE_URL="postgresql://postgres:YOURS_PASSWORD@localhost:5432/postgres?sslmode=disable&schema=YOURS"
|
|
151
151
|
# DB Config, replace YOUR port、db name、schema
|
|
152
152
|
DATABASE_URL="postgresql://YOURS_app:YOURS_PASSWORD@localhost:5432/postgres?sslmode=disable&schema=YOURS"
|
|
153
153
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@windrun-huaiin/diaomao",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "30.0.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -17,12 +17,12 @@
|
|
|
17
17
|
"dependencies": {
|
|
18
18
|
"@clerk/nextjs": "^7.0.5",
|
|
19
19
|
"@types/mdx": "^2.0.13",
|
|
20
|
-
"@windrun-huaiin/backend-core": "
|
|
21
|
-
"@windrun-huaiin/base-ui": "
|
|
22
|
-
"@windrun-huaiin/contracts": "
|
|
23
|
-
"@windrun-huaiin/fumadocs-local-md": "
|
|
24
|
-
"@windrun-huaiin/lib": "
|
|
25
|
-
"@windrun-huaiin/third-ui": "
|
|
20
|
+
"@windrun-huaiin/backend-core": "30.0.0",
|
|
21
|
+
"@windrun-huaiin/base-ui": "30.0.0",
|
|
22
|
+
"@windrun-huaiin/contracts": "30.0.0",
|
|
23
|
+
"@windrun-huaiin/fumadocs-local-md": "30.0.0",
|
|
24
|
+
"@windrun-huaiin/lib": "30.0.0",
|
|
25
|
+
"@windrun-huaiin/third-ui": "30.0.0",
|
|
26
26
|
"clsx": "^2.1.1",
|
|
27
27
|
"lucide-react": "^0.577.0",
|
|
28
28
|
"next": "16.1.6",
|
|
@@ -31,12 +31,12 @@
|
|
|
31
31
|
"react": "19.2.4",
|
|
32
32
|
"react-dom": "19.2.4",
|
|
33
33
|
"tailwind-merge": "^3.5.0",
|
|
34
|
-
"turbo": "^2.9.
|
|
34
|
+
"turbo": "^2.9.12"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@changesets/cli": "^2.29.8",
|
|
38
|
-
"@prisma/client": "^7.8.0",
|
|
39
38
|
"@prisma/adapter-pg": "^7.8.0",
|
|
39
|
+
"@prisma/client": "^7.8.0",
|
|
40
40
|
"@tailwindcss/postcss": "^4.2.1",
|
|
41
41
|
"@types/hast": "^3.0.4",
|
|
42
42
|
"@types/node": "^25.3.2",
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
"@types/react": "^19.2.14",
|
|
45
45
|
"@types/react-dom": "^19.2.3",
|
|
46
46
|
"@typescript-eslint/parser": "^8.56.1",
|
|
47
|
-
"@windrun-huaiin/dev-scripts": "^
|
|
48
|
-
"dotenv": "^17.4.2",
|
|
47
|
+
"@windrun-huaiin/dev-scripts": "^30.0.0",
|
|
49
48
|
"baseline-browser-mapping": "^2.10.0",
|
|
49
|
+
"dotenv": "^17.4.2",
|
|
50
50
|
"eslint": "^9.39.1",
|
|
51
51
|
"eslint-config-next": "^16.1.6",
|
|
52
52
|
"eslint-plugin-unused-imports": "^4.4.1",
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
"build:prod": "turbo run task:build:prod",
|
|
89
89
|
"task:dev": "prisma generate && next dev",
|
|
90
90
|
"task:md:build": "pnpm exec local-md build",
|
|
91
|
-
"task:build": "pnpm generate-blog-index && prisma generate && next build",
|
|
91
|
+
"task:build": "pnpm exec local-md build && pnpm generate-blog-index && prisma generate && next build",
|
|
92
92
|
"task:build:dev": "pnpm generate-blog-index && prisma generate && next build",
|
|
93
93
|
"task:build:prod": "prisma generate && next build",
|
|
94
94
|
"lint": "eslint . --ext .js,.jsx,.ts,.tsx",
|
package/src/lib/site-config.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getGlobalIcon, globalLucideIcons } from '@windrun-huaiin/base-ui/components/
|
|
1
|
+
import { getGlobalIcon, globalLucideIcons } from '@windrun-huaiin/base-ui/components/shared';
|
|
2
2
|
import { createConfiguredLocalMdSourceFactory } from '@windrun-huaiin/fumadocs-local-md/server/source';
|
|
3
3
|
import {
|
|
4
4
|
createFumaDocsBaseCompilerOptions,
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: 环境变量速查表
|
|
3
|
-
description:
|
|
3
|
+
description: 环境变量配置QuickStart
|
|
4
4
|
date: 2026-04-28
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
|
|
8
7
|
## 说明
|
|
9
8
|
|
|
10
9
|
本文约定如下:
|
|
@@ -12,6 +11,7 @@ date: 2026-04-28
|
|
|
12
11
|
- `NEXT_PUBLIC_` 开头的变量会暴露到前端
|
|
13
12
|
- 不带 `NEXT_PUBLIC_` 的变量默认按服务端敏感配置处理
|
|
14
13
|
- `YOURS-`、`XXX`、空值都表示模板占位,不是可直接使用的真实值
|
|
14
|
+
- 表格里的变量名列支持双击复制;带问号图标的字段可查看补充说明
|
|
15
15
|
|
|
16
16
|
## 不敏感配置
|
|
17
17
|
|
|
@@ -21,62 +21,86 @@ date: 2026-04-28
|
|
|
21
21
|
|
|
22
22
|
## 网站基础配置
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
这组变量定义站点身份、源码链接和全局视觉参数。
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
<CheetTable
|
|
27
|
+
title="网站基础配置"
|
|
28
|
+
description="站点级公开配置,通常会参与页面渲染、SEO、源码链接或全局 UI 展示。"
|
|
29
|
+
copyableColumns={['变量名']}
|
|
30
|
+
>
|
|
27
31
|
|
|
28
|
-
|
|
|
32
|
+
| 变量名??双击复制变量名 | 说明 |
|
|
29
33
|
| --- | --- |
|
|
30
|
-
|
|
|
31
|
-
|
|
|
34
|
+
| !!`NEXT_PUBLIC_APP_NAME` | 站点名称 |
|
|
35
|
+
| !!`NEXT_PUBLIC_BASE_URL` | 站点主域名??本地一般是 `http://localhost:3000`,生产环境应使用真实 HTTPS 域名 |
|
|
32
36
|
| `NEXT_PUBLIC_I18N_LOCALE_PREFIX_AS_NEEDED` | 国际化路由前缀策略 |
|
|
33
37
|
| `NEXT_PUBLIC_GITHUB` | 仓库主页地址 |
|
|
34
|
-
| `NEXT_PUBLIC_GITHUB_BASE_URL` |
|
|
35
|
-
| `NEXT_PUBLIC_STYLE_ICON_COLOR` | UI
|
|
38
|
+
| `NEXT_PUBLIC_GITHUB_BASE_URL` | 仓库默认分支根地址??通常用于拼接源码链接、编辑链接或文档源码入口 |
|
|
39
|
+
| `NEXT_PUBLIC_STYLE_ICON_COLOR` | UI 图标主色??支持 `purple`、`orange`、`indigo`、`emerald`、`rose` |
|
|
36
40
|
| `NEXT_PUBLIC_STYLE_SVG_ICON_SIZE` | SVG 图标尺寸 |
|
|
37
41
|
| `NEXT_PUBLIC_STYLE_WATERMARK_TEXT` | 页面水印文本 |
|
|
38
42
|
|
|
43
|
+
</CheetTable>
|
|
44
|
+
|
|
39
45
|
## Clerk 前端路由配置
|
|
40
46
|
|
|
41
|
-
这组变量控制登录、注册和候补名单等 Clerk
|
|
47
|
+
这组变量控制登录、注册和候补名单等 Clerk 页面入口与跳转行为。
|
|
42
48
|
|
|
43
|
-
|
|
49
|
+
<CheetTable
|
|
50
|
+
title="Clerk 前端路由"
|
|
51
|
+
description="这些是前端可见路由配置,用来统一 Clerk 登录注册入口和认证完成后的兜底跳转。"
|
|
52
|
+
copyableColumns={['变量名']}
|
|
53
|
+
>
|
|
44
54
|
|
|
45
55
|
| 变量名 | 说明 |
|
|
46
56
|
| --- | --- |
|
|
47
|
-
|
|
|
57
|
+
| !!`NEXT_PUBLIC_CLERK_SIGN_IN_URL` | 登录页路由 |
|
|
48
58
|
| `NEXT_PUBLIC_CLERK_SIGN_IN_FALLBACK_REDIRECT_URL` | 登录完成后的兜底跳转地址 |
|
|
49
|
-
|
|
|
59
|
+
| !!`NEXT_PUBLIC_CLERK_SIGN_UP_URL` | 注册页路由 |
|
|
50
60
|
| `NEXT_PUBLIC_CLERK_SIGN_UP_FALLBACK_REDIRECT_URL` | 注册完成后的兜底跳转地址 |
|
|
51
61
|
| `NEXT_PUBLIC_CLERK_WAITLIST_URL` | 候补名单页面路由 |
|
|
52
62
|
|
|
63
|
+
</CheetTable>
|
|
64
|
+
|
|
53
65
|
## 媒体加载与超时控制
|
|
54
66
|
|
|
55
|
-
|
|
67
|
+
这组变量用于前端媒体延迟显示和外部嵌入内容的超时控制。
|
|
56
68
|
|
|
57
|
-
|
|
69
|
+
<CheetTable
|
|
70
|
+
title="媒体加载与超时"
|
|
71
|
+
description="前端体验类配置,主要影响图片延迟展示和外部嵌入内容的等待时间。"
|
|
72
|
+
copyableColumns={['变量名']}
|
|
73
|
+
>
|
|
58
74
|
|
|
59
75
|
| 变量名 | 说明 |
|
|
60
76
|
| --- | --- |
|
|
61
77
|
| `NEXT_PUBLIC_DELAYED_IMG_SECONDS` | 延迟图片显示秒数 |
|
|
62
78
|
| `NEXT_PUBLIC_SUNO_EMBED_TIMEOUT_SECONDS` | Suno 嵌入内容超时秒数 |
|
|
63
79
|
|
|
80
|
+
</CheetTable>
|
|
81
|
+
|
|
64
82
|
## OpenRouter 与聊天配置
|
|
65
83
|
|
|
66
|
-
这组变量主要控制模型名、超时、上下文窗口,以及本地 mock
|
|
84
|
+
这组变量主要控制模型名、超时、上下文窗口,以及本地 mock 行为。
|
|
67
85
|
|
|
68
|
-
|
|
86
|
+
<CheetTable
|
|
87
|
+
title="OpenRouter 与聊天配置"
|
|
88
|
+
description="真实请求和本地 mock 共用的行为配置。生产环境应重点复核 timeout、mock 开关和模型名。"
|
|
89
|
+
copyableColumns={['变量名']}
|
|
90
|
+
>
|
|
69
91
|
|
|
70
92
|
| 变量名 | 说明 |
|
|
71
93
|
| --- | --- |
|
|
72
|
-
|
|
|
73
|
-
|
|
|
94
|
+
| !!`OPENROUTER_TIMEOUT_SECONDS` | OpenRouter 请求超时时间 |
|
|
95
|
+
| !!`NEXT_PUBLIC_OPENROUTER_MODEL_NAME` | 前端默认展示或使用的模型名 |
|
|
74
96
|
| `NEXT_PUBLIC_CHAT_CONTEXT_WINDOW_TURNS` | 多轮对话保留轮数 |
|
|
75
|
-
| `OPENROUTER_MOCK_TYPE` | mock
|
|
97
|
+
| `OPENROUTER_MOCK_TYPE` | mock 响应类型??参考下方 `OPENROUTER_MOCK_TYPE` 枚举 |
|
|
76
98
|
| `OPENROUTER_MOCK_TIMEOUT_SECONDS` | mock 响应前等待时间 |
|
|
77
99
|
| `OPENROUTER_MOCK_STREAM_CHUNK_DELAY_MS` | mock 流式分片延迟 |
|
|
78
100
|
| `OPENROUTER_MOCK_STREAM_CHUNK_SIZE` | mock 每次输出的分片大小 |
|
|
79
101
|
|
|
102
|
+
</CheetTable>
|
|
103
|
+
|
|
80
104
|
### OPENROUTER_MOCK_TYPE 参考
|
|
81
105
|
|
|
82
106
|
- `0`: Normal
|
|
@@ -88,30 +112,46 @@ date: 2026-04-28
|
|
|
88
112
|
|
|
89
113
|
## Stripe 价格与积分配置
|
|
90
114
|
|
|
91
|
-
|
|
115
|
+
这部分用于定义订阅套餐、年付折扣、一次性购买以及积分发放规则。
|
|
92
116
|
|
|
93
|
-
|
|
117
|
+
<CheetTable
|
|
118
|
+
title="订阅模式"
|
|
119
|
+
description="订阅类套餐按套餐与周期拆分,每个套餐都需要 Price ID、金额、币种和积分配置。"
|
|
120
|
+
copyableColumns={['Price ID', '金额', '币种', '积分', '折扣']}
|
|
121
|
+
>
|
|
94
122
|
|
|
95
123
|
| 套餐 | 周期 | Price ID | 金额 | 币种 | 积分 | 折扣 |
|
|
96
124
|
| --- | --- | --- | --- | --- | --- | --- |
|
|
97
|
-
| Pro | Monthly |
|
|
98
|
-
| Ultra | Monthly |
|
|
99
|
-
| Pro | Yearly |
|
|
100
|
-
| Ultra | Yearly |
|
|
125
|
+
| Pro | Monthly | !!`STRIPE_PRO_MONTHLY_PRICE_ID` | `STRIPE_PRO_MONTHLY_AMOUNT` | `STRIPE_PRO_MONTHLY_CURRENCY` | `STRIPE_PRO_MONTHLY_CREDITS` | - |
|
|
126
|
+
| Ultra | Monthly | !!`STRIPE_ULTRA_MONTHLY_PRICE_ID` | `STRIPE_ULTRA_MONTHLY_AMOUNT` | `STRIPE_ULTRA_MONTHLY_CURRENCY` | `STRIPE_ULTRA_MONTHLY_CREDITS` | - |
|
|
127
|
+
| Pro | Yearly | !!`STRIPE_PRO_YEARLY_PRICE_ID` | `STRIPE_PRO_YEARLY_AMOUNT` | `STRIPE_PRO_YEARLY_CURRENCY` | `STRIPE_PRO_YEARLY_CREDITS` | `STRIPE_PRO_DISCOUNT_PERCENT`??年付展示折扣 |
|
|
128
|
+
| Ultra | Yearly | !!`STRIPE_ULTRA_YEARLY_PRICE_ID` | `STRIPE_ULTRA_YEARLY_AMOUNT` | `STRIPE_ULTRA_YEARLY_CURRENCY` | `STRIPE_ULTRA_YEARLY_CREDITS` | `STRIPE_ULTRA_DISCOUNT_PERCENT`??年付展示折扣 |
|
|
101
129
|
|
|
102
|
-
|
|
130
|
+
</CheetTable>
|
|
131
|
+
|
|
132
|
+
<CheetTable
|
|
133
|
+
title="一次性支付"
|
|
134
|
+
description="一次性购买套餐按档位拆分,只发放一次性积分,不创建订阅周期。"
|
|
135
|
+
copyableColumns={['Price ID', '金额', '币种', '积分']}
|
|
136
|
+
>
|
|
103
137
|
|
|
104
138
|
| 档位 | Price ID | 金额 | 币种 | 积分 |
|
|
105
139
|
| --- | --- | --- | --- | --- |
|
|
106
|
-
| Less |
|
|
107
|
-
| Mid |
|
|
108
|
-
| More |
|
|
140
|
+
| Less | !!`STRIPE_ONE_TIME_LESS_PRICE_ID` | `STRIPE_ONE_TIME_LESS_AMOUNT` | `STRIPE_ONE_TIME_LESS_CURRENCY` | `STRIPE_ONE_TIME_LESS_CREDITS` |
|
|
141
|
+
| Mid | !!`STRIPE_ONE_TIME_MID_PRICE_ID` | `STRIPE_ONE_TIME_MID_AMOUNT` | `STRIPE_ONE_TIME_MID_CURRENCY` | `STRIPE_ONE_TIME_MID_CREDITS` |
|
|
142
|
+
| More | !!`STRIPE_ONE_TIME_MORE_PRICE_ID` | `STRIPE_ONE_TIME_MORE_AMOUNT` | `STRIPE_ONE_TIME_MORE_CURRENCY` | `STRIPE_ONE_TIME_MORE_CREDITS` |
|
|
143
|
+
|
|
144
|
+
</CheetTable>
|
|
109
145
|
|
|
110
146
|
## 公开开关与本地调试开关
|
|
111
147
|
|
|
112
|
-
这组变量控制 Banner、水印、延迟图片、Clerk 页面样式以及本地 markdown
|
|
148
|
+
这组变量控制 Banner、水印、延迟图片、Clerk 页面样式以及本地 markdown 调试行为。
|
|
113
149
|
|
|
114
|
-
|
|
150
|
+
<CheetTable
|
|
151
|
+
title="公开开关与本地调试开关"
|
|
152
|
+
description="多数变量会影响前端展示;调试类开关应避免在生产环境误开。"
|
|
153
|
+
copyableColumns={['变量名']}
|
|
154
|
+
>
|
|
115
155
|
|
|
116
156
|
| 变量名 | 说明 |
|
|
117
157
|
| --- | --- |
|
|
@@ -120,25 +160,33 @@ date: 2026-04-28
|
|
|
120
160
|
| `NEXT_PUBLIC_STYLE_CLERK_AUTH_IN_MODAL` | 是否以弹窗方式展示认证流程 |
|
|
121
161
|
| `NEXT_PUBLIC_STYLE_WATERMARK_ENABLED` | 是否启用水印 |
|
|
122
162
|
| `NEXT_PUBLIC_DELAYED_IMG_ENABLED` | 是否启用延迟图片策略 |
|
|
123
|
-
|
|
|
124
|
-
|
|
|
163
|
+
| !!`CLERK_DEBUG` | Clerk 调试开关??生产环境建议关闭 |
|
|
164
|
+
| !!`LOCAL_MD_*` | 本地 Markdown 缓存、调试和运行时控制 |
|
|
165
|
+
|
|
166
|
+
</CheetTable>
|
|
125
167
|
|
|
126
168
|
## 计费与积分基础配置
|
|
127
169
|
|
|
128
|
-
|
|
170
|
+
这组变量用于决定支付提供商、模拟用户价格类型,以及积分初始化和过期规则。
|
|
129
171
|
|
|
130
|
-
|
|
172
|
+
<CheetTable
|
|
173
|
+
title="计费与积分基础配置"
|
|
174
|
+
description="计费运行时的基础参数。支付提供商、初始积分和过期天数会直接影响用户权益。"
|
|
175
|
+
copyableColumns={['变量名']}
|
|
176
|
+
>
|
|
131
177
|
|
|
132
178
|
| 变量名 | 说明 |
|
|
133
179
|
| --- | --- |
|
|
134
|
-
| `MONEY_PRICE_MOCK_USER_TYPE` |
|
|
135
|
-
|
|
|
180
|
+
| `MONEY_PRICE_MOCK_USER_TYPE` | 模拟用户价格档位??参考下方 `MONEY_PRICE_MOCK_USER_TYPE` 枚举 |
|
|
181
|
+
| !!`ACTIVE_PAYMENT_PROVIDER` | 当前启用的支付服务提供商 |
|
|
136
182
|
| `CREDITS_INIT_FREE_AMOUNT` | 游客初始积分 |
|
|
137
183
|
| `CREDITS_INIT_FREE_REGISTER_AMOUNT` | 注册用户初始积分 |
|
|
138
184
|
| `CREDITS_INIT_FREE_EXPIRED_DAYS` | 免费积分过期天数 |
|
|
139
185
|
| `CREDITS_ONE_TIME_EXPIRED_DAYS` | 一次性购买积分过期天数 |
|
|
140
186
|
|
|
141
|
-
|
|
187
|
+
</CheetTable>
|
|
188
|
+
|
|
189
|
+
### MONEY_PRICE_MOCK_USER_TYPE 参考
|
|
142
190
|
|
|
143
191
|
- `0`: FreeUser
|
|
144
192
|
- `1`: MonthPro
|
|
@@ -154,7 +202,7 @@ date: 2026-04-28
|
|
|
154
202
|
|
|
155
203
|
## 数据库配置
|
|
156
204
|
|
|
157
|
-
|
|
205
|
+
项目注释里已经强调了数据库权限隔离的重要性。生产与本地环境应严格分开,并避免把高权限连接串直接用于日常开发。
|
|
158
206
|
|
|
159
207
|
<TrophyCard title="安全才是最大的豪华与自由, ⚠️🚨数据库配置" icon={<DatabaseZapIcon />}>
|
|
160
208
|
- 本地: `DATABASE_URL="postgresql://YOURS_app:YOURS_PASSWORD@localhost:5432/postgres?sslmode=disable&schema=YOURS"`
|
|
@@ -162,11 +210,17 @@ date: 2026-04-28
|
|
|
162
210
|
- 线上会话模式: `DATABASE_URL="postgresql://YOURS_app.PROJECT_ID:PASSWORD@SERVER_HOST.pooler.supabase.com:5432/postgres?sslmode=require&schema=YOURS"`
|
|
163
211
|
</TrophyCard>
|
|
164
212
|
|
|
165
|
-
|
|
213
|
+
<CheetTable
|
|
214
|
+
title="数据库配置"
|
|
215
|
+
description="数据库连接串属于高敏感配置。生产环境优先使用项目专属账号和池化连接,不要使用超级用户连接串。"
|
|
216
|
+
copyableColumns={['变量名']}
|
|
217
|
+
>
|
|
166
218
|
|
|
167
219
|
| 变量名 | 说明 |
|
|
168
220
|
| --- | --- |
|
|
169
|
-
|
|
|
221
|
+
| !!`DATABASE_URL` | Prisma 和后端服务的数据库连接串??本地常用 `sslmode=disable`;线上建议使用 Supabase pooler 事务模式并开启 SSL |
|
|
222
|
+
|
|
223
|
+
</CheetTable>
|
|
170
224
|
|
|
171
225
|
### 配置注意事项
|
|
172
226
|
|
|
@@ -176,53 +230,81 @@ date: 2026-04-28
|
|
|
176
230
|
|
|
177
231
|
## Clerk 服务端配置
|
|
178
232
|
|
|
179
|
-
|
|
233
|
+
<CheetTable
|
|
234
|
+
title="Clerk 服务端配置"
|
|
235
|
+
description="Clerk 认证相关密钥。Publishable Key 可公开,Secret Key 和 Webhook Secret 只能放在服务端。"
|
|
236
|
+
copyableColumns={['变量名']}
|
|
237
|
+
>
|
|
180
238
|
|
|
181
239
|
| 变量名 | 说明 |
|
|
182
240
|
| --- | --- |
|
|
183
241
|
| `NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY` | 前端可公开的 Clerk Key |
|
|
184
|
-
|
|
|
185
|
-
|
|
|
242
|
+
| !!`CLERK_SECRET_KEY` | 后端调用 Clerk API 使用的私钥 |
|
|
243
|
+
| !!`CLERK_WEBHOOK_SECRET` | Clerk Webhook 签名校验密钥 |
|
|
244
|
+
|
|
245
|
+
</CheetTable>
|
|
186
246
|
|
|
187
247
|
## Stripe 密钥配置
|
|
188
248
|
|
|
189
|
-
|
|
249
|
+
<CheetTable
|
|
250
|
+
title="Stripe 密钥配置"
|
|
251
|
+
description="Stripe 支付密钥。服务端私钥和 Webhook 签名密钥必须按环境隔离。"
|
|
252
|
+
copyableColumns={['变量名']}
|
|
253
|
+
>
|
|
190
254
|
|
|
191
255
|
| 变量名 | 说明 |
|
|
192
256
|
| --- | --- |
|
|
193
257
|
| `STRIPE_PUBLISHABLE_KEY` | Stripe 前端公钥 |
|
|
194
|
-
|
|
|
195
|
-
|
|
|
258
|
+
| !!`STRIPE_SECRET_KEY` | Stripe 服务端私钥 |
|
|
259
|
+
| !!`STRIPE_WEBHOOK_SECRET` | Stripe Webhook 签名密钥 |
|
|
260
|
+
|
|
261
|
+
</CheetTable>
|
|
196
262
|
|
|
197
263
|
## OpenRouter 密钥配置
|
|
198
264
|
|
|
199
|
-
|
|
265
|
+
<CheetTable
|
|
266
|
+
title="OpenRouter 密钥配置"
|
|
267
|
+
description="OpenRouter 服务端访问密钥。不要使用 `NEXT_PUBLIC_` 前缀,也不要传给浏览器。"
|
|
268
|
+
copyableColumns={['变量名']}
|
|
269
|
+
>
|
|
200
270
|
|
|
201
271
|
| 变量名 | 说明 |
|
|
202
272
|
| --- | --- |
|
|
203
|
-
|
|
|
273
|
+
| !!`OPENROUTER_API_KEY` | OpenRouter 服务端访问密钥 |
|
|
274
|
+
|
|
275
|
+
</CheetTable>
|
|
204
276
|
|
|
205
277
|
## Upstash 配置
|
|
206
278
|
|
|
207
|
-
包括 Redis 和 QStash
|
|
279
|
+
包括 Redis 和 QStash 两部分,前者偏缓存与状态,后者偏异步任务。
|
|
208
280
|
|
|
209
|
-
|
|
281
|
+
<CheetTable
|
|
282
|
+
title="Upstash 配置"
|
|
283
|
+
description="Redis REST Token、QStash Token 和签名密钥都属于服务端敏感配置;只有缓存任务 URL 可以按业务需要暴露到前端。"
|
|
284
|
+
copyableColumns={['变量名']}
|
|
285
|
+
>
|
|
210
286
|
|
|
211
287
|
| 变量名 | 说明 |
|
|
212
288
|
| --- | --- |
|
|
213
289
|
| `UPSTASH_REDIS_REST_URL` | Upstash Redis REST 地址 |
|
|
214
|
-
|
|
|
290
|
+
| !!`UPSTASH_REDIS_REST_TOKEN` | Redis REST Token |
|
|
215
291
|
| `QSTASH_URL` | QStash 服务地址 |
|
|
216
|
-
|
|
|
217
|
-
|
|
|
218
|
-
|
|
|
292
|
+
| !!`QSTASH_TOKEN` | QStash 访问令牌 |
|
|
293
|
+
| !!`QSTASH_CURRENT_SIGNING_KEY` | 当前签名校验密钥 |
|
|
294
|
+
| !!`QSTASH_NEXT_SIGNING_KEY` | 下一个轮换签名密钥??用于密钥轮换期间兼容新旧签名 |
|
|
219
295
|
| `NEXT_PUBLIC_QSTASH_CACHE_TASK_URL` | 前端可见的缓存任务接口地址 |
|
|
220
296
|
|
|
297
|
+
</CheetTable>
|
|
298
|
+
|
|
221
299
|
## 分析、代理与 FAQ 配置
|
|
222
300
|
|
|
223
|
-
这组变量包含统计分析、CDN 代理以及 FAQ
|
|
301
|
+
这组变量包含统计分析、CDN 代理以及 FAQ 服务配置。
|
|
224
302
|
|
|
225
|
-
|
|
303
|
+
<CheetTable
|
|
304
|
+
title="分析、代理与 FAQ 配置"
|
|
305
|
+
description="统计 ID 和代理 URL 属于公开配置;FAQ 写入密钥和服务端调试开关应按敏感配置处理。"
|
|
306
|
+
copyableColumns={['变量名']}
|
|
307
|
+
>
|
|
226
308
|
|
|
227
309
|
| 变量名 | 说明 |
|
|
228
310
|
| --- | --- |
|
|
@@ -230,24 +312,32 @@ date: 2026-04-28
|
|
|
230
312
|
| `NEXT_PUBLIC_MICROSOFT_CLARITY_ID` | Microsoft Clarity 跟踪 ID |
|
|
231
313
|
| `NEXT_PUBLIC_STYLE_CDN_PROXY_URL` | 前端资源代理地址 |
|
|
232
314
|
| `NEXT_PUBLIC_QSTASH_CACHE_TASK_URL` | 暴露到前端的缓存任务接口地址 |
|
|
233
|
-
|
|
|
234
|
-
|
|
|
315
|
+
| !!`WINDRUN_HUAIIN_FAQ_*` | FAQ 服务的地址、客户端身份、密钥版本与读写密钥??通配项里可能包含敏感读写密钥,不能一概视为公开配置 |
|
|
316
|
+
| !!`WINDRUN_HUAIIN_SDK_DEBUG` | FAQ SDK 调试开关 |
|
|
235
317
|
| `WINDRUN_HUAIIN_FAQ_OUTER_CACHE_ENABLED` | FAQ 外层缓存开关 |
|
|
236
318
|
|
|
319
|
+
</CheetTable>
|
|
320
|
+
|
|
237
321
|
## 敏感开关
|
|
238
322
|
|
|
239
|
-
|
|
323
|
+
这类变量不一定是密钥,但会影响调试行为、价格模拟、支付升级流程和内部状态暴露,仍然建议仅保留在服务端环境中。
|
|
240
324
|
|
|
241
|
-
|
|
325
|
+
<CheetTable
|
|
326
|
+
title="敏感开关"
|
|
327
|
+
description="这类开关会改变运行时行为或暴露调试信息。上线前应逐项复核,尤其是 mock、debug 和内部状态展示。"
|
|
328
|
+
copyableColumns={['变量名']}
|
|
329
|
+
>
|
|
242
330
|
|
|
243
331
|
| 变量名 | 说明 |
|
|
244
332
|
| --- | --- |
|
|
245
|
-
|
|
|
246
|
-
|
|
|
247
|
-
|
|
|
248
|
-
|
|
|
249
|
-
|
|
|
250
|
-
|
|
|
333
|
+
| !!`SHOW_FINGERPRINT_STATUS` | 是否显示指纹状态 |
|
|
334
|
+
| !!`OPENROUTER_ENABLE_MOCK` | 是否启用 OpenRouter mock |
|
|
335
|
+
| !!`NEXT_PUBLIC_OPENROUTER_DEBUG` | 是否开启前端调试输出??虽然带 `NEXT_PUBLIC_`,但生产环境仍应谨慎启用 |
|
|
336
|
+
| !!`ENABLE_STRIPE_SUBSCRIPTION_UPGRADE` | 是否允许订阅升级流程 |
|
|
337
|
+
| !!`MONEY_PRICE_MOCK_USER_ENABLED` | 是否启用价格模拟用户 |
|
|
338
|
+
| !!`PRISMA_DEBUG` | 是否输出 Prisma 调试信息 |
|
|
339
|
+
|
|
340
|
+
</CheetTable>
|
|
251
341
|
|
|
252
342
|
## 建议的分层理解
|
|
253
343
|
|
package/src/mdx/blog/index.mdx
CHANGED
package/src/mdx/blog/ioc.mdx
CHANGED
package/src/proxy.ts
CHANGED
|
@@ -103,7 +103,7 @@ export default clerkMiddleware(
|
|
|
103
103
|
export const config = {
|
|
104
104
|
matcher: [
|
|
105
105
|
// Skip Next.js internals and all static files, but include API routes
|
|
106
|
-
"/((?!_next|\\.well-known|sitemap.xml?|robots.txt?|[^?]
|
|
106
|
+
"/((?!_next|\\.well-known|sitemap.xml?|robots.txt?|[^?]*\\.(?:html?|css|js(?!on)|jpe?g|webp|png|gif|svg|ttf|woff2?|ico|csv|docx?|xlsx?|zip|webmanifest)(?:$|\\?)).*)",
|
|
107
107
|
// Include API routes explicitly
|
|
108
108
|
"/api/(.*)",
|
|
109
109
|
],
|