all in
This commit is contained in:
@@ -0,0 +1,282 @@
|
||||
# 文档版本管理功能 - 部署指南(使用函数名前缀)
|
||||
|
||||
## 📋 方案说明
|
||||
|
||||
使用 **函数名前缀 `documents_`** 来区分版本管理函数,无需创建 schema。
|
||||
|
||||
**3个新函数**:
|
||||
- `documents_get_latest_documents_with_version_info` - 获取文档列表
|
||||
- `documents_count_latest_documents_with_filters` - 统计文档总数
|
||||
- `documents_get_document_history` - 获取历史版本
|
||||
|
||||
---
|
||||
|
||||
## 🚀 快速部署(2步)
|
||||
|
||||
### 步骤1:在 Navicat 中执行 SQL 脚本
|
||||
|
||||
#### 方法A:查询窗口
|
||||
1. 打开 Navicat,连接到 PostgreSQL 数据库
|
||||
2. 点击 **"查询"** → **"新建查询"**
|
||||
3. 打开 `add_document_version_management.sql` 文件
|
||||
4. 复制所有内容到查询窗口
|
||||
5. 点击 **"运行"** ▶️ 按钮
|
||||
|
||||
#### 方法B:运行 SQL 文件
|
||||
1. 右键点击数据库
|
||||
2. 选择 **"运行 SQL 文件"**
|
||||
3. 选择 `add_document_version_management.sql`
|
||||
4. 点击 **"开始"**
|
||||
|
||||
### 步骤2:重启应用
|
||||
|
||||
```bash
|
||||
npm run build
|
||||
pm2 restart all
|
||||
```
|
||||
|
||||
**就这么简单!** ✅
|
||||
|
||||
---
|
||||
|
||||
## 🔍 验证函数是否创建成功
|
||||
|
||||
在 Navicat 中执行:
|
||||
|
||||
```sql
|
||||
-- 查看新创建的函数
|
||||
SELECT proname
|
||||
FROM pg_proc
|
||||
WHERE proname LIKE 'documents_%';
|
||||
```
|
||||
|
||||
**应该返回 3 个函数名**:
|
||||
```
|
||||
documents_get_latest_documents_with_version_info
|
||||
documents_count_latest_documents_with_filters
|
||||
documents_get_document_history
|
||||
```
|
||||
|
||||
### 在 Navicat 中查看函数
|
||||
|
||||
```
|
||||
你的数据库
|
||||
└─ public (schema)
|
||||
└─ 函数
|
||||
├─ documents_get_latest_documents_with_version_info(...)
|
||||
├─ documents_count_latest_documents_with_filters(...)
|
||||
└─ documents_get_document_history(...)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🧪 测试函数
|
||||
|
||||
在 Navicat 查询窗口执行:
|
||||
|
||||
```sql
|
||||
-- 测试1:获取文档列表(假设用户ID为1)
|
||||
SELECT * FROM documents_get_latest_documents_with_version_info(1, 1, 10);
|
||||
|
||||
-- 测试2:统计文档总数
|
||||
SELECT documents_count_latest_documents_with_filters(1);
|
||||
|
||||
-- 测试3:获取历史版本(如果有同名文档)
|
||||
SELECT * FROM documents_get_document_history('测试文档.pdf', 1, 123);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📁 在 Navicat 中操作函数
|
||||
|
||||
### 查看函数定义
|
||||
1. 在左侧树形结构中找到 `public` → `函数`
|
||||
2. 找到 `documents_get_latest_documents_with_version_info`
|
||||
3. 右键 → **"设计函数"** 或 **"查看 SQL"**
|
||||
|
||||
### 测试函数(图形界面)
|
||||
1. 右键点击函数
|
||||
2. 选择 **"执行函数"**
|
||||
3. 输入参数值(如 `p_user_id: 1, p_page: 1, p_page_size: 10`)
|
||||
4. 点击 **"运行"**
|
||||
|
||||
### 删除函数(如果需要重建)
|
||||
```sql
|
||||
DROP FUNCTION IF EXISTS documents_get_latest_documents_with_version_info;
|
||||
DROP FUNCTION IF EXISTS documents_count_latest_documents_with_filters;
|
||||
DROP FUNCTION IF EXISTS documents_get_document_history;
|
||||
|
||||
-- 然后重新执行 SQL 脚本
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ 功能验证
|
||||
|
||||
### 1. 访问文档列表页面
|
||||
|
||||
打开浏览器:`http://your-domain/documents`
|
||||
|
||||
### 2. 检查显示效果
|
||||
|
||||
✅ **有历史版本的文档**:
|
||||
```
|
||||
[▶️] 📄 合同审查.pdf
|
||||
合同审查 v1 (共3个历史版本)
|
||||
问题数量:3 🟢 ↓ -2
|
||||
```
|
||||
|
||||
✅ **单版本文档**:
|
||||
```
|
||||
📄 新文档.pdf
|
||||
合同审查
|
||||
问题数量:4
|
||||
```
|
||||
|
||||
### 3. 测试展开功能
|
||||
|
||||
点击 [▶️] 图标,应该能看到:
|
||||
```
|
||||
[🔽] 📄 合同审查.pdf
|
||||
合同审查 v1 (共3个历史版本)
|
||||
问题数量:3 🟢 ↓ -2
|
||||
|
||||
├─ 🕒 v2 版本
|
||||
│ 问题数量:5 🔴 ↑ +2
|
||||
│
|
||||
├─ 🕒 v3 版本
|
||||
│ 问题数量:3 🟢 ↓ -1
|
||||
│
|
||||
└─ 🕒 v4 版本 (最早)
|
||||
问题数量:4
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ❌ 故障排查
|
||||
|
||||
### 问题1:函数未创建
|
||||
|
||||
**症状**:查询不到函数
|
||||
|
||||
**解决**:
|
||||
```sql
|
||||
-- 检查是否有错误
|
||||
-- 在 Navicat 的"消息"窗口查看错误信息
|
||||
|
||||
-- 重新执行 SQL 脚本
|
||||
```
|
||||
|
||||
### 问题2:前端报错
|
||||
|
||||
**症状**:浏览器控制台显示 `function does not exist`
|
||||
|
||||
**解决**:
|
||||
```bash
|
||||
# 1. 确认函数已创建
|
||||
# 在 Navicat 中执行:
|
||||
SELECT proname FROM pg_proc WHERE proname LIKE 'documents_%';
|
||||
|
||||
# 2. 确认前端代码已更新
|
||||
# 检查 app/api/files/documents.ts 中的函数名
|
||||
|
||||
# 3. 重新构建应用
|
||||
npm run build
|
||||
pm2 restart all
|
||||
```
|
||||
|
||||
### 问题3:数据不显示
|
||||
|
||||
**症状**:页面显示空白或加载失败
|
||||
|
||||
**检查清单**:
|
||||
- ✅ SQL 脚本是否执行成功
|
||||
- ✅ 函数是否创建在 `public` schema 中
|
||||
- ✅ 应用是否重启
|
||||
- ✅ 浏览器控制台是否有错误
|
||||
|
||||
**解决方案**:
|
||||
```bash
|
||||
# 1. 检查 PostgREST 日志
|
||||
journalctl -u postgrest -n 50
|
||||
|
||||
# 2. 检查应用日志
|
||||
pm2 logs
|
||||
|
||||
# 3. 清除浏览器缓存
|
||||
# 按 Ctrl + Shift + R (Windows) 或 Cmd + Shift + R (Mac)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📊 性能优化
|
||||
|
||||
SQL 脚本自动创建了 4 个索引来优化查询性能:
|
||||
|
||||
```sql
|
||||
-- 1. 用户+名称+时间索引
|
||||
idx_documents_user_name_created
|
||||
|
||||
-- 2. 名称+用户+时间索引
|
||||
idx_documents_name_user_created
|
||||
|
||||
-- 3. 创建时间索引
|
||||
idx_documents_created_at
|
||||
|
||||
-- 4. 文件状态索引
|
||||
idx_documents_status
|
||||
```
|
||||
|
||||
查看索引:
|
||||
```sql
|
||||
SELECT indexname, indexdef
|
||||
FROM pg_indexes
|
||||
WHERE tablename = 'documents';
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔐 权限配置(可选)
|
||||
|
||||
如果你使用了特定的 PostgREST 用户,需要授权:
|
||||
|
||||
```sql
|
||||
-- 查看你的 PostgREST 用户名
|
||||
SELECT usename FROM pg_user;
|
||||
|
||||
-- 授权函数(替换 'authenticator' 为实际用户名)
|
||||
GRANT EXECUTE ON FUNCTION documents_get_latest_documents_with_version_info TO authenticator;
|
||||
GRANT EXECUTE ON FUNCTION documents_count_latest_documents_with_filters TO authenticator;
|
||||
GRANT EXECUTE ON FUNCTION documents_get_document_history TO authenticator;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📚 相关文档
|
||||
|
||||
- **SQL 脚本**:`add_document_version_management.sql`
|
||||
- **完整技术文档**:`docs/文档版本管理设计方案.md`
|
||||
- **UI 原型**:`docs/UI设计原型.html`
|
||||
|
||||
---
|
||||
|
||||
## ✅ 部署检查清单
|
||||
|
||||
- [ ] SQL 脚本执行成功
|
||||
- [ ] 3个函数已创建
|
||||
- [ ] 应用已重新构建和重启
|
||||
- [ ] 文档列表页面正常显示
|
||||
- [ ] 展开/折叠功能正常
|
||||
- [ ] 问题数量差异正确显示(红色/绿色)
|
||||
|
||||
---
|
||||
|
||||
## 🎉 完成!
|
||||
|
||||
现在你可以:
|
||||
- ✅ 查看同名文档的版本历史
|
||||
- ✅ 展开/折叠历史版本
|
||||
- ✅ 对比问题数量变化
|
||||
- ✅ 享受高性能的版本管理功能
|
||||
|
||||
**部署完成,开始使用吧!** 🚀
|
||||
Reference in New Issue
Block a user