xwiki-sync v1.0 功能说明书 根据目前日志和目录结构,你的 xwiki-sync v1.0 稳定版 已经具备一个完整的“共享目录 → XWiki 文档库”的同步闭环: 文件新增 ✅ 文件修改 ✅ 文件删除同步 ✅ XWiki 页面创建/更新/删除 ✅ 自动空间映射 ✅ 文件 Hash 增量检测 ✅ SQLite 状态记录 ✅ Docker 运行 ✅ Tika 文档解析 ✅ 下面整理成正式归档文档,建议保存为: /opt/xwiki/sync/docs/xwiki-sync-v1.0功能说明书.md xwiki-sync v1.0 功能说明书 1. 项目名称 xwiki-sync 版本: v1.0 Stable 发布日期: 2026-07-18 用途: 将 SMB 共享目录中的文档自动同步到 XWiki,实现企业内部文档自动化管理。 2. 系统架构 整体架构: SMB共享目录 | | scanner/smb.py | | 文件扫描模块 core/scanner.py | | 文件状态数据库 SQLite Database | +-----------+-----------+ | | 新文件 已存在文件 | | | Hash检测 | | +-----------+-----------+ | sync/processor.py | +-----------+-----------+ | 文档解析 extractor/tika.py | | XWiki REST API | | XWiki页面 3. 目录结构说明 sync │ ├── app.py │ ├── clients │ └── xwiki.py │ ├── core │ ├── database.py │ ├── hash.py │ ├── hashdb.py │ └── scanner.py │ ├── extractor │ └── tika.py │ ├── scanner │ └── smb.py │ ├── sync │ └── processor.py │ ├── models │ └── fileinfo.py │ ├── config.yaml │ ├── Dockerfile │ └── upgrade_db.py 4. 核心功能说明 4.1 文件扫描功能 模块: scanner/smb.py core/scanner.py 功能: 定时扫描共享目录。 默认周期: 60秒 扫描结果: 例如: /data/wiki_attach/test.txt 转换为同步任务: space = wiki_attach page = test 4.2 文件路径映射规则 根目录文件 例如: /data/web.config 转换: XWiki: Main.web 说明: 默认进入 Main 空间 一级目录 例如: /data/wiki_attach/docker安装.txt 转换: Space: wiki_attach Page: docker安装 XWiki: wiki_attach.docker安装 多级目录 例如: /data/a/b/c.txt 转换: Space: a Page: b_c 规则: 目录名称_Page名称 4.3 文件类型支持 当前通过: Apache Tika 解析。 支持: 类型 状态 TXT 支持 DOCX 支持 DOC 支持 PDF 支持 XLSX 支持 PPTX 支持 4.4 增量同步 核心: core/hash.py core/database.py 机制: 文件计算 SHA Hash。 例如: 第一次: test.txt hash: abc123 数据库保存: 文件路径 hash space page 下一次扫描: 如果: hash相同 跳过: 日志: 跳过: xxx 未变化 避免重复写入 XWiki。 4.5 新文件同步 流程: 发现文件 ↓ 计算Hash ↓ 数据库不存在 ↓ Tika解析 ↓ 创建XWiki页面 ↓ 保存数据库 日志: 例如: 新文件: wiki_attach.docker镜像导出和导入 页面创建成功 同步完成 4.6 文件修改同步 检测: 旧hash != 新hash 流程: 重新解析 ↓ 更新XWiki页面 ↓ 更新数据库hash 日志: 文件变化: xxx 页面更新成功 4.7 删除同步 这是 v1.0 新增稳定功能。 流程: 共享目录: test.txt 删除 扫描发现: 数据库存在 实际文件不存在 执行: XWiki REST DELETE 日志: 发现删除文件: /data/test.txt 删除XWiki页面: Main.test XWiki删除成功 删除完成 5. XWiki REST接口 客户端: clients/xwiki.py 功能: 测试连接 接口: GET /rest/wikis/{wiki}/spaces 返回: 200 创建页面 接口: PUT /rest/wikis/xwiki/spaces/{space}/pages/{page} 更新页面 同创建接口: PUT XWiki自动判断: 新增 或者 版本更新 删除页面 接口: DELETE /rest/wikis/xwiki/spaces/{space}/pages/{page} 成功: 200 202 204 不存在: 404 均视为同步成功。 6. 数据库设计 数据库: SQLite 用途: 保存同步状态。 主要字段: 字段 说明 file_path 文件路径 hash 文件SHA space XWiki空间 page XWiki页面 deleted 删除状态 7. Docker部署 运行模式: Docker Container 容器: xwiki-sync 依赖: xwiki-web tika smb共享 网络: Docker bridge 8. 配置文件 文件: config.yaml 包含: XWiki 例如: xwiki: url: http://xwiki-web:8080 wiki: xwiki user: admin password: **** SMB 例如: smb: server: share: username: password: 同步周期 例如: interval: 60 单位: 秒 9. 日志说明 正常: 发现文件 3 个 新增: 新文件: xxx 跳过: 跳过: xxx 未变化 删除: 发现删除文件 删除XWiki页面 XWiki删除成功 异常: 同步失败 10. 已知设计特点 优点 1. 增量同步 不会重复处理大量文档。 2. 状态可恢复 数据库保存状态。 3. 支持中文名称 例如: 新建空间测试1 主从复制_2025030401 4. XWiki自动版本管理 更新不会覆盖历史。 11. 当前限制 11.1 空间创建 目前: create_space() XWiki REST 返回: 405 Method Not Allowed 原因: XWiki默认不允许REST创建Space。 当前策略: 忽略Space创建失败 继续创建页面 实际运行正常。 11.2 删除空间 未实现。 删除: 页面 不删除: Space 11.3 附件同步 当前: 文件内容同步 不是: XWiki Attachment 12. 稳定性验证记录 新增测试 文件: /data/wiki_attach/docker镜像导出和导入.txt 结果: 同步完成 删除测试 删除: docker镜像导出和导入.txt 创建容器四代网关协议代理适配器rulr-v4gw-adapter.txt 结果: XWiki删除成功 连续运行测试 周期: 60秒 结果: 无重复同步 无异常 13. 版本状态 当前版本: xwiki-sync v1.0 Stable 状态: 生产可用 已验证: 功能 状态 新增同步 ✅ 修改同步 ✅ 删除同步 ✅ 中文路径 ✅ 中文页面 ✅ DOCX解析 ✅ TXT解析 ✅ XWiki REST ✅ Docker运行 ✅ 断点恢复 ✅ 14. 后续规划建议 v1.1: 增加附件上传 增加XWiki标签 增加文档权限映射 增加同步失败重试队列 v1.2: Web管理界面 同步状态监控 操作审计日志 结论 xwiki-sync v1.0 已完成共享目录到 XWiki 文档中心的自动化同步闭环。 当前版本满足: 企业内部文档自动归档、同步、删除管理需求。 可作为生产环境基础版本长期运行。 建议归档: /opt/xwiki/sync/docs/ | └── xwiki-sync-v1.0功能说明书.md 同时建议备份: config.yaml database.db Dockerfile 作为 v1.0 基线版本。