# 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

```

解析。

支持：

<table id="bkmrk-%E7%B1%BB%E5%9E%8B-%E7%8A%B6%E6%80%81-txt-%E6%94%AF%E6%8C%81-docx-%E6%94%AF%E6%8C%81"><thead><tr><th>类型</th><th>状态</th></tr></thead><tbody><tr><td>TXT</td><td>支持</td></tr><tr><td>DOCX</td><td>支持</td></tr><tr><td>DOC</td><td>支持</td></tr><tr><td>PDF</td><td>支持</td></tr><tr><td>XLSX</td><td>支持</td></tr><tr><td>PPTX</td><td>支持</td></tr></tbody></table>

---

# 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

用途：

保存同步状态。

主要字段：

<table id="bkmrk-%E5%AD%97%E6%AE%B5-%E8%AF%B4%E6%98%8E-file_path-%E6%96%87%E4%BB%B6%E8%B7%AF%E5%BE%84"><thead><tr><th>字段</th><th>说明</th></tr></thead><tbody><tr><td>file\_path</td><td>文件路径</td></tr><tr><td>hash</td><td>文件SHA</td></tr><tr><td>space</td><td>XWiki空间</td></tr><tr><td>page</td><td>XWiki页面</td></tr><tr><td>deleted</td><td>删除状态</td></tr></tbody></table>

---

# 7. Docker部署

运行模式：

```
Docker Container


```

容器：

```
xwiki-sync


```

依赖：

```
xwiki-web

tika

smb共享


```

网络：

```
Docker bridge


```

---

# 8. 配置文件

文件：

```
config.yaml


```

包含：

## XWiki

例如：

```yaml
xwiki:
  url: http://xwiki-web:8080
  wiki: xwiki
  user: admin
  password: ****

```

---

## SMB

例如：

```yaml
smb:
  server:
  share:
  username:
  password:

```

---

## 同步周期

例如：

```yaml
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


```

状态：

```
生产可用


```

已验证：

<table id="bkmrk-%E5%8A%9F%E8%83%BD-%E7%8A%B6%E6%80%81-%E6%96%B0%E5%A2%9E%E5%90%8C%E6%AD%A5-%E2%9C%85-%E4%BF%AE%E6%94%B9%E5%90%8C%E6%AD%A5-%E2%9C%85-"><thead><tr><th>功能</th><th>状态</th></tr></thead><tbody><tr><td>新增同步</td><td>✅</td></tr><tr><td>修改同步</td><td>✅</td></tr><tr><td>删除同步</td><td>✅</td></tr><tr><td>中文路径</td><td>✅</td></tr><tr><td>中文页面</td><td>✅</td></tr><tr><td>DOCX解析</td><td>✅</td></tr><tr><td>TXT解析</td><td>✅</td></tr><tr><td>XWiki REST</td><td>✅</td></tr><tr><td>Docker运行</td><td>✅</td></tr><tr><td>断点恢复</td><td>✅</td></tr></tbody></table>

---

# 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 基线版本。