3636
3737 ``` Markdown
3838 # 标题1
39- ## 标题2
39+ ## 标题2
4040 ```
41-
41+
4242 每点击一行,左边都有加号按钮,可以快捷添加你要的内容块
4343
4444 ![ image.png] ( https://pub-fa1987abe8794da6ba45cdf9284954b3.r2.dev/users/7/contributing-guide/1765632611285-image.png )
7171
7272 点击右上角的commit changes
7373
74-
75744 . 点击 ` Commit changes ` ,若是第一次投稿,GitHub 会提示先 Fork 仓库;按提示操作一次即可
7675 ![ fork] ( ./public//git_assets/need_fork.png )
7776
@@ -182,31 +181,34 @@ git push origin doc_raven
182181** 解决方案** :
183182
1841831 . ** 确保使用正确的 pnpm 版本** :
184+
185185 ``` bash
186186 # 检查当前版本
187187 pnpm --version
188-
188+
189189 # 应该显示: 10.20.0
190190 # 如果不是,请使用以下命令之一:
191-
191+
192192 # 方法 1: 使用 corepack(推荐)
193193 corepack enable
194194 corepack prepare pnpm@10.20.0 --activate
195-
195+
196196 # 方法 2: 全局安装
197197 npm install -g pnpm@10.20.0
198198 ```
199199
2002002 . ** 验证版本一致性** :
201+
201202 ``` bash
202203 pnpm check:pnpm-version
203204 ```
204205
2052063 . ** 如果 lockfile 已经被错误修改** :
207+
206208 ``` bash
207209 # 丢弃 lockfile 的修改
208210 git checkout pnpm-lock.yaml
209-
211+
210212 # 确认使用正确的 pnpm 版本后重新安装
211213 pnpm install
212214 ```
@@ -217,10 +219,12 @@ git push origin doc_raven
217219#### 问题:CI 检查失败,提示 lockfile 不一致
218220
219221这通常意味着:
222+
2202231 . 你本地使用的 pnpm 版本与项目要求的不一致
2212242 . lockfile 被错误修改或损坏
222225
223226** 解决方案** :
227+
224228``` bash
225229# 1. 确认并切换到正确的 pnpm 版本
226230corepack enable
@@ -239,12 +243,14 @@ git status
239243#### 问题:为什么要使用 corepack 而不是全局安装?
240244
241245** Corepack 的优势** :
246+
242247- 自动读取 ` package.json ` 的 ` packageManager ` 字段
243248- 每个项目可以使用不同的 pnpm 版本而不冲突
244249- 新贡献者克隆项目后自动使用正确的版本
245250- 减少版本不匹配导致的问题
246251
247252** 如何为团队启用 corepack** :
253+
248254``` bash
249255# 一次性设置,之后所有项目都会受益
250256corepack enable
@@ -305,13 +311,13 @@ pnpm check:pnpm-version
305311#### ⚠️ 为什么版本一致性很重要?
306312
307313不同版本的 pnpm 在序列化 ` pnpm-lock.yaml ` 时可能使用不同的格式(如单引号 vs 双引号),导致:
314+
308315- PR 中产生大量无意义的 diff
309316- 增加代码审查负担
310317- 可能导致 CI 检查失败
311318
312319我们的 CI 工作流会自动检查版本一致性,如果检测到版本不匹配会导致构建失败。
313320
314-
315321### 3. 本地开发
316322
317323运行开发服务器:
@@ -343,6 +349,57 @@ pnpm postinstall # 同步必要的 Husky/Fumadocs 配置
343349
344350---
345351
352+ ## 🔐 基础设施访问
353+
354+ 项目除了 GitHub 仓库,还有几个对外/对内服务。所有登录都走** 同一个 GitHub 账号** ,不再有每处独立密码。
355+
356+ ### 服务一览
357+
358+ | 用途 | URL | 谁能进 | 登录方式 |
359+ | ------------ | ----------------------------------------------- | --------------------------------------- | --------------------------------------- |
360+ | 主站 | ` https://involutionhell.com ` | 所有登录用户 | GitHub OAuth |
361+ | 后端 API | ` https://api.involutionhell.com ` | — (内部调用) | sa-token (cookie/header) |
362+ | ** 密钥管理** | ` https://secrets.involutionhell.com ` | ** 所有登录协作者** ,按 project 权限查看 | GitHub OAuth(复用主站 App) |
363+ | 数据库管理 | ` https://api.involutionhell.com/admin/pgadmin/ ` | ** 仅 admin** | 主站 cookie 自动通过 Caddy forward_auth |
364+ | 网站分析 | ` https://umami.involutionhell.com ` | ** 仅 admin** | 本地 umami 账号 |
365+
366+ ### 怎么拿到 admin / 密钥权限
367+
368+ 1 . ** 申请 admin 角色** :现有 superadmin 在 ` /admin/users ` 页面勾选即可授予(产品规则:superadmin 本身不能通过 API 变动)
369+ 2 . ** 申请 Infisical 项目访问** :登录 ` secrets.involutionhell.com ` 后(GitHub OAuth 自动建账号),联系现有 admin 加到对应 project。Infisical 内部按 environment 分 ` dev ` / ` prod ` / ` shared `
370+ 3 . ** 不要自己手动 INSERT ` user_accounts ` 表挂 admin 角色** —— OAuth 登录按 ` github_<id> ` 匹配 username,手工 insert 的人类 username 行永远是孤儿,用户登录后会另开一行丢 admin。历史上有人踩过
371+
372+ ### ` .env ` 文件规则
373+
374+ - 本地 dev:
375+ - 后端:` involution-hell-project/backend/.env ` (` set -a && . ./.env && set +a ` 注入 Spring Boot)
376+ - 前端:` involution-hell-project/frontend/.env `
377+ - 生产:` /home/ubuntu/involution-hell/.env ` (** 只在部署机** ,不在仓库里;CI 不覆盖)
378+ - 两份 .env ** 故意有差异** (PGHOST / SERVER_PORT / AUTH_URL)—— 不要强行统一,参见 wiki [ Changelog 2026-04-17] ( https://github.com/InvolutionHell/involutionhell/wiki/Changelog-2026-04-17-Self-Hosted-Infra ) 的架构说明
379+ - ** 所有秘密值** 将来会迁到 Infisical 单一真源,` .env ` 只存极少数 bootstrap 配置。改动期间前后仓两份并存,改值要同步改两处
380+
381+ ### 开发者自助入口
382+
383+ 登录主站后,访问** 自己** 的个人主页 ` /u/<你的 github id> ` ,在顶部按钮栏能看到:
384+
385+ - ** 密钥管理 ↗** (所有登录协作者可见) → 跳 Infisical
386+ - ** 管理员界面** (仅 admin 可见) → 跳 ` /admin `
387+ - ** 编辑** (仅本人可见) → 跳 profile 编辑
388+
389+ 这些按钮都是 "只有本人看自己主页时才渲染",路人看不到。
390+
391+ ### Spring Boot 后端本地启动
392+
393+ ``` bash
394+ cd involution-hell-project/backend
395+ set -a && . ./.env && set +a # .env 里有 SERVER_PORT=8081 等
396+ ./mvnw spring-boot:run
397+ ```
398+
399+ 前端 ` BACKEND_URL ` 指 ` http://localhost:8081 ` ,前后一致。
400+
401+ ---
402+
346403## 📚 文档规范
347404
348405所有文档放在 ` docs/ ` 目录。
0 commit comments