Add per-action AI privacy mode

This commit is contained in:
2026-05-27 00:21:16 +08:00
parent 7e329f1d85
commit 5d96c1de6d
15 changed files with 1993 additions and 340 deletions

View File

@@ -28,7 +28,7 @@
数据可视化网页端/.env.example
```
`.env` 也可配置 `MOONSHOT_API_KEY``KIMI_MODEL`涉及患者信息的图片不会自动上传Kimi 视觉步骤只在人工运行 `07_Kimi图片识别辅助.py` 时调用
`.env` 也可配置 `MOONSHOT_API_KEY``KIMI_MODEL`网页端 AI 核验默认按按钮开启隐私模式如需核验基本信息或地址联系人可在设置页分别关闭“AI当前项”“AI后5项”“AI后全部”的隐私模式
## 快速运行
@@ -45,7 +45,7 @@ python3 数据处理工作区/02_解析入库/02_患者首页PDF解析与入库.
```bash
python3 数据处理工作区/02_解析入库/02_患者首页PDF解析与入库.py \
--text-source mineru \
--mineru-url "http://MINERU_HOST:4000/extract"
--mineru-url "$MINERU_URL"
```
单独运行 PDF 转 Markdown
@@ -54,20 +54,20 @@ python3 数据处理工作区/02_解析入库/02_患者首页PDF解析与入库.
python3 数据处理工作区/05_备用读取/05_备用PDF转Markdown_Mineru.py \
-s 待处理-患者首页PDF \
-t 数据处理结果区/06_Mineru_MD \
-u "http://MINERU_HOST:4000/extract"
-u "$MINERU_URL"
```
正式流程建议同时写入 PostgreSQL
```bash
export PGPASSWORD='请填写数据库密码'
export PGPASSWORD='从安全渠道获取数据库密码'
python3 数据处理工作区/02_解析入库/02_患者首页PDF解析与入库.py \
--write-postgres \
--pg-host DB_HOST \
--pg-host "$PGHOST" \
--pg-port 5432 \
--pg-database DB_NAME \
--pg-user DB_USER \
--pg-table Patient_FrontPages
--pg-database "$PGDATABASE" \
--pg-user "$PGUSER" \
--pg-table "$PGTABLE"
unset PGPASSWORD
```
@@ -103,7 +103,7 @@ docker compose -f 数据可视化网页端/docker-compose.yml up -d --build
http://localhost:8501
```
首次进入会显示登录界面;默认管理员为 `admin`,默认密码`change-me`。设置页创建的本地用户会同步作为登录账号,并按权限控制各页面。
首次进入会显示登录界面;默认管理员为 `admin`,默认密码请在本地 `.env` 中通过 `REVIEW_ADMIN_PASSWORD` 设置。设置页创建的本地用户会同步作为登录账号,并按权限控制各页面。
网页端会显示数据库连接情况、记录数、需复核数、PDF 数量;人工修改右侧字段并点击“复核并保存”后,会同步更新 PostgreSQL并把 `manual_corrected` 标记为 `true`
@@ -113,6 +113,7 @@ http://localhost:8501
- “复核并保存”后,复核状态由后端自动标记为 `reviewed`,复核状态和质控状态只读显示在 PDF 下方。
- 诊断、手术、费用等 JSON 字段在右侧以表格方式编辑,保存时再写回 JSONB。
- 手术操作按编码、日期、级别、名称、术者、I助、II助、切口愈合等级、麻醉方式、麻醉医师拆分展示。
- 设置页的 AI 核验按钮可分别设置模型/Thinking 和隐私模式;隐私模式默认开启,关闭后对应按钮会允许上传基本信息、地址联系人等相关局部内容用于核验和修正。
可选 Kimi 视觉兜底:
@@ -129,13 +130,13 @@ python3 数据处理工作区/07_Kimi视觉兜底/07_Kimi图片识别辅助.py \
从 PostgreSQL 导出待复核表:
```bash
export PGPASSWORD='请填写数据库密码'
export PGPASSWORD='从安全渠道获取数据库密码'
python3 数据处理工作区/03_人工复核/03_人工复核导出与回写.py export \
--pg-host DB_HOST \
--pg-host "$PGHOST" \
--pg-port 5432 \
--pg-database DB_NAME \
--pg-user DB_USER \
--pg-table Patient_FrontPages
--pg-database "$PGDATABASE" \
--pg-user "$PGUSER" \
--pg-table "$PGTABLE"
unset PGPASSWORD
```
@@ -152,26 +153,26 @@ unset PGPASSWORD
回写 PostgreSQL
```bash
export PGPASSWORD='请填写数据库密码'
export PGPASSWORD='从安全渠道获取数据库密码'
python3 数据处理工作区/03_人工复核/03_人工复核导出与回写.py import \
--pg-host DB_HOST \
--pg-host "$PGHOST" \
--pg-port 5432 \
--pg-database DB_NAME \
--pg-user DB_USER \
--pg-table Patient_FrontPages
--pg-database "$PGDATABASE" \
--pg-user "$PGUSER" \
--pg-table "$PGTABLE"
unset PGPASSWORD
```
回写后建议做数据库体检:
```bash
export PGPASSWORD='请填写数据库密码'
export PGPASSWORD='从安全渠道获取数据库密码'
python3 数据处理工作区/04_质量体检/04_字段核验与数据库体检.py \
--pg-host DB_HOST \
--pg-host "$PGHOST" \
--pg-port 5432 \
--pg-database DB_NAME \
--pg-user DB_USER \
--pg-table Patient_FrontPages
--pg-database "$PGDATABASE" \
--pg-user "$PGUSER" \
--pg-table "$PGTABLE"
unset PGPASSWORD
```
@@ -196,11 +197,11 @@ unset PGPASSWORD
## PostgreSQL 表结构
`--write-postgres` 会写入 `public."Patient_FrontPages"` 宽表,不再使用 `payload` 总 JSON 字段,也不写入 `parsed_at/created_at/updated_at`
`--write-postgres` 会写入本地 `PGTABLE` 指向的宽表,不再使用 `payload` 总 JSON 字段,也不写入 `parsed_at/created_at/updated_at`
入库时会同步写入表注释和字段注释,便于在数据库客户端中查看每列含义。
网页端会按需把人工复核和抽查记录写入主表 JSONB 列:`review_logs` 记录人工保存时间、修改字段和备注;`audit_logs` 记录抽查来源、结论和备注。历史辅助`"Patient_FrontPages_review_logs"``"Patient_FrontPages_audit_logs"` 会自动迁移并删除,数据库最终只保留 `"Patient_FrontPages"` 一张业务表。
网页端会按需把人工复核和抽查记录写入主表 JSONB 列:`review_logs` 记录人工保存时间、修改字段和备注;`audit_logs` 记录抽查来源、结论和备注。历史辅助日志表会自动迁移并删除,数据库最终只保留 `PGTABLE` 指向的一张业务表。
患者号/住院号 `inpatient_no` 是首页与患者列表联动唯一键,也是本程序唯一强制校验条件:不能为空。程序不校验编号格式,同一非空 `inpatient_no` 只保留一条首页记录;迁移时会删除历史重复住院号并保留最新记录,后续重复入库或网页写入会按 `inpatient_no` 覆盖旧首页。若 PDF 文件名和首页病案号可推导,程序仍会自动生成类似 `ZY020001447443` 的默认住院号,后续格式问题交由患者目录核验网页端处理。