文档库已接入现有门户 /doclib/enter,侧栏点击直接进入门户内页面。采用 P04 左树右表,参考 web-admin/src/views/system/user/index.vue,视觉遵循 Fresh Mint。
del_flag=1,保留对象和历史。docs/sql/20261026_simple_doclib.sql。新增 biz_doclib_folder、biz_doclib_file、biz_doclib_share 三表,MySQL 5.7 / utf8mb4;不更改旧 Cloudreve 库。MINIO_ENDPOINT、MINIO_ACCESS_KEY、MINIO_SECRET_KEY、MINIO_SECURE。文档库新增配置:DOCLIB_MINIO_BUCKET=shanxia-doclib-private
DOCLIB_MAX_UPLOAD_BYTES=104857600
MINIO_BUCKET 不同,且不得有公开策略。首次使用会创建缺失的桶;检测到策略或访问异常会拒绝存储操作。运行账号需具有此专用桶的创建/检查策略/读写/清理未登记上传权限。doclib_router 沿用原先在 app/api/__init__.py 和 app/main.py 的注册。/api/web/doclib/upload 为 multipart 专用,沿用 Bearer 认证和审计;不参与 JSON 加密。请求体接收阶段最多接受文件限额加 64 KiB 表单开销(包括无 Content-Length 请求)。上传/下载正文不缓存进审计日志。application/octet-stream 附件,Cache-Control: no-store。代理层也应允许业务需要的 100 MB 上传。本次已对开发 .env 所连数据库执行增量 SQL(已确认与 .env.production 不同),并创建、验证专用私有桶;本机 8000 后端已重载。未对生产环境执行迁移或部署。
pnpm build 成功(现有大块体积警告);全量 vue-tsc 仍有工作区既有错误,新文档库文件无诊断。scripts/check_field_consistency.py,已人工核对后端序列化、请求schema、TypeScript和表单字段;元信息、上传人、存储key均不可由客户端覆盖。Cloudreve/OnlyOffice 的旧文件和服务保留。门户不再依赖旧 SSO,但兼容接口仍在。旧文件迁移、停用服务以及历史对象回收应单独安排,不在本次实施中执行。
在本仓库 doclib/ 中,基于 Cloudreve 社区版与 OnlyOffice 文档社区版,做一套供内部查阅、下载和在线修改共享资料的文档库。门户已登录用户可从侧栏「文档库」进入,并按门户用户一一对应到 Cloudreve 账号。
| 项 | 决定 |
|---|---|
| 文件库 | Cloudreve 社区版 4.19.1(GPL-3.0),源码在 doclib/upstream/cloudreve |
| 在线编辑 | OnlyOffice 文档社区版 10.0.0(AGPL-3.0),用官方社区版镜像,通过 WOPI 接到 Cloudreve |
| 账号 | 门户每个用户对应一个文档库账号(邮箱 p.{门户用户名}@sso.shanxia.local,用户名需唯一)。分享、共享权限仍在 Cloudreve 里设置。测试管理员 test@shanxia.local 只用于对接,不是门户用户 |
| 数据 | 测试库 MySQL 上的独立库 cloudreve,不写入 shanxia2.0 |
| 门户进入 | 所有已登录角色在侧栏「文档库」打开。门户签发 60 秒一次性票据,文档库页面换成本人的 Cloudreve 会话 |
Cloudreve 对外界面改为山峡化工文档库:
web-admin/public/logo.gifOnlyOffice 编辑器窗口保留其自有标识。社区版协议要求保留 ONLYOFFICE 标志,去标志属于付费开发者版,本期不改编辑器本体。
用户只打开文档库。点开 docx、xlsx、pptx、pdf 时,由 OnlyOffice 在浏览器里打开和保存,文件仍存在 Cloudreve。
两边容器要能互相访问:Cloudreve 的站点地址必须能被 OnlyOffice 容器访问,否则打开文件会下载失败。
test@shanxia.local / Test123456http://127.0.0.1:5212。OnlyOffice 按这个地址回读、回写文件;改成 localhost 时,容器会解析到 IPv6 并拒绝访问。doclib/scripts/office-bridge.sh,恢复 127.0.0.1 互相转发。doclib/upstream/cloudreve/assets 执行构建,把 build 整目录覆盖到 Cloudreve 数据目录的 statics,再重启 Cloudreve 容器,并重新执行上面的转发脚本。已在浏览器核对:登录页为山峡化工文档库,底部是山峡化工标识;测试文档能在编辑器中打开,保存后的正文能再次打开;编辑器仍保留 ONLYOFFICE 标志。