# 学校详情 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 结构，避免字段名变更。
