fix:提交到整个项目能跑通,有几个接口不标准

This commit is contained in:
彭帅
2026-05-29 17:53:27 +08:00
parent c5d4d7a7e1
commit aa8cc716eb
83 changed files with 7054 additions and 2 deletions

View File

@@ -0,0 +1,50 @@
# GET /crosses
> 来源BrAPI v2.1 校验报告03-fix.md
## 概要
| 项 | 值 |
| --- | --- |
| 状态 | warning |
| 方法 | GET |
| URL | `/brapi/v2/crosses` |
| 完整 URL | `http://localhost:8081/brapi/v2/crosses` |
| 路径模板 | `GET /crosses` |
| 模块 | Crosses |
| 响应时间 | 18958 ms |
## 校验详情
```
GET /crosses
Crosses
18958 ms
schema mismatch
schema mismatch
Json matches schema: schemas/v2.1/metadata.json (schema mismatch) — Schema: schemas/v2.1/metadata.json
Server response is not valid JSON.
Json matches schema: schemas/v2.1/Crosses/getCrossesResponse.json (schema mismatch) — Schema: schemas/v2.1/Crosses/getCrossesResponse.json
Server response is not valid JSON.
```
---
## 修复说明
- **根因**
- `additional_info.value` 中 Java 序列化的 `Boolean.TRUE``getAdditionalInfoMap()` 直接输出为 JSON boolean违反 BrAPI schema`additionalInfo` 值须为 string
- 匿名请求的 metadata 写入 `Long.MAX_VALUE` 对应的 token 过期 WARNING年份溢出导致 `metadata.json` 校验失败。
- 响应体含 `"@context": null`,严格 schema 校验不接受。
- `GET /crosses` 列表查询存在 N+1 懒加载,响应耗时过长(~19s校验器易超时并报告 not valid JSON。
- **修复**
- `BrAPIPrimaryEntity.getAdditionalInfoMap()` 使用 `String.valueOf()` 统一转为字符串(共用修复)。
- `BrAPIController.getStatusMessages()` 匿名用户跳过 token WARNING且忽略超出合理范围>2100 年)的过期时间。
- `BrApiJacksonConfig` + `BrApiJsonResponseAdvice` 序列化时省略 null 字段(如 `@context`)。
- `CrossService.prefetchAssociations()` 用 JOIN FETCH 批量预加载 crossingProject、parents、pollinationEvents 等关联,消除 N+1 查询。
- `CrossService.convertFromEntity()` 对缺少 `:` 的 crossAttributes 做安全解析,避免 500 纯文本错误响应。
- **验证**`GET /brapi/v2/crosses` 响应可正常解析为 JSON`additionalInfo.dummyData` 为字符串;无 `@context: null`cross1 等种子数据字段完整。
---
**状态:已完成**