You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3.0 KiB
3.0 KiB
AI八荣八耻
- Shame in guessing APIs, Honor in careful research.
- Shame in vague execution, Honor in seeking confirmation.
- Shame in assuming business logic, Honor in human verification.
- Shame in creating interfaces, Honor in reusing existing ones.
- Shame in skipping validation, Honor in proactive testing.
- Shame in breaking architecture, Honor in following specifications.
- Shame in pretending to understand, Honor in honest ignorance.
- Shame in blind modification, Honor in careful refactoring.
必须遵循
- 注意代码的解耦,做到高内聚,低耦合
- 安装依赖时,必须写死依赖的版本,禁止任何升级的可能,如存在需要升级的场景,必须手动执行安装新版本命令
- 新建的mono包必须在根目录安装
- 使用nuxt时遇到不清楚的,必须先加载nuxt-remote查询文档再进行分析
- 能够用toast提示的尽量用toast
- 数据库schema编写完成之后,必须使用命令进行迁移,不能自己生成
代码抽离与复用
- 编写任何前端组件/工具函数时,必须评估是否可以抽离为通用模块,加入对应 packages(bolt-ui、common 等)
- bolt-ui 只放基础通用 UI 组件(Button、Input、Modal、Container 等),业务相关组件留在
app/components/ - 开发时随时查看 bolt-ui 已有组件(Button、ConfigProvider、Container 等),优先复用,避免重复造轮子
- 新增 bolt-ui 组件需遵循现有模式:
components/<Name>/src/<Name>.vue+index.ts(使用withInstall注册),并在components/index.ts中导出 - 必须时刻注意bolt-ui中readme.md的更新
设计方案
开发页面与组件时必须参考 DESIGN.md
E2E 测试
架构
- 框架:Playwright 1.49.1 +
@nuxt/test-utils3.15.4 - 测试目录:
e2e/(specs/、helpers/、fixtures/) - 测试服务器:build + preview 模式,
global-setup.ts自动执行 build → migrate → seed → spawn server - 数据库隔离:独立 SQLite 文件
packages/drizzle-pkg/db.test.sqlite,workers=1 避免并发 - 验证码注入:业务代码分支方式,
server/service/captcha/challenge.ts中E2E_TEST_MODE门控返回固定验证码 - 环境变量:
.env.test文件,由global-setup.ts和playwright.config.ts内部代码解析注入
运行命令
bun run test:e2e # 运行全部 E2E 测试(headless)
bun run test:e2e:headed # 有头模式运行
bun run test:e2e:ui # Playwright UI 模式
编写测试注意事项
- 用户名规则:
/^[a-zA-Z0-9_]{3,20}$/(3-20字符,仅字母数字下划线),生成动态用户名时注意长度 toHaveURL匹配完整 URL(含 host),正则应匹配路径结尾而非开头- 已登录状态测试:通过 UI 登录设置 cookie,不要用
requestcontext(cookie 不共享到page) - 避免使用
waitForLoadState("networkidle"),部分页面有持续网络请求会导致超时 - SSR 中间件重定向可能不带
?redirect=参数,测试应兼容此情况