3.7 KiB
3.7 KiB
贡献指南
感谢参与本项目!请遵循以下规范提交贡献。
开发环境准备
# 1. 安装依赖
npm install
# 2. 准备环境变量
cp .env.example .env
# 编辑 .env 填入实际配置
# 3. 初始化数据库
npm run db:push
# 4. 启动开发服务器
npm run dev
强制工作流程
所有代码改动前必须先查阅架构文档:
- 阅读
docs/architecture/004_architecture_impact_map.md了解架构设计意图 - 运行
npm run arch:scan更新 arch.db - 运行
npm run arch:query -- module-deps查目标模块依赖 - 阅读
src/modules/[模块]/README.md了解模块工作流程 - 查
docs/troubleshooting/known-issues.md读相关经验
代码改动后必须:
- 运行
npx tsc --noEmit确保零错误 - 运行
npm run lint确保零错误 - 运行
npm run arch:scan更新 arch.db - 若架构设计意图变化,同步更新 004 文档
- 若发现新场景→技术映射,更新 known-issues.md
提交规范
Conventional Commits 格式
<type>(<scope>): <description>
[optional body]
[optional footer]
类型(type):
feat: 新功能fix: Bug 修复docs: 文档变更style: 代码格式(不影响功能)refactor: 重构(既不是新功能也不是修复)test: 测试相关chore: 构建/工具/依赖变更perf: 性能优化ci: CI/CD 变更
示例:
feat(arch-scan): add @public JSDoc tag exemption mechanism
fix(permissions): fix parent module 6 Action permission violations
refactor: split 5 oversized files into domain-specific subfiles
docs(architecture): rewrite 004 as architecture design document
提交前检查
husky + lint-staged 会在 git commit 时自动执行:
- ESLint 检查暂存文件
- Prettier 格式化暂存文件
- commitlint 校验 commit message 格式
如果检查失败,请修复后重新提交。
架构约束
严格三层架构
app → modules → shared
app/只能调用modules/的 Server Actions 和 data-accessmodules/之间通过对方 data-access 通信,不直接查询对方 DB 表shared/不得反向依赖modules/*或app/*
代码质量规则
- 禁止
any,未知类型用unknown+ 类型守卫 - 禁止
as断言(除非从unknown转换,需注释原因) - 函数返回值必须显式标注,特别是
Promise<T> - 仅用于类型的导入使用
import type - Server Action 必须调用
requirePermission()(或加@public标记豁免) - 前端权限检查使用
usePermission().hasPermission(),禁止role === "xxx"硬编码 - 单文件行数:组件 ≤500,actions/data-access ≤800,硬限 1000
设计令牌规范
- 禁止硬编码颜色(
#hex),使用hsl(var(--*))或 Tailwind 类 - 禁止硬编码字体(
'Inter'),使用var(--font-family-*) - 禁止 Tailwind 任意值(
w-[137px]),映射到--space-*或默认阶梯
文档同步
需要同步架构图的场景
- 新增/删除/重命名导出函数、组件、Hook、类型
- 修改函数签名(参数、返回类型)
- 修改权限点或角色-权限映射
- 新增/删除数据库表、路由页面、API 路由
- 修改模块间依赖关系
- 新增模块
同步方式
- 修改源码后运行
npm run arch:scan更新 arch.db(强制) - 若架构设计意图变化,同步更新
docs/architecture/004_architecture_impact_map.md - 若发现新"场景→技术"映射,更新
docs/troubleshooting/known-issues.md
问题报告
- 构建/lint/tsc 报错 → 记录到
docs/troubleshooting/known-issues.md"全局经验"分区 - 运行时异常 → 记录到"模块经验"分区
- 框架/库版本兼容问题 → 记录到"全局经验: Next.js 配置与运行时"