# AUTS 寻址与索引（前后端快速定位）

> 目标：后续同步修改前后端时，能快速定位“页面/路由 → 调用的 API → 后端 Controller/Action → 鉴权/配置”。

## 1. 仓库组成

- 后端：ASP.NET Core Web API（项目：WebAPIServer）
- PC 前端：Vue3 + TypeScript（目录：auts_new.client）
- 移动端前端：Vue3（目录：auts_new_mobile.client）

## 2. 后端寻址（WebAPIServer）

### 2.1 入口与全局中间件

- 入口：WebAPIServer/Program.cs
- 路由映射：`app.MapControllers()`
- CORS：策略名 `Vue3`，当前配置为 `AllowAnyOrigin/AnyHeader/AnyMethod`
- 鉴权：JWT Bearer（`AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(...)`）

### 2.2 路由约定

所有 Controller 都使用：

- 路由模板：`api/[controller]/[action]`
- 因此实际 URL 形如：`/api/Login/Login`、`/api/TestLogs/GetTestSummaryTable`

### 2.3 Token 与鉴权要点

- 需要鉴权的 Action 会标注 `[Authorize()]`
- JWT 配置来自：WebAPIServer/appsettings.json（`JwT:SecretKey/Issuer/Audience`）
- 登录成功后后端返回 `AccessToken`（见 `LoginController.Login`）

### 2.4 API 索引（按 Controller）

#### LoginController（/api/Login/{action}）

- `POST Login`：登录，返回 `ResLoginData`（含 `AccessToken/IsAdmin/ID/UserName/Auths`）
- `POST TokenXuQi`：续期（需 `[Authorize]`）
- `POST LogRecord`：记录登录信息（需 `[Authorize]`）
- `GET GetCaptcha`：验证码（当前返回固定 `CaptchaText = "1111"` + base64 图）

#### TestLogsController（/api/TestLogs/{action}）

- `POST GetLogListBySN`：按 SN 查询多步骤测试日志（需 `[Authorize]`）
- `POST GetTestSummaryTableExcel`：导出测试总表 Excel（需 `[Authorize]`）
- `POST GetTestSummaryTable`：分页查询测试总表 + 统计 passCount/passRate

#### DataHandleController（/api/DataHandle/{action}）

- `POST R_InfoCommon`：通用查询（带 MemoryCache，需 `[Authorize]`）
- `POST CUD_InfoCommon`：通用增删改（需 `[Authorize]`）
- `POST NNN`：简单 hello（无鉴权）
- `POST III`：看起来是实验/未完成接口（返回 null）

#### UsersController（/api/Users/{action}）

（均需 `[Authorize]`）

- `POST GetUserInfo`：获取用户信息（All/Single）
- `POST AddUser`：新增用户
- `POST EditUser`：修改用户
- `POST DelUser`：删除（逻辑删除 IsValid=false）
- `POST ResetPassWord`：重置密码为指定明文（服务端双 MD5）
- `POST NewPassWord`：重置密码为 123456（服务端双 MD5）

#### CompanyController（/api/Company/{action}）

- `POST GetCompanyInfo`：获取公司信息（需 `[Authorize]`）

#### ValuesController（/api/Values/{action}）

- `GET GetAll_WebApiMethod`：从 `StaticData.scope` 取变量
- `POST UpdateData`：触发 `StaticData.GetWebAPIMethod()` 刷新

> 备注：Controllers 目录里还有 `WeatherForecastController`、`TestLogsController` 等；如需要我可以把所有 action 完整拉平为表格（含 HttpVerb）。

## 3. 移动端前端寻址（auts_new_mobile.client）

### 3.1 路由表

路由文件：auts_new_mobile.client/src/router/index.js

- `/`：按 localStorage 是否有 `token` 动态跳转到 `/home` 或 `/login`
- `/login`：登录
- `/home`：主页（requiresAuth）
- `/user`：个人中心（requiresAuth）
- `/usermanage`：用户管理（requiresAuth，且用户名必须是 Admin 或 MomoWen）
- `/loginlog`：用户日志（requiresAuth）
- `/dbmanage`：数据库管理（requiresAuth）
- `/inputcolorbox`：数据导入（requiresAuth）
- `/stationlog`：站位日志/数据导入（requiresAuth）
- `/testlog`：测试数据（requiresAuth）

### 3.2 鉴权守卫

- 路由 meta `requiresAuth` + localStorage `token`
- 特权页面：`/usermanage`（以及守卫中出现的 `/scopemanage`，但移动端路由表里目前未定义该 path）

### 3.3 当前编辑页面定位

- 当前页：auts_new_mobile.client/src/pages/testlog/index.vue
- 该页的后端关联点大概率在 `TestLogsController`（如 GetTestSummaryTable / GetLogListBySN / 导出 Excel）

## 4. PC 端前端寻址（auts_new.client）

### 4.1 路由聚合方式

路由入口：auts_new.client/src/router/index.ts

- 从 `src/router/modules/**` 动态导入模块路由
- 默认路由：`/login` 与 `/` → `/dashboard/base`

### 4.2 已识别的模块路由

- 仪表盘：首页/统计报表
  - `/dashboard/base`：首页
  - `/dashboard/detail`：统计报表
- 用户中心：
  - `/permission/users`：用户管理
  - `/permission/character`：权限管理
  - `/permission/user`：个人中心

> 注意：PC 端部分模块（如 result/user 模块）目前在源码中被注释掉，实际生效以 modules 目录内容为准。

## 5. 后续同步修改前后端的推荐对齐点（准备清单）

- Token：前端存储 key（当前移动端用 localStorage `token/username`）应与后端返回字段 `AccessToken` 映射一致
- API BaseUrl：前端 axios 基础配置位置（移动端通常在 `src/axios.js`，PC 端在 `src/api`/请求封装）
- 鉴权 header：后端使用标准 Bearer 头即可（`Authorization: Bearer <token>`），如前端用了自定义 `token` 头需要对齐
- TestLog 页面：优先确认它调用的具体 action（GetTestSummaryTable / ExportExcel / GetLogListBySN）后再做字段联调

