# Dependencies
node_modules/

# Build output
dist/
dist-ssr/

# Logs
logs/
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*

# Runtime (egg)
run/
.wb_*/
.wb_check_state.js
.egg-config.json

# Env / secrets (defense-in-depth; real .env.production lives outside this repo)
.env*
!.env.example

# 本地开发配置（Egg 仅在 serverEnv=local 时加载，生产不加载）
# 含本地 DB 口令，故排除入库；如需团队共享请提交不含口令的 config.local.example.js
config/config.local.js

# sequelize-cli 数据库配置（含本地 DB 口令）—— 2026-09-23 入库口令处置 P1
# 仓库内保留不含口令的 database/config.json.example；使用前复制并填入口令：
#   cp database/config.json.example database/config.json
database/config.json

# Coverage / cache
coverage/
.cache/

# Agent / tooling state
.workbuddy/

# Editor
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store

# Uploaded / runtime data under app/public (keep templates as source)
app/public/uploads/
app/public/answers/
app/public/works/
app/public/materials/
app/public/news/
app/public/carousel/
app/public/tmp/
app/public/exports/

# Tests —— 上传目的=运行必须：`test/` 下的夹具 / 临时物 / 子目录**不入库**。
# 例外（P1 ㉚a · R134 候选 ㊴ 修复）：`test/` 顶层的 `*.test.js` 最小单测集**必须入库** ——
#   `scripts/ci-gates.sh` 第 26 步（裸 mocha）直跑它；若被忽略则「本地绿 ≠ 可复现绿」
#   （干净检出上该步拿不到文件 ⇒ 必红）。
# 注：此处必须用 `test/*` 而非 `test/` —— 目录被整体排除后 git 不再进入该目录，
#     其内文件无法用 `!` 反忽略（R134 已实测：`test/` + `!test/lib.test.js` 无效）。
#     改用 `test/*` 后子目录（如 `test/sub/`）与其它文件仍被忽略，政策不破。
test/*
!test/*.test.js
test_dir/
