wz-management-backend/docs/art_school_jsonb_api_spec.md

283 lines
6.2 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.

# 学校详情 JSONB 接口对接文档(前端)
## 1. 目标
JSONB 字段不在 school_detail 基础接口中返回,仅通过以下接口按需获取与编辑。
管理端页面需要呈现“可视化表单 + JSON 预览(可选)”的效果。
## 2. 通用规范
### 2.1 URL 规则
- 基础路径:`/art/schoolDetail/json/*`
### 2.2 通用响应
```json
{
"code": 200,
"msg": "success",
"data": { ... }
}
```
### 2.3 通用请求
- `schoolId` 必填
- PUT 请求体统一为:`{ "schoolId": 1, "<fieldName>": <JSON> }`
### 2.4 字段命名
后端字段统一使用:
- `satisfactionJson`
- `scholarshipJson`
- `specialMajorJson`
- `employmentReportJson`
- `photoJson`
- `accommodationJson`
- `subjectReviewsJson`
- `researchJson`
- `univMajorsJson`
- `univPostgraduateJson`
## 3. 页面效果与接口格式
### 3.1 满意度明细satisfactionJson
#### 页面效果
- 展示“综合满意度明细”列表:维度名称、投票数、分档人数等
- 支持新增/删除/编辑一行
#### 接口
- GET `/art/schoolDetail/json/satisfaction?schoolId=1`
- PUT `/art/schoolDetail/json/satisfaction`
#### 返回格式(示例)
```json
{
"satisfactionJson": {
"details": [
{
"name": "综合满意度",
"votes": "1207",
"score": "4.8",
"s1": "2",
"s2": "1",
"s3": "3",
"s4": "7",
"s5": "87"
}
]
}
}
```
### 3.2 奖学金数组scholarshipJson
#### 页面效果
- 展示可编辑文本列表(支持多条)
#### 接口
- GET `/art/schoolDetail/json/scholarship?schoolId=1`
- PUT `/art/schoolDetail/json/scholarship`
#### 返回格式(示例)
```json
{
"scholarshipJson": [
{ "奖学金": "奖学金说明文本..." }
]
}
```
### 3.3 特色专业specialMajorJson
#### 页面效果
- 按“类型”分组展示(国家级/省级等)
- 每组内为专业列表
#### 接口
- GET `/art/schoolDetail/json/specialMajor?schoolId=1`
- PUT `/art/schoolDetail/json/specialMajor`
#### 返回格式(示例)
```json
{
"specialMajorJson": [
{
"type": "国家级",
"majorList": [
{ "majorId": "247", "majorName": "智能科学与技术" }
]
}
]
}
```
### 3.4 就业报告employmentReportJson
#### 页面效果
- 列表编辑:报告名称 + 预览链接 + 下载链接
#### 接口
- GET `/art/schoolDetail/json/employmentReport?schoolId=1`
- PUT `/art/schoolDetail/json/employmentReport`
#### 返回格式(示例)
```json
{
"employmentReportJson": [
{
"reportName": "北京大学2021年度就业报告",
"onlinePreview": "https://m.51sdx.com/images/employment_report/PDF/北京大学2021年度就业报告.PDF",
"reportUrl": "https://scc.pku.edu.cn/home!downloadCenter.action"
}
]
}
```
### 3.5 学校图片photoJson
#### 页面效果
- 分类展示(如校园风光)
- 支持上传/删除/排序
#### 接口
- GET `/art/schoolDetail/json/photo?schoolId=1`
- PUT `/art/schoolDetail/json/photo`
#### 返回格式(示例)
```json
{
"photoJson": {
"staticUrl": "https://static.51sdx.com",
"scenerys": [
{
"cover": "https://sdxedu.oss-cn-beijing.aliyuncs.com/univ/scenerys/d7c0b4e9a0c746d2a23f45c24793db94.jpeg",
"size": 1,
"scenery": "河流"
}
]
}
}
```
### 3.6 建筑/配套accommodationJson
#### 页面效果
- 图文块列表(如食堂/宿舍/配套)
#### 接口
- GET `/art/schoolDetail/json/accommodation?schoolId=1`
- PUT `/art/schoolDetail/json/accommodation`
#### 返回格式(示例)
```json
{
"accommodationJson": [
{ "name": "食堂", "value": "..." }
]
}
```
****
### 3.7 学科评估subjectReviewsJson
#### 页面效果
- 评估轮次分组
- 每组内展示学科名称与评级
#### 接口
- GET `/art/schoolDetail/json/subjectReviews?schoolId=1`
- PUT `/art/schoolDetail/json/subjectReviews`
#### 返回格式(示例)
```json
{
"subjectReviewsJson": [
{
"type": "第四轮",
"subList": [
{ "subjectName": "统计学", "assessLevel": "A+", "assessGrade": "1档" }
]
}
]
}
```
### 3.8 科研信息researchJson
#### 页面效果
- 展示“师资力量/特色/学科/实验室”等区块
- 支持富文本编辑
#### 接口
- GET `/art/schoolDetail/json/research?schoolId=1`
- PUT `/art/schoolDetail/json/research`
#### 返回格式(示例)
```json
{
"researchJson": {
"features": { "name": "国家级特色专业", "value": "..." },
"teacher": { "name": "师资力量", "value": "..." },
"laboratory": [ { "name": "国家实验室", "value": "..." } ],
"subject": [ { "name": "一级学科国家重点学科", "value": "..." } ],
"program": [ { "name": "硕士点说明", "value": "..." } ],
"base": { "硕士点数量": "333", "博士点数量": "307" }
}
}
```
### 3.9 专业标签univMajorsJson
#### 页面效果
- 标签分组 + 专业列表
#### 接口
- GET `/art/schoolDetail/json/univMajors?schoolId=1`
- PUT `/art/schoolDetail/json/univMajors`
#### 返回格式(示例)
```json
{
"univMajorsJson": [
{
"className": "国家特色",
"majorList": [
{ "majorId": "1", "majorName": "哲学", "majorTag": "国家特色", "year": "四年" }
]
}
]
}
```
### 3.10 保研信息univPostgraduateJson
#### 页面效果
- 年份列表 + 保研率
#### 接口
- GET `/art/schoolDetail/json/univPostgraduate?schoolId=1`
- PUT `/art/schoolDetail/json/univPostgraduate`
#### 返回格式(示例)
```json
{
"univPostgraduateJson": [
{ "year": 2024, "exemption": 64.6 }
]
}
```
### 3.11 JSONB 全量获取all
#### 页面效果
- 管理端初始化时一次性加载所有 JSONB 数据(用于整页编辑或预览)
#### 接口
- GET `/art/schoolDetail/json/all?schoolId=1`
#### 返回格式(示例)
```json
{
"satisfactionJson": { "details": [] },
"scholarshipJson": [],
"specialMajorJson": [],
"employmentReportJson": [],
"photoJson": {},
"accommodationJson": [],
"subjectReviewsJson": [],
"researchJson": {},
"univMajorsJson": [],
"univPostgraduateJson": []
}
```
## 4. 前端交互建议
- JSONB 独立页/弹窗编辑,保存后局部刷新。
- 列表型 JSON 建议用“可增删行”的表单组件。
- 保留原始 JSON 结构,避免字段名变更。