docs: initialize harness coding docs

This commit is contained in:
ila
2026-06-22 22:23:17 +08:00
commit e871103760
13 changed files with 1209 additions and 0 deletions
+86
View File
@@ -0,0 +1,86 @@
# 路由与页面结构
> 本文约定原生前端页面路由、页面职责和组件归属。
## 页面路由
MVP 不使用前端路由框架。Gin 对以下路径都返回同一个 `web/index.html`,页面 JS 根据 `location.pathname` 渲染对应视图。
| 路由 | 页面 | MVP 说明 |
| --- | --- | --- |
| `/` | 仪表盘 | 展示站点概览、同步状态和快速入口 |
| `/sites` | 站点配置 | 管理站点 app_key / app_secret |
| `/departments` | 部门浏览 | 站点切换、部门树、部门成员 |
| `/users` | 人员搜索 | 搜索筛选、分页表格、导出 |
| `/logs` | 同步日志 | 查看同步记录和错误信息 |
## 页面职责
### 仪表盘
- 展示每个站点的部门数、人员数、最后同步时间和状态。
- 提供同步按钮。
- 提供进入部门浏览、人员搜索、站点配置的入口。
### 站点配置
- 展示站点列表。
- 新增、编辑、删除站点。
- app_secret 输入后保存,但列表不明文展示。
### 部门浏览
- 左侧展示部门树。
- 右侧展示当前部门下人员。
- 支持站点切换。
- 空部门、加载失败、未同步状态需要有明确提示。
### 人员搜索
- 支持站点切换。
- 支持关键词、部门、状态筛选。
- 支持分页。
- 支持导出当前筛选结果。
### 同步日志
- 按站点和状态筛选日志。
- 展示开始时间、结束时间、类型、状态、错误信息。
## 前端文件建议
```text
web/
├── index.html
└── assets/
├── style.css
├── app.js
├── api.js
├── state.js
├── dashboard.js
├── sites.js
├── departments.js
├── users.js
└── logs.js
```
## 组件建议
这里的组件是 JS 函数或小模块,不是框架组件。
| 模块 | 归属 | 说明 |
| --- | --- | --- |
| `renderShell` | 全局 | 页面框架、导航、站点选择入口 |
| `apiFetch` | 全局 | 封装 fetch、JSON 解析和错误展示 |
| `renderDashboard` | 仪表盘 | 渲染站点统计和同步按钮 |
| `renderSiteForm` | 站点配置 | 新增 / 编辑站点 |
| `renderDeptTree` | 部门浏览 | 将平铺部门列表组装为树 |
| `renderUserTable` | 部门 / 人员页 | 渲染分页人员表格 |
| `renderLogs` | 同步日志 | 渲染日志列表 |
## 导航规则
- 顶部导航固定展示:仪表盘、站点配置、部门浏览、人员搜索、同步日志。
- 站点选择应尽量保留在 URL 查询参数中,例如 `?site_id=1`。
- 人员页筛选条件应保留在 URL 查询参数中,方便刷新后恢复。
- API 失败时在页面内展示错误,不静默失败。