prototype generated

This commit is contained in:
2026-08-13 08:51:04 +08:00
parent 2dbf1f7952
commit 64a27a20c4
83 changed files with 6112 additions and 0 deletions
+41
View File
@@ -0,0 +1,41 @@
# 领域文档
本文件说明工程技能在分析和修改仓库前,应如何读取领域文档。
## 开始分析前
按需读取:
- 根目录的 `CONTEXT.md`
- 如果将来出现 `CONTEXT-MAP.md`,由它定位当前主题对应的领域上下文
- `docs/adr/` 中与当前修改相关的架构决策记录
文件不存在时静默继续,不需要预先创建空文件。领域词汇和架构决策应在实际形成结论时按需补充。
## 当前布局
本仓库采用单上下文结构:
```text
/
├── CONTEXT.md
└── docs/
└── adr/
```
`CONTEXT.md` 只保存领域术语和统一语言;`docs/adr/` 保存具有长期影响的架构决策。
## 使用统一领域语言
Issue 标题、规格、重构建议、测试名称和实现说明应使用 `CONTEXT.md` 中定义的术语,不应改用其中明确要求避免的同义词。
如果需要使用的概念尚未出现在词汇表中,应先判断:
1. 是否正在引入项目并不存在的新术语;
2. 是否确实发现领域词汇缺口。
真实的领域词汇缺口应通过领域建模流程补充。
## 发现 ADR 冲突时
如果计划或实现与现有 ADR 冲突,必须明确指出冲突及理由,不得静默覆盖既有决策。
+32
View File
@@ -0,0 +1,32 @@
# Issue tracker:本地 Markdown
本仓库的需求、规格和实施任务使用 `.scratch/` 下的 Markdown 文件管理。
## 约定
- 每个功能使用独立目录:`.scratch/<feature-slug>/`
- 功能规格为:`.scratch/<feature-slug>/spec.md`
- 实施任务存放于:`.scratch/<feature-slug>/issues/<NN>-<slug>.md`
- 任务从 `01` 开始编号,每个任务使用独立文件,不创建合并的 tickets 文件
- Triage 状态记录在任务文件顶部附近的 `Status:`
- 评论和讨论记录追加到文件底部的 `## Comments` 小节
## 发布到 Issue Tracker
当技能要求“发布到 Issue Tracker”时,在 `.scratch/<feature-slug>/` 下创建对应文件;目录不存在时可以创建。
## 获取任务
当技能要求获取相关任务时,读取用户提供的任务路径或任务编号对应的文件。
## Wayfinding 约定
- 地图:`.scratch/<effort>/map.md`
- 子任务:`.scratch/<effort>/issues/NN-<slug>.md`
- 子任务通过 `Type:` 记录类型:`research``prototype``grilling``task`
- 子任务通过 `Status:` 记录 `claimed``resolved`
- 依赖关系使用 `Blocked by: NN, NN`
- 所有依赖任务为 `resolved` 后,当前任务才解除阻塞
- 可执行任务按编号顺序领取
- 领取时先将状态设为 `claimed` 并保存
- 完成时在 `## Answer` 下记录结果,将状态改为 `resolved`,并向 `map.md` 的 Decisions-so-far 添加摘要和链接
+13
View File
@@ -0,0 +1,13 @@
# Triage Labels
工程技能使用五类标准 triage 角色。本文件记录标准角色与本仓库实际状态字符串的对应关系。
| 标准角色 | 本仓库状态 | 含义 |
| --- | --- | --- |
| `needs-triage` | `needs-triage` | 等待维护者评估 |
| `needs-info` | `needs-info` | 等待报告人补充信息 |
| `ready-for-agent` | `ready-for-agent` | 需求完整,可由智能体独立实施 |
| `ready-for-human` | `ready-for-human` | 需要人工实施或决策 |
| `wontfix` | `wontfix` | 确定不处理 |
当技能使用某类 triage 角色时,应采用本表右侧对应的状态字符串。
@@ -0,0 +1,294 @@
# 标题:风险防控管理系统_接口文档
> 版本:版本号:3.9.2
> 服务地址:http://localhost:8080
> 生成说明:基于 Swagger OpenAPI 3.1 自动提取(规范共 155 个接口路径,本文档仅整理以下 7 个目标接口)。该文档由后端团队提供,仅提供基础用户登录相关API。其他API尚待设计。
## 认证方式
- 方案 `apikey`:请求头 `Authorization: Bearer <token>`scheme=Bearer
- 除「验证码」「用户登录」外,其它接口均需在请求头携带该令牌。
## 通用返回结构说明
本项目所有业务接口统一返回 `AjaxResult`(列表接口返回 `TableDataInfo`)。
> 注意:本 Swagger 规范中 `AjaxResult` 仅声明了 `error/success/warn/empty` 四个布尔字段,
> 未建模真实的 `code / msg / data` 字段。以下为运行时实际返回结构,编写调用代码请以实际返回为准。
**AjaxResult(单对象 / 操作结果):**
```json
{
"code": 200,
"msg": "操作成功",
"data": {}
}
```
**TableDataInfo(分页列表):**
```json
{
"total": 0,
"rows": [
{}
],
"code": 200,
"msg": "查询成功"
}
```
- `code`:状态码(200 成功,其它为错误码)
- `msg`:提示信息
- `data`:业务数据对象(列表接口的 `rows` 为该对象数组)
## 接口总览
| 序号 | 接口 | 方法 | 路径 | 分组 |
| --- | --- | --- | --- | --- |
| 1 | 用户列表 | GET | `/system/user/list` | 系统管理 |
| 2 | 部门树 | GET | `/system/user/deptTree` | 系统管理 |
| 3 | 用户信息-任意人员 | GET | `/system/user/{userId}` | 系统管理 |
| 4 | 用户信息-个人信息 | GET | `/system/user/profile` | 系统管理 |
| 5 | 修改密码 | PUT | `/system/user/profile/updatePwd` | 系统管理 |
| 6 | 验证码 | GET | `/captchaImage` | 公共 |
| 7 | 用户登陆 | POST | `/login` | 公共 |
## 1. 用户列表
- **路径**`GET /system/user/list`
- **分组(Tag**sys-user-controller
### 请求参数
查询通过对象参数 `user`(类型 `SysUser`,必填:是)绑定,以下字段以同名 `query` 参数传入:
| 字段(参数名) | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| createBy | string | 否 | |
| createTime | string | 否 | |
| updateBy | string | 否 | |
| updateTime | string | 否 | |
| remark | string | 否 | |
| params | object | 否 | |
| userId | integer(int64) | 否 | |
| deptId | integer(int64) | 否 | |
| userName | string | 否 | |
| nickName | string | 否 | |
| email | string | 否 | |
| phonenumber | string | 否 | |
| sex | string | 否 | |
| avatar | string | 否 | |
| password | string | 否 | |
| status | string | 否 | |
| delFlag | string | 否 | |
| loginIp | string | 否 | |
| loginDate | string | 否 | |
| pwdUpdateDate | string | 否 | |
| dept | SysDept | 否 | |
| roles | array<SysRole> | 否 | |
| roleIds | array<integer> | 否 | |
| postIds | array<integer> | 否 | |
| roleId | integer(int64) | 否 | |
| admin | boolean | 否 | |
> 分页参数 `pageNum`、`pageSize` 由分页拦截器自动读取(不体现在方法签名中),示例:`?pageNum=1&pageSize=10`。
### 响应(HTTP 200
响应结构(`TableDataInfo`)字段(按本规范建模):
| 字段 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| total | integer(int64) | 否 | |
| rows | array<object> | 否 | |
| code | integer(int32) | 否 | |
| msg | string | 否 | |
> 实际返回结构见上文「通用返回结构说明」(`code/msg/data` 等字段未在规范中建模)。
> 业务数据说明:`rows` 为 `SysUser` 对象数组,`total` 为总记录数。
---
## 2. 部门树
- **路径**`GET /system/user/deptTree`
- **分组(Tag**sys-user-controller
### 请求参数
查询通过对象参数 `dept`(类型 `SysDept`,必填:是)绑定,以下字段以同名 `query` 参数传入:
| 字段(参数名) | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| createBy | string | 否 | |
| createTime | string | 否 | |
| updateBy | string | 否 | |
| updateTime | string | 否 | |
| remark | string | 否 | |
| params | object | 否 | |
| deptId | integer(int64) | 否 | |
| parentId | integer(int64) | 否 | |
| ancestors | string | 否 | |
| deptLevel | integer(int32) | 否 | |
| deptName | string | 否 | |
| orderNum | integer(int32) | 否 | |
| leader | string | 否 | |
| phone | string | 否 | |
| email | string | 否 | |
| deptType | string | 否 | |
| status | string | 否 | |
| delFlag | string | 否 | |
| parentName | string | 否 | |
| children | array<SysDept> | 否 | |
### 响应(HTTP 200
响应结构(`AjaxResult`)字段(按本规范建模):
| 字段 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| error | boolean | 否 | |
| success | boolean | 否 | |
| warn | boolean | 否 | |
| empty | boolean | 否 | |
> 实际返回结构见上文「通用返回结构说明」(`code/msg/data` 等字段未在规范中建模)。
---
## 3. 用户信息-任意人员
- **路径**`GET /system/user/{userId}`
- **分组(Tag**sys-user-controller
### 请求参数
- `userId`path,类型 `integer(int64)`,必填:是):
### 响应(HTTP 200
响应结构(`AjaxResult`)字段(按本规范建模):
| 字段 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| error | boolean | 否 | |
| success | boolean | 否 | |
| warn | boolean | 否 | |
| empty | boolean | 否 | |
> 实际返回结构见上文「通用返回结构说明」(`code/msg/data` 等字段未在规范中建模)。
> 业务数据说明:`data` 返回指定 userId 对应用户的 `SysUser` 信息对象。
> 备注:路径变量在本文档中命名为 `userId`,即需求中的 `{id}`(按用户 ID 查询任意人员信息)。
---
## 4. 用户信息-个人信息
- **路径**`GET /system/user/profile`
- **分组(Tag**sys-profile-controller
### 响应(HTTP 200
响应结构(`AjaxResult`)字段(按本规范建模):
| 字段 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| error | boolean | 否 | |
| success | boolean | 否 | |
| warn | boolean | 否 | |
| empty | boolean | 否 | |
> 实际返回结构见上文「通用返回结构说明」(`code/msg/data` 等字段未在规范中建模)。
> 业务数据说明:`data` 返回当前登录用户的 `SysUser` 信息对象。
---
## 5. 修改密码
- **路径**`PUT /system/user/profile/updatePwd`
- **分组(Tag**sys-profile-controller
### 请求体(application/json
| 字段 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| oldPassword | string | 是 | 原密码 |
| newPassword | string | 是 | 新密码 |
> 注:OpenAPI 中该请求体被建模为自由对象(`Map<String,String>`),上表为实际使用的字段。
### 响应(HTTP 200
响应结构(`AjaxResult`)字段(按本规范建模):
| 字段 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| error | boolean | 否 | |
| success | boolean | 否 | |
| warn | boolean | 否 | |
| empty | boolean | 否 | |
> 实际返回结构见上文「通用返回结构说明」(`code/msg/data` 等字段未在规范中建模)。
---
## 6. 验证码
- **路径**`GET /captchaImage`
- **分组(Tag**captcha-controller
### 响应(HTTP 200
响应结构(`AjaxResult`)字段(按本规范建模):
| 字段 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| error | boolean | 否 | |
| success | boolean | 否 | |
| warn | boolean | 否 | |
| empty | boolean | 否 | |
> 实际返回结构见上文「通用返回结构说明」(`code/msg/data` 等字段未在规范中建模)。
> 业务数据说明:成功时 `data` 返回 `{"uuid":"...","img":"data:image/png;base64,..."}``uuid` 与 `img` 用于登录时校验验证码。
---
## 7. 用户登陆
- **路径**`POST /login`
- **分组(Tag**sys-login-controller
### 请求体(application/json
| 字段 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| username | string | 是 | 用户名 |
| password | string | 是 | 密码 |
| code | string | 是 | 验证码(由 /captchaImage 返回) |
| uuid | string | 是 | 验证码唯一标识(由 /captchaImage 返回) |
> 注:OpenAPI 中该请求体被建模为自由对象(`Map<String,String>`),上表为实际使用的字段。
### 响应(HTTP 200
响应结构(`AjaxResult`)字段(按本规范建模):
| 字段 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| error | boolean | 否 | |
| success | boolean | 否 | |
| warn | boolean | 否 | |
| empty | boolean | 否 | |
> 实际返回结构见上文「通用返回结构说明」(`code/msg/data` 等字段未在规范中建模)。
> 业务数据说明:登录成功时 `data` 返回 `"token"` 字符串,后续请求须在请求头 `Authorization: Bearer <token>` 中携带。
---
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff