fix(web): 知识库图谱预览与保存修复(CSP 放行 S3 图片源 + imageUrl 表单注册)
- server.cjs: img-src 放行 http://100.83.103.1:7480,修复编辑页预览图被 CSP 拦截 - Knowledge.tsx: 新增隐藏 Form.Item name=imageUrl,修复 validateFields 提交时丢弃图片 URL - 部署至 100.83.103.1:5174(备份 /home/pan/backups/web-20260812-1605) - 补绑白僵病 image_url(UPDATE 1),更新故障排查/开发交接/变更记录
This commit is contained in:
@@ -12,6 +12,33 @@
|
||||
|
||||
---
|
||||
|
||||
## 2026-08-12 补充:Web 知识库图谱预览与保存修复(故障排查 #三十二)
|
||||
|
||||
### 做了什么
|
||||
|
||||
- 修复 Web 知识库「蚕病百科」两个问题:编辑页图谱预览打不开(CSP 拦截跨源 S3 图片)、提交后 `imageUrl` 未保存(表单未注册该字段)。
|
||||
- `web/src/pages/Knowledge.tsx`:「症状图谱图片」后新增隐藏 `Form.Item name="imageUrl"`,保证 `form.validateFields()` 提交时携带图片 URL。
|
||||
- `web/server.cjs`:CSP `img-src` 放行 `http://100.83.103.1:7480`(开发 S3 源)。
|
||||
- 已部署并重启前端(新 bundle `index-CSVEb7gG.js`),并按用户确认直接改库把白僵病已上传的图谱 URL 补绑到 `diseases.image_url`。
|
||||
|
||||
### 思路与决策
|
||||
|
||||
- 根因定位:日志显示上传 200、PATCH 200,但 `image_url` 为空 → 定位为前端表单未注册 `imageUrl`(antd `validateFields()` 只返回已注册字段),以及 CSP 跨源拦截预览。
|
||||
- 修复方式:用隐藏 `Form.Item` 注册字段(antd 标准做法),避免手工拼请求体;CSP 采用放行开发 S3 源,生产切云 OSS/COS 时再替换为 OSS/CDN 域名或改同源代理。
|
||||
- 数据补绑:用户明确选择「直接改库」,回滚点为备份的 `diseases` 表 dump 与逐行 UPDATE 反向语句。
|
||||
|
||||
### 验证
|
||||
|
||||
- `web`:`npm run lint` 通过(仅既有无关警告)、`npm run build` 通过。
|
||||
- 机制红绿验证:用 rc-field-form 验证 `validateFields()` 会丢弃未注册的 `imageUrl`,注册/合并后可携带。
|
||||
- 部署验证:`http://localhost:5174/` 200;CSP 头含 `http://100.83.103.1:7480`;新 bundle 200;`/api/v1/health` 200;bundle 中可见 `name:"imageUrl", hidden:!0`。
|
||||
- 数据验证:`UPDATE 1`;查询确认白僵病 `image_url` 已绑定;图片匿名 GET 200(image/jpeg)。
|
||||
|
||||
### 回滚点
|
||||
|
||||
- 前端:`/home/pan/backups/web-20260812-1605/`(旧 dist、server.cjs、web.log)恢复后重启 node。
|
||||
- 数据:`diseases` 表 dump `/home/pan/backups/diseases-20260812-1605.dump`;或执行 `UPDATE diseases SET image_url=NULL, updated_at=now() WHERE id='17b1cae4-21cc-4996-9db3-96f785aef800';`
|
||||
|
||||
## 2026-08-12 模块:知识库初始版(计划 #10)
|
||||
|
||||
### 做了什么
|
||||
|
||||
Reference in New Issue
Block a user