204 lines
4.2 KiB
Markdown
204 lines
4.2 KiB
Markdown
# 开发工作流
|
||
|
||
> 用途:给本地 Hermes 和开发人员提供统一的开发、测试、提交流程。具体命令以 `package.json`、`server-rs/Cargo.toml`、`AGENTS.md` 和相关 `docs/` 最新文档为准。
|
||
|
||
## 标准任务流程
|
||
|
||
```text
|
||
同步代码 → 读取 AGENTS.md → 读取 .hermes/shared-memory → 查找/完善 docs → 制定计划 → 小步实现 → 本地验证 → 更新文档/记忆 → 提交
|
||
```
|
||
|
||
## 建议启动方式
|
||
|
||
在项目根目录启动 Hermes:
|
||
|
||
```bash
|
||
cd /path/to/Genarrative
|
||
hermes
|
||
```
|
||
|
||
在本机当前常见路径为:
|
||
|
||
```bash
|
||
/home/dsk/workspace/Genarrative
|
||
```
|
||
|
||
其他开发者以自己本地实际路径为准,不要把个人绝对路径写入共享文档作为通用规则。
|
||
|
||
## 开发前检查清单
|
||
|
||
- [ ] 当前分支是否正确
|
||
- [ ] 是否已拉取最新代码
|
||
- [ ] 是否阅读 `AGENTS.md`
|
||
- [ ] 是否阅读 `.hermes/shared-memory/` 相关文件
|
||
- [ ] 是否阅读 `README.md` 中的运行和检查命令
|
||
- [ ] 是否阅读 `docs/README.md` 及任务相关分类 README
|
||
- [ ] 是否存在足够具体的 PRD / 设计 / 技术文档
|
||
- [ ] 是否明确测试、验收和文档更新方式
|
||
|
||
## 本地运行命令
|
||
|
||
安装依赖:
|
||
|
||
```bash
|
||
npm install
|
||
```
|
||
|
||
完整联调开发环境:
|
||
|
||
```bash
|
||
npm run dev
|
||
```
|
||
|
||
该命令会启动:
|
||
|
||
- SpacetimeDB standalone
|
||
- Rust `api-server`
|
||
- 主站 Vite
|
||
- 后台 Vite
|
||
|
||
单独启动前端:
|
||
|
||
```bash
|
||
npm run dev:web
|
||
```
|
||
|
||
单独启动 Rust API server:
|
||
|
||
```bash
|
||
npm run api-server
|
||
```
|
||
|
||
查看本地 Rust/SpacetimeDB 日志:
|
||
|
||
```bash
|
||
npm run dev:rust:logs
|
||
```
|
||
|
||
后台管理前端:
|
||
|
||
```bash
|
||
npm run admin-web:dev
|
||
npm run admin-web:build
|
||
npm run admin-web:typecheck
|
||
```
|
||
|
||
SpacetimeDB bindings 生成:
|
||
|
||
```bash
|
||
npm run spacetime:generate
|
||
```
|
||
|
||
## 常用检查命令
|
||
|
||
编码检查:
|
||
|
||
```bash
|
||
npm run check:encoding
|
||
```
|
||
|
||
ESLint:
|
||
|
||
```bash
|
||
npm run lint:eslint
|
||
```
|
||
|
||
类型检查:
|
||
|
||
```bash
|
||
npm run typecheck
|
||
```
|
||
|
||
综合 lint:
|
||
|
||
```bash
|
||
npm run lint
|
||
```
|
||
|
||
测试:
|
||
|
||
```bash
|
||
npm run test
|
||
```
|
||
|
||
生产构建:
|
||
|
||
```bash
|
||
npm run build
|
||
```
|
||
|
||
内容检查:
|
||
|
||
```bash
|
||
npm run check:data
|
||
npm run check:overrides
|
||
npm run check:smoke
|
||
npm run check:content
|
||
```
|
||
|
||
全量检查:
|
||
|
||
```bash
|
||
npm run check
|
||
```
|
||
|
||
DDD 边界检查:
|
||
|
||
```bash
|
||
npm run check:server-rs-ddd
|
||
```
|
||
|
||
## 后端相关默认验证
|
||
|
||
后端修改后,按 DDD 文档中的验收命令执行。涉及 API smoke 时:
|
||
|
||
- 使用 `npm run api-server` 重新拉起后端。
|
||
- 检查 `/healthz`。
|
||
- 执行对应自动测试。
|
||
- 涉及 SpacetimeDB 表、reducer、procedure、row shape 或绑定变化时,同步更新 `migration.rs`、表目录和生成绑定。
|
||
|
||
关键文档:
|
||
|
||
- `docs/technical/CURRENT_BACKEND_IMPLEMENTATION_BASELINE_2026-04-25.md`
|
||
- `docs/technical/SERVER_RS_DDD_FULL_REFACTOR_2026-04-28.md`
|
||
- `docs/technical/SERVER_RS_DDD_PARALLEL_TASKLIST_2026-04-29.md`
|
||
- `docs/technical/SERVER_RS_DDD_G1_CONTRACT_AND_ROUTE_MATRIX_2026-04-29.md`
|
||
- `docs/technical/SPACETIMEDB_SCHEMA_CHANGE_CONSTRAINTS.md`
|
||
- `docs/technical/SPACETIMEDB_TABLE_CATALOG.md`
|
||
|
||
## 前端相关默认验证
|
||
|
||
前端修改后,应根据修改范围选择:
|
||
|
||
- `npm run check:encoding`
|
||
- `npm run lint:eslint`
|
||
- `npm run typecheck`
|
||
- `npm run test`
|
||
- 页面交互 smoke
|
||
- 移动端视口检查
|
||
|
||
前端原则:
|
||
|
||
- 移动端优先,再兼容网页端。
|
||
- 页面只展示后端返回的状态,不自行计算结论型业务状态。
|
||
- 优先复用现有面板、抽屉、弹窗,不新建独立大系统。
|
||
- 不在 UI 中默认写功能说明类文本。
|
||
- 弹出独立面板的交互不要实现成在当前面板下方追加内容。
|
||
|
||
## 文档更新规则
|
||
|
||
- 工程修改要同步更新对应文档。
|
||
- 如果没有现成文档,新文档统一放入 `docs/` 下合适分类。
|
||
- `.hermes/shared-memory/` 只记录高频、长期、团队共享的摘要和索引,不替代完整 PRD/技术文档。
|
||
- 如果 `.hermes/shared-memory/` 与代码或 `docs/` 冲突,以代码和最新 `docs/` 为准,并同步修正共享记忆。
|
||
|
||
## 提交前建议让 Hermes 执行
|
||
|
||
```text
|
||
请检查当前 git diff,指出:
|
||
1. 是否违反 AGENTS.md 或 .hermes/shared-memory 约定;
|
||
2. 是否需要补充 docs;
|
||
3. 是否有长期知识需要写入 .hermes/shared-memory;
|
||
4. 建议的测试命令和提交信息。
|
||
```
|