Files
dingding_hrm/docs/00-ai-start-here.md
T

97 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AI 开发入口
> 给 AI coding agent 的项目入口。这里负责导航和流程,硬性编码规则见 [`05-coding-rules.md`](05-coding-rules.md)。
## 一句话定位
Dingding HRM 是一个 Go + Gin + SQLite 本地 Web 应用,用于同步、浏览、搜索和导出钉钉多站点部门与人员数据。
第一版 MVP 只做:多站点配置、手动全量同步、部门树浏览、人员搜索筛选、JSON/CSV 导出、Gin 托管原生前端。
## 必读顺序
每次开始写代码前,按这个顺序建立上下文:
1. [`01-vision.md`](01-vision.md):为什么做、为谁做、什么不做。
2. [`02-requirements.md`](02-requirements.md):MVP 要什么、怎么算达成。
3. [`03-tech-stack.md`](03-tech-stack.md):既定技术选型。
4. [`04-architecture.md`](04-architecture.md):系统结构、职责划分、数据模型和关键难点。
5. [`05-coding-rules.md`](05-coding-rules.md):写代码前必须遵守的规则。
6. [`06-tasks.md`](06-tasks.md):领取本轮唯一任务。
7. [`current-state.md`](current-state.md):当前代码现实、可运行命令、下一步任务。
仓库根目录的 `AGENTS.md`、`CLAUDE.md` 也必须先读。仓库级规则优先。
## 当前阶段
当前项目处于:MVP 起步,尚未初始化 Go 代码。
优先路径:
1. Phase 0:Go + Gin + SQLite + 静态文件托管的最小可运行地基。
2. Phase 1:验证钉钉 token、部门、用户接口封装。
3. Phase 2:实现同步入库和查询 API。
4. Phase 3:实现原生前端部门浏览、人员搜索、导出。
5. Phase 4:验收、打包、运行文档。
## 领取任务规则
从 [`06-tasks.md`](06-tasks.md) 领取任务时:
- 只领取第一个状态为 `TODO` 且依赖均为 `DONE` 的任务。
- 开始前把该任务状态改为 `DOING`。
- 本轮只完成这一个任务。
- 验收通过后把状态改为 `DONE`。
- 做完即停,汇报验证结果,等待下一步指令。
如果代码实际状态和任务看板冲突,先说明冲突,不要擅自跳步。
## MVP 边界
MVP 只做:
- 站点配置管理,保存多站点 app_key / app_secret。
- 手动全量同步部门和人员数据。
- 后端缓存并刷新 access_token。
- 部门树浏览。
- 人员列表、关键词搜索、部门筛选、分页。
- JSON/CSV 导出。
- 原生 HTML/CSS/JavaScript 前端,由 Gin 托管。
MVP 不做:
- 登录、多用户权限、审计审批。
- 钉钉回调事件订阅。
- 复杂组织变更历史追踪。
- 前端框架、组件库或独立前端构建链。
- 云部署、Docker、分布式任务队列。
## 事实来源
项目事实只信:
- `docs/` 中已定稿的需求、技术栈、架构、API 和路由。
- 后续代码中的数据库迁移和模型定义。
- 实现过程中通过钉钉 OpenAPI 官方响应和本地测试确认的字段事实。
不要把以下内容当事实来源:
- 未导入仓库的旧 Python 源码猜测。
- 临时 JSON 导出中未被文档确认的字段含义。
## 验证命令
当前尚未初始化代码。初始化后维护这些命令:
```powershell
go test ./...
go build ./...
```
说明:
- 改后端后跑:`go test ./...`。
- 改构建或入口后跑:`go build ./...`。
- 改静态前端后至少启动 Gin 并人工访问 `/` 与相关 `/api/*`。
- 如果命令当前不可运行,回复里必须说明原因。