diff --git a/.claude/settings.local.json b/.claude/settings.local.json deleted file mode 100644 index e0053cfb..00000000 --- a/.claude/settings.local.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "permissions": { - "allow": [ - "Bash(ls:*)", - "Bash(tree:*)", - "Bash(find:*)", - "Bash(dir:*)" - ] - } -} diff --git a/.dockerignore b/.dockerignore deleted file mode 100644 index eeff46e4..00000000 --- a/.dockerignore +++ /dev/null @@ -1,46 +0,0 @@ -# Docker 构建时排除的目录和文件 - -# 排除数据卷目录(PostgreSQL 等容器创建的数据) -**/volumes/ -**/data/ -docker/**/volumes/ - -# 排除日志 -**/logs/ -*.log - -# 排除临时文件 -*.tmp -*.swp -.tmp/ - -# 排除 git -.git/ -**/.git/ - -# 排除 IDE 配置 -.idea/ -.vscode/ -**/.vscode/ - -# 排除环境文件 -.env -.env.local -**/.env.local - -# 排除 node_modules(前端构建时会重新安装) -**/node_modules/ - -# 排除构建产物(保留 JAR 文件) -**/build/ -# 排除 target 下的非 JAR 文件 -**/target/classes/ -**/target/generated-sources/ -**/target/generated-test-sources/ -**/target/maven-archiver/ -**/target/maven-status/ -**/target/test-classes/ -**/target/*.original - -# 排除导出的镜像 -docker/urbanLifeline/images/ diff --git a/.gitignore b/.gitignore index be270b7f..4cbe3caa 100644 --- a/.gitignore +++ b/.gitignore @@ -1,207 +1,7 @@ -# ---> Java -# Compiled class file -*.class - -# Log file -*.log - -# BlueJ files -*.ctxt - -# Mobile Tools for Java (J2ME) -.mtj.tmp/ - -# Package Files # -*.jar -*.war -*.nar -*.ear -*.zip -*.tar.gz -*.rar +.claude +.idea +.kiro .tmp -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml -hs_err_pid* -replay_pid* +.trae -# ---> Python -# Byte-compiled / optimized / DLL files -__pycache__/ -*.py[cod] -*$py.class - -# C extensions -*.so - -# Distribution / packaging -.Python -build/ -develop-eggs/ -dist/ -downloads/ -eggs/ -.eggs/ -lib/ -lib64/ -parts/ -sdist/ -var/ -wheels/ -share/python-wheels/ -*.egg-info/ -.installed.cfg -*.egg -MANIFEST - -# PyInstaller -# Usually these files are written by a python script from a template -# before PyInstaller builds the exe, so as to inject date/other infos into it. -*.manifest -*.spec - -# Installer logs -pip-log.txt -pip-delete-this-directory.txt - -# Unit test / coverage reports -htmlcov/ -.tox/ -.nox/ -.coverage -.coverage.* -.cache -nosetests.xml -coverage.xml -*.cover -*.py,cover -.hypothesis/ -.pytest_cache/ -cover/ - -# Translations -*.mo -*.pot - -# Django stuff: -*.log -local_settings.py -db.sqlite3 -db.sqlite3-journal - -# Flask stuff: -instance/ -.webassets-cache - -# Scrapy stuff: -.scrapy - -# Sphinx documentation -docs/_build/ - -# PyBuilder -.pybuilder/ -target/ - -# Jupyter Notebook -.ipynb_checkpoints - -# IPython -profile_default/ -ipython_config.py - -# pyenv -# For a library or package, you might want to ignore these files since the code is -# intended to run in multiple environments; otherwise, check them in: -# .python-version - -# pipenv -# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. -# However, in case of collaboration, if having platform-specific dependencies or dependencies -# having no cross-platform support, pipenv may install dependencies that don't work, or not -# install all needed dependencies. -#Pipfile.lock - -# UV -# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control. -# This is especially recommended for binary packages to ensure reproducibility, and is more -# commonly ignored for libraries. -#uv.lock - -# poetry -# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. -# This is especially recommended for binary packages to ensure reproducibility, and is more -# commonly ignored for libraries. -# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control -#poetry.lock - -# pdm -# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. -#pdm.lock -# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it -# in version control. -# https://pdm.fming.dev/latest/usage/project/#working-with-version-control -.pdm.toml -.pdm-python -.pdm-build/ - -# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm -__pypackages__/ - -# Celery stuff -celerybeat-schedule -celerybeat.pid - -# SageMath parsed files -*.sage.py - -# Environments -.env -.venv -env/ -venv/ -ENV/ -env.bak/ -venv.bak/ - -# Spyder project settings -.spyderproject -.spyproject - -# Rope project settings -.ropeproject - -# mkdocs documentation -/site - -# mypy -.mypy_cache/ -.dmypy.json -dmypy.json - -# Pyre type checker -.pyre/ - -# pytype static type analyzer -.pytype/ - -# Cython debug symbols -cython_debug/ - -# PyCharm -# JetBrains specific template is maintained in a separate JetBrains.gitignore that can -# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore -# and can be added to the global gitignore or merged into this file. For a more nuclear -# option (not recommended) you can uncomment the following to ignore the entire idea folder. -#.idea/ - -# Ruff stuff: -.ruff_cache/ - -# PyPI configuration file -.pypirc -江西城市生命线-可交互原型/frontend/node_modules/* -THAI-Platform/* -urbanLifelineWeb/packages/wechat_demo/* -urbanLifelineWeb/packages/workcase_wechat/unpackage/* -docs/AI训练资料 -tellhow-app2/ \ No newline at end of file +**/*.difypkg \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 10b731c5..00000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -# 默认忽略的文件 -/shelf/ -/workspace.xml -# 基于编辑器的 HTTP 客户端请求 -/httpRequests/ diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 639900d1..00000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 20c0107a..00000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/urbanLifeline.iml b/.idea/urbanLifeline.iml deleted file mode 100644 index d6ebd480..00000000 --- a/.idea/urbanLifeline.iml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 574dfaab..00000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/.kiro/specs/urbanlifeline-to-pigx-migration/README.md b/.kiro/specs/urbanlifeline-to-pigx-migration/README.md deleted file mode 100644 index f5faf925..00000000 --- a/.kiro/specs/urbanlifeline-to-pigx-migration/README.md +++ /dev/null @@ -1,140 +0,0 @@ -# UrbanLifeline 到 Pigx 迁移文档总览 - -## 📋 文档清单 - -本目录包含了 UrbanLifeline 系统迁移到 Pigx 平台所需的全部技术文档。 - -### 核心文档 - -| 文档名称 | 文件路径 | 说明 | -|---------|---------|------| -| **需求文档** | [requirements.md](./requirements.md) | 定义迁移需求,明确创建 pigx-dify 模块 | -| **设计文档** | [design.md](./design.md) | 技术设计方案,包含 pigx-dify 模块架构 | -| **任务清单** | [tasks.md](./tasks.md) | 详细的迁移任务列表,包含 AI 模块迁移步骤 | - -### 技术指南 - -| 文档名称 | 文件路径 | 用途 | -|---------|---------|------| -| **权限映射表** | [permission-mapping.md](./permission-mapping.md) | 权限标识从 urbanLifeline 到 pigx 的映射对照 | -| **权限注解转换指南** | [permission-annotation-guide.md](./permission-annotation-guide.md) | @PreAuthorize 到 @pms.hasPermission 的转换方法 | -| **用户服务配置指南** | [security-config-guide.md](./security-config-guide.md) | SecurityUtils 和 RemoteUserService 的使用说明 | -| **数据库迁移脚本** | [database-migration-script.md](./database-migration-script.md) | PostgreSQL 到 MySQL 的完整迁移 SQL | -| **租户隔离指南** | [tenant-isolation-guide.md](./tenant-isolation-guide.md) | 多租户字段添加和隔离实现方案 | -| **Dify模块架构** | [pigx-dify-architecture.md](./pigx-dify-architecture.md) | 新建 pigx-dify 模块的详细架构设计 | - -## 🎯 迁移要点总结 - -### 1. 核心变更 -- ✅ 创建独立的 **pigx-dify** 模块承载 AI 功能 -- ✅ 保留原有 Dify API 集成方式 -- ✅ 权限体系完全适配 pigx(@pms.hasPermission) -- ✅ 所有业务表添加 tenant_id 实现多租户隔离 -- ✅ 数据库从 PostgreSQL 迁移到 MySQL - -### 2. 模块分布 - -| 模块 | 目标位置 | 状态 | -|------|---------|------| -| 工单 (workcase) | pigx-app-server-biz | 待迁移 | -| 招标 (bidding) | pigx-app-server-biz | 待迁移 | -| 平台管理 (platform) | pigx-app-server-biz | 待迁移 | -| AI功能 (ai) | **pigx-dify(新建)** | 待迁移 | -| 消息 (message) | pigx-app-server-biz | 待迁移 | - -### 3. 关键技术适配 - -#### 权限转换 -```java -// 原系统 -@PreAuthorize("hasAuthority('workcase:ticket:create')") - -// 新系统 -@PreAuthorize("@pms.hasPermission('workcase_ticket_add')") -``` - -#### 用户信息获取 -```java -// 原系统 -JwtUtils.getUserId() - -// 新系统 -SecurityUtils.getUser().getId() -``` - -#### 响应格式 -```java -// 原系统 -ResultDomain.success(data) - -// 新系统 -R.ok(data) -``` - -## 📝 使用指南 - -### 第一步:理解需求和设计 -1. 阅读 [requirements.md](./requirements.md) 了解迁移需求 -2. 阅读 [design.md](./design.md) 理解技术方案 -3. 查看 [pigx-dify-architecture.md](./pigx-dify-architecture.md) 了解 AI 模块设计 - -### 第二步:准备迁移 -1. 使用 [tasks.md](./tasks.md) 作为任务清单 -2. 参考 [permission-mapping.md](./permission-mapping.md) 准备权限映射 -3. 阅读 [database-migration-script.md](./database-migration-script.md) 准备数据库 - -### 第三步:执行迁移 -1. 按照 [permission-annotation-guide.md](./permission-annotation-guide.md) 转换权限注解 -2. 根据 [security-config-guide.md](./security-config-guide.md) 配置用户服务 -3. 使用 [tenant-isolation-guide.md](./tenant-isolation-guide.md) 实现租户隔离 - -### 第四步:验证测试 -1. 验证权限控制正确性 -2. 测试租户数据隔离 -3. 确认 Dify 集成正常 -4. 检查所有功能模块 - -## 🔧 工具和脚本 - -### 批量权限转换 -```bash -# 权限注解批量替换 -find . -name "*.java" -exec sed -i \ - 's/@PreAuthorize("hasAuthority(\x27\([^:]*\):\([^:]*\):\([^x27]*\)\x27)")/@PreAuthorize("@pms.hasPermission(\x27\1_\2_\3\x27)")/g' {} \; -``` - -### 数据库迁移 -```sql --- 执行顺序 -1. 创建 MySQL 数据库结构 -2. 添加 tenant_id 字段 -3. 迁移业务数据 -4. 建立用户映射关系 -5. 验证数据完整性 -``` - -## 📊 迁移进度跟踪 - -使用 [tasks.md](./tasks.md) 中的任务清单跟踪进度: -- [ ] 基础设施准备 -- [ ] 权限体系迁移 -- [ ] 数据库迁移 -- [ ] 后端代码迁移 -- [ ] 前端页面迁移 -- [ ] 集成测试 -- [ ] 上线部署 - -## 🚨 重要提醒 - -1. **数据备份**:迁移前必须完整备份所有数据 -2. **权限测试**:每个模块迁移后都要测试权限控制 -3. **租户隔离**:确保所有查询都包含租户条件 -4. **Dify配置**:保存好 Dify API Key 和配置信息 -5. **回滚方案**:准备好回滚脚本和流程 - -## 📞 支持与反馈 - -如有问题,请参考相应的技术指南文档,或联系技术支持团队。 - ---- -*最后更新时间:2024年* \ No newline at end of file diff --git a/.kiro/specs/urbanlifeline-to-pigx-migration/database-migration-script.md b/.kiro/specs/urbanlifeline-to-pigx-migration/database-migration-script.md deleted file mode 100644 index 7def8695..00000000 --- a/.kiro/specs/urbanlifeline-to-pigx-migration/database-migration-script.md +++ /dev/null @@ -1,712 +0,0 @@ -# PostgreSQL to MySQL 数据库迁移脚本 - -## 概述 -本文档包含从 urbanLifeline (PostgreSQL) 到 pigx (MySQL) 的数据库迁移脚本。 - -## 迁移策略 -1. PostgreSQL Schema → MySQL Database 或表前缀 -2. 所有业务表添加 `tenant_id` 字段 -3. 用户ID关联到 pigx 的 sys_user 表 -4. 数据类型映射和语法适配 - -## 类型映射规则 - -| PostgreSQL | MySQL | 说明 | -|-----------|-------|------| -| SERIAL | INT AUTO_INCREMENT | 自增整数 | -| BIGSERIAL | BIGINT AUTO_INCREMENT | 自增大整数 | -| VARCHAR(n) | VARCHAR(n) | 可变长字符串 | -| TEXT | TEXT | 长文本 | -| TIMESTAMPTZ | DATETIME | 时间戳 | -| BOOLEAN | TINYINT(1) | 布尔值 | -| DECIMAL(m,n) | DECIMAL(m,n) | 十进制数 | -| INTEGER | INT | 整数 | -| BIGINT | BIGINT | 大整数 | -| JSONB | JSON | JSON数据 | -| VARCHAR(50)[] | JSON | 数组转JSON | -| TEXT[] | JSON | 文本数组转JSON | - -## 1. 工单模块 (Workcase) - -### 1.1 来客表(系统外部人员) -```sql --- PostgreSQL 原表: sys.tb_guest --- MySQL 目标表: tb_guest - -CREATE TABLE IF NOT EXISTS `tb_guest` ( - `optsn` varchar(50) NOT NULL COMMENT '流水号', - `user_id` varchar(50) NOT NULL COMMENT '来客ID', - `name` varchar(50) NOT NULL COMMENT '姓名', - `phone` varchar(50) DEFAULT NULL COMMENT '电话', - `email` varchar(50) DEFAULT NULL COMMENT '邮箱', - `wechat_id` varchar(50) DEFAULT NULL COMMENT '微信号', - `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `delete_time` datetime DEFAULT NULL COMMENT '删除时间', - `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除', - PRIMARY KEY (`user_id`), - UNIQUE KEY `uk_wechat_id` (`wechat_id`), - UNIQUE KEY `uk_phone` (`phone`), - UNIQUE KEY `uk_email` (`email`), - KEY `idx_tenant_id` (`tenant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统外部人员表'; - -### 1.2 聊天室表 -CREATE TABLE IF NOT EXISTS `tb_chat_room` ( - `optsn` varchar(50) NOT NULL COMMENT '流水号', - `room_id` varchar(50) NOT NULL COMMENT '聊天室ID', - `workcase_id` varchar(50) DEFAULT NULL COMMENT '关联工单ID', - `room_name` varchar(200) NOT NULL COMMENT '聊天室名称', - `room_type` varchar(20) NOT NULL DEFAULT 'workcase' COMMENT '聊天室类型', - `status` varchar(20) NOT NULL DEFAULT 'active' COMMENT '状态:active-活跃 closed-已关闭 archived-已归档', - `guest_id` varchar(50) NOT NULL COMMENT '来客ID(创建者)', - `guest_name` varchar(100) NOT NULL COMMENT '来客姓名', - `ai_session_id` varchar(50) DEFAULT NULL COMMENT 'AI对话会话ID', - `message_count` int NOT NULL DEFAULT 0 COMMENT '消息总数', - `device_code` varchar(50) NOT NULL COMMENT '设备代码', - `last_message_time` datetime DEFAULT NULL COMMENT '最后消息时间', - `last_message` text DEFAULT NULL COMMENT '最后一条消息内容', - `comment_level` int DEFAULT 0 COMMENT '服务评分(1-5)', - `closed_by` varchar(50) DEFAULT NULL COMMENT '关闭人', - `closed_time` datetime DEFAULT NULL COMMENT '关闭时间', - `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID', - `creator` varchar(50) NOT NULL COMMENT '创建人', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `delete_time` datetime DEFAULT NULL COMMENT '删除时间', - `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除', - PRIMARY KEY (`room_id`), - UNIQUE KEY `uk_workcase_id` (`workcase_id`), - UNIQUE KEY `uk_optsn` (`optsn`), - KEY `idx_guest_status` (`guest_id`, `status`), - KEY `idx_last_message_time` (`last_message_time` DESC), - KEY `idx_tenant_id` (`tenant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='IM聊天室表,一个工单对应一个聊天室'; - -### 1.3 聊天室成员表 -CREATE TABLE IF NOT EXISTS `tb_chat_room_member` ( - `optsn` varchar(50) NOT NULL COMMENT '流水号', - `member_id` varchar(50) NOT NULL COMMENT '成员记录ID', - `room_id` varchar(50) NOT NULL COMMENT '聊天室ID', - `user_id` varchar(50) NOT NULL COMMENT '用户ID(来客ID或员工ID)', - `user_type` varchar(20) NOT NULL COMMENT '用户类型:guest-来客 staff-客服 ai-AI助手', - `user_name` varchar(100) NOT NULL COMMENT '用户名称', - `status` varchar(20) NOT NULL DEFAULT 'active' COMMENT '状态:active-活跃 left-已离开 removed-被移除', - `unread_count` int NOT NULL DEFAULT 0 COMMENT '该成员的未读消息数', - `last_read_time` datetime DEFAULT NULL COMMENT '最后阅读时间', - `last_read_msg_id` varchar(50) DEFAULT NULL COMMENT '最后阅读的消息ID', - `join_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '加入时间', - `leave_time` datetime DEFAULT NULL COMMENT '离开时间', - `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID', - `creator` varchar(50) NOT NULL COMMENT '创建人', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - PRIMARY KEY (`member_id`), - UNIQUE KEY `uk_room_user` (`room_id`, `user_id`), - KEY `idx_room_status` (`room_id`, `status`), - KEY `idx_user_status` (`user_id`, `user_type`, `status`), - KEY `idx_tenant_id` (`tenant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='聊天室成员表,记录来客和客服人员'; - -### 1.4 聊天室消息表 -CREATE TABLE IF NOT EXISTS `tb_chat_room_message` ( - `optsn` varchar(50) NOT NULL COMMENT '流水号', - `message_id` varchar(50) NOT NULL COMMENT '消息ID', - `room_id` varchar(50) NOT NULL COMMENT '聊天室ID', - `sender_id` varchar(50) NOT NULL COMMENT '发送者ID', - `sender_type` varchar(20) NOT NULL COMMENT '发送者类型:guest-来客 agent-客服 ai-AI助手 system-系统消息', - `sender_name` varchar(100) NOT NULL COMMENT '发送者名称', - `message_type` varchar(20) NOT NULL DEFAULT 'text' COMMENT '消息类型:text-文本 image-图片 file-文件 voice-语音 video-视频', - `content` text NOT NULL COMMENT '消息内容', - `files` json DEFAULT NULL COMMENT '附件文件ID数组', - `content_extra` json DEFAULT NULL COMMENT '扩展内容', - `reply_to_msg_id` varchar(50) DEFAULT NULL COMMENT '回复的消息ID', - `is_ai_message` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否AI消息', - `ai_message_id` varchar(50) DEFAULT NULL COMMENT 'AI原始消息ID', - `status` varchar(20) NOT NULL DEFAULT 'sent' COMMENT '状态:sent-已发送 delivered-已送达 read-已读 failed-失败', - `read_count` int NOT NULL DEFAULT 0 COMMENT '已读人数', - `send_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '发送时间', - `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID', - `creator` varchar(50) NOT NULL COMMENT '创建人', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - PRIMARY KEY (`message_id`), - KEY `idx_room_time` (`room_id`, `send_time` DESC), - KEY `idx_sender` (`sender_id`, `sender_type`), - KEY `idx_ai_message` (`ai_message_id`), - KEY `idx_tenant_id` (`tenant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='IM聊天消息表,包含AI对话和人工客服消息'; - -### 1.5 聊天室总结表 -CREATE TABLE IF NOT EXISTS `tb_chat_room_summary` ( - `optsn` varchar(50) NOT NULL COMMENT '流水号', - `summary_id` varchar(50) NOT NULL COMMENT '总结ID', - `room_id` varchar(50) NOT NULL COMMENT '聊天室ID', - `question` text DEFAULT NULL COMMENT '核心问题', - `needs` json DEFAULT NULL COMMENT '核心诉求数组', - `answer` text DEFAULT NULL COMMENT '解决方案', - `workcloud` json DEFAULT NULL COMMENT '词云关键词数组', - `message_count` int DEFAULT 0 COMMENT '参与总结的消息数量', - `summary_time` datetime DEFAULT NULL COMMENT '总结生成时间', - `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID', - `creator` varchar(50) NOT NULL COMMENT '创建人', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `delete_time` datetime DEFAULT NULL COMMENT '删除时间', - `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除', - PRIMARY KEY (`summary_id`), - UNIQUE KEY `uk_optsn` (`optsn`), - KEY `idx_room_time` (`room_id`, `summary_time` DESC), - KEY `idx_summary_time` (`summary_time` DESC), - KEY `idx_tenant_id` (`tenant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='聊天室总结表,保存AI生成的聊天总结分析'; - -### 1.6 视频会议表 -CREATE TABLE IF NOT EXISTS `tb_video_meeting` ( - `optsn` varchar(50) NOT NULL COMMENT '流水号', - `meeting_id` varchar(50) NOT NULL COMMENT '会议ID(也是Jitsi房间名)', - `room_id` varchar(50) NOT NULL COMMENT '关联聊天室ID', - `workcase_id` varchar(50) NOT NULL COMMENT '关联工单ID', - `meeting_name` varchar(200) NOT NULL COMMENT '会议名称', - `meeting_password` varchar(50) DEFAULT NULL COMMENT '会议密码', - `description` varchar(500) DEFAULT NULL COMMENT '会议描述', - `jwt_token` text DEFAULT NULL COMMENT 'JWT Token', - `jitsi_room_name` varchar(200) NOT NULL COMMENT 'Jitsi房间名', - `jitsi_server_url` varchar(500) NOT NULL DEFAULT 'https://meet.jit.si' COMMENT 'Jitsi服务器地址', - `status` varchar(20) NOT NULL DEFAULT 'scheduled' COMMENT '状态', - `creator_type` varchar(20) NOT NULL COMMENT '创建者类型', - `creator_name` varchar(100) NOT NULL COMMENT '创建者名称', - `participant_count` int NOT NULL DEFAULT 0 COMMENT '参与人数', - `max_participants` int DEFAULT 10 COMMENT '最大参与人数', - `start_time` datetime NOT NULL COMMENT '会议开始时间', - `end_time` datetime NOT NULL COMMENT '会议结束时间', - `advance` int DEFAULT 5 COMMENT '提前入会时间(分钟)', - `actual_start_time` datetime DEFAULT NULL COMMENT '实际开始时间', - `actual_end_time` datetime DEFAULT NULL COMMENT '实际结束时间', - `duration_seconds` int DEFAULT 0 COMMENT '会议时长(秒)', - `iframe_url` text DEFAULT NULL COMMENT 'iframe嵌入URL', - `config` json DEFAULT NULL COMMENT 'Jitsi配置项', - `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID', - `creator` varchar(50) NOT NULL COMMENT '创建人', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `delete_time` datetime DEFAULT NULL COMMENT '删除时间', - `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除', - PRIMARY KEY (`meeting_id`), - UNIQUE KEY `uk_jitsi_room_name` (`jitsi_room_name`), - KEY `idx_room_status` (`room_id`, `status`), - KEY `idx_workcase_status` (`workcase_id`, `status`), - KEY `idx_create_time` (`create_time` DESC), - KEY `idx_tenant_id` (`tenant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Jitsi Meet视频会议表'; - -### 1.7 客服人员配置表 -CREATE TABLE IF NOT EXISTS `tb_customer_service` ( - `optsn` varchar(50) NOT NULL COMMENT '流水号', - `user_id` varchar(50) NOT NULL COMMENT '员工ID(关联sys用户ID)', - `username` varchar(100) NOT NULL COMMENT '员工姓名', - `user_code` varchar(50) DEFAULT NULL COMMENT '员工工号', - `status` varchar(20) NOT NULL DEFAULT 'offline' COMMENT '状态:online-在线 busy-忙碌 offline-离线', - `skill_tags` json DEFAULT NULL COMMENT '技能标签', - `max_concurrent` int NOT NULL DEFAULT 5 COMMENT '最大并发接待数', - `avg_response_time` int DEFAULT NULL COMMENT '平均响应时间(秒)', - `satisfaction_score` decimal(3,2) DEFAULT NULL COMMENT '满意度评分(0-5)', - `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID', - `creator` varchar(50) NOT NULL COMMENT '创建人', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `delete_time` datetime DEFAULT NULL COMMENT '删除时间', - `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除', - PRIMARY KEY (`user_id`), - KEY `idx_tenant_id` (`tenant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='客服人员配置表'; - -### 1.8 工单表 -CREATE TABLE IF NOT EXISTS `tb_workcase` ( - `optsn` varchar(50) NOT NULL COMMENT '流水号', - `workcase_id` varchar(50) NOT NULL COMMENT '工单ID', - `room_id` varchar(50) NOT NULL COMMENT '聊天室ID', - `user_id` varchar(50) NOT NULL COMMENT '来客ID', - `username` varchar(200) NOT NULL COMMENT '来客姓名', - `phone` varchar(20) NOT NULL COMMENT '来客电话', - `type` varchar(50) NOT NULL COMMENT '故障类型', - `device` varchar(50) DEFAULT NULL COMMENT '设备名称', - `device_code` varchar(50) DEFAULT NULL COMMENT '设备代码', - `device_name_plate` varchar(50) DEFAULT NULL COMMENT '设备名称牌', - `device_name_plate_img` varchar(50) NOT NULL COMMENT '设备名称牌图片', - `address` varchar(1000) DEFAULT NULL COMMENT '现场地址', - `description` varchar(1000) DEFAULT NULL COMMENT '故障描述', - `imgs` json DEFAULT NULL COMMENT '工单图片id数组', - `emergency` varchar(50) NOT NULL DEFAULT 'normal' COMMENT '紧急程度 normal-普通 emergency-紧急', - `status` varchar(50) NOT NULL DEFAULT 'pending' COMMENT '状态 pending-待处理 processing-处理中 done-已完成', - `processor` varchar(50) DEFAULT NULL COMMENT '处理人', - `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID', - `creator` varchar(50) NOT NULL COMMENT '创建人', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `delete_time` datetime DEFAULT NULL COMMENT '删除时间', - `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除', - PRIMARY KEY (`workcase_id`), - UNIQUE KEY `uk_room_id` (`room_id`), - UNIQUE KEY `uk_optsn` (`optsn`), - KEY `idx_tenant_id` (`tenant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='工单表'; - -### 1.9 工单处理过程表 -CREATE TABLE IF NOT EXISTS `tb_workcase_process` ( - `optsn` varchar(50) NOT NULL COMMENT '流水号', - `workcase_id` varchar(50) NOT NULL COMMENT '工单ID', - `process_id` varchar(50) NOT NULL COMMENT '过程id', - `action` varchar(50) NOT NULL COMMENT '动作 info:记录,assign:指派,redeploy:转派,repeal:撤销,finish:完成', - `message` varchar(200) DEFAULT NULL COMMENT '消息', - `files` json DEFAULT NULL COMMENT '携带文件', - `processor` varchar(50) DEFAULT NULL COMMENT '处理人', - `remark` varchar(500) DEFAULT NULL COMMENT '备注', - `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID', - `creator` varchar(50) NOT NULL COMMENT '过程发起人', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`process_id`), - KEY `idx_workcase_id` (`workcase_id`), - KEY `idx_tenant_id` (`tenant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='工单处理过程表'; - -### 1.10 工单设备文件表 -CREATE TABLE IF NOT EXISTS `tb_workcase_device` ( - `optsn` varchar(50) NOT NULL COMMENT '流水号', - `workcase_id` varchar(50) NOT NULL COMMENT '工单ID', - `device` varchar(50) NOT NULL COMMENT '设备名称', - `device_code` varchar(50) DEFAULT NULL COMMENT '设备代码', - `file_id` varchar(50) NOT NULL COMMENT '文件id', - `file_name` varchar(50) NOT NULL COMMENT '文件名', - `file_root_id` varchar(50) DEFAULT NULL COMMENT '文件根id', - `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID', - PRIMARY KEY(`workcase_id`, `file_id`), - KEY `idx_tenant_id` (`tenant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='工单设备文件表'; - -### 1.11 词云统计表 -CREATE TABLE IF NOT EXISTS `tb_word_cloud` ( - `optsn` varchar(50) NOT NULL COMMENT '流水号', - `word_id` varchar(50) NOT NULL COMMENT '词条ID', - `word` varchar(100) NOT NULL COMMENT '词语', - `frequency` int NOT NULL DEFAULT 1 COMMENT '词频', - `source_type` varchar(20) NOT NULL COMMENT '来源类型 chat-聊天 workcase-工单 global-全局', - `source_id` varchar(50) DEFAULT NULL COMMENT '来源ID', - `category` varchar(50) DEFAULT NULL COMMENT '分类', - `stat_date` date NOT NULL COMMENT '统计日期', - `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - PRIMARY KEY (`word_id`), - UNIQUE KEY `uk_word_source` (`word`, `source_type`, `source_id`, `stat_date`, `category`), - KEY `idx_source` (`source_type`, `source_id`, `stat_date`), - KEY `idx_category` (`category`, `stat_date`), - KEY `idx_tenant_id` (`tenant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='词云统计表'; -``` - -## 2. AI模块 (Dify) - -### 2.1 智能体配置表 -```sql -CREATE TABLE IF NOT EXISTS `tb_agent` ( - `optsn` varchar(50) NOT NULL COMMENT '流水号', - `agent_id` varchar(50) NOT NULL COMMENT '智能体ID', - `name` varchar(50) NOT NULL COMMENT '智能体名称', - `description` varchar(500) DEFAULT NULL COMMENT '智能体描述', - `link` varchar(500) DEFAULT NULL COMMENT '智能体url', - `api_key` varchar(500) NOT NULL COMMENT 'dify智能体APIKEY', - `is_outer` tinyint(1) DEFAULT 0 COMMENT '是否是对外智能体,未登录可用', - `introduce` varchar(500) NOT NULL COMMENT '引导词', - `prompt_cards` json DEFAULT NULL COMMENT '提示卡片数组', - `category` varchar(50) NOT NULL COMMENT '分类', - `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID', - `creator` varchar(50) DEFAULT NULL COMMENT '创建者', - `updater` varchar(50) DEFAULT NULL COMMENT '更新者', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `delete_time` datetime DEFAULT NULL COMMENT '删除时间', - `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除', - PRIMARY KEY (`agent_id`), - UNIQUE KEY `uk_optsn` (`optsn`), - UNIQUE KEY `uk_api_key` (`api_key`), - KEY `idx_tenant_id` (`tenant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI智能体配置表'; - -### 2.2 AI对话表 -CREATE TABLE IF NOT EXISTS `tb_chat` ( - `optsn` varchar(50) NOT NULL COMMENT '流水号', - `chat_id` varchar(50) NOT NULL COMMENT '对话ID', - `agent_id` varchar(50) NOT NULL COMMENT '智能体ID', - `user_id` varchar(50) NOT NULL COMMENT '用户ID', - `user_type` tinyint(1) NOT NULL DEFAULT 1 COMMENT '用户类型 1-系统内部人员 0-系统外部人员', - `title` varchar(500) NOT NULL COMMENT '对话标题', - `channel` varchar(50) DEFAULT 'agent' COMMENT '对话渠道 agent、wechat', - `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `delete_time` datetime DEFAULT NULL COMMENT '删除时间', - `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除', - PRIMARY KEY (`chat_id`), - UNIQUE KEY `uk_optsn` (`optsn`), - KEY `idx_agent_id` (`agent_id`), - KEY `idx_user_id` (`user_id`), - KEY `idx_tenant_id` (`tenant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI对话表'; - -### 2.3 AI对话消息表 -CREATE TABLE IF NOT EXISTS `tb_chat_message` ( - `optsn` varchar(50) NOT NULL COMMENT '流水号', - `message_id` varchar(50) NOT NULL COMMENT '消息ID', - `dify_message_id` varchar(100) DEFAULT NULL COMMENT 'Dify消息ID', - `chat_id` varchar(50) NOT NULL COMMENT '对话ID', - `role` varchar(50) NOT NULL COMMENT '角色:user-用户/ai-智能体/recipient-来客', - `content` text NOT NULL COMMENT '消息内容', - `files` json DEFAULT NULL COMMENT '文件id数组', - `comment` varchar(50) DEFAULT NULL COMMENT '评价', - `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `delete_time` datetime DEFAULT NULL COMMENT '删除时间', - `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除', - PRIMARY KEY (`message_id`), - UNIQUE KEY `uk_optsn` (`optsn`), - KEY `idx_chat_id` (`chat_id`), - KEY `idx_dify_message_id` (`dify_message_id`), - KEY `idx_tenant_id` (`tenant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI对话消息表'; - -### 2.4 知识库配置表 -CREATE TABLE IF NOT EXISTS `tb_knowledge` ( - `optsn` varchar(50) NOT NULL COMMENT '流水号', - `knowledge_id` varchar(50) NOT NULL COMMENT '知识库ID', - `title` varchar(255) NOT NULL COMMENT '知识库标题', - `avatar` varchar(255) DEFAULT NULL COMMENT '知识库头像', - `description` varchar(500) DEFAULT NULL COMMENT '知识库描述', - `dify_dataset_id` varchar(100) DEFAULT NULL COMMENT 'Dify知识库ID', - `dify_indexing_technique` varchar(50) DEFAULT 'high_quality' COMMENT 'Dify索引方式', - `embedding_model` varchar(100) DEFAULT NULL COMMENT '向量模型名称', - `embedding_model_provider` varchar(100) DEFAULT NULL COMMENT '向量模型提供商', - `rerank_model` varchar(100) DEFAULT NULL COMMENT 'Rerank模型名称', - `rerank_model_provider` varchar(100) DEFAULT NULL COMMENT 'Rerank模型提供商', - `reranking_enable` tinyint(1) DEFAULT 0 COMMENT '是否启用Rerank', - `retrieval_top_k` int DEFAULT 2 COMMENT '检索Top K', - `retrieval_score_threshold` decimal(3,2) DEFAULT 0.00 COMMENT '检索分数阈值', - `document_count` int DEFAULT 0 COMMENT '文档数量', - `total_chunks` int DEFAULT 0 COMMENT '总分段数', - `service` varchar(50) DEFAULT NULL COMMENT '所属服务 workcase、bidding', - `project_id` varchar(50) DEFAULT NULL COMMENT 'bidding所属项目ID', - `category` varchar(50) DEFAULT NULL COMMENT '所属分类', - `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID', - `creator` varchar(50) NOT NULL COMMENT '创建者', - `dept_path` varchar(50) DEFAULT NULL COMMENT '创建者部门路径', - `updater` varchar(50) DEFAULT NULL COMMENT '更新者', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `delete_time` datetime DEFAULT NULL COMMENT '删除时间', - `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除', - PRIMARY KEY (`optsn`), - UNIQUE KEY `uk_knowledge_id` (`knowledge_id`), - UNIQUE KEY `uk_dify_dataset_id` (`dify_dataset_id`), - KEY `idx_tenant_id` (`tenant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='知识库配置表'; - -### 2.5 知识库文件表 -CREATE TABLE IF NOT EXISTS `tb_knowledge_file` ( - `optsn` varchar(50) NOT NULL COMMENT '流水号', - `knowledge_id` varchar(50) NOT NULL COMMENT '知识库ID', - `file_root_id` varchar(50) NOT NULL COMMENT '文件根ID', - `file_id` varchar(50) NOT NULL COMMENT '文件ID', - `dify_file_id` varchar(50) NOT NULL COMMENT 'dify文件ID', - `version` int NOT NULL DEFAULT 1 COMMENT '文件版本', - `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `delete_time` datetime DEFAULT NULL COMMENT '删除时间', - `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除', - PRIMARY KEY (`optsn`), - UNIQUE KEY `uk_knowledge_file` (`knowledge_id`, `file_id`), - KEY `idx_tenant_id` (`tenant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='知识库文件表'; - -### 2.6 知识库文件日志表 -CREATE TABLE IF NOT EXISTS `tb_knowledge_file_log` ( - `optsn` varchar(50) NOT NULL COMMENT '流水号', - `log_id` varchar(50) NOT NULL COMMENT '日志ID', - `knowledge_id` varchar(50) NOT NULL COMMENT '知识库ID', - `file_root_id` varchar(50) NOT NULL COMMENT '文件根ID', - `file_id` varchar(50) NOT NULL COMMENT '文件ID', - `file_name` varchar(100) NOT NULL COMMENT '文件名', - `service` varchar(50) NOT NULL COMMENT '所属服务 workcase、bidding', - `version` int NOT NULL DEFAULT 1 COMMENT '文件版本', - `action` varchar(50) NOT NULL COMMENT '操作类型 upload、update、delete', - `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID', - `creator` varchar(50) NOT NULL COMMENT '创建者', - `creator_name` varchar(100) NOT NULL COMMENT '创建者姓名', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`optsn`), - UNIQUE KEY `uk_knowledge_file_log` (`knowledge_id`, `file_id`), - KEY `idx_tenant_id` (`tenant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='知识库文件日志表'; -``` - -## 3. 招标模块 (Bidding) - -### 3.1 招标项目表 -```sql -CREATE TABLE IF NOT EXISTS `tb_bidding_project` ( - `optsn` varchar(50) NOT NULL COMMENT '流水号', - `project_id` varchar(50) NOT NULL COMMENT '项目ID', - `project_no` varchar(100) NOT NULL COMMENT '项目编号', - `project_name` varchar(500) NOT NULL COMMENT '项目名称', - `project_type` varchar(50) NOT NULL COMMENT '项目类型', - `industry` varchar(100) DEFAULT NULL COMMENT '所属行业', - `source_platform` varchar(100) DEFAULT NULL COMMENT '来源平台', - `source_url` varchar(500) DEFAULT NULL COMMENT '来源URL', - `publish_date` datetime DEFAULT NULL COMMENT '发布日期', - `deadline` datetime DEFAULT NULL COMMENT '投标截止日期', - `opening_date` datetime DEFAULT NULL COMMENT '开标日期', - `budget_amount` decimal(18,2) DEFAULT NULL COMMENT '预算金额', - `currency` varchar(10) DEFAULT 'CNY' COMMENT '货币单位', - `project_status` varchar(30) NOT NULL DEFAULT 'collecting' COMMENT '项目状态', - `winning_status` varchar(30) DEFAULT NULL COMMENT '中标状态', - `winning_amount` decimal(18,2) DEFAULT NULL COMMENT '中标金额', - `client_name` varchar(255) DEFAULT NULL COMMENT '客户名称', - `client_contact` varchar(100) DEFAULT NULL COMMENT '客户联系方式', - `contact_person` varchar(100) DEFAULT NULL COMMENT '联系人', - `project_location` varchar(500) DEFAULT NULL COMMENT '项目地点', - `description` text DEFAULT NULL COMMENT '项目描述', - `keywords` json DEFAULT NULL COMMENT '关键词数组', - `metadata` json DEFAULT NULL COMMENT '项目元数据', - `dept_path` varchar(255) DEFAULT NULL COMMENT '部门全路径', - `responsible_user` varchar(50) DEFAULT NULL COMMENT '负责人', - `team_members` json DEFAULT NULL COMMENT '团队成员数组', - `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID', - `creator` varchar(50) DEFAULT NULL COMMENT '创建者', - `updater` varchar(50) DEFAULT NULL COMMENT '更新者', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `delete_time` datetime DEFAULT NULL COMMENT '删除时间', - `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除', - PRIMARY KEY (`project_id`), - UNIQUE KEY `uk_optsn` (`optsn`), - UNIQUE KEY `uk_project_no` (`project_no`), - KEY `idx_project_status` (`project_status`), - KEY `idx_deadline` (`deadline`), - KEY `idx_dept_path` (`dept_path`), - KEY `idx_responsible_user` (`responsible_user`), - KEY `idx_tenant_id` (`tenant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='招标项目表'; - -### 3.2 招标文件表 -CREATE TABLE IF NOT EXISTS `tb_bidding_document` ( - `optsn` varchar(50) NOT NULL COMMENT '流水号', - `doc_id` varchar(50) NOT NULL COMMENT '文档ID', - `project_id` varchar(50) NOT NULL COMMENT '所属项目ID', - `doc_type` varchar(50) NOT NULL COMMENT '文档类型', - `doc_name` varchar(500) NOT NULL COMMENT '文档名称', - `file_id` varchar(50) DEFAULT NULL COMMENT '关联文件表ID', - `file_path` varchar(500) DEFAULT NULL COMMENT '文件路径', - `file_size` bigint DEFAULT NULL COMMENT '文件大小', - `mime_type` varchar(100) DEFAULT NULL COMMENT 'MIME类型', - `version` int DEFAULT 1 COMMENT '版本号', - `language` varchar(20) DEFAULT 'zh-CN' COMMENT '语言', - `page_count` int DEFAULT NULL COMMENT '页数', - `parse_status` varchar(30) DEFAULT 'pending' COMMENT '解析状态', - `parse_result` json DEFAULT NULL COMMENT '解析结果', - `extraction_data` json DEFAULT NULL COMMENT '提取的结构化数据', - `ai_analysis` text DEFAULT NULL COMMENT 'AI分析结果', - `upload_date` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '上传日期', - `dept_path` varchar(255) DEFAULT NULL COMMENT '部门全路径', - `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID', - `creator` varchar(50) DEFAULT NULL COMMENT '创建者', - `updater` varchar(50) DEFAULT NULL COMMENT '更新者', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `delete_time` datetime DEFAULT NULL COMMENT '删除时间', - `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除', - PRIMARY KEY (`doc_id`), - UNIQUE KEY `uk_optsn` (`optsn`), - KEY `idx_project_id` (`project_id`), - KEY `idx_doc_type` (`doc_type`), - KEY `idx_tenant_id` (`tenant_id`), - CONSTRAINT `fk_bidding_document_project` FOREIGN KEY (`project_id`) REFERENCES `tb_bidding_project`(`project_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='招标文件表'; -``` - -## 4. 消息模块 (Message) - -### 4.1 消息表 -```sql -CREATE TABLE IF NOT EXISTS `tb_message` ( - `optsn` varchar(50) NOT NULL COMMENT '流水号', - `message_id` varchar(50) NOT NULL COMMENT '消息ID', - `title` varchar(255) NOT NULL COMMENT '消息标题', - `content` varchar(255) NOT NULL COMMENT '消息内容', - `type` varchar(50) NOT NULL COMMENT '消息类型', - `status` varchar(50) NOT NULL COMMENT '消息状态', - `service` varchar(50) NOT NULL COMMENT '服务类型', - `dept_path` varchar(255) DEFAULT NULL COMMENT '部门全路径', - `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID', - `creator` varchar(50) NOT NULL DEFAULT 'system' COMMENT '创建者', - `updater` varchar(50) DEFAULT NULL COMMENT '更新者', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `delete_time` datetime DEFAULT NULL COMMENT '删除时间', - `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除', - PRIMARY KEY (`message_id`), - UNIQUE KEY `uk_optsn` (`optsn`), - KEY `idx_tenant_id` (`tenant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='消息表'; - -### 4.2 消息发送范围表 -CREATE TABLE IF NOT EXISTS `tb_message_range` ( - `optsn` varchar(50) NOT NULL COMMENT '流水号', - `message_id` varchar(50) NOT NULL COMMENT '消息ID', - `target_type` varchar(20) NOT NULL COMMENT '目标类型:user/dept/role/all', - `target_id` varchar(50) DEFAULT NULL COMMENT '目标ID', - `channel` varchar(20) NOT NULL DEFAULT 'app' COMMENT '发送渠道', - `dept_path` varchar(255) DEFAULT NULL COMMENT '部门全路径', - `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID', - `creator` varchar(50) NOT NULL DEFAULT 'system' COMMENT '创建者', - `updater` varchar(50) DEFAULT NULL COMMENT '更新者', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `delete_time` datetime DEFAULT NULL COMMENT '删除时间', - `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除', - PRIMARY KEY (`optsn`), - UNIQUE KEY `uk_message_target` (`message_id`, `target_type`, `target_id`, `channel`), - KEY `idx_tenant_id` (`tenant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='消息发送范围定义表'; - -### 4.3 消息接收记录表 -CREATE TABLE IF NOT EXISTS `tb_message_receiver` ( - `optsn` varchar(50) NOT NULL COMMENT '流水号', - `message_id` varchar(50) NOT NULL COMMENT '消息ID', - `user_id` varchar(50) NOT NULL COMMENT '用户ID', - `channel` varchar(20) DEFAULT 'app' COMMENT '接收渠道', - `status` varchar(20) NOT NULL DEFAULT 'unread' COMMENT '状态', - `read_time` datetime DEFAULT NULL COMMENT '阅读时间', - `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - PRIMARY KEY (`optsn`), - UNIQUE KEY `uk_message_user` (`message_id`, `user_id`, `channel`), - KEY `idx_user_status` (`user_id`, `status`), - KEY `idx_tenant_id` (`tenant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户消息接收记录表'; -``` - -## 5. 平台管理模块 (Platform) - -```sql --- 平台管理的表通常比较简单,主要是配置和日志 --- 根据实际需求补充具体表结构 -``` - -## 6. 数据迁移脚本 - -### 6.1 用户数据映射 -```sql --- 创建用户映射表(临时) -CREATE TABLE IF NOT EXISTS `temp_user_mapping` ( - `old_user_id` varchar(50) NOT NULL COMMENT '原系统用户ID', - `new_user_id` bigint NOT NULL COMMENT 'pigx系统用户ID', - `user_type` varchar(20) NOT NULL COMMENT '用户类型', - PRIMARY KEY (`old_user_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户ID映射表(临时)'; - --- 插入映射数据(示例) --- INSERT INTO temp_user_mapping (old_user_id, new_user_id, user_type) --- SELECT old_id, new_id, 'staff' FROM ...; -``` - -### 6.2 数据迁移存储过程(示例) -```sql -DELIMITER $$ - -CREATE PROCEDURE migrate_workcase_data() -BEGIN - DECLARE done INT DEFAULT FALSE; - DECLARE v_old_user_id VARCHAR(50); - DECLARE v_new_user_id BIGINT; - - DECLARE cur CURSOR FOR - SELECT old_user_id, new_user_id FROM temp_user_mapping; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; - - -- 开始事务 - START TRANSACTION; - - -- 迁移工单数据 - INSERT INTO tb_workcase ( - optsn, workcase_id, room_id, user_id, username, phone, - type, device, device_code, device_name_plate, device_name_plate_img, - address, description, imgs, emergency, status, processor, - tenant_id, creator, create_time, update_time, delete_time, deleted - ) - SELECT - optsn, workcase_id, room_id, - COALESCE(m.new_user_id, w.user_id) as user_id, -- 映射用户ID - username, phone, - type, device, device_code, device_name_plate, device_name_plate_img, - address, description, - CASE WHEN imgs IS NULL THEN NULL ELSE JSON_ARRAY(imgs) END, -- 数组转JSON - emergency, status, processor, - 1 as tenant_id, -- 默认租户ID - creator, create_time, update_time, delete_time, deleted - FROM postgresql_workcase.tb_workcase w - LEFT JOIN temp_user_mapping m ON w.user_id = m.old_user_id; - - COMMIT; -END$$ - -DELIMITER ; -``` - -## 7. 索引优化建议 - -```sql --- 为查询性能添加复合索引 -ALTER TABLE tb_workcase ADD INDEX idx_status_tenant (status, tenant_id); -ALTER TABLE tb_chat_room ADD INDEX idx_status_tenant (status, tenant_id); -ALTER TABLE tb_chat_message ADD INDEX idx_chat_tenant (chat_id, tenant_id); -ALTER TABLE tb_agent ADD INDEX idx_category_tenant (category, tenant_id); -``` - -## 8. 注意事项 - -1. **租户隔离**:所有业务表都添加了 `tenant_id` 字段,默认值为 1 -2. **用户关联**:需要建立原系统用户ID到pigx用户ID的映射关系 -3. **数组处理**:PostgreSQL的数组类型转换为MySQL的JSON类型 -4. **时区处理**:PostgreSQL的TIMESTAMPTZ转换为MySQL的DATETIME,注意时区转换 -5. **外键约束**:根据实际需求决定是否保留外键约束 -6. **数据完整性**:迁移前做好数据备份,迁移后进行数据验证 - -## 9. 迁移后验证 - -```sql --- 验证数据条数 -SELECT 'tb_workcase' as table_name, COUNT(*) as record_count FROM tb_workcase -UNION ALL -SELECT 'tb_chat_room', COUNT(*) FROM tb_chat_room -UNION ALL -SELECT 'tb_agent', COUNT(*) FROM tb_agent -UNION ALL -SELECT 'tb_chat', COUNT(*) FROM tb_chat -UNION ALL -SELECT 'tb_knowledge', COUNT(*) FROM tb_knowledge; - --- 验证租户隔离 -SELECT tenant_id, COUNT(*) as count -FROM tb_workcase -GROUP BY tenant_id; - --- 验证用户关联 -SELECT COUNT(*) as unmapped_users -FROM tb_workcase w -LEFT JOIN sys_user u ON w.user_id = u.user_id -WHERE u.user_id IS NULL; -``` \ No newline at end of file diff --git a/.kiro/specs/urbanlifeline-to-pigx-migration/database-migration.md b/.kiro/specs/urbanlifeline-to-pigx-migration/database-migration.md deleted file mode 100644 index deffb54b..00000000 --- a/.kiro/specs/urbanlifeline-to-pigx-migration/database-migration.md +++ /dev/null @@ -1,571 +0,0 @@ -# 数据库迁移脚本指南(PostgreSQL → MySQL) - -## 1. 概述 - -本文档提供了将 urbanLifeline 数据库从 PostgreSQL 迁移到 MySQL(pigx 平台)的完整脚本和指南。 - -## 2. 数据类型映射 - -| PostgreSQL | MySQL | 说明 | -|-----------|-------|------| -| VARCHAR(n) | VARCHAR(n) | 字符串 | -| TEXT | TEXT | 长文本 | -| INTEGER | INT | 整数 | -| BIGINT | BIGINT | 长整数 | -| BOOLEAN | TINYINT(1) | 布尔值 | -| TIMESTAMPTZ | DATETIME | 时间戳 | -| JSONB | JSON | JSON数据 | -| NUMERIC(p,s) | DECIMAL(p,s) | 小数 | -| VARCHAR(n)[] | JSON | 数组转JSON | -| SERIAL | INT AUTO_INCREMENT | 自增 | - -## 3. pigx-dify 模块数据库脚本 - -### 3.1 智能体表 (tb_agent) - -```sql --- 智能体配置表 -CREATE TABLE `tb_agent` ( - `optsn` varchar(50) NOT NULL COMMENT '流水号', - `agent_id` varchar(50) NOT NULL COMMENT '智能体ID', - `name` varchar(50) NOT NULL COMMENT '智能体名称', - `description` varchar(500) DEFAULT NULL COMMENT '智能体描述', - `link` varchar(500) DEFAULT NULL COMMENT '智能体url', - `api_key` varchar(500) NOT NULL COMMENT 'dify智能体APIKEY', - `is_outer` tinyint(1) DEFAULT '0' COMMENT '是否是对外智能体,未登录可用', - `introduce` varchar(500) NOT NULL COMMENT '引导词', - `prompt_cards` json DEFAULT NULL COMMENT '提示卡片数组 [{file_id:, prompt:}]', - `category` varchar(50) NOT NULL COMMENT '分类', - `tenant_id` bigint NOT NULL DEFAULT '1' COMMENT '租户ID', - `creator` varchar(50) DEFAULT NULL COMMENT '创建者', - `updater` varchar(50) DEFAULT NULL COMMENT '更新者', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `delete_time` datetime DEFAULT NULL COMMENT '删除时间', - `deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否删除', - PRIMARY KEY (`agent_id`), - UNIQUE KEY `uk_optsn` (`optsn`), - UNIQUE KEY `uk_api_key` (`api_key`), - KEY `idx_tenant_id` (`tenant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI智能体配置表'; -``` - -### 3.2 对话表 (tb_chat) - -```sql --- AI智能体对话表 -CREATE TABLE `tb_chat` ( - `optsn` varchar(50) NOT NULL COMMENT '流水号', - `chat_id` varchar(50) NOT NULL COMMENT '对话ID', - `agent_id` varchar(50) NOT NULL COMMENT '智能体ID', - `user_id` varchar(50) NOT NULL COMMENT '用户ID', - `user_type` tinyint(1) NOT NULL DEFAULT '1' COMMENT '用户类型 1-系统内部人员 0-系统外部人员', - `title` varchar(500) NOT NULL COMMENT '对话标题', - `channel` varchar(50) DEFAULT 'agent' COMMENT '对话渠道 agent、wechat', - `tenant_id` bigint NOT NULL DEFAULT '1' COMMENT '租户ID', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `delete_time` datetime DEFAULT NULL COMMENT '删除时间', - `deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否删除', - PRIMARY KEY (`chat_id`), - UNIQUE KEY `uk_optsn` (`optsn`), - KEY `idx_agent_id` (`agent_id`), - KEY `idx_user_id` (`user_id`), - KEY `idx_tenant_id` (`tenant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI智能体对话表'; -``` - -### 3.3 聊天消息表 (tb_chat_message) - -```sql --- AI智能体对话消息表 -CREATE TABLE `tb_chat_message` ( - `optsn` varchar(50) NOT NULL COMMENT '流水号', - `message_id` varchar(50) NOT NULL COMMENT '消息ID', - `dify_message_id` varchar(100) DEFAULT NULL COMMENT 'Dify消息ID', - `chat_id` varchar(50) NOT NULL COMMENT '对话ID', - `role` varchar(50) NOT NULL COMMENT '角色:user-用户/ai-智能体/recipient-来客', - `content` text NOT NULL COMMENT '消息内容', - `files` json DEFAULT NULL COMMENT '文件id数组', - `comment` varchar(50) DEFAULT NULL COMMENT '评价', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `delete_time` datetime DEFAULT NULL COMMENT '删除时间', - `deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否删除', - PRIMARY KEY (`message_id`), - UNIQUE KEY `uk_optsn` (`optsn`), - KEY `idx_chat_id` (`chat_id`), - KEY `idx_dify_message_id` (`dify_message_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI智能体对话消息表'; -``` - -### 3.4 知识库表 (tb_knowledge) - -```sql --- 知识库配置表 -CREATE TABLE `tb_knowledge` ( - `optsn` varchar(50) NOT NULL COMMENT '流水号', - `knowledge_id` varchar(50) NOT NULL COMMENT '知识库ID', - `title` varchar(255) NOT NULL COMMENT '知识库标题', - `avatar` varchar(255) DEFAULT NULL COMMENT '知识库头像', - `description` varchar(500) DEFAULT NULL COMMENT '知识库描述', - `dify_dataset_id` varchar(100) DEFAULT NULL COMMENT 'Dify知识库ID(Dataset ID)', - `dify_indexing_technique` varchar(50) DEFAULT 'high_quality' COMMENT 'Dify索引方式(high_quality/economy)', - `embedding_model` varchar(100) DEFAULT NULL COMMENT '向量模型名称', - `embedding_model_provider` varchar(100) DEFAULT NULL COMMENT '向量模型提供商', - `rerank_model` varchar(100) DEFAULT NULL COMMENT 'Rerank模型名称', - `rerank_model_provider` varchar(100) DEFAULT NULL COMMENT 'Rerank模型提供商', - `reranking_enable` tinyint(1) DEFAULT '0' COMMENT '是否启用Rerank', - `retrieval_top_k` int DEFAULT '2' COMMENT '检索Top K(返回前K个结果)', - `retrieval_score_threshold` decimal(3,2) DEFAULT '0.00' COMMENT '检索分数阈值(0.00-1.00)', - `document_count` int DEFAULT '0' COMMENT '文档数量', - `total_chunks` int DEFAULT '0' COMMENT '总分段数', - `service` varchar(50) DEFAULT NULL COMMENT '所属服务 workcase、bidding', - `project_id` varchar(50) DEFAULT NULL COMMENT 'bidding所属项目ID', - `category` varchar(50) DEFAULT NULL COMMENT '所属分类', - `tenant_id` bigint NOT NULL DEFAULT '1' COMMENT '租户ID', - `creator` varchar(50) NOT NULL COMMENT '创建者(用户ID)', - `dept_path` varchar(50) DEFAULT NULL COMMENT '创建者部门路径', - `updater` varchar(50) DEFAULT NULL COMMENT '更新者', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `delete_time` datetime DEFAULT NULL COMMENT '删除时间', - `deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否删除', - PRIMARY KEY (`optsn`), - UNIQUE KEY `uk_knowledge_id` (`knowledge_id`), - UNIQUE KEY `uk_dify_dataset_id` (`dify_dataset_id`), - KEY `idx_tenant_id` (`tenant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='知识库配置表'; -``` - -### 3.5 知识库文件表 (tb_knowledge_file) - -```sql --- 知识库文件表 -CREATE TABLE `tb_knowledge_file` ( - `optsn` varchar(50) NOT NULL COMMENT '流水号', - `knowledge_id` varchar(50) NOT NULL COMMENT '知识库ID', - `file_root_id` varchar(50) NOT NULL COMMENT '文件根ID', - `file_id` varchar(50) NOT NULL COMMENT '文件ID', - `dify_file_id` varchar(50) NOT NULL COMMENT 'dify文件ID', - `version` int NOT NULL DEFAULT '1' COMMENT '文件版本', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `delete_time` datetime DEFAULT NULL COMMENT '删除时间', - `deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否删除', - PRIMARY KEY (`optsn`), - UNIQUE KEY `uk_knowledge_file` (`knowledge_id`, `file_id`), - KEY `idx_file_root_id` (`file_root_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='知识库文件表'; -``` - -## 4. pigx-app-server 模块数据库脚本 - -### 4.1 工单表 (tb_workcase) - -```sql --- 工单表 -CREATE TABLE `tb_workcase` ( - `optsn` varchar(50) NOT NULL COMMENT '流水号', - `workcase_id` varchar(50) NOT NULL COMMENT '工单ID', - `room_id` varchar(50) NOT NULL COMMENT '聊天室ID', - `user_id` varchar(50) NOT NULL COMMENT '来客ID', - `username` varchar(200) NOT NULL COMMENT '来客姓名', - `phone` varchar(20) NOT NULL COMMENT '来客电话', - `type` varchar(50) NOT NULL COMMENT '故障类型', - `device` varchar(50) DEFAULT NULL COMMENT '设备名称', - `device_code` varchar(50) DEFAULT NULL COMMENT '设备代码', - `device_name_plate` varchar(50) DEFAULT NULL COMMENT '设备名称牌', - `device_name_plate_img` varchar(50) NOT NULL COMMENT '设备名称牌图片', - `address` varchar(1000) DEFAULT NULL COMMENT '现场地址', - `description` varchar(1000) DEFAULT NULL COMMENT '故障描述', - `imgs` json DEFAULT NULL COMMENT '工单图片id数组', - `emergency` varchar(50) NOT NULL DEFAULT 'normal' COMMENT '紧急程度 normal-普通 emergency-紧急', - `status` varchar(50) NOT NULL DEFAULT 'pending' COMMENT '状态 pending-待处理 processing-处理中 done-已完成', - `processor` varchar(50) DEFAULT NULL COMMENT '处理人', - `tenant_id` bigint NOT NULL DEFAULT '1' COMMENT '租户ID', - `creator` varchar(50) NOT NULL COMMENT '创建人', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `delete_time` datetime DEFAULT NULL COMMENT '删除时间', - `deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否删除', - PRIMARY KEY (`workcase_id`), - UNIQUE KEY `uk_room_id` (`room_id`), - UNIQUE KEY `uk_optsn` (`optsn`), - KEY `idx_user_id` (`user_id`), - KEY `idx_status` (`status`), - KEY `idx_tenant_id` (`tenant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='工单表'; -``` - -### 4.2 聊天室表 (tb_chat_room) - -```sql --- IM聊天室表 -CREATE TABLE `tb_chat_room` ( - `optsn` varchar(50) NOT NULL COMMENT '流水号', - `room_id` varchar(50) NOT NULL COMMENT '聊天室ID', - `workcase_id` varchar(50) DEFAULT NULL COMMENT '关联工单ID', - `room_name` varchar(200) NOT NULL COMMENT '聊天室名称', - `room_type` varchar(20) NOT NULL DEFAULT 'workcase' COMMENT '聊天室类型:workcase-工单客服', - `status` varchar(20) NOT NULL DEFAULT 'active' COMMENT '状态:active-活跃 closed-已关闭 archived-已归档', - `guest_id` varchar(50) NOT NULL COMMENT '来客ID(创建者)', - `guest_name` varchar(100) NOT NULL COMMENT '来客姓名', - `ai_session_id` varchar(50) DEFAULT NULL COMMENT 'AI对话会话ID(从ai.tb_chat同步)', - `message_count` int NOT NULL DEFAULT '0' COMMENT '消息总数', - `device_code` varchar(50) NOT NULL COMMENT '设备代码', - `last_message_time` datetime DEFAULT NULL COMMENT '最后消息时间', - `last_message` text DEFAULT NULL COMMENT '最后一条消息内容', - `comment_level` int DEFAULT '0' COMMENT '服务评分(1-5)', - `closed_by` varchar(50) DEFAULT NULL COMMENT '关闭人', - `closed_time` datetime DEFAULT NULL COMMENT '关闭时间', - `tenant_id` bigint NOT NULL DEFAULT '1' COMMENT '租户ID', - `creator` varchar(50) NOT NULL COMMENT '创建人', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `delete_time` datetime DEFAULT NULL COMMENT '删除时间', - `deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否删除', - PRIMARY KEY (`room_id`), - UNIQUE KEY `uk_workcase_id` (`workcase_id`), - UNIQUE KEY `uk_optsn` (`optsn`), - KEY `idx_guest` (`guest_id`, `status`), - KEY `idx_last_message_time` (`last_message_time`), - KEY `idx_tenant_id` (`tenant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='IM聊天室表,一个工单对应一个聊天室'; -``` - -### 4.3 聊天室成员表 (tb_chat_room_member) - -```sql --- 聊天室成员表 -CREATE TABLE `tb_chat_room_member` ( - `optsn` varchar(50) NOT NULL COMMENT '流水号', - `member_id` varchar(50) NOT NULL COMMENT '成员记录ID', - `room_id` varchar(50) NOT NULL COMMENT '聊天室ID', - `user_id` varchar(50) NOT NULL COMMENT '用户ID(来客ID或员工ID)', - `user_type` varchar(20) NOT NULL COMMENT '用户类型:guest-来客 staff-客服 ai-AI助手', - `user_name` varchar(100) NOT NULL COMMENT '用户名称', - `status` varchar(20) NOT NULL DEFAULT 'active' COMMENT '状态:active-活跃 left-已离开 removed-被移除', - `unread_count` int NOT NULL DEFAULT '0' COMMENT '未读消息数', - `last_read_time` datetime DEFAULT NULL COMMENT '最后阅读时间', - `last_read_msg_id` varchar(50) DEFAULT NULL COMMENT '最后阅读的消息ID', - `join_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '加入时间', - `leave_time` datetime DEFAULT NULL COMMENT '离开时间', - `creator` varchar(50) NOT NULL COMMENT '创建人', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - PRIMARY KEY (`member_id`), - UNIQUE KEY `uk_room_user` (`room_id`, `user_id`), - KEY `idx_room_status` (`room_id`, `status`), - KEY `idx_user` (`user_id`, `user_type`, `status`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='聊天室成员表'; -``` - -### 4.4 聊天室消息表 (tb_chat_room_message) - -```sql --- 聊天室消息表 -CREATE TABLE `tb_chat_room_message` ( - `optsn` varchar(50) NOT NULL COMMENT '流水号', - `message_id` varchar(50) NOT NULL COMMENT '消息ID', - `room_id` varchar(50) NOT NULL COMMENT '聊天室ID', - `sender_id` varchar(50) NOT NULL COMMENT '发送者ID', - `sender_type` varchar(20) NOT NULL COMMENT '发送者类型:guest-来客 agent-客服 ai-AI助手 system-系统消息', - `sender_name` varchar(100) NOT NULL COMMENT '发送者名称', - `message_type` varchar(20) NOT NULL DEFAULT 'text' COMMENT '消息类型', - `content` text NOT NULL COMMENT '消息内容', - `files` json DEFAULT NULL COMMENT '附件文件ID数组', - `content_extra` json DEFAULT NULL COMMENT '扩展内容(会议链接、引用信息等)', - `reply_to_msg_id` varchar(50) DEFAULT NULL COMMENT '回复的消息ID', - `is_ai_message` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否AI消息', - `ai_message_id` varchar(50) DEFAULT NULL COMMENT 'AI原始消息ID', - `status` varchar(20) NOT NULL DEFAULT 'sent' COMMENT '状态', - `read_count` int NOT NULL DEFAULT '0' COMMENT '已读人数', - `send_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '发送时间', - `creator` varchar(50) NOT NULL COMMENT '创建人', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - PRIMARY KEY (`message_id`), - KEY `idx_room_time` (`room_id`, `send_time`), - KEY `idx_sender` (`sender_id`, `sender_type`), - KEY `idx_ai_message` (`ai_message_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='IM聊天消息表'; -``` - -### 4.5 视频会议表 (tb_video_meeting) - -```sql --- Jitsi Meet视频会议表 -CREATE TABLE `tb_video_meeting` ( - `optsn` varchar(50) NOT NULL COMMENT '流水号', - `meeting_id` varchar(50) NOT NULL COMMENT '会议ID(也是Jitsi房间名)', - `room_id` varchar(50) NOT NULL COMMENT '关联聊天室ID', - `workcase_id` varchar(50) NOT NULL COMMENT '关联工单ID', - `meeting_name` varchar(200) NOT NULL COMMENT '会议名称', - `meeting_password` varchar(50) DEFAULT NULL COMMENT '会议密码', - `description` varchar(500) DEFAULT NULL COMMENT '会议描述', - `jwt_token` text DEFAULT NULL COMMENT 'JWT Token(用于身份验证)', - `jitsi_room_name` varchar(200) NOT NULL COMMENT 'Jitsi房间名', - `jitsi_server_url` varchar(500) NOT NULL DEFAULT 'https://meet.jit.si' COMMENT 'Jitsi服务器地址', - `status` varchar(20) NOT NULL DEFAULT 'scheduled' COMMENT '状态', - `creator_type` varchar(20) NOT NULL COMMENT '创建者类型', - `creator_name` varchar(100) NOT NULL COMMENT '创建者名称', - `participant_count` int NOT NULL DEFAULT '0' COMMENT '参与人数', - `max_participants` int DEFAULT '10' COMMENT '最大参与人数', - `start_time` datetime NOT NULL COMMENT '定义会议开始时间', - `end_time` datetime NOT NULL COMMENT '定义会议结束时间', - `advance` int DEFAULT '5' COMMENT '提前入会时间(分钟)', - `actual_start_time` datetime DEFAULT NULL COMMENT '真正会议开始时间', - `actual_end_time` datetime DEFAULT NULL COMMENT '真正会议结束时间', - `duration_seconds` int DEFAULT '0' COMMENT '会议时长(秒)', - `iframe_url` text DEFAULT NULL COMMENT 'iframe嵌入URL', - `config` json DEFAULT NULL COMMENT 'Jitsi配置项', - `tenant_id` bigint NOT NULL DEFAULT '1' COMMENT '租户ID', - `creator` varchar(50) NOT NULL COMMENT '创建人', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `delete_time` datetime DEFAULT NULL COMMENT '删除时间', - `deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否删除', - PRIMARY KEY (`meeting_id`), - UNIQUE KEY `uk_jitsi_room_name` (`jitsi_room_name`), - KEY `idx_room` (`room_id`, `status`), - KEY `idx_workcase` (`workcase_id`, `status`), - KEY `idx_create_time` (`create_time`), - KEY `idx_tenant_id` (`tenant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Jitsi Meet视频会议表'; -``` - -## 5. 数据迁移步骤 - -### 5.1 准备工作 - -```bash -# 1. 导出 PostgreSQL 数据 -pg_dump -h localhost -p 5432 -U postgres -d urbanlifeline \ - --data-only \ - --column-inserts \ - --no-owner \ - --no-privileges \ - --no-tablespaces \ - > urbanlifeline_data.sql - -# 2. 创建 MySQL 数据库 -mysql -u root -p -e "CREATE DATABASE pigx_dify DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;" -``` - -### 5.2 执行表结构创建 - -```bash -# 执行所有建表语句 -mysql -u root -p pigx_dify < create_tables.sql -``` - -### 5.3 数据转换脚本 - -```python -#!/usr/bin/env python3 -# convert_data.py - PostgreSQL 到 MySQL 数据转换脚本 - -import re -import json - -def convert_postgresql_to_mysql(input_file, output_file): - with open(input_file, 'r', encoding='utf-8') as f: - content = f.read() - - # 替换 PostgreSQL 特有语法 - replacements = [ - # 布尔值转换 - (r'\btrue\b', '1'), - (r'\bfalse\b', '0'), - # 时间戳转换 - (r"now\(\)", "CURRENT_TIMESTAMP"), - # 数组转JSON - (r"'{([^}]*)}'::\w+\[\]", lambda m: f"'{json.dumps(m.group(1).split(',') if m.group(1) else [])}'"), - # Schema 去除 - (r'\b(workcase|ai|sys|message|bidding)\\.', ''), - ] - - for pattern, replacement in replacements: - if callable(replacement): - content = re.sub(pattern, replacement, content) - else: - content = re.sub(pattern, replacement, content, flags=re.IGNORECASE) - - # 添加租户ID到每个INSERT语句 - content = add_tenant_id(content) - - with open(output_file, 'w', encoding='utf-8') as f: - f.write(content) - -def add_tenant_id(content): - """为所有INSERT语句添加tenant_id字段""" - lines = content.split('\n') - result = [] - - for line in lines: - if line.startswith('INSERT INTO'): - # 检查表是否需要tenant_id - if any(table in line for table in ['tb_agent', 'tb_chat', 'tb_workcase', 'tb_chat_room']): - # 在VALUES前添加tenant_id字段 - line = re.sub( - r'(\([^)]+)\)', - r'\1, tenant_id)', - line, count=1 - ) - # 在值列表中添加1作为默认租户ID - line = re.sub( - r'VALUES\s*\(([^)]+)\)', - r'VALUES (\1, 1)', - line - ) - result.append(line) - - return '\n'.join(result) - -if __name__ == '__main__': - convert_postgresql_to_mysql('urbanlifeline_data.sql', 'pigx_data.sql') - print("数据转换完成!") -``` - -### 5.4 导入数据到 MySQL - -```bash -# 导入转换后的数据 -mysql -u root -p pigx_dify < pigx_data.sql - -# 验证数据 -mysql -u root -p pigx_dify -e " -SELECT COUNT(*) FROM tb_agent; -SELECT COUNT(*) FROM tb_chat; -SELECT COUNT(*) FROM tb_workcase; -" -``` - -## 6. 添加租户字段指南 - -### 6.1 需要添加 tenant_id 的表 - -所有业务表都需要添加 `tenant_id` 字段: -- tb_agent -- tb_chat -- tb_chat_message(通过chat关联获取) -- tb_knowledge -- tb_workcase -- tb_chat_room -- tb_video_meeting - -### 6.2 添加租户字段的SQL模板 - -```sql --- 为现有表添加租户字段(如果表已存在) -ALTER TABLE `tb_agent` -ADD COLUMN `tenant_id` BIGINT NOT NULL DEFAULT 1 COMMENT '租户ID' AFTER `category`, -ADD INDEX `idx_tenant_id` (`tenant_id`); - --- 更新现有数据的租户ID(默认为1) -UPDATE tb_agent SET tenant_id = 1 WHERE tenant_id IS NULL; -``` - -### 6.3 MyBatis-Plus 配置 - -```java -// 实体类添加租户字段 -@TableField(fill = FieldFill.INSERT) -private Long tenantId; - -// 自动填充处理器 -@Component -public class MybatisPlusMetaObjectHandler implements MetaObjectHandler { - @Override - public void insertFill(MetaObject metaObject) { - PigxUser user = SecurityUtils.getUser(); - this.strictInsertFill(metaObject, "tenantId", Long.class, user.getTenantId()); - } -} - -// 租户拦截器配置 -@Bean -public MybatisPlusInterceptor mybatisPlusInterceptor() { - MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); - interceptor.addInnerInterceptor(new TenantLineInnerInterceptor(new TenantLineHandler() { - @Override - public Expression getTenantId() { - return new LongValue(SecurityUtils.getUser().getTenantId()); - } - - @Override - public String getTenantIdColumn() { - return "tenant_id"; - } - })); - return interceptor; -} -``` - -## 7. 验证和测试 - -### 7.1 数据完整性检查 - -```sql --- 检查数据迁移完整性 -SELECT - 'tb_agent' AS table_name, - COUNT(*) AS record_count -FROM tb_agent -UNION ALL -SELECT 'tb_chat', COUNT(*) FROM tb_chat -UNION ALL -SELECT 'tb_workcase', COUNT(*) FROM tb_workcase; - --- 检查租户ID设置 -SELECT - tenant_id, - COUNT(*) AS record_count -FROM tb_agent -GROUP BY tenant_id; -``` - -### 7.2 索引优化 - -```sql --- 添加常用查询索引 -ALTER TABLE tb_chat ADD INDEX idx_user_agent (user_id, agent_id); -ALTER TABLE tb_workcase ADD INDEX idx_create_time (create_time DESC); -ALTER TABLE tb_chat_message ADD INDEX idx_chat_time (chat_id, create_time DESC); -``` - -## 8. 回滚方案 - -如果迁移失败,可以使用以下方式回滚: - -```bash -# 备份当前MySQL数据 -mysqldump -u root -p pigx_dify > backup_before_migration.sql - -# 如需回滚 -mysql -u root -p -e "DROP DATABASE pigx_dify; CREATE DATABASE pigx_dify;" -mysql -u root -p pigx_dify < backup_before_migration.sql -``` - -## 9. 注意事项 - -1. **字符集**:确保 MySQL 使用 utf8mb4 字符集 -2. **时区**:注意 PostgreSQL 的 TIMESTAMPTZ 转换为 MySQL DATETIME 可能有时区差异 -3. **数组类型**:PostgreSQL 的数组类型需要转换为 JSON -4. **事务**:大批量数据导入时注意事务大小 -5. **权限**:确保 MySQL 用户有足够权限创建表和索引 -6. **外键**:本脚本未创建外键约束,如需要可后续添加 - -## 10. 迁移清单 - -- [ ] 导出 PostgreSQL 数据 -- [ ] 创建 MySQL 数据库和表结构 -- [ ] 执行数据转换脚本 -- [ ] 导入数据到 MySQL -- [ ] 添加租户字段和索引 -- [ ] 验证数据完整性 -- [ ] 测试查询性能 -- [ ] 配置 MyBatis-Plus 租户拦截器 -- [ ] 执行应用集成测试 -- [ ] 准备回滚方案 \ No newline at end of file diff --git a/.kiro/specs/urbanlifeline-to-pigx-migration/design.md b/.kiro/specs/urbanlifeline-to-pigx-migration/design.md deleted file mode 100644 index 73757050..00000000 --- a/.kiro/specs/urbanlifeline-to-pigx-migration/design.md +++ /dev/null @@ -1,547 +0,0 @@ -# Design Document - -## Overview - -本设计文档描述了将 urbanLifelineServ 和 urbanLifelineWeb 的**业务功能**迁移到 pigx-ai 平台的技术方案。 - -### 核心原则 -- **只迁移业务代码**:招标、工单、平台管理、AI、消息等业务功能 -- **复用 pigx 基础设施**:人员、部门、权限、认证完全使用 pigx 原生实现 -- **适配 pigx 规范**:使用 PigxUser、R 响应格式、Feign 远程调用等 - -### 迁移范围 - -| 源模块 | 目标位置 | 说明 | -|-------|---------|------| -| bidding | pigx-app-server-biz | 招标业务 | -| workcase | pigx-app-server-biz | 工单业务 | -| platform | pigx-app-server-biz | 平台管理 | -| ai | pigx-dify(新建模块) | AI对话/知识库/Dify集成 | -| message | pigx-app-server-biz | 消息通知 | -| file | 使用 pigx-common-oss | 文件服务 | -| crontab | pigx-visual/xxl-job | 定时任务 | - -## Architecture - -### 后端模块结构 - -``` -pigx-app-server/ -├── pigx-app-server-api/ # API接口定义 -│ └── src/main/java/com/pig4cloud/pigx/app/api/ -│ ├── entity/ # 业务实体 -│ │ ├── bidding/ # 招标实体 -│ │ ├── workcase/ # 工单实体 -│ │ └── platform/ # 平台实体 -│ ├── dto/ # 数据传输对象 -│ ├── vo/ # 视图对象 -│ └── feign/ # Feign接口 -└── pigx-app-server-biz/ # 业务实现 - └── src/main/java/com/pig4cloud/pigx/app/ - ├── controller/ - │ ├── bidding/ # 招标控制器 - │ ├── workcase/ # 工单控制器 - │ ├── platform/ # 平台控制器 - │ └── message/ # 消息控制器 - ├── service/ - │ ├── bidding/ - │ ├── workcase/ - │ ├── platform/ - │ └── message/ - └── mapper/ - ├── bidding/ - ├── workcase/ - ├── platform/ - └── message/ - -pigx-dify/ # 新建的AI模块 -├── pigx-dify-api/ # API接口定义 -│ └── src/main/java/com/pig4cloud/pigx/dify/api/ -│ ├── entity/ # AI实体 -│ │ ├── TbAgent.java # 智能体配置 -│ │ ├── TbChat.java # 聊天会话 -│ │ ├── TbChatMessage.java # 聊天消息 -│ │ └── TbKnowledge.java # 知识库 -│ ├── dto/ # 数据传输对象 -│ └── feign/ # Feign接口 -└── pigx-dify-biz/ # 业务实现 - └── src/main/java/com/pig4cloud/pigx/dify/ - ├── controller/ - │ ├── AgentController.java # 智能体管理 - │ ├── ChatController.java # 对话管理 - │ └── KnowledgeController.java # 知识库管理 - ├── service/ - │ ├── AgentService.java - │ ├── ChatService.java - │ └── KnowledgeService.java - ├── mapper/ - │ ├── AgentMapper.java - │ ├── ChatMapper.java - │ └── KnowledgeMapper.java - └── client/ - └── DifyApiClient.java # Dify API客户端 -``` - -### 前端模块结构 - -``` -pigx-ai-ui/src/ -├── views/ -│ ├── urban/ # 迁移的业务视图 -│ │ ├── bidding/ # 招标页面 -│ │ ├── workcase/ # 工单页面 -│ │ └── platform/ # 平台管理页面 -│ └── dify/ # AI功能页面(新建) -│ ├── agent/ # 智能体管理 -│ ├── chat/ # 对话界面 -│ └── knowledge/ # 知识库管理 -├── components/ -│ └── urban/ # 迁移的共享组件 -└── api/ - ├── urban/ # 业务API定义 - │ ├── bidding.ts - │ ├── workcase.ts - │ └── platform.ts - └── dify/ # AI API定义 - ├── agent.ts - ├── chat.ts - └── knowledge.ts -``` - -## Components and Interfaces - -### 1. 权限模型完全替换 - -**核心原则**: 不迁移任何用户、部门、角色、权限数据,完全使用 pigx 原生权限体系。 - -#### 权限注解适配 - -```java -// 源代码 (urbanLifelineServ 使用 @PreAuthorize) -@PreAuthorize("hasAuthority('workcase:ticket:create')") -@PostMapping -public ResultDomain createWorkcase(@RequestBody TbWorkcaseDTO workcase) { - return ResultDomain.success(workcaseService.save(workcase)); -} - -// 目标代码 (pigx-app-server 使用 @HasPermission) -@HasPermission("workcase_ticket_add") -@PostMapping -public R createWorkcase(@RequestBody TbWorkcaseDTO workcase) { - return R.ok(workcaseService.save(workcase)); -} -``` - -#### 权限标识映射规则 - -| 源权限标识 | 目标权限标识 | 说明 | -|-----------|-------------|------| -| workcase:ticket:create | workcase_ticket_add | 工单创建 | -| workcase:ticket:update | workcase_ticket_edit | 工单编辑 | -| workcase:ticket:view | workcase_ticket_view | 工单查看 | -| workcase:ticket:delete | workcase_ticket_del | 工单删除 | -| bidding:project:create | bidding_project_add | 招标创建 | -| bidding:project:view | bidding_project_view | 招标查看 | - -#### 用户信息获取适配 - -```java -// 源代码 (JWT 获取用户) -Long userId = JwtUtils.getUserId(); -String username = JwtUtils.getUsername(); - -// 目标代码 (pigx SecurityUtils) -PigxUser user = SecurityUtils.getUser(); -Long userId = user.getId(); -String username = user.getUsername(); -Long tenantId = user.getTenantId(); // 租户ID -Long deptId = user.getDeptId(); // 部门ID -``` - -#### 用户服务调用适配 - -```java -// 源代码 (直接调用 UserService) -@Autowired -private UserService userService; -User user = userService.getById(userId); - -// 目标代码 (通过 Feign 调用 pigx-upms) -@Autowired -private RemoteUserService remoteUserService; -R result = remoteUserService.selectById(userId); -SysUser user = result.getData(); -``` - -### 2. 菜单和权限配置 - -**不迁移源系统的菜单和权限数据**,在 pigx 中重新配置: - -#### 菜单配置 (sys_menu 表) - -```sql --- 在 pigx 的 sys_menu 表中添加业务功能菜单 -INSERT INTO sys_menu (menu_id, name, permission, path, parent_id, icon, sort, type, tenant_id) VALUES -(1000, '工单管理', 'workcase_menu', '/workcase', 0, 'workcase', 1, '0', 1), -(1001, '工单列表', 'workcase_ticket_view', '/workcase/list', 1000, '', 1, '1', 1), -(1002, '创建工单', 'workcase_ticket_add', '', 1000, '', 2, '2', 1), -(1003, '编辑工单', 'workcase_ticket_edit', '', 1000, '', 3, '2', 1), -(1004, '删除工单', 'workcase_ticket_del', '', 1000, '', 4, '2', 1), - -(2000, '招标管理', 'bidding_menu', '/bidding', 0, 'bidding', 2, '0', 1), -(2001, '招标项目', 'bidding_project_view', '/bidding/project', 2000, '', 1, '1', 1), -(2002, '创建项目', 'bidding_project_add', '', 2000, '', 2, '2', 1), -(2003, '编辑项目', 'bidding_project_edit', '', 2000, '', 3, '2', 1); -``` - -#### 角色权限分配 - -使用 pigx 现有的角色管理功能,为角色分配新的业务权限: - -```sql --- 为管理员角色分配所有业务权限 -INSERT INTO sys_role_menu (role_id, menu_id) -SELECT 1, menu_id FROM sys_menu WHERE permission LIKE 'workcase_%' OR permission LIKE 'bidding_%'; -``` - -#### 数据权限适配 - -```java -// 源代码 (可能没有租户隔离) -@PostMapping("/list") -public ResultDomain getWorkcaseList(@RequestBody TbWorkcaseDTO filter) { - return ResultDomain.success(workcaseService.list(filter)); -} - -// 目标代码 (自动添加租户和部门过滤) -@PostMapping("/list") -@HasPermission("workcase_ticket_view") -public R> getWorkcaseList(@RequestBody TbWorkcaseDTO filter) { - // pigx 会自动根据用户的租户ID和数据权限过滤数据 - return R.ok(workcaseService.list(filter)); -} -``` - -```java -// 源代码 (urbanLifelineServ 使用 ResultDomain) -@GetMapping("/list") -public ResultDomain list() { - // ResultDomain 包含 dataList 字段 - return ResultDomain.success(workcaseService.list()); -} - -// 目标代码 (使用 pigx R) -@GetMapping("/list") -public R> list() { - return R.ok(workcaseService.list()); -} - -// 或者使用分页 (pigx IPage) -@GetMapping("/page") -public R> page(Page page) { - return R.ok(workcaseService.page(page)); -} -``` - -**响应格式映射**: -| 源格式 (ResultDomain) | 目标格式 (R) | -|---------------------|----------------| -| ResultDomain.success(data) | R.ok(data) | -| ResultDomain.fail(msg) | R.failed(msg) | -| dataList 字段 | data 字段 (直接返回List) | -| code/message | code/msg | - -### 3. 响应格式适配 - -```java -// 源代码 -Long userId = JwtUtils.getUserId(); - -// 目标代码 (使用 pigx SecurityUtils) -PigxUser user = SecurityUtils.getUser(); -Long userId = user.getId(); -Long tenantId = user.getTenantId(); -Long deptId = user.getDeptId(); -``` - -### 4. 文件上传适配 - -```java -// 源代码 (MinIO直接调用) -minioClient.putObject(bucket, objectName, inputStream); - -// 目标代码 (使用 pigx OSS) -@Autowired -private OssTemplate ossTemplate; -ossTemplate.putObject(bucket, objectName, inputStream); -``` - -### 5. 前端 API 调用适配 - -```typescript -// 源代码 (urbanLifelineWeb) -import { request } from '@shared/utils/request' -export const getWorkcaseList = () => request.get('/workcase/list') - -// 目标代码 (pigx-ai-ui) -import request from '/@/utils/request' -export const getWorkcaseList = () => request.get('/app/workcase/list') -``` - -### 6. pigx-dify 模块设计(新增) - -#### 6.1 模块定位 -pigx-dify 是独立的 AI 服务模块,保留原 urbanLifeline 的 AI 功能和 Dify 平台集成,不与 pigx-knowledge 混合使用。 - -#### 6.2 核心组件 - -**DifyApiClient 保留原有功能:** -```java -@Component -public class DifyApiClient { - // 知识库管理 - public DatasetCreateResponse createDataset(DatasetCreateRequest request); - public DatasetListResponse listDatasets(int page, int limit); - - // 对话功能(保留流式和阻塞两种模式) - public void streamChat(ChatRequest request, String apiKey, StreamCallback callback); - public ChatResponse blockingChat(ChatRequest request, String apiKey); - - // 工作流调用 - public WorkflowRunResponse runWorkflowBlocking(WorkflowRunRequest request, String apiKey); -} -``` - -**数据模型保持不变:** -```java -// 智能体配置 -@TableName("tb_agent") -public class TbAgent { - private String agentId; - private String name; - private String description; - private String difyApiKey; // 保留 Dify API Key - private String difyAgentId; // 保留 Dify Agent ID - private Long tenantId; // 新增:租户ID -} - -// 聊天会话 -@TableName("tb_chat") -public class TbChat { - private String chatId; - private String agentId; - private String userId; // 关联 pigx sys_user - private String conversationId; // Dify conversation ID - private Long tenantId; // 新增:租户ID -} - -// 聊天消息(保持原有结构) -@TableName("tb_chat_message") -public class TbChatMessage { - private String messageId; - private String chatId; - private String content; - private String role; // user/ai/recipient - private String difyMessageId; // 保留 Dify 消息ID -} -``` - -#### 6.3 权限适配 - -```java -@RestController -@RequestMapping("/dify") -public class ChatController { - - @Autowired - private DifyApiClient difyClient; - - // 权限注解适配 - @HasPermission("dify_chat_create") // 原: @PreAuthorize("hasAuthority('ai:chat:create')") - @PostMapping("/chat/stream") - public SseEmitter streamChat(@RequestBody ChatRequest request) { - PigxUser user = SecurityUtils.getUser(); - // 保留原有的流式响应逻辑 - return chatService.streamChat(request, user); - } -} -``` - -#### 6.4 配置管理 - -```yaml -# application.yml -dify: - api: - base-url: ${DIFY_API_BASE_URL:https://api.dify.ai} - default-api-key: ${DIFY_DEFAULT_API_KEY} - enabled: true -``` - -## Data Models - -### 数据库迁移策略 - -1. **表结构转换**: PostgreSQL DDL → MySQL DDL -2. **添加租户字段**: 所有业务表添加 `tenant_id` 字段 -3. **用户关联**: `user_id` 关联到 pigx 的 `sys_user.user_id` - -### 核心业务表 - -**工单模块 (workcase)**: -```sql -CREATE TABLE tb_workcase ( - id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', - title VARCHAR(255) NOT NULL COMMENT '工单标题', - content TEXT COMMENT '工单内容', - status TINYINT DEFAULT 0 COMMENT '状态', - creator_id BIGINT COMMENT '创建人ID(关联sys_user)', - assignee_id BIGINT COMMENT '处理人ID(关联sys_user)', - tenant_id BIGINT DEFAULT 1 COMMENT '租户ID', - create_time DATETIME DEFAULT CURRENT_TIMESTAMP, - update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - del_flag CHAR(1) DEFAULT '0', - PRIMARY KEY (id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='工单表'; -``` - -**招标模块 (bidding)**: -```sql -CREATE TABLE tb_bidding_project ( - id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', - project_name VARCHAR(255) NOT NULL COMMENT '项目名称', - project_code VARCHAR(64) COMMENT '项目编号', - status TINYINT DEFAULT 0 COMMENT '状态', - creator_id BIGINT COMMENT '创建人ID', - tenant_id BIGINT DEFAULT 1 COMMENT '租户ID', - create_time DATETIME DEFAULT CURRENT_TIMESTAMP, - update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - del_flag CHAR(1) DEFAULT '0', - PRIMARY KEY (id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='招标项目表'; -``` - -### 类型映射 - -| PostgreSQL | MySQL | 说明 | -|-----------|-------|------| -| SERIAL | INT AUTO_INCREMENT | 自增 | -| BIGSERIAL | BIGINT AUTO_INCREMENT | 大整数自增 | -| TEXT | TEXT | 文本 | -| JSONB | JSON | JSON数据 | -| BOOLEAN | TINYINT(1) | 布尔 | -| TIMESTAMP | DATETIME | 时间戳 | - - - -## Correctness Properties - -*A property is a characteristic or behavior that should hold true across all valid executions of a system-essentially, a formal statement about what the system should do.* - -### Property 1: 后端代码迁移完整性 - -*For any* 源项目中的业务模块(bidding, workcase, platform, message),迁移后的 pigx-app-server 应该包含对应的 Controller、Service、Mapper 层代码,且代码可以通过编译。 - -**Validates: Requirements 1.1, 2.1, 3.1, 5.1** - -### Property 2: 权限注解适配正确性 - -*For any* 迁移后的 Controller 方法,应该使用 pigx 的 @HasPermission 注解而非 @PreAuthorize,且权限标识符合 pigx 命名规范(module_action 格式)。 - -**Validates: Requirements 1.2, 2.2, 11.1, 11.2** - -### Property 3: 数据库迁移正确性 - -*For any* 源项目的 PostgreSQL 业务表,转换后的 MySQL DDL 应该: -- 语法正确,可在 MySQL 中执行 -- 包含 tenant_id 租户字段 -- 用户关联字段正确引用 sys_user.user_id - -**Validates: Requirements 1.3, 2.4, 3.3, 4.4, 5.4, 8.1, 8.2, 8.3, 8.4** - -### Property 4: 前端页面迁移完整性 - -*For any* 源项目前端包中的页面组件,迁移后应该存在于 pigx-ai-ui 的对应目录下,且组件可以被正确导入。 - -**Validates: Requirements 1.4, 2.5, 3.4, 4.5** - -### Property 5: API调用适配正确性 - -*For any* 迁移后的前端 API 调用代码,应该: -- 使用 pigx 的 request 工具(从 /@/utils/request 导入) -- API 路径符合 pigx 网关路由规则(/app/* 前缀) -- 响应处理适配 R 格式 - -**Validates: Requirements 1.5, 9.4** - -### Property 6: 数据迁移完整性 - -*For any* 源数据库中的业务数据记录,迁移到目标数据库后,记录数量应该相等,关键字段值应该保持一致。 - -**Validates: Requirements 8.5** - -### Property 8: 用户服务调用正确性 - -*For any* 迁移后的业务代码中涉及用户信息获取的地方,应该使用 SecurityUtils.getUser() 获取当前用户,或通过 RemoteUserService 进行 Feign 调用,而非原有的 UserService。 - -**Validates: Requirements 11.4, 11.5** - -## Error Handling - -### 迁移错误处理 - -1. **代码编译失败**: 记录编译错误,提供修复建议 -2. **类型转换失败**: 标记不兼容类型,提供替代方案 -3. **依赖缺失**: 自动添加缺失的 pigx 依赖 -4. **数据迁移失败**: 支持断点续传,记录失败记录 - -### 回滚策略 - -- 代码迁移:保留源文件,支持回退 -- 数据库迁移:生成回滚脚本 -- 配置变更:版本化管理 - -## Testing Strategy - -### 单元测试 - -- Service 层业务逻辑测试 -- Mapper 层数据访问测试 -- 工具类函数测试 - -### 集成测试 - -- API 端到端测试 -- 用户认证流程测试 -- 文件上传下载测试 - -### 属性测试 - -使用 Java 的 jqwik 进行属性测试: - -```java -@Property -void tenantIsolation(@ForAll @From("businessEntity") BusinessEntity entity) { - // 验证查询结果只包含当前租户数据 - List results = service.list(); - assertThat(results).allMatch(e -> e.getTenantId().equals(currentTenantId)); -} - -@Property -void ddlConversion(@ForAll @From("postgresTable") String pgDdl) { - String mysqlDdl = converter.convert(pgDdl); - assertThat(mysqlDdl).contains("tenant_id"); - assertThat(mysqlDdl).canExecuteOnMysql(); -} -``` - -### 测试配置 - -- 属性测试最少运行 100 次迭代 -- 使用 Testcontainers 进行数据库测试 -- 前端测试使用 Vitest -### Property 9: 租户隔离正确性 - -*For any* 迁移后的业务表查询,应该自动包含 tenant_id 条件,确保多租户数据隔离。 - -**Validates: Requirements 8.4, 11.6** \ No newline at end of file diff --git a/.kiro/specs/urbanlifeline-to-pigx-migration/frontend-migration-plan.md b/.kiro/specs/urbanlifeline-to-pigx-migration/frontend-migration-plan.md deleted file mode 100644 index 00dbcbe7..00000000 --- a/.kiro/specs/urbanlifeline-to-pigx-migration/frontend-migration-plan.md +++ /dev/null @@ -1,288 +0,0 @@ -# Workcase 前端迁移计划 - -## 一、依赖分析 - -### 1.1 对 shared 模块的依赖 - -#### API 依赖 -- `shared/api` - 基础 axios 封装和 TokenManager -- `shared/api/file` - 文件上传下载 API (fileAPI) -- `shared/api/ai` - AI 相关 API (aiChatAPI, agentAPI, aiKnowledgeAPI) - -#### 组件依赖 -- `shared/components` - FileUpload, FileHistory, IframeView -- `shared/components/ai/knowledge` - DocumentSegment (知识库文档分段组件) -- `shared/layouts` - BlankLayout, SubSidebarLayout - -#### 类型依赖 -- `shared/types` - BaseDTO, BaseVO, ResultDomain, PageRequest, PageParam -- `shared/types` - TbSysFileDTO, MenuItem, TbSysViewDTO -- `shared/types` - AI 相关类型 (TbChat, TbKnowledge, TbKnowledgeFileLog, DifyFileInfo) - -### 1.2 内部模块结构 - -#### Views 结构 -``` -views/ -├── admin/ # 管理后台页面 -│ ├── agent/ # AI 智能体管理 (→ dify 模块) -│ ├── customerChat/ # 客服对话管理 -│ ├── knowledge/ # 知识库管理 (→ dify 模块) -│ ├── log/ # 日志管理 -│ │ ├── knowledgeLog/ # 知识库日志 (→ dify 模块) -│ │ ├── systemLog/ # 系统日志 -│ │ └── workcaseLog/ # 工单日志 -│ ├── overview/ # 概览页面 -│ └── workcase/ # 工单管理 -└── public/ # 公共页面 - ├── AIChat/ # AI 对话 (→ dify 模块) - ├── ChatRoom/ # 聊天室 - ├── JitsiMeeting/ # 视频会议 - ├── Login/ # 登录页 (pigx 已有) - └── workcase/ # 工单详情 -``` - -#### Components 结构 -``` -components/ -└── workcase/ - └── WorkcaseAssign.vue # 工单指派组件 -``` - -#### API 结构 -``` -api/ -└── workcase/ - ├── workcase.ts # 工单 API - └── workcaseChat.ts # 聊天室 API -``` - -#### Types 结构 -``` -types/ -└── workcase/ - ├── workcase.ts # 工单类型 - ├── chatRoom.ts # 聊天室类型 - ├── customer.ts # 客服类型 - ├── conversation.ts # 对话类型 - └── wordCloud.ts # 词云类型 -``` - -## 二、迁移策略 - -### 2.1 迁移顺序(按优先级) - -#### 第一阶段:基础设施 (已完成) -- [x] API 定义迁移 -- [x] 基础工单管理页面 - -#### 第二阶段:工单核心功能 -1. **工单组件** - - WorkcaseAssign.vue (工单指派组件) - - WorkcaseDetail (工单详情组件) - -2. **工单管理页面** - - admin/workcase/WorkcaseView.vue (工单列表) - - admin/overview/OverviewView.vue (概览页面) - - admin/log/workcaseLog/ (工单日志) - -#### 第三阶段:聊天室功能 -1. **聊天室核心** - - public/ChatRoom/chatRoom/ChatRoom.vue (聊天室主组件) - - public/ChatRoom/ChatMessage/ (消息组件) - - public/ChatRoom/ChatRoomView.vue (聊天室视图) - -2. **客服管理** - - admin/customerChat/CustomerChatView.vue (客服对话管理) - -3. **视频会议** - - public/JitsiMeeting/JitsiMeetingView.vue (视频会议) - - public/ChatRoom/MeetingCard/ (会议卡片) - - public/ChatRoom/MeetingCreate/ (创建会议) - -#### 第四阶段:AI 功能 (最后迁移,归入 dify 模块) -1. **AI 对话** - - public/AIChat/AIChatView.vue - - public/AIChat/components/ - -2. **智能体管理** - - admin/agent/AgentView.vue - -3. **知识库管理** - - admin/knowledge/KnowLedgeView.vue - - admin/log/knowledgeLog/KnowledgeLogView.vue - -### 2.2 共享依赖处理 - -#### pigx 已有的功能(直接使用) -- 登录认证 (Login) -- 用户管理 -- 权限管理 -- 文件上传下载 (Upload 组件) -- 基础布局 (Layout) - -#### 需要适配的 shared 组件 -1. **FileUpload** → 使用 pigx 的 `Upload/index.vue` -2. **FileHistory** → 需要迁移或使用 pigx 的文件管理 -3. **IframeView** → 简单组件,可直接迁移 -4. **DocumentSegment** → AI 知识库专用,归入 dify 模块 - -#### 需要适配的 API -1. **fileAPI** → 适配 pigx 的文件服务 API -2. **aiChatAPI, agentAPI, aiKnowledgeAPI** → 归入 dify 模块 - -### 2.3 目录结构映射 - -#### 源目录 → 目标目录 -``` -urbanLifelineWeb/packages/workcase/ -├── src/api/workcase/ → pigx-ai-ui/src/api/workcase/ -├── src/components/workcase/ → pigx-ai-ui/src/components/workcase/ -├── src/views/admin/workcase/ → pigx-ai-ui/src/views/workcase/admin/ -├── src/views/admin/customerChat/ → pigx-ai-ui/src/views/workcase/customerChat/ -├── src/views/admin/overview/ → pigx-ai-ui/src/views/workcase/overview/ -├── src/views/admin/log/ → pigx-ai-ui/src/views/workcase/log/ -├── src/views/public/ChatRoom/ → pigx-ai-ui/src/views/workcase/chatRoom/ -├── src/views/public/JitsiMeeting/ → pigx-ai-ui/src/views/workcase/meeting/ -├── src/views/public/workcase/ → pigx-ai-ui/src/views/workcase/detail/ -└── src/types/workcase/ → pigx-ai-ui/src/types/workcase/ - -# AI 相关 (归入 dify 模块) -├── src/views/admin/agent/ → pigx-ai-ui/src/views/dify/agent/ -├── src/views/admin/knowledge/ → pigx-ai-ui/src/views/dify/knowledge/ -├── src/views/public/AIChat/ → pigx-ai-ui/src/views/dify/chat/ -└── src/views/admin/log/knowledgeLog/ → pigx-ai-ui/src/views/dify/log/ -``` - -## 三、技术适配要点 - -### 3.1 API 调用适配 -```typescript -// 源代码 -import { api } from 'shared/api' -const res = await api.post('/urban-lifeline/workcase', data) - -// 目标代码 -import request from '@/utils/request' -const res = await request({ - url: '/workcase/workcase', - method: 'post', - data -}) -``` - -### 3.2 响应格式适配 -```typescript -// 源代码 (ResultDomain) -interface ResultDomain { - code: number - message: string - success: boolean - data?: T - dataList?: T[] - pageDomain?: PageDomain -} - -// 目标代码 (pigx R) -// pigx 使用 code === 0 表示成功 -if (res.code === 0) { - // res.data 包含数据 -} -``` - -### 3.3 文件上传适配 -```typescript -// 源代码 -import { fileAPI } from 'shared/api/file' -await fileAPI.uploadFile({ file, module, optsn }) - -// 目标代码 -import { uploadFile } from '@/api/admin/file' -await uploadFile(formData) -``` - -### 3.4 WebSocket 适配 -```typescript -// 源代码 (SockJS + STOMP) -const wsUrl = `${protocol}//${host}/${API_BASE_URL}/urban-lifeline/workcase/ws/chat-sockjs` -stompClient = new Client({ - webSocketFactory: () => new SockJS(wsUrl) -}) - -// 目标代码 (需要适配 pigx 的 WebSocket 配置) -// pigx 可能使用不同的 WebSocket 实现 -``` - -### 3.5 组件库适配 -- Element Plus 版本可能不同,需要检查 API 变化 -- 图标库:源代码使用 lucide-vue-next,pigx 使用 Element Plus Icons -- 需要统一图标使用方式 - -## 四、迁移检查清单 - -### 4.1 功能完整性 -- [ ] 工单 CRUD -- [ ] 工单指派/转派 -- [ ] 工单流程记录 -- [ ] 聊天室功能 -- [ ] 实时消息推送 (WebSocket) -- [ ] 视频会议集成 -- [ ] 客服管理 -- [ ] 文件上传下载 -- [ ] 词云统计 - -### 4.2 权限控制 -- [ ] 页面访问权限 -- [ ] 按钮操作权限 -- [ ] 数据权限(租户隔离) - -### 4.3 用户体验 -- [ ] 响应式布局 -- [ ] 加载状态 -- [ ] 错误提示 -- [ ] 空状态展示 -- [ ] 分页功能 - -### 4.4 性能优化 -- [ ] 列表虚拟滚动(如需要) -- [ ] 图片懒加载 -- [ ] 防抖节流 -- [ ] 请求缓存 - -## 五、注意事项 - -### 5.1 不要迁移的内容 -- Login 页面(pigx 已有完整的登录系统) -- 用户管理相关页面(使用 pigx 原生功能) -- 权限管理相关页面(使用 pigx 原生功能) - -### 5.2 需要重点测试的功能 -- WebSocket 实时通信 -- 文件上传下载 -- 视频会议集成 -- 多租户数据隔离 -- 权限控制 - -### 5.3 AI 功能迁移注意 -- AI 对话、智能体、知识库功能最后迁移 -- 这些功能归入 dify 模块,不放在 workcase 模块 -- 需要与 Dify API 集成测试 - -## 六、当前进度 - -### 已完成 -- [x] API 定义 (workcase.ts, chat.ts) -- [x] 类型定义 (workcase.ts, chatRoom.ts, customer.ts, conversation.ts, wordCloud.ts) -- [x] 基础工单列表页面 (index.vue) -- [x] 工单指派组件 (WorkcaseAssign.vue) -- [x] 工单详情组件 (WorkcaseDetail.vue) -- [x] 聊天室消息组件 (ChatMessage.vue) - -### 进行中 -- [ ] 管理后台页面 (overview, customerChat, log) - -### 待开始 -- [ ] 视频会议功能 -- [ ] 客服管理 -- [ ] 日志管理 -- [ ] AI 功能(最后) diff --git a/.kiro/specs/urbanlifeline-to-pigx-migration/permission-annotation-guide.md b/.kiro/specs/urbanlifeline-to-pigx-migration/permission-annotation-guide.md deleted file mode 100644 index 134264f8..00000000 --- a/.kiro/specs/urbanlifeline-to-pigx-migration/permission-annotation-guide.md +++ /dev/null @@ -1,391 +0,0 @@ -# 权限注解转换指南 - -## 概述 -本指南详细说明了如何将 urbanLifelineServ 的权限注解迁移到 pigx 平台的权限体系。 - -## 核心变更 - -### 1. 权限注解格式 - -| 特性 | urbanLifelineServ | pigx | -|------|------------------|------| -| 注解类 | @PreAuthorize | @PreAuthorize | -| 权限判断方法 | hasAuthority() | @pms.hasPermission() | -| 权限标识格式 | module:resource:action | module_resource_action | -| 分隔符 | 冒号 `:` | 下划线 `_` | - -### 2. 用户信息获取 - -| 功能 | urbanLifelineServ | pigx | -|------|------------------|------| -| 获取用户ID | JwtUtils.getUserId() | SecurityUtils.getUser().getId() | -| 获取用户名 | JwtUtils.getUsername() | SecurityUtils.getUser().getUsername() | -| 获取租户ID | 不支持 | SecurityUtils.getUser().getTenantId() | -| 获取部门ID | 不支持 | SecurityUtils.getUser().getDeptId() | - -### 3. 响应格式 - -| 特性 | urbanLifelineServ | pigx | -|------|------------------|------| -| 响应类 | ResultDomain | R | -| 成功响应 | ResultDomain.success(data) | R.ok(data) | -| 失败响应 | ResultDomain.fail(msg) | R.failed(msg) | -| 列表字段 | dataList | data | - -## 转换步骤 - -### 步骤1:权限注解转换 - -#### 1.1 基本转换 - -```java -// 转换前 -@PreAuthorize("hasAuthority('workcase:ticket:create')") -public ResultDomain createWorkcase(@RequestBody TbWorkcaseDTO workcase) { - return workcaseService.createWorkcase(workcase); -} - -// 转换后 -@PreAuthorize("@pms.hasPermission('workcase_ticket_add')") -public R createWorkcase(@RequestBody TbWorkcaseDTO workcase) { - return R.ok(workcaseService.createWorkcase(workcase)); -} -``` - -#### 1.2 多权限判断 - -```java -// 转换前 -@PreAuthorize("hasAuthority('workcase:ticket:view') or hasAuthority('workcase:ticket:admin')") -public ResultDomain> listWorkcase() { - return ResultDomain.success(workcaseService.list()); -} - -// 转换后 -@PreAuthorize("@pms.hasPermission('workcase_ticket_view') or @pms.hasPermission('workcase_ticket_admin')") -public R> listWorkcase() { - return R.ok(workcaseService.list()); -} -``` - -### 步骤2:用户信息获取转换 - -#### 2.1 Service层用户信息获取 - -```java -// 转换前 -@Service -public class WorkcaseServiceImpl implements WorkcaseService { - - public TbWorkcaseDTO createWorkcase(TbWorkcaseDTO workcase) { - Long userId = JwtUtils.getUserId(); - String username = JwtUtils.getUsername(); - - workcase.setCreateBy(userId); - workcase.setCreateByName(username); - workcase.setCreateTime(new Date()); - - return workcaseMapper.insert(workcase); - } -} - -// 转换后 -@Service -public class WorkcaseServiceImpl implements WorkcaseService { - - public TbWorkcaseDTO createWorkcase(TbWorkcaseDTO workcase) { - PigxUser user = SecurityUtils.getUser(); - - workcase.setCreateBy(user.getId()); - workcase.setCreateByName(user.getUsername()); - workcase.setTenantId(user.getTenantId()); // 新增:租户隔离 - workcase.setDeptId(user.getDeptId()); // 新增:部门信息 - workcase.setCreateTime(LocalDateTime.now()); - - return workcaseMapper.insert(workcase); - } -} -``` - -#### 2.2 远程用户服务调用 - -```java -// 转换前 -@Service -public class WorkcaseServiceImpl { - - @Autowired - private UserService userService; - - public void assignWorkcase(String workcaseId, Long assigneeId) { - User assignee = userService.getById(assigneeId); - if (assignee == null) { - throw new BusinessException("用户不存在"); - } - // 处理逻辑... - } -} - -// 转换后 -@Service -public class WorkcaseServiceImpl { - - @Autowired - private RemoteUserService remoteUserService; - - public void assignWorkcase(String workcaseId, Long assigneeId) { - R result = remoteUserService.selectById(assigneeId); - if (!result.isSuccess() || result.getData() == null) { - throw new BusinessException("用户不存在"); - } - SysUser assignee = result.getData(); - // 处理逻辑... - } -} -``` - -### 步骤3:响应格式转换 - -#### 3.1 Controller响应转换 - -```java -// 转换前 -@RestController -@RequestMapping("/api/workcase") -public class WorkcaseController { - - // 单个对象返回 - @GetMapping("/{id}") - public ResultDomain getById(@PathVariable String id) { - TbWorkcaseDTO workcase = workcaseService.getById(id); - if (workcase == null) { - return ResultDomain.fail("工单不存在"); - } - return ResultDomain.success(workcase); - } - - // 列表返回 - @GetMapping("/list") - public ResultDomain> list() { - List list = workcaseService.list(); - ResultDomain> result = ResultDomain.success(); - result.setDataList(list); // 注意:使用dataList字段 - return result; - } -} - -// 转换后 -@RestController -@RequestMapping("/workcase") -public class WorkcaseController { - - // 单个对象返回 - @GetMapping("/{id}") - public R getById(@PathVariable String id) { - TbWorkcaseDTO workcase = workcaseService.getById(id); - if (workcase == null) { - return R.failed("工单不存在"); - } - return R.ok(workcase); - } - - // 列表返回 - @GetMapping("/list") - public R> list() { - List list = workcaseService.list(); - return R.ok(list); // 直接返回列表,不使用dataList - } - - // 分页返回 - @GetMapping("/page") - public R> page(Page page) { - return R.ok(workcaseService.page(page)); - } -} -``` - -### 步骤4:数据权限适配 - -#### 4.1 添加租户隔离 - -```java -// 转换前 - 无租户隔离 -@Service -public class WorkcaseServiceImpl { - - public List listMyWorkcase() { - Long userId = JwtUtils.getUserId(); - return workcaseMapper.selectByUserId(userId); - } -} - -// 转换后 - 支持租户隔离 -@Service -public class WorkcaseServiceImpl { - - public List listMyWorkcase() { - PigxUser user = SecurityUtils.getUser(); - - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq("tenant_id", user.getTenantId()) // 租户隔离 - .eq("create_by", user.getId()); - - return workcaseMapper.selectList(wrapper); - } -} -``` - -## 批量转换工具 - -### 使用IDE批量替换 - -#### IntelliJ IDEA 正则替换 - -1. **查找模式** (启用正则表达式): -```regex -@PreAuthorize\("hasAuthority\('([^:]+):([^:]+):([^']+)'\)"\) -``` - -2. **替换为**: -```regex -@PreAuthorize("@pms.hasPermission('$1_$2_$3')") -``` - -3. **动作映射** (执行第二次替换): -- 查找: `_create'` 替换为: `_add'` -- 查找: `_update'` 替换为: `_edit'` -- 查找: `_delete'` 替换为: `_del'` - -### 命令行批量转换脚本 - -```bash -#!/bin/bash -# convert-permissions.sh - -# 查找所有Java文件并转换权限注解 -find . -name "*.java" -type f -exec sed -i.bak \ - -e "s/@PreAuthorize(\"hasAuthority('\([^:]*\):\([^:]*\):\([^']*\)')\")/@PreAuthorize(\"@pms.hasPermission('\1_\2_\3')\")/g" \ - -e "s/_create')/_add')/g" \ - -e "s/_update')/_edit')/g" \ - -e "s/_delete')/_del')/g" {} \; - -# 转换JwtUtils为SecurityUtils -find . -name "*.java" -type f -exec sed -i.bak \ - -e "s/JwtUtils.getUserId()/SecurityUtils.getUser().getId()/g" \ - -e "s/JwtUtils.getUsername()/SecurityUtils.getUser().getUsername()/g" {} \; - -# 转换ResultDomain为R -find . -name "*.java" -type f -exec sed -i.bak \ - -e "s/ResultDomain.success(/R.ok(/g" \ - -e "s/ResultDomain.fail(/R.failed(/g" \ - -e "s/ResultDomain getMyWorkcase(@PathVariable String id, TbWorkcaseDTO workcase) { - // 这种情况需要根据pigx的数据权限机制重新设计 -} -``` - -### 2. 自定义权限判断 - -```java -// 转换前 -if (SecurityContextHolder.getContext().getAuthentication().getAuthorities() - .contains(new SimpleGrantedAuthority("workcase:ticket:admin"))) { - // 管理员逻辑 -} - -// 转换后 -if (SecurityUtils.getUser().getAuthorities() - .contains("workcase_ticket_admin")) { - // 管理员逻辑 -} -``` - -### 3. 异步任务中的用户信息 - -```java -// 转换前 -@Async -public void processAsync() { - Long userId = JwtUtils.getUserId(); // 异步线程中可能获取不到 -} - -// 转换后 -@Async -public void processAsync() { - // 需要在调用异步方法前获取用户信息并传递 - PigxUser user = SecurityUtils.getUser(); - processAsyncWithUser(user); -} -``` - -## 测试验证清单 - -### 权限测试 - -- [ ] 所有 @PreAuthorize 注解已转换为 @pms.hasPermission 格式 -- [ ] 权限标识符已从冒号改为下划线 -- [ ] 动作已正确映射 (create→add, update→edit, delete→del) -- [ ] 多权限判断逻辑正确 - -### 用户信息测试 - -- [ ] SecurityUtils.getUser() 能正确获取用户信息 -- [ ] 租户ID正确设置到业务数据 -- [ ] RemoteUserService 调用正常 - -### 响应格式测试 - -- [ ] 所有接口返回 R 格式 -- [ ] 前端能正确解析新的响应格式 -- [ ] 错误信息正确传递 - -### 数据权限测试 - -- [ ] 租户数据隔离正常 -- [ ] 部门数据权限正常 -- [ ] 个人数据权限正常 - -## 常见问题 - -### Q1: @pms.hasPermission 中的 @pms 是什么? - -A: `@pms` 是 pigx 权限管理系统的 SpEL 表达式前缀,用于调用权限判断方法。这是 pigx 框架的固定写法,必须保留。 - -### Q2: 为什么要将 create 改为 add? - -A: 这是 pigx 平台的命名规范,保持统一的动作命名有助于权限管理的标准化。常见映射: -- create → add (新增) -- update → edit (编辑) -- delete → del (删除) -- view → view (查看) - -### Q3: 如何处理没有对应 pigx 用户的情况? - -A: 所有业务用户必须在 pigx 的 sys_user 表中存在。如果是数据迁移,需要先创建对应的 pigx 用户,或建立用户映射关系。 - -### Q4: 租户ID是必须的吗? - -A: 是的。pigx 是多租户系统,所有业务表都需要 tenant_id 字段。即使是单租户使用,也需要设置默认租户ID(通常为1)。 - -### Q5: 如何调试权限问题? - -A: 可以通过以下方式调试: -1. 查看 pigx 日志中的权限判断记录 -2. 使用 SecurityUtils.getUser().getAuthorities() 查看当前用户权限 -3. 检查 sys_menu 表中的权限配置 -4. 验证 sys_role_menu 表中的角色权限关联 - -## 相关文档 - -- [权限标识映射表](./permission-mapping.md) -- [数据库迁移指南](./database-migration.md) -- [前端适配指南](./frontend-migration.md) \ No newline at end of file diff --git a/.kiro/specs/urbanlifeline-to-pigx-migration/permission-conversion-guide.md b/.kiro/specs/urbanlifeline-to-pigx-migration/permission-conversion-guide.md deleted file mode 100644 index 8ecfca4b..00000000 --- a/.kiro/specs/urbanlifeline-to-pigx-migration/permission-conversion-guide.md +++ /dev/null @@ -1,490 +0,0 @@ -# 权限注解转换指南 - -## 目标 - -将 urbanLifeline 的权限体系完全迁移到 pigx 平台的权限模型。 - -## 核心概念对比 - -| 特性 | urbanLifeline | pigx | -|------|---------------|------| -| 权限注解 | `@PreAuthorize("hasAuthority()")` | `@PreAuthorize("@pms.hasPermission()")` | -| 权限格式 | `module:resource:action` | `module_resource_action` | -| 用户获取 | `JwtUtils.getUserId()` | `SecurityUtils.getUser()` | -| 用户服务 | `UserService` (本地) | `RemoteUserService` (Feign) | -| 响应格式 | `ResultDomain` | `R` | -| 租户支持 | 无 | 有 (tenant_id) | - -## 转换步骤详解 - -### 步骤 1:权限注解转换 - -#### 1.1 基本转换规则 - -```java -// ❌ 旧代码 (urbanLifeline) -@PreAuthorize("hasAuthority('workcase:ticket:create')") -public ResultDomain createWorkcase(@RequestBody TbWorkcaseDTO dto) { - // ... -} - -// ✅ 新代码 (pigx) -@PreAuthorize("@pms.hasPermission('workcase_ticket_add')") -public R createWorkcase(@RequestBody TbWorkcaseDTO dto) { - // ... -} -``` - -#### 1.2 多权限组合 - -```java -// ❌ 旧代码 - OR 条件 -@PreAuthorize("hasAuthority('workcase:ticket:update') or hasAuthority('workcase:ticket:admin')") - -// ✅ 新代码 - OR 条件 -@PreAuthorize("@pms.hasPermission('workcase_ticket_edit') or @pms.hasPermission('workcase_ticket_admin')") - -// ❌ 旧代码 - AND 条件 -@PreAuthorize("hasAuthority('workcase:ticket:view') and hasAuthority('workcase:export:data')") - -// ✅ 新代码 - AND 条件 -@PreAuthorize("@pms.hasPermission('workcase_ticket_view') and @pms.hasPermission('workcase_export_data')") -``` - -#### 1.3 动态权限检查 - -```java -// ❌ 旧代码 -@Service -public class WorkcaseService { - public boolean canEdit(Long workcaseId) { - Authentication auth = SecurityContextHolder.getContext().getAuthentication(); - return auth.getAuthorities().stream() - .anyMatch(a -> a.getAuthority().equals("workcase:ticket:update")); - } -} - -// ✅ 新代码 -@Service -public class WorkcaseService { - @Autowired - private PermissionService permissionService; - - public boolean canEdit(Long workcaseId) { - return permissionService.hasPermission("workcase_ticket_edit"); - } -} -``` - -### 步骤 2:用户信息获取转换 - -#### 2.1 获取当前用户 - -```java -// ❌ 旧代码 -Long userId = JwtUtils.getUserId(); -String username = JwtUtils.getUsername(); -String role = JwtUtils.getRole(); - -// ✅ 新代码 -PigxUser user = SecurityUtils.getUser(); -Long userId = user.getId(); -String username = user.getUsername(); -Long tenantId = user.getTenantId(); // 新增:租户ID -Long deptId = user.getDeptId(); // 新增:部门ID -List roles = user.getRoles(); // 角色列表 -``` - -#### 2.2 Service 层用户信息处理 - -```java -// ❌ 旧代码 -@Service -public class WorkcaseServiceImpl implements WorkcaseService { - @Autowired - private UserService userService; - - public void assignWorkcase(Long workcaseId, Long assigneeId) { - User assignee = userService.getById(assigneeId); - // 处理逻辑... - } -} - -// ✅ 新代码 -@Service -public class WorkcaseServiceImpl implements WorkcaseService { - @Autowired - private RemoteUserService remoteUserService; - - public void assignWorkcase(Long workcaseId, Long assigneeId) { - // 使用 Feign 远程调用 - R result = remoteUserService.selectById(assigneeId); - if (result.isSuccess() && result.getData() != null) { - SysUser assignee = result.getData(); - // 处理逻辑... - } else { - throw new BusinessException("用户不存在"); - } - } -} -``` - -### 步骤 3:响应格式转换 - -#### 3.1 成功响应 - -```java -// ❌ 旧代码 -return ResultDomain.success(data); -return ResultDomain.success(list, total); -return ResultDomain.success("操作成功", data); - -// ✅ 新代码 -return R.ok(data); -return R.ok(list, total); // 分页响应 -return R.ok(data, "操作成功"); -``` - -#### 3.2 错误响应 - -```java -// ❌ 旧代码 -return ResultDomain.failure("参数错误"); -return ResultDomain.failure(ErrorCode.INVALID_PARAM); -throw new BusinessException("业务异常"); - -// ✅ 新代码 -return R.failed("参数错误"); -return R.failed(CommonConstants.FAIL, "参数错误"); -throw new ServiceException("业务异常"); -``` - -#### 3.3 分页响应 - -```java -// ❌ 旧代码 -public ResultDomain> list(PageParam param) { - Page page = workcaseMapper.selectPage(param); - return ResultDomain.success(page.getRecords(), page.getTotal()); -} - -// ✅ 新代码 -public R> list(Page page, TbWorkcaseDTO query) { - IPage result = workcaseMapper.selectPageVo(page, query); - return R.ok(result); -} -``` - -### 步骤 4:租户隔离实现 - -#### 4.1 实体类添加租户字段 - -```java -@Data -@TableName("tb_workcase") -public class TbWorkcase { - @TableId - private Long id; - - private String title; - - // ✅ 新增租户字段 - @TableField("tenant_id") - private Long tenantId; - - // 其他字段... -} -``` - -#### 4.2 Service 层自动注入租户 - -```java -@Service -public class WorkcaseServiceImpl implements WorkcaseService { - - @Override - public R save(TbWorkcaseDTO dto) { - // ✅ 自动注入当前租户 - PigxUser user = SecurityUtils.getUser(); - dto.setTenantId(user.getTenantId()); - dto.setCreateBy(user.getUsername()); - dto.setCreateTime(LocalDateTime.now()); - - workcaseMapper.insert(dto); - return R.ok(dto); - } - - @Override - public R> page(Page page, TbWorkcaseDTO query) { - // ✅ 查询条件自动添加租户过滤 - PigxUser user = SecurityUtils.getUser(); - query.setTenantId(user.getTenantId()); - - return R.ok(workcaseMapper.selectPageVo(page, query)); - } -} -``` - -#### 4.3 Mapper 层租户隔离 - -```xml - - -``` - -### 步骤 5:配置 RemoteUserService - -#### 5.1 添加 Feign 客户端接口 - -```java -package com.pig4cloud.pigx.app.api.feign; - -import com.pig4cloud.pigx.common.core.constant.ServiceNameConstants; -import com.pig4cloud.pigx.common.core.util.R; -import com.pig4cloud.pigx.upms.api.entity.SysUser; -import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.web.bind.annotation.*; - -@FeignClient(contextId = "remoteUserService", - value = ServiceNameConstants.UPMS_SERVICE) -public interface RemoteUserService { - - /** - * 根据用户ID查询用户信息 - */ - @GetMapping("/user/info/{id}") - R selectById(@PathVariable("id") Long id); - - /** - * 根据用户名查询用户信息 - */ - @GetMapping("/user/info") - R selectByUsername(@RequestParam("username") String username); - - /** - * 批量查询用户信息 - */ - @PostMapping("/user/list") - R> selectBatchIds(@RequestBody List ids); -} -``` - -#### 5.2 使用 RemoteUserService - -```java -@Service -@RequiredArgsConstructor -public class WorkcaseServiceImpl implements WorkcaseService { - - private final RemoteUserService remoteUserService; - - public TbWorkcaseDTO getWorkcaseDetail(Long id) { - TbWorkcase workcase = workcaseMapper.selectById(id); - TbWorkcaseDTO dto = BeanUtil.copyProperties(workcase, TbWorkcaseDTO.class); - - // 获取创建人信息 - if (dto.getCreatorId() != null) { - R creatorResult = remoteUserService.selectById(dto.getCreatorId()); - if (creatorResult.isSuccess() && creatorResult.getData() != null) { - dto.setCreatorName(creatorResult.getData().getUsername()); - dto.setCreatorDeptName(creatorResult.getData().getDeptName()); - } - } - - // 获取处理人信息 - if (dto.getAssigneeId() != null) { - R assigneeResult = remoteUserService.selectById(dto.getAssigneeId()); - if (assigneeResult.isSuccess() && assigneeResult.getData() != null) { - dto.setAssigneeName(assigneeResult.getData().getUsername()); - } - } - - return dto; - } -} -``` - -## 批量转换工具 - -### 使用 IDE 批量替换(推荐) - -#### IntelliJ IDEA - -1. **权限注解替换** - - 查找:`@PreAuthorize\("hasAuthority\('([^:]+):([^:]+):([^']+)'\)"\)` - - 替换:`@PreAuthorize("@pms.hasPermission('$1_$2_$3')")` - - 选项:勾选 "Regex" - -2. **响应格式替换** - - 查找:`ResultDomain\.success\((.*?)\)` - - 替换:`R.ok($1)` - -3. **用户信息获取** - - 查找:`JwtUtils\.getUserId\(\)` - - 替换:`SecurityUtils.getUser().getId()` - -#### VS Code - -使用 Find and Replace (Ctrl+Shift+H),启用正则表达式模式。 - -### 使用脚本批量转换 - -创建 `convert-permissions.sh`: - -```bash -#!/bin/bash - -# 转换权限注解 -find ./src -name "*.java" -type f -exec sed -i \ - 's/@PreAuthorize("hasAuthority('\''\\([^:]*\\):\\([^:]*\\):\\([^'\'']*\\)'\''")"/@PreAuthorize("@pms.hasPermission('\''\\1_\\2_\\3'\'')"/g' {} \; - -# 转换响应格式 -find ./src -name "*.java" -type f -exec sed -i \ - 's/ResultDomain\.success(\(.*\))/R.ok(\1)/g' {} \; - -# 转换用户信息获取 -find ./src -name "*.java" -type f -exec sed -i \ - 's/JwtUtils\.getUserId()/SecurityUtils.getUser().getId()/g' {} \; - -echo "转换完成!" -``` - -## 测试验证 - -### 1. 单元测试示例 - -```java -@SpringBootTest -@AutoConfigureMockMvc -public class WorkcaseControllerTest { - - @Autowired - private MockMvc mockMvc; - - @Test - @WithMockUser(username = "admin", authorities = {"workcase_ticket_add"}) - public void testCreateWorkcase() throws Exception { - TbWorkcaseDTO dto = new TbWorkcaseDTO(); - dto.setTitle("测试工单"); - - mockMvc.perform(post("/workcase") - .contentType(MediaType.APPLICATION_JSON) - .content(JSON.toJSONString(dto))) - .andExpect(status().isOk()) - .andExpect(jsonPath("$.code").value(0)) - .andExpect(jsonPath("$.data.title").value("测试工单")); - } - - @Test - @WithMockUser(username = "user", authorities = {}) - public void testCreateWorkcaseNoPermission() throws Exception { - mockMvc.perform(post("/workcase") - .contentType(MediaType.APPLICATION_JSON) - .content("{}")) - .andExpect(status().isForbidden()); - } -} -``` - -### 2. 集成测试检查清单 - -- [ ] 权限注解正确转换 -- [ ] 用户信息正确获取 -- [ ] 租户数据正确隔离 -- [ ] 响应格式符合规范 -- [ ] RemoteUserService 调用成功 -- [ ] 菜单权限正确配置 -- [ ] 角色权限正确分配 - -## 常见问题解决 - -### Q1: @pms.hasPermission() 不生效 - -**原因**:没有正确配置 PermissionService Bean - -**解决**: -```java -@Configuration -public class SecurityConfig { - @Bean("pms") - public PermissionService permissionService() { - return new PermissionService(); - } -} -``` - -### Q2: RemoteUserService 调用失败 - -**原因**:Feign 客户端未正确配置 - -**解决**: -1. 检查 `@EnableFeignClients` 注解 -2. 确认服务名称正确 -3. 添加熔断处理 - -```java -@FeignClient(contextId = "remoteUserService", - value = ServiceNameConstants.UPMS_SERVICE, - fallback = RemoteUserServiceFallback.class) -``` - -### Q3: 租户数据泄露 - -**原因**:查询时未添加租户过滤 - -**解决**: -1. 使用 MyBatis-Plus 租户插件 -2. 手动添加租户条件 - -```java -@Configuration -public class MybatisPlusConfig { - @Bean - public TenantLineInnerInterceptor tenantLineInnerInterceptor() { - return new TenantLineInnerInterceptor(new TenantLineHandler() { - @Override - public Expression getTenantId() { - PigxUser user = SecurityUtils.getUser(); - return new LongValue(user.getTenantId()); - } - - @Override - public String getTenantIdColumn() { - return "tenant_id"; - } - }); - } -} -``` - -## 迁移验证 - -完成转换后,执行以下验证: - -1. **编译检查**:确保所有代码编译通过 -2. **启动检查**:应用能正常启动 -3. **权限测试**:各接口权限控制正确 -4. **数据隔离**:租户数据正确隔离 -5. **功能测试**:业务功能正常运行 - -## 总结 - -权限迁移是整个系统迁移的核心部分,需要: -1. 仔细转换每个权限注解 -2. 正确处理用户信息获取 -3. 实现租户数据隔离 -4. 充分测试验证 - -建议分模块逐步迁移,每完成一个模块就进行测试验证。 \ No newline at end of file diff --git a/.kiro/specs/urbanlifeline-to-pigx-migration/permission-mapping.md b/.kiro/specs/urbanlifeline-to-pigx-migration/permission-mapping.md deleted file mode 100644 index 04c097b2..00000000 --- a/.kiro/specs/urbanlifeline-to-pigx-migration/permission-mapping.md +++ /dev/null @@ -1,253 +0,0 @@ -# 权限标识映射表 - -## 概述 -本文档定义了从 urbanLifelineServ 权限标识到 pigx 权限标识的映射规则。 - -## 映射规则 - -### 格式转换规则 -- **源格式**: `module:resource:action` (使用冒号分隔) -- **目标格式**: `module_resource_action` (使用下划线分隔) -- **动作映射**: - - `create` → `add` - - `update` → `edit` - - `delete` → `del` - - `view` → `view` - - 其他保持不变 - -### 权限注解转换 -- **源注解**: `@PreAuthorize("hasAuthority('module:resource:action')")` -- **目标注解**: `@PreAuthorize("@pms.hasPermission('module_resource_action')")` - -## 权限映射表 - -### 工单模块 (workcase) - -| 源权限标识 | 目标权限标识 | 说明 | 菜单类型 | -|-----------|-------------|------|----------| -| workcase:ticket:create | workcase_ticket_add | 创建工单 | 按钮 | -| workcase:ticket:update | workcase_ticket_edit | 更新工单 | 按钮 | -| workcase:ticket:view | workcase_ticket_view | 查看工单 | 菜单 | -| workcase:ticket:delete | workcase_ticket_del | 删除工单 | 按钮 | -| workcase:ticket:process | workcase_ticket_process | 处理工单 | 按钮 | -| workcase:ticket:device | workcase_ticket_device | 工单设备管理 | 按钮 | -| workcase:room:create | workcase_room_add | 创建聊天室 | 按钮 | -| workcase:room:update | workcase_room_edit | 更新聊天室 | 按钮 | -| workcase:room:close | workcase_room_close | 关闭聊天室 | 按钮 | -| workcase:room:view | workcase_room_view | 查看聊天室 | 菜单 | - -### AI模块 (dify) - -| 源权限标识 | 目标权限标识 | 说明 | 菜单类型 | -|-----------|-------------|------|----------| -| ai:agent:create | dify_agent_add | 创建智能体 | 按钮 | -| ai:agent:update | dify_agent_edit | 更新智能体 | 按钮 | -| ai:agent:delete | dify_agent_del | 删除智能体 | 按钮 | -| ai:agent:view | dify_agent_view | 查看智能体 | 菜单 | -| ai:knowledge:create | dify_knowledge_add | 创建知识库 | 按钮 | -| ai:knowledge:update | dify_knowledge_edit | 更新知识库 | 按钮 | -| ai:knowledge:delete | dify_knowledge_del | 删除知识库 | 按钮 | -| ai:knowledge:view | dify_knowledge_view | 查看知识库 | 菜单 | -| ai:knowledge:file:view | dify_knowledge_file_view | 查看知识库文件 | 按钮 | -| ai:knowledge:file:upload | dify_knowledge_file_upload | 上传知识库文件 | 按钮 | -| ai:knowledge:file:update | dify_knowledge_file_edit | 更新知识库文件 | 按钮 | -| ai:knowledge:file:delete | dify_knowledge_file_del | 删除知识库文件 | 按钮 | -| ai:dify:segment:view | dify_segment_view | 查看文档片段 | 按钮 | -| ai:dify:segment:create | dify_segment_add | 创建文档片段 | 按钮 | -| ai:dify:segment:update | dify_segment_edit | 更新文档片段 | 按钮 | -| ai:dify:segment:delete | dify_segment_del | 删除文档片段 | 按钮 | -| ai:dify:document:status | dify_document_status | 查看文档状态 | 按钮 | -| ai:chat:create | dify_chat_add | 创建对话 | 按钮 | -| ai:chat:view | dify_chat_view | 查看对话 | 菜单 | -| ai:chat:message | dify_chat_message | 发送消息 | 按钮 | - -### 招标模块 (bidding) - -| 源权限标识 | 目标权限标识 | 说明 | 菜单类型 | -|-----------|-------------|------|----------| -| bidding:project:create | bidding_project_add | 创建招标项目 | 按钮 | -| bidding:project:update | bidding_project_edit | 更新招标项目 | 按钮 | -| bidding:project:delete | bidding_project_del | 删除招标项目 | 按钮 | -| bidding:project:view | bidding_project_view | 查看招标项目 | 菜单 | -| bidding:bid:create | bidding_bid_add | 创建投标 | 按钮 | -| bidding:bid:update | bidding_bid_edit | 更新投标 | 按钮 | -| bidding:bid:view | bidding_bid_view | 查看投标 | 菜单 | -| bidding:document:view | bidding_document_view | 查看招标文件 | 按钮 | -| bidding:document:upload | bidding_document_upload | 上传招标文件 | 按钮 | - -### 平台管理模块 (platform) - -| 源权限标识 | 目标权限标识 | 说明 | 菜单类型 | -|-----------|-------------|------|----------| -| platform:config:view | platform_config_view | 查看配置 | 菜单 | -| platform:config:update | platform_config_edit | 更新配置 | 按钮 | -| platform:log:view | platform_log_view | 查看日志 | 菜单 | -| platform:monitor:view | platform_monitor_view | 查看监控 | 菜单 | -| platform:stat:view | platform_stat_view | 查看统计 | 菜单 | - -### 消息模块 (message) - -| 源权限标识 | 目标权限标识 | 说明 | 菜单类型 | -|-----------|-------------|------|----------| -| message:notification:create | message_notification_add | 创建通知 | 按钮 | -| message:notification:view | message_notification_view | 查看通知 | 菜单 | -| message:notification:send | message_notification_send | 发送通知 | 按钮 | -| message:template:create | message_template_add | 创建消息模板 | 按钮 | -| message:template:update | message_template_edit | 更新消息模板 | 按钮 | -| message:template:delete | message_template_del | 删除消息模板 | 按钮 | -| message:template:view | message_template_view | 查看消息模板 | 菜单 | - -## 菜单配置SQL示例 - -```sql --- 工单管理菜单 -INSERT INTO sys_menu (menu_id, name, permission, path, parent_id, icon, sort, type, tenant_id) VALUES -(10000, '工单管理', NULL, '/workcase', 0, 'el-icon-tickets', 1, '0', 1), -(10001, '工单列表', 'workcase_ticket_view', '/workcase/list', 10000, '', 1, '1', 1), -(10002, '创建工单', 'workcase_ticket_add', NULL, 10001, '', 1, '2', 1), -(10003, '编辑工单', 'workcase_ticket_edit', NULL, 10001, '', 2, '2', 1), -(10004, '删除工单', 'workcase_ticket_del', NULL, 10001, '', 3, '2', 1), -(10005, '处理工单', 'workcase_ticket_process', NULL, 10001, '', 4, '2', 1), -(10006, '设备管理', 'workcase_ticket_device', NULL, 10001, '', 5, '2', 1), -(10010, '聊天室', 'workcase_room_view', '/workcase/room', 10000, '', 2, '1', 1), -(10011, '创建聊天室', 'workcase_room_add', NULL, 10010, '', 1, '2', 1), -(10012, '编辑聊天室', 'workcase_room_edit', NULL, 10010, '', 2, '2', 1), -(10013, '关闭聊天室', 'workcase_room_close', NULL, 10010, '', 3, '2', 1); - --- AI管理菜单(Dify) -INSERT INTO sys_menu (menu_id, name, permission, path, parent_id, icon, sort, type, tenant_id) VALUES -(11000, 'AI管理', NULL, '/dify', 0, 'el-icon-cpu', 2, '0', 1), -(11001, '智能体管理', 'dify_agent_view', '/dify/agent', 11000, '', 1, '1', 1), -(11002, '创建智能体', 'dify_agent_add', NULL, 11001, '', 1, '2', 1), -(11003, '编辑智能体', 'dify_agent_edit', NULL, 11001, '', 2, '2', 1), -(11004, '删除智能体', 'dify_agent_del', NULL, 11001, '', 3, '2', 1), -(11010, '知识库管理', 'dify_knowledge_view', '/dify/knowledge', 11000, '', 2, '1', 1), -(11011, '创建知识库', 'dify_knowledge_add', NULL, 11010, '', 1, '2', 1), -(11012, '编辑知识库', 'dify_knowledge_edit', NULL, 11010, '', 2, '2', 1), -(11013, '删除知识库', 'dify_knowledge_del', NULL, 11010, '', 3, '2', 1), -(11014, '上传文件', 'dify_knowledge_file_upload', NULL, 11010, '', 4, '2', 1), -(11020, 'AI对话', 'dify_chat_view', '/dify/chat', 11000, '', 3, '1', 1), -(11021, '创建对话', 'dify_chat_add', NULL, 11020, '', 1, '2', 1); - --- 招标管理菜单 -INSERT INTO sys_menu (menu_id, name, permission, path, parent_id, icon, sort, type, tenant_id) VALUES -(12000, '招标管理', NULL, '/bidding', 0, 'el-icon-document', 3, '0', 1), -(12001, '招标项目', 'bidding_project_view', '/bidding/project', 12000, '', 1, '1', 1), -(12002, '创建项目', 'bidding_project_add', NULL, 12001, '', 1, '2', 1), -(12003, '编辑项目', 'bidding_project_edit', NULL, 12001, '', 2, '2', 1), -(12004, '删除项目', 'bidding_project_del', NULL, 12001, '', 3, '2', 1), -(12010, '投标管理', 'bidding_bid_view', '/bidding/bid', 12000, '', 2, '1', 1), -(12011, '创建投标', 'bidding_bid_add', NULL, 12010, '', 1, '2', 1), -(12012, '编辑投标', 'bidding_bid_edit', NULL, 12010, '', 2, '2', 1); - --- 平台管理菜单 -INSERT INTO sys_menu (menu_id, name, permission, path, parent_id, icon, sort, type, tenant_id) VALUES -(13000, '平台管理', NULL, '/platform', 0, 'el-icon-setting', 4, '0', 1), -(13001, '系统配置', 'platform_config_view', '/platform/config', 13000, '', 1, '1', 1), -(13002, '编辑配置', 'platform_config_edit', NULL, 13001, '', 1, '2', 1), -(13010, '操作日志', 'platform_log_view', '/platform/log', 13000, '', 2, '1', 1), -(13020, '系统监控', 'platform_monitor_view', '/platform/monitor', 13000, '', 3, '1', 1), -(13030, '统计报表', 'platform_stat_view', '/platform/stat', 13000, '', 4, '1', 1); - --- 消息管理菜单 -INSERT INTO sys_menu (menu_id, name, permission, path, parent_id, icon, sort, type, tenant_id) VALUES -(14000, '消息管理', NULL, '/message', 0, 'el-icon-message', 5, '0', 1), -(14001, '通知管理', 'message_notification_view', '/message/notification', 14000, '', 1, '1', 1), -(14002, '创建通知', 'message_notification_add', NULL, 14001, '', 1, '2', 1), -(14003, '发送通知', 'message_notification_send', NULL, 14001, '', 2, '2', 1), -(14010, '消息模板', 'message_template_view', '/message/template', 14000, '', 2, '1', 1), -(14011, '创建模板', 'message_template_add', NULL, 14010, '', 1, '2', 1), -(14012, '编辑模板', 'message_template_edit', NULL, 14010, '', 2, '2', 1), -(14013, '删除模板', 'message_template_del', NULL, 14010, '', 3, '2', 1); -``` - -## 角色权限分配示例 - -```sql --- 为管理员角色分配所有业务权限 -INSERT INTO sys_role_menu (role_id, menu_id) -SELECT 1, menu_id FROM sys_menu WHERE menu_id >= 10000 AND menu_id < 15000; - --- 为普通用户角色分配查看权限 -INSERT INTO sys_role_menu (role_id, menu_id) -SELECT 2, menu_id FROM sys_menu -WHERE menu_id >= 10000 AND menu_id < 15000 - AND (type = '0' OR type = '1' OR permission LIKE '%_view'); -``` - -## 代码转换示例 - -### Java Controller 转换 - -```java -// 转换前 (urbanLifelineServ) -@RestController -@RequestMapping("/api/workcase") -public class WorkcaseController { - - @PostMapping("/create") - @PreAuthorize("hasAuthority('workcase:ticket:create')") - public ResultDomain createWorkcase(@RequestBody TbWorkcaseDTO workcase) { - return ResultDomain.success(workcaseService.save(workcase)); - } -} - -// 转换后 (pigx-app-server) -@RestController -@RequestMapping("/workcase") -public class WorkcaseController { - - @PostMapping - @PreAuthorize("@pms.hasPermission('workcase_ticket_add')") - public R createWorkcase(@RequestBody TbWorkcaseDTO workcase) { - return R.ok(workcaseService.save(workcase)); - } -} -``` - -### 前端权限判断转换 - -```javascript -// 转换前 (urbanLifelineWeb) -if (hasPermission('workcase:ticket:create')) { - // 显示创建按钮 -} - -// 转换后 (pigx-ai-ui) -if (checkPermission(['workcase_ticket_add'])) { - // 显示创建按钮 -} -``` - -## 注意事项 - -1. **权限格式严格**: 必须使用下划线 `_` 而不是冒号 `:` -2. **注解格式**: 必须包含 `@pms.` 前缀 -3. **动作映射**: `create` 统一改为 `add`,`update` 改为 `edit`,`delete` 改为 `del` -4. **菜单类型**: - - type='0': 目录 - - type='1': 菜单 - - type='2': 按钮 -5. **menu_id分配**: - - 10000-10999: 工单模块 - - 11000-11999: AI模块(Dify) - - 12000-12999: 招标模块 - - 13000-13999: 平台管理 - - 14000-14999: 消息模块 - -## 批量转换脚本 - -可以使用以下正则表达式进行批量替换: - -```regex -# 查找 -@PreAuthorize\("hasAuthority\('([^:]+):([^:]+):([^']+)'\)"\) - -# 替换为 -@PreAuthorize("@pms.hasPermission('$1_$2_$3')") - -# 特殊处理 create -> add -将 _create 替换为 _add -将 _update 替换为 _edit -将 _delete 替换为 _del -``` \ No newline at end of file diff --git a/.kiro/specs/urbanlifeline-to-pigx-migration/pigx-dify-architecture.md b/.kiro/specs/urbanlifeline-to-pigx-migration/pigx-dify-architecture.md deleted file mode 100644 index 754777ca..00000000 --- a/.kiro/specs/urbanlifeline-to-pigx-migration/pigx-dify-architecture.md +++ /dev/null @@ -1,756 +0,0 @@ -# pigx-dify 模块架构设计 - -## 1. 模块概述 - -### 1.1 定位 -pigx-dify 是 pigx 平台的 AI 服务模块,专门用于集成 Dify AI 平台,提供智能体管理、知识库管理和 AI 对话功能。 - -### 1.2 核心功能 -- 智能体(Agent)管理 -- 知识库(Knowledge)管理 -- AI 对话(Chat)功能 -- Dify API 集成 -- 流式响应支持(SSE) - -### 1.3 技术栈 -- Spring Boot 3.5.8 -- Spring Cloud 2025.0.0 -- MyBatis-Plus 3.5.14 -- MySQL 8.0 -- Dify API Client -- SSE (Server-Sent Events) - -## 2. 模块结构 - -### 2.1 Maven 项目结构 - -```xml - - - - 4.0.0 - - com.pig4cloud - pigx - 6.4.0 - - - pigx-dify - pom - Dify AI integration module - - - pigx-dify-api - pigx-dify-biz - - -``` - -### 2.2 pigx-dify-api 结构 - -```xml - - - - - com.pig4cloud - pigx-dify - 6.4.0 - - - pigx-dify-api - Dify API interfaces and entities - - - - com.pig4cloud - pigx-common-core - - - com.baomidou - mybatis-plus-annotation - - - org.springdoc - springdoc-openapi-starter-webmvc-api - - - -``` - -### 2.3 pigx-dify-biz 结构 - -```xml - - - - - com.pig4cloud - pigx-dify - 6.4.0 - - - pigx-dify-biz - Dify business implementation - - - - - com.pig4cloud - pigx-dify-api - - - com.pig4cloud - pigx-common-security - - - com.pig4cloud - pigx-common-log - - - com.pig4cloud - pigx-common-mybatis - - - com.pig4cloud - pigx-common-swagger - - - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework.boot - spring-boot-starter-undertow - - - - - com.alibaba.cloud - spring-cloud-starter-alibaba-nacos-discovery - - - com.alibaba.cloud - spring-cloud-starter-alibaba-nacos-config - - - - - org.apache.httpcomponents.client5 - httpclient5 - - - org.springframework - spring-webflux - - - - - org.springframework.boot - spring-boot-starter-webflux - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - -``` - -## 3. 包结构设计 - -### 3.1 pigx-dify-api 包结构 - -``` -pigx-dify-api/ -└── src/main/java/com/pig4cloud/pigx/dify/api/ - ├── entity/ # 实体类 - │ ├── TbAgent.java # 智能体 - │ ├── TbChat.java # 聊天会话 - │ ├── TbChatMessage.java # 聊天消息 - │ └── TbKnowledge.java # 知识库 - ├── dto/ # 数据传输对象 - │ ├── AgentDTO.java - │ ├── ChatDTO.java - │ ├── ChatMessageDTO.java - │ └── KnowledgeDTO.java - ├── vo/ # 视图对象 - │ ├── AgentVO.java - │ ├── ChatVO.java - │ └── KnowledgeVO.java - ├── feign/ # Feign接口 - │ └── RemoteDifyService.java - └── constant/ # 常量定义 - └── DifyConstant.java -``` - -### 3.2 pigx-dify-biz 包结构 - -``` -pigx-dify-biz/ -└── src/main/java/com/pig4cloud/pigx/dify/ - ├── DifyApplication.java # 启动类 - ├── config/ # 配置类 - │ ├── DifyConfig.java # Dify配置 - │ ├── WebConfig.java # Web配置 - │ └── AsyncConfig.java # 异步配置 - ├── controller/ # 控制器 - │ ├── AgentController.java # 智能体管理 - │ ├── ChatController.java # 对话管理 - │ └── KnowledgeController.java # 知识库管理 - ├── service/ # 服务层 - │ ├── AgentService.java - │ ├── ChatService.java - │ ├── KnowledgeService.java - │ └── impl/ - │ ├── AgentServiceImpl.java - │ ├── ChatServiceImpl.java - │ └── KnowledgeServiceImpl.java - ├── mapper/ # 数据访问层 - │ ├── AgentMapper.java - │ ├── ChatMapper.java - │ ├── ChatMessageMapper.java - │ └── KnowledgeMapper.java - ├── client/ # 外部API客户端 - │ ├── DifyApiClient.java # Dify API客户端 - │ ├── dto/ # Dify API DTO - │ │ ├── DifyRequest.java - │ │ └── DifyResponse.java - │ └── callback/ - │ └── StreamCallback.java # 流式回调 - └── handler/ # 处理器 - ├── SseHandler.java # SSE处理 - └── GlobalExceptionHandler.java # 全局异常处理 -``` - -## 4. 核心代码设计 - -### 4.1 启动类 - -```java -package com.pig4cloud.pigx.dify; - -import com.pig4cloud.pigx.common.feign.annotation.EnablePigxFeignClients; -import com.pig4cloud.pigx.common.security.annotation.EnablePigxResourceServer; -import com.pig4cloud.pigx.common.swagger.annotation.EnablePigxDoc; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.cloud.client.discovery.EnableDiscoveryClient; - -@EnablePigxDoc -@EnablePigxResourceServer -@EnablePigxFeignClients -@EnableDiscoveryClient -@SpringBootApplication -public class DifyApplication { - public static void main(String[] args) { - SpringApplication.run(DifyApplication.class, args); - } -} -``` - -### 4.2 配置类 - -```java -package com.pig4cloud.pigx.dify.config; - -import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Configuration; - -@Data -@Configuration -@ConfigurationProperties(prefix = "dify") -public class DifyConfig { - - /** - * Dify API基础URL - */ - private String apiBaseUrl = "https://api.dify.ai/v1"; - - /** - * 默认API Key(可被智能体配置覆盖) - */ - private String defaultApiKey; - - /** - * 连接超时(毫秒) - */ - private Integer connectTimeout = 10000; - - /** - * 读取超时(毫秒) - */ - private Integer readTimeout = 30000; - - /** - * 流式响应超时(毫秒) - */ - private Integer streamTimeout = 60000; - - /** - * 是否启用调试日志 - */ - private Boolean debug = false; -} -``` - -### 4.3 实体设计 - -```java -package com.pig4cloud.pigx.dify.api.entity; - -import com.baomidou.mybatisplus.annotation.*; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; - -@Data -@TableName("tb_agent") -@EqualsAndHashCode(callSuper = true) -public class TbAgent extends Model { - - @TableId(type = IdType.ASSIGN_UUID) - private String agentId; - - private String name; - - private String description; - - private String difyApiKey; - - private String difyAgentId; - - private String config; // JSON配置 - - private String icon; - - private Integer status; // 0:禁用 1:启用 - - @TableField(fill = FieldFill.INSERT) - private Long tenantId; - - @TableField(fill = FieldFill.INSERT) - private String createBy; - - @TableField(fill = FieldFill.INSERT) - private LocalDateTime createTime; - - @TableField(fill = FieldFill.UPDATE) - private String updateBy; - - @TableField(fill = FieldFill.UPDATE) - private LocalDateTime updateTime; - - @TableLogic - private Integer delFlag; -} -``` - -### 4.4 Controller设计 - -```java -package com.pig4cloud.pigx.dify.controller; - -import com.pig4cloud.pigx.common.core.util.R; -import com.pig4cloud.pigx.common.security.annotation.Inner; -import com.pig4cloud.pigx.common.security.util.SecurityUtils; -import com.pig4cloud.pigx.dify.api.dto.ChatDTO; -import com.pig4cloud.pigx.dify.service.ChatService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import lombok.RequiredArgsConstructor; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; - -@RestController -@RequiredArgsConstructor -@RequestMapping("/chat") -@Tag(name = "对话管理") -public class ChatController { - - private final ChatService chatService; - - @Operation(summary = "创建对话") - @PostMapping - @PreAuthorize("@pms.hasPermission('dify_chat_add')") - public R createChat(@RequestBody ChatDTO chatDTO) { - chatDTO.setUserId(SecurityUtils.getUser().getId()); - chatDTO.setTenantId(SecurityUtils.getUser().getTenantId()); - return R.ok(chatService.createChat(chatDTO)); - } - - @Operation(summary = "流式对话") - @PostMapping("/stream/{chatId}") - @PreAuthorize("@pms.hasPermission('dify_chat_message')") - public SseEmitter streamChat(@PathVariable String chatId, - @RequestBody String message) { - return chatService.streamChat(chatId, message, SecurityUtils.getUser()); - } - - @Operation(summary = "获取对话历史") - @GetMapping("/{chatId}/messages") - @PreAuthorize("@pms.hasPermission('dify_chat_view')") - public R getChatMessages(@PathVariable String chatId) { - return R.ok(chatService.getChatMessages(chatId)); - } -} -``` - -## 5. 数据库设计 - -### 5.1 数据表DDL - -```sql --- 智能体表 -CREATE TABLE `tb_agent` ( - `agent_id` varchar(36) NOT NULL COMMENT '智能体ID', - `name` varchar(100) NOT NULL COMMENT '名称', - `description` varchar(500) DEFAULT NULL COMMENT '描述', - `dify_api_key` varchar(255) DEFAULT NULL COMMENT 'Dify API Key', - `dify_agent_id` varchar(100) DEFAULT NULL COMMENT 'Dify Agent ID', - `config` text COMMENT '配置信息(JSON)', - `icon` varchar(255) DEFAULT NULL COMMENT '图标', - `status` tinyint DEFAULT '1' COMMENT '状态 0:禁用 1:启用', - `tenant_id` bigint NOT NULL DEFAULT '1' COMMENT '租户ID', - `create_by` varchar(64) DEFAULT NULL COMMENT '创建人', - `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_by` varchar(64) DEFAULT NULL COMMENT '更新人', - `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `del_flag` char(1) DEFAULT '0' COMMENT '删除标记', - PRIMARY KEY (`agent_id`), - KEY `idx_tenant_id` (`tenant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='智能体表'; - --- 聊天会话表 -CREATE TABLE `tb_chat` ( - `chat_id` varchar(36) NOT NULL COMMENT '会话ID', - `agent_id` varchar(36) NOT NULL COMMENT '智能体ID', - `user_id` bigint NOT NULL COMMENT '用户ID', - `title` varchar(200) DEFAULT NULL COMMENT '会话标题', - `conversation_id` varchar(100) DEFAULT NULL COMMENT 'Dify会话ID', - `status` tinyint DEFAULT '1' COMMENT '状态 0:关闭 1:活跃', - `tenant_id` bigint NOT NULL DEFAULT '1' COMMENT '租户ID', - `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `del_flag` char(1) DEFAULT '0' COMMENT '删除标记', - PRIMARY KEY (`chat_id`), - KEY `idx_user_id` (`user_id`), - KEY `idx_agent_id` (`agent_id`), - KEY `idx_tenant_id` (`tenant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='聊天会话表'; - --- 聊天消息表 -CREATE TABLE `tb_chat_message` ( - `message_id` varchar(36) NOT NULL COMMENT '消息ID', - `chat_id` varchar(36) NOT NULL COMMENT '会话ID', - `content` text NOT NULL COMMENT '消息内容', - `role` varchar(20) NOT NULL COMMENT '角色(user/ai/system)', - `dify_message_id` varchar(100) DEFAULT NULL COMMENT 'Dify消息ID', - `parent_message_id` varchar(36) DEFAULT NULL COMMENT '父消息ID', - `metadata` text COMMENT '元数据(JSON)', - `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`message_id`), - KEY `idx_chat_id` (`chat_id`), - KEY `idx_create_time` (`create_time`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='聊天消息表'; - --- 知识库表 -CREATE TABLE `tb_knowledge` ( - `knowledge_id` varchar(36) NOT NULL COMMENT '知识库ID', - `title` varchar(200) NOT NULL COMMENT '标题', - `description` text COMMENT '描述', - `dify_dataset_id` varchar(100) DEFAULT NULL COMMENT 'Dify数据集ID', - `status` tinyint DEFAULT '1' COMMENT '状态 0:禁用 1:启用', - `tenant_id` bigint NOT NULL DEFAULT '1' COMMENT '租户ID', - `create_by` varchar(64) DEFAULT NULL COMMENT '创建人', - `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_by` varchar(64) DEFAULT NULL COMMENT '更新人', - `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `del_flag` char(1) DEFAULT '0' COMMENT '删除标记', - PRIMARY KEY (`knowledge_id`), - KEY `idx_tenant_id` (`tenant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='知识库表'; -``` - -## 6. 配置文件 - -### 6.1 bootstrap.yml - -```yaml -server: - port: 9500 - -spring: - application: - name: @project.artifactId@ - profiles: - active: @profiles.active@ - cloud: - nacos: - discovery: - server-addr: ${NACOS_HOST:pigx-register}:${NACOS_PORT:8848} - config: - server-addr: ${spring.cloud.nacos.discovery.server-addr} - file-extension: yml - shared-configs: - - data-id: common.yml - refresh: true - - data-id: db.yml - refresh: true -``` - -### 6.2 application.yml - -```yaml -# Dify配置 -dify: - api-base-url: ${DIFY_API_BASE_URL:https://api.dify.ai/v1} - default-api-key: ${DIFY_DEFAULT_API_KEY:} - connect-timeout: 10000 - read-timeout: 30000 - stream-timeout: 60000 - debug: false - -# MyBatis-Plus配置 -mybatis-plus: - mapper-locations: classpath:/mapper/*.xml - type-aliases-package: com.pig4cloud.pigx.dify.api.entity - configuration: - map-underscore-to-camel-case: true - -# 安全配置 -security: - oauth2: - resource: - ignore-urls: - - /actuator/** - - /v3/api-docs/** -``` - -## 7. 服务注册 - -### 7.1 路由配置 - -在 pigx-gateway 中添加路由: - -```yaml -spring: - cloud: - gateway: - routes: - - id: pigx-dify - uri: lb://pigx-dify - predicates: - - Path=/dify/** - filters: - - StripPrefix=1 -``` - -### 7.2 Feign配置 - -```java -package com.pig4cloud.pigx.dify.api.feign; - -import com.pig4cloud.pigx.common.core.constant.ServiceNameConstants; -import com.pig4cloud.pigx.common.core.util.R; -import com.pig4cloud.pigx.dify.api.dto.ChatDTO; -import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; - -@FeignClient(contextId = "remoteDifyService", - value = ServiceNameConstants.DIFY_SERVICE) -public interface RemoteDifyService { - - @GetMapping("/chat/{chatId}") - R getChatInfo(@PathVariable("chatId") String chatId); -} -``` - -## 8. 部署配置 - -### 8.1 Docker配置 - -```dockerfile -FROM pig4cloud/java:8-jre - -RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime - -COPY target/pigx-dify-biz.jar /app.jar - -ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar"] -``` - -### 8.2 K8s部署 - -```yaml -apiVersion: apps/v1 -kind: Deployment -metadata: - name: pigx-dify - namespace: pigx -spec: - replicas: 1 - selector: - matchLabels: - app: pigx-dify - template: - metadata: - labels: - app: pigx-dify - spec: - containers: - - name: pigx-dify - image: pigx/pigx-dify:latest - ports: - - containerPort: 9500 - env: - - name: NACOS_HOST - value: "pigx-register" - - name: DIFY_API_BASE_URL - value: "https://api.dify.ai/v1" - - name: DIFY_DEFAULT_API_KEY - valueFrom: - secretKeyRef: - name: dify-secret - key: api-key -``` - -## 9. 集成测试 - -### 9.1 单元测试 - -```java -@SpringBootTest -class ChatServiceTest { - - @Autowired - private ChatService chatService; - - @MockBean - private DifyApiClient difyApiClient; - - @Test - void testCreateChat() { - // 测试创建对话 - ChatDTO chatDTO = new ChatDTO(); - chatDTO.setAgentId("test-agent"); - chatDTO.setUserId(1L); - - ChatDTO result = chatService.createChat(chatDTO); - assertNotNull(result.getChatId()); - } -} -``` - -### 9.2 API测试 - -```http -### 创建对话 -POST http://localhost:9999/dify/chat -Authorization: Bearer {{token}} -Content-Type: application/json - -{ - "agentId": "agent-001", - "title": "测试对话" -} - -### 发送消息(流式) -POST http://localhost:9999/dify/chat/stream/{{chatId}} -Authorization: Bearer {{token}} -Content-Type: text/plain - -你好,请介绍一下自己 -``` - -## 10. 监控告警 - -### 10.1 健康检查 - -```java -@Component -public class DifyHealthIndicator implements HealthIndicator { - - @Autowired - private DifyApiClient difyApiClient; - - @Override - public Health health() { - try { - // 检查Dify API连通性 - boolean isHealthy = difyApiClient.checkHealth(); - if (isHealthy) { - return Health.up() - .withDetail("dify", "Available") - .build(); - } - } catch (Exception e) { - return Health.down() - .withDetail("dify", "Unavailable") - .withException(e) - .build(); - } - return Health.down().build(); - } -} -``` - -### 10.2 日志配置 - -```xml - - - - - -``` - -## 11. 安全考虑 - -### 11.1 API Key管理 -- API Key 加密存储 -- 支持多租户隔离 -- 定期轮换机制 - -### 11.2 数据隔离 -- 租户级别数据隔离 -- 用户权限验证 -- 敏感信息脱敏 - -### 11.3 限流配置 -```java -@Configuration -public class RateLimitConfig { - - @Bean - public RedisRateLimiter redisRateLimiter() { - return new RedisRateLimiter(10, 20); // 10 requests per second - } -} -``` - -## 12. 迁移清单 - -- [ ] 创建 Maven 模块结构 -- [ ] 迁移实体类和 Mapper -- [ ] 迁移 Service 层业务逻辑 -- [ ] 迁移 Controller 层接口 -- [ ] 适配权限注解 -- [ ] 迁移 DifyApiClient -- [ ] 配置服务注册和发现 -- [ ] 数据库表结构迁移 -- [ ] 前端页面迁移 -- [ ] 集成测试 -- [ ] 部署配置 \ No newline at end of file diff --git a/.kiro/specs/urbanlifeline-to-pigx-migration/requirements.md b/.kiro/specs/urbanlifeline-to-pigx-migration/requirements.md deleted file mode 100644 index 89afda5d..00000000 --- a/.kiro/specs/urbanlifeline-to-pigx-migration/requirements.md +++ /dev/null @@ -1,151 +0,0 @@ -# Requirements Document - -## Introduction - -本文档定义了将 urbanLifelineServ 和 urbanLifelineWeb 项目的**业务功能**迁移到 pigx-ai 和 pigx-ai-ui 平台的需求规范。 - -**核心原则**: -- 只迁移业务功能代码(招标、工单、平台管理、AI、消息等) -- 人员、部门、权限、认证等基础设施**完全使用 pigx 原生实现** -- 数据库从 PostgreSQL 迁移到 MySQL -- 前端从微前端架构合并到 pigx-ai-ui 单体应用 - -## Glossary - -- **Business_Module**: 需要迁移的业务模块(bidding, workcase, platform, ai, message) -- **pigx-app-server**: pigx 平台的业务服务模块,用于承载迁移的业务功能 -- **pigx-dify**: 新建的 pigx 平台 AI 模块,用于承载原 urbanLifeline 的 AI 功能和 Dify 集成 -- **pigx-knowledge**: pigx 平台原有的 AI 知识库模块(不使用) -- **PigxUser**: pigx 原生的用户实体,迁移后的业务代码需要使用此用户模型 -- **R**: pigx 统一响应格式 -- **DifyApiClient**: 与 Dify 平台交互的客户端,保留在 pigx-dify 模块中 - -## Requirements - -### Requirement 1: 招标模块迁移 (bidding) - -**User Story:** As a 业务用户, I want to 在 pigx 平台上使用招标功能, so that 可以进行招标项目管理。 - -#### Acceptance Criteria - -1. WHEN Business_Module 迁移 bidding 服务 THEN pigx-app-server SHALL 包含招标业务的 Controller、Service、Mapper 层代码 -2. WHEN Business_Module 处理招标用户关联 THEN pigx-app-server SHALL 使用 PigxUser 替代原有的 User 实体 -3. WHEN Business_Module 迁移招标数据表 THEN Database_Migrator SHALL 将 PostgreSQL 表结构转换为 MySQL 并添加 tenant_id 租户字段 -4. WHEN Business_Module 迁移招标前端页面 THEN pigx-ai-ui SHALL 在 src/views/bidding 目录下包含所有招标页面组件 -5. WHEN Business_Module 处理招标 API 调用 THEN pigx-ai-ui SHALL 使用 pigx 的 request 工具和统一响应格式 - -### Requirement 2: 工单模块迁移 (workcase) - -**User Story:** As a 业务用户, I want to 在 pigx 平台上使用工单功能, so that 可以进行工单流转和处理。 - -#### Acceptance Criteria - -1. WHEN Business_Module 迁移 workcase 服务 THEN pigx-app-server SHALL 包含工单业务的完整代码 -2. WHEN Business_Module 处理工单分配 THEN pigx-app-server SHALL 通过 pigx-upms 的 RemoteUserService 获取用户信息 -3. WHEN Business_Module 处理工单流程 THEN pigx-app-server SHALL 评估是否集成 pigx-flow 工作流引擎 -4. WHEN Business_Module 迁移工单数据表 THEN Database_Migrator SHALL 将表结构转换为 MySQL 并关联 pigx 的 sys_user 表 -5. WHEN Business_Module 迁移工单前端页面 THEN pigx-ai-ui SHALL 在 src/views/workcase 目录下包含所有工单页面 -6. WHEN Business_Module 处理 Jitsi 视频会议集成 THEN pigx-app-server SHALL 保留视频会议功能并适配 pigx 认证 - -### Requirement 3: 平台管理模块迁移 (platform) - -**User Story:** As a 管理员, I want to 在 pigx 平台上使用平台管理功能, so that 可以进行业务配置和管理。 - -#### Acceptance Criteria - -1. WHEN Business_Module 迁移 platform 服务 THEN pigx-app-server SHALL 包含平台管理业务代码 -2. WHEN Business_Module 处理平台配置 THEN pigx-app-server SHALL 使用 pigx 的配置管理机制 -3. WHEN Business_Module 迁移平台数据表 THEN Database_Migrator SHALL 将表结构转换为 MySQL -4. WHEN Business_Module 迁移平台前端页面 THEN pigx-ai-ui SHALL 在 src/views/platform 目录下包含管理页面 - -### Requirement 4: AI 模块迁移 (创建新的 pigx-dify 模块) - -**User Story:** As a 用户, I want to 在 pigx 平台上使用 AI 功能, so that 可以使用智能问答和知识库。 - -#### Acceptance Criteria - -1. WHEN Business_Module 迁移 ai 服务 THEN 新建的 pigx-dify 模块 SHALL 承载所有 AI 业务逻辑 -2. WHEN Business_Module 处理 AI 对话 THEN pigx-dify SHALL 保留原有的 Dify API 集成方式 -3. WHEN Business_Module 处理 Dify 集成 THEN pigx-dify SHALL 包含 DifyApiClient 和相关配置管理 -4. WHEN Business_Module 迁移 AI 数据表 THEN Database_Migrator SHALL 将 tb_agent、tb_chat、tb_chat_message、tb_knowledge 等表转换为 MySQL -5. WHEN Business_Module 迁移 AI 前端页面 THEN pigx-ai-ui SHALL 在 src/views/dify 目录下包含 AI 对话界面 -6. WHEN Business_Module 处理聊天记录 THEN pigx-dify SHALL 保持原有的 tb_chat 和 tb_chat_message 表结构 -7. WHEN Business_Module 处理知识库 THEN pigx-dify SHALL 保持与 Dify Dataset API 的集成 - -### Requirement 5: 消息模块迁移 (message) - -**User Story:** As a 用户, I want to 在 pigx 平台上接收消息通知, so that 可以及时了解业务动态。 - -#### Acceptance Criteria - -1. WHEN Business_Module 迁移 message 服务 THEN pigx-app-server SHALL 包含消息通知业务代码 -2. WHEN Business_Module 处理消息推送 THEN pigx-app-server SHALL 使用 pigx-common-websocket 进行实时推送 -3. WHEN Business_Module 处理微信通知 THEN pigx-app-server SHALL 保留微信消息推送功能 -4. WHEN Business_Module 迁移消息数据表 THEN Database_Migrator SHALL 将表结构转换为 MySQL - -### Requirement 6: 文件服务适配 - -**User Story:** As a 用户, I want to 上传和下载文件, so that 可以管理业务相关的文件资源。 - -#### Acceptance Criteria - -1. WHEN Business_Module 处理文件上传 THEN pigx-app-server SHALL 使用 pigx-common-oss 进行文件存储 -2. WHEN Business_Module 处理文件访问 THEN pigx-app-server SHALL 适配 pigx 的文件访问 URL 格式 -3. IF Business_Module 有自定义文件处理逻辑 THEN pigx-app-server SHALL 在 OSS 基础上扩展实现 - -### Requirement 7: 定时任务适配 - -**User Story:** As a 系统管理员, I want to 管理定时任务, so that 可以执行周期性业务处理。 - -#### Acceptance Criteria - -1. WHEN Business_Module 迁移 crontab 任务 THEN pigx-visual/xxl-job SHALL 包含迁移后的定时任务 -2. WHEN Business_Module 处理任务调度 THEN XXL-Job SHALL 替代原有的调度机制 -3. WHEN Business_Module 处理任务执行 THEN pigx-app-server SHALL 提供任务执行的 HTTP 接口 - -### Requirement 8: 数据库迁移 - -**User Story:** As a DBA, I want to 将业务数据迁移到 MySQL, so that 数据可以在 pigx 平台运行。 - -#### Acceptance Criteria - -1. WHEN Database_Migrator 处理业务表 THEN Migration_System SHALL 生成 MySQL DDL 脚本 -2. WHEN Database_Migrator 处理数据类型 THEN Migration_System SHALL 正确映射 PostgreSQL 类型到 MySQL -3. WHEN Database_Migrator 处理用户关联 THEN Migration_System SHALL 将原 user_id 映射到 pigx 的 sys_user.user_id -4. WHEN Database_Migrator 处理租户支持 THEN Migration_System SHALL 为业务表添加 tenant_id 字段 -5. WHEN Database_Migrator 执行数据迁移 THEN Migration_System SHALL 保证业务数据完整性 - -### Requirement 9: 前端共享组件迁移 - -**User Story:** As a 前端开发者, I want to 迁移共享组件到 pigx-ai-ui, so that 业务页面可以复用这些组件。 - -#### Acceptance Criteria - -1. WHEN Frontend_Migrator 处理 shared 组件 THEN pigx-ai-ui SHALL 在 src/components/urban 目录下包含迁移的组件 -2. WHEN Frontend_Migrator 处理组件依赖 THEN pigx-ai-ui SHALL 更新导入路径使用 pigx 的工具函数 -3. WHEN Frontend_Migrator 处理样式 THEN pigx-ai-ui SHALL 合并样式并避免与 pigx 样式冲突 -4. WHEN Frontend_Migrator 处理 API 调用 THEN 组件 SHALL 使用 pigx 的 request 工具 - -### Requirement 10: 路由和菜单配置 - -**User Story:** As a 管理员, I want to 在 pigx 菜单中看到迁移的功能, so that 可以访问业务功能。 - -#### Acceptance Criteria - -1. WHEN Frontend_Migrator 处理路由 THEN pigx-ai-ui SHALL 在路由配置中添加业务模块路由 -2. WHEN Admin 配置菜单 THEN pigx-upms SHALL 在 sys_menu 表中添加业务功能菜单 -3. WHEN Admin 配置权限 THEN pigx-upms SHALL 为业务功能配置相应的权限标识 - - -### Requirement 11: 权限模型适配 - -**User Story:** As a 系统管理员, I want to 在 pigx 权限体系中配置业务功能权限, so that 可以控制用户对迁移功能的访问。 - -#### Acceptance Criteria - -1. WHEN Business_Module 迁移权限注解 THEN pigx-app-server SHALL 将 @PreAuthorize 替换为 @HasPermission -2. WHEN Business_Module 处理权限标识 THEN pigx-app-server SHALL 使用 pigx 权限命名规范 (module_action 格式) -3. WHEN Admin 配置业务权限 THEN pigx-upms SHALL 在 sys_menu 表中添加对应的权限菜单项 -4. WHEN Business_Module 获取用户信息 THEN pigx-app-server SHALL 使用 SecurityUtils.getUser() 获取 PigxUser -5. WHEN Business_Module 调用用户服务 THEN pigx-app-server SHALL 通过 RemoteUserService 进行 Feign 调用 -6. IF Business_Module 需要数据权限控制 THEN pigx-app-server SHALL 利用 pigx 的租户和部门隔离机制 \ No newline at end of file diff --git a/.kiro/specs/urbanlifeline-to-pigx-migration/security-config-guide.md b/.kiro/specs/urbanlifeline-to-pigx-migration/security-config-guide.md deleted file mode 100644 index 3cad9fb1..00000000 --- a/.kiro/specs/urbanlifeline-to-pigx-migration/security-config-guide.md +++ /dev/null @@ -1,663 +0,0 @@ -# SecurityUtils 和 RemoteUserService 配置指南 - -## 1. 概述 - -本指南详细说明如何在 pigx 平台中配置和使用 SecurityUtils 和 RemoteUserService,实现用户信息获取和远程用户服务调用。 - -## 2. SecurityUtils 使用指南 - -### 2.1 SecurityUtils 介绍 - -SecurityUtils 是 pigx 平台提供的安全工具类,用于获取当前登录用户信息、权限判断等安全相关操作。 - -### 2.2 Maven 依赖 - -```xml - - com.pig4cloud - pigx-common-security - -``` - -### 2.3 基本使用 - -#### 2.3.1 获取当前用户信息 - -```java -import com.pig4cloud.pigx.common.security.util.SecurityUtils; -import com.pig4cloud.pigx.admin.api.entity.SysUser; - -@Service -public class WorkcaseServiceImpl implements WorkcaseService { - - public void example() { - // 获取完整用户对象 - PigxUser pigxUser = SecurityUtils.getUser(); - - // 获取用户ID - Long userId = pigxUser.getId(); - - // 获取用户名 - String username = pigxUser.getUsername(); - - // 获取租户ID(重要:多租户隔离) - Long tenantId = pigxUser.getTenantId(); - - // 获取部门ID - Long deptId = pigxUser.getDeptId(); - - // 获取用户角色列表 - List roles = pigxUser.getRoles(); - - // 获取用户权限列表 - Collection authorities = pigxUser.getAuthorities(); - } -} -``` - -#### 2.3.2 在实体中自动填充用户信息 - -```java -import com.baomidou.mybatisplus.annotation.FieldFill; -import com.baomidou.mybatisplus.annotation.TableField; - -@Data -@TableName("tb_workcase") -public class TbWorkcase { - - private String workcaseId; - - // 自动填充创建人 - @TableField(fill = FieldFill.INSERT) - private String createBy; - - // 自动填充更新人 - @TableField(fill = FieldFill.UPDATE) - private String updateBy; - - // 自动填充租户ID - @TableField(fill = FieldFill.INSERT) - private Long tenantId; -} -``` - -配置自动填充处理器: - -```java -import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; -import com.pig4cloud.pigx.common.security.util.SecurityUtils; -import org.apache.ibatis.reflection.MetaObject; -import org.springframework.stereotype.Component; - -import java.time.LocalDateTime; - -@Component -public class MybatisPlusMetaObjectHandler implements MetaObjectHandler { - - @Override - public void insertFill(MetaObject metaObject) { - PigxUser user = SecurityUtils.getUser(); - - this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now()); - this.strictInsertFill(metaObject, "createBy", String.class, user.getUsername()); - this.strictInsertFill(metaObject, "tenantId", Long.class, user.getTenantId()); - this.strictInsertFill(metaObject, "delFlag", String.class, "0"); - } - - @Override - public void updateFill(MetaObject metaObject) { - PigxUser user = SecurityUtils.getUser(); - - this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); - this.strictUpdateFill(metaObject, "updateBy", String.class, user.getUsername()); - } -} -``` - -### 2.4 权限判断 - -```java -@RestController -@RequestMapping("/workcase") -public class WorkcaseController { - - // 方法级权限判断 - @PreAuthorize("@pms.hasPermission('workcase_ticket_add')") - @PostMapping - public R create(@RequestBody TbWorkcase workcase) { - return R.ok(workcaseService.save(workcase)); - } - - // 代码中权限判断 - @GetMapping("/admin-only") - public R adminFunction() { - PigxUser user = SecurityUtils.getUser(); - - // 检查是否有特定权限 - if (!user.getAuthorities().contains("workcase_ticket_admin")) { - return R.failed("没有管理员权限"); - } - - // 执行管理员功能 - return R.ok(); - } -} -``` - -### 2.5 异步任务中使用 - -```java -@Service -public class AsyncService { - - // 错误示例:异步线程中可能获取不到用户信息 - @Async - public void wrongAsyncMethod() { - PigxUser user = SecurityUtils.getUser(); // 可能为null - } - - // 正确示例:传递用户信息 - @Async - public void correctAsyncMethod(PigxUser user) { - // 使用传入的用户信息 - Long userId = user.getId(); - Long tenantId = user.getTenantId(); - // 执行异步逻辑 - } - - // 调用异步方法 - public void callAsync() { - PigxUser user = SecurityUtils.getUser(); - correctAsyncMethod(user); - } -} -``` - -## 3. RemoteUserService 配置和使用 - -### 3.1 RemoteUserService 介绍 - -RemoteUserService 是通过 Feign 调用 pigx-upms 服务获取用户信息的远程服务接口。 - -### 3.2 Maven 依赖 - -```xml - - com.pig4cloud - pigx-upms-api - -``` - -### 3.3 启用 Feign 客户端 - -在启动类或配置类上添加注解: - -```java -import com.pig4cloud.pigx.common.feign.annotation.EnablePigxFeignClients; - -@EnablePigxFeignClients -@SpringBootApplication -public class WorkcaseApplication { - public static void main(String[] args) { - SpringApplication.run(WorkcaseApplication.class, args); - } -} -``` - -### 3.4 基本使用 - -```java -import com.pig4cloud.pigx.admin.api.feign.RemoteUserService; -import com.pig4cloud.pigx.admin.api.entity.SysUser; -import com.pig4cloud.pigx.common.core.util.R; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -@Service -public class WorkcaseServiceImpl implements WorkcaseService { - - @Autowired - private RemoteUserService remoteUserService; - - /** - * 根据用户ID获取用户信息 - */ - public SysUser getUserById(Long userId) { - R result = remoteUserService.selectById(userId, SecurityConstants.FROM_IN); - - if (result.isSuccess() && result.getData() != null) { - return result.getData(); - } - - throw new BusinessException("用户不存在"); - } - - /** - * 根据用户名获取用户信息 - */ - public SysUser getUserByUsername(String username) { - R result = remoteUserService.info(username, SecurityConstants.FROM_IN); - - if (result.isSuccess() && result.getData() != null) { - return result.getData().getSysUser(); - } - - throw new BusinessException("用户不存在"); - } - - /** - * 批量获取用户信息 - */ - public List getUsersByIds(List userIds) { - List users = new ArrayList<>(); - - for (Long userId : userIds) { - R result = remoteUserService.selectById(userId, SecurityConstants.FROM_IN); - if (result.isSuccess() && result.getData() != null) { - users.add(result.getData()); - } - } - - return users; - } -} -``` - -### 3.5 错误处理 - -```java -@Service -public class WorkcaseServiceImpl { - - @Autowired - private RemoteUserService remoteUserService; - - public void assignWorkcase(String workcaseId, Long assigneeId) { - try { - // 调用远程服务 - R result = remoteUserService.selectById(assigneeId, SecurityConstants.FROM_IN); - - // 检查调用是否成功 - if (!result.isSuccess()) { - log.error("获取用户信息失败: {}", result.getMsg()); - throw new BusinessException("获取用户信息失败"); - } - - // 检查数据是否存在 - SysUser assignee = result.getData(); - if (assignee == null) { - throw new BusinessException("用户不存在"); - } - - // 执行分配逻辑 - doAssign(workcaseId, assignee); - - } catch (FeignException e) { - // 处理Feign调用异常 - log.error("远程服务调用失败", e); - throw new BusinessException("系统繁忙,请稍后重试"); - } - } -} -``` - -### 3.6 配置熔断降级 - -```java -import com.pig4cloud.pigx.admin.api.feign.RemoteUserService; -import com.pig4cloud.pigx.admin.api.feign.factory.RemoteUserServiceFallbackFactory; -import org.springframework.stereotype.Component; - -@Component -public class RemoteUserServiceFallbackImpl implements RemoteUserServiceFallbackFactory { - - @Override - public RemoteUserService create(Throwable throwable) { - return new RemoteUserService() { - @Override - public R selectById(Long id, String from) { - log.error("调用用户服务失败", throwable); - return R.failed("用户服务暂时不可用"); - } - - @Override - public R info(String username, String from) { - log.error("调用用户服务失败", throwable); - return R.failed("用户服务暂时不可用"); - } - }; - } -} -``` - -配置文件中启用熔断: - -```yaml -feign: - sentinel: - enabled: true - client: - config: - default: - connectTimeout: 5000 - readTimeout: 5000 -``` - -## 4. 部门服务调用 - -```java -import com.pig4cloud.pigx.admin.api.feign.RemoteDeptService; -import com.pig4cloud.pigx.admin.api.entity.SysDept; - -@Service -public class DeptRelatedService { - - @Autowired - private RemoteDeptService remoteDeptService; - - /** - * 获取部门信息 - */ - public SysDept getDeptById(Long deptId) { - R result = remoteDeptService.selectById(deptId, SecurityConstants.FROM_IN); - - if (result.isSuccess() && result.getData() != null) { - return result.getData(); - } - - return null; - } - - /** - * 获取部门树 - */ - public List getDeptTree() { - R> result = remoteDeptService.tree(SecurityConstants.FROM_IN); - - if (result.isSuccess() && result.getData() != null) { - return result.getData(); - } - - return new ArrayList<>(); - } -} -``` - -## 5. 最佳实践 - -### 5.1 缓存用户信息 - -```java -import org.springframework.cache.annotation.Cacheable; - -@Service -public class UserCacheService { - - @Autowired - private RemoteUserService remoteUserService; - - @Cacheable(value = "user", key = "#userId") - public SysUser getUserById(Long userId) { - R result = remoteUserService.selectById(userId, SecurityConstants.FROM_IN); - - if (result.isSuccess() && result.getData() != null) { - return result.getData(); - } - - return null; - } -} -``` - -### 5.2 批量查询优化 - -```java -@Service -public class BatchUserService { - - @Autowired - private RemoteUserService remoteUserService; - - /** - * 批量获取用户信息(优化版) - */ - public Map getUserMap(List userIds) { - if (CollectionUtils.isEmpty(userIds)) { - return new HashMap<>(); - } - - // 使用并行流提高效率 - return userIds.parallelStream() - .map(userId -> remoteUserService.selectById(userId, SecurityConstants.FROM_IN)) - .filter(result -> result.isSuccess() && result.getData() != null) - .map(R::getData) - .collect(Collectors.toMap(SysUser::getUserId, Function.identity())); - } -} -``` - -### 5.3 租户隔离实现 - -```java -@Service -public class TenantIsolationService { - - /** - * 查询时自动添加租户条件 - */ - public List listByTenant() { - PigxUser user = SecurityUtils.getUser(); - - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq("tenant_id", user.getTenantId()); - - return workcaseMapper.selectList(wrapper); - } - - /** - * 保存时自动设置租户ID - */ - public void saveWithTenant(TbWorkcase workcase) { - PigxUser user = SecurityUtils.getUser(); - workcase.setTenantId(user.getTenantId()); - workcaseMapper.insert(workcase); - } -} -``` - -## 6. 常见问题 - -### Q1: SecurityUtils.getUser() 返回 null - -**原因**: -1. 未登录或 token 过期 -2. 在异步线程中调用 -3. 在定时任务中调用 - -**解决方案**: -1. 检查 token 有效性 -2. 在异步方法调用前获取用户信息并传递 -3. 定时任务使用系统用户或指定用户 - -### Q2: RemoteUserService 调用超时 - -**原因**: -1. 网络问题 -2. pigx-upms 服务未启动 -3. 配置的超时时间太短 - -**解决方案**: -```yaml -feign: - client: - config: - default: - connectTimeout: 10000 # 连接超时10秒 - readTimeout: 10000 # 读取超时10秒 -``` - -### Q3: 多租户数据混乱 - -**原因**: -1. 未正确设置 tenant_id -2. 查询时未添加租户条件 - -**解决方案**: -1. 使用 MyBatis-Plus 的自动填充 -2. 配置全局租户拦截器 - -```java -@Configuration -public class MybatisPlusConfig { - - @Bean - public MybatisPlusInterceptor mybatisPlusInterceptor() { - MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); - - // 添加租户拦截器 - TenantLineInnerInterceptor tenantInterceptor = new TenantLineInnerInterceptor(); - tenantInterceptor.setTenantLineHandler(new TenantLineHandler() { - @Override - public Expression getTenantId() { - PigxUser user = SecurityUtils.getUser(); - return new LongValue(user.getTenantId()); - } - - @Override - public String getTenantIdColumn() { - return "tenant_id"; - } - - @Override - public boolean ignoreTable(String tableName) { - // 忽略不需要租户隔离的表 - return "sys_user".equals(tableName); - } - }); - - interceptor.addInnerInterceptor(tenantInterceptor); - return interceptor; - } -} -``` - -### Q4: 如何在没有用户上下文的情况下调用服务 - -```java -@Service -public class SystemService { - - /** - * 使用内部调用标识 - */ - public void systemCall() { - // 使用 FROM_IN 标识内部调用 - R result = remoteUserService.selectById(1L, SecurityConstants.FROM_IN); - } - - /** - * 模拟系统用户 - */ - public void executeAsSystem() { - // 创建系统用户上下文 - PigxUser systemUser = new PigxUser(); - systemUser.setId(0L); - systemUser.setUsername("system"); - systemUser.setTenantId(1L); - - // 执行逻辑 - doSystemWork(systemUser); - } -} -``` - -## 7. 迁移检查清单 - -- [ ] 所有 JwtUtils 替换为 SecurityUtils -- [ ] 所有 UserService 替换为 RemoteUserService -- [ ] 所有实体添加 tenant_id 字段 -- [ ] 配置 MyBatis-Plus 自动填充 -- [ ] 配置 Feign 客户端 -- [ ] 添加错误处理和熔断降级 -- [ ] 测试用户信息获取 -- [ ] 测试远程服务调用 -- [ ] 测试租户数据隔离 - -## 8. 参考代码示例 - -完整的 Service 实现示例: - -```java -package com.pig4cloud.pigx.app.service.impl; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.pig4cloud.pigx.admin.api.entity.SysUser; -import com.pig4cloud.pigx.admin.api.feign.RemoteUserService; -import com.pig4cloud.pigx.app.entity.TbWorkcase; -import com.pig4cloud.pigx.app.mapper.WorkcaseMapper; -import com.pig4cloud.pigx.app.service.WorkcaseService; -import com.pig4cloud.pigx.common.core.constant.SecurityConstants; -import com.pig4cloud.pigx.common.core.util.R; -import com.pig4cloud.pigx.common.security.service.PigxUser; -import com.pig4cloud.pigx.common.security.util.SecurityUtils; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -@Slf4j -@Service -@RequiredArgsConstructor -public class WorkcaseServiceImpl extends ServiceImpl - implements WorkcaseService { - - private final RemoteUserService remoteUserService; - - @Override - @Transactional(rollbackFor = Exception.class) - public Boolean createWorkcase(TbWorkcase workcase) { - // 获取当前用户 - PigxUser currentUser = SecurityUtils.getUser(); - - // 设置创建人信息 - workcase.setCreateBy(currentUser.getUsername()); - workcase.setTenantId(currentUser.getTenantId()); - workcase.setDeptId(currentUser.getDeptId()); - - // 保存工单 - return this.save(workcase); - } - - @Override - public Boolean assignWorkcase(String workcaseId, Long assigneeId) { - // 获取被分配人信息 - R result = remoteUserService.selectById(assigneeId, SecurityConstants.FROM_IN); - - if (!result.isSuccess() || result.getData() == null) { - throw new RuntimeException("用户不存在"); - } - - SysUser assignee = result.getData(); - - // 更新工单 - TbWorkcase workcase = this.getById(workcaseId); - workcase.setAssigneeId(assigneeId); - workcase.setAssigneeName(assignee.getUsername()); - - return this.updateById(workcase); - } - - @Override - public List listMyWorkcase() { - PigxUser user = SecurityUtils.getUser(); - - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq("tenant_id", user.getTenantId()) - .eq("create_by", user.getUsername()) - .orderByDesc("create_time"); - - return this.list(wrapper); - } -} -``` \ No newline at end of file diff --git a/.kiro/specs/urbanlifeline-to-pigx-migration/tasks.md b/.kiro/specs/urbanlifeline-to-pigx-migration/tasks.md deleted file mode 100644 index f4fdceca..00000000 --- a/.kiro/specs/urbanlifeline-to-pigx-migration/tasks.md +++ /dev/null @@ -1,387 +0,0 @@ -# Implementation Plan: urbanLifeline 业务功能迁移到 pigx-ai - -## Overview - -将 urbanLifelineServ 和 urbanLifelineWeb 的业务功能迁移到 pigx-ai 平台,完全使用 pigx 原生的用户权限体系,只迁移业务代码和数据。 - -## Tasks - -- [x] 1. 数据库迁移准备 - - 分析源项目 PostgreSQL 表结构 - - 生成 MySQL DDL 转换脚本 - - 为所有业务表添加 tenant_id 字段 - - _Requirements: 8.1, 8.2, 8.4_ - -- [x] 1.1 编写数据库转换脚本 - - 已完成 database-migration-script.md 文档 - - 包含工单、AI、招标、消息模块的完整 MySQL DDL - - **Validates: Requirements 8.1, 8.2, 8.3, 8.4** - -- [x] 2. 权限和菜单规划 - - 设计业务功能的权限标识规范 - - 规划前端路由路径 - - 定义菜单层级结构 - - _Requirements: 10.2, 11.3_ - -- [x] 2.1 创建权限标识映射表 - - 已完成 permission-mapping.md 文档 - - 包含完整的权限映射和菜单配置 SQL - - _Requirements: 11.1, 11.2_ - -- [x] 2.2 编写权限注解转换指南 - - 已完成 permission-annotation-guide.md 文档 - - 包含 @PreAuthorize 到 @pms.hasPermission 转换规则 - - _Requirements: 11.1, 11.2_ - -- [x] 2.3 配置 SecurityUtils 和 RemoteUserService - - 已完成 security-config-guide.md 文档 - - 包含完整的使用示例和最佳实践 - - _Requirements: 11.4, 11.5_ - -- [x] 2.4 配置业务功能菜单 - - 在 pigx sys_menu 表中执行菜单配置 SQL(ID从10000开始) - - 配置对应的权限标识和路由路径 - - _Requirements: 10.2, 11.3_ - -- [x] 2.5 分配角色权限 - - 已在 permission-mapping.md 中提供完整的角色权限分配 SQL - - 管理员角色分配所有业务权限(menu_id 10000-15000) - - 普通用户角色分配查看权限 - - 执行时需在 MySQL 中运行 sys_role_menu 插入语句 - - _Requirements: 10.3, 11.3_ - -- [x] 3. 后端基础架构搭建 - - 创建 pigx-workcase、pigx-bidding、pigx-dify 三个独立模块 - - 每个模块包含 api 和 biz 子模块 - - 配置 Maven 依赖和模块引用 - - _Requirements: 1.1, 2.1, 3.1, 5.1_ - -- [x] 4. 工单模块迁移 (pigx-workcase) -- [x] 4.1 迁移工单实体和 Mapper - - 已创建 TbWorkcase、TbChatRoom、TbChatRoomMessage、TbChatRoomMember、TbWorkcaseProcess、TbVideoMeeting 实体 - - 使用 pigx 标准格式:@TenantTable、Model、createBy/updateBy/delFlag - - 已创建对应的 Mapper 接口 - - _Requirements: 2.1, 2.4_ - -- [x] 4.2 迁移工单 Service 层 - - 已创建 TbWorkcaseService、TbChatRoomService、TbChatRoomMessageService、TbChatRoomMemberService、TbWorkcaseProcessService、TbVideoMeetingService、TbCustomerServiceService - - TbChatRoomService 包含完整业务逻辑:创建聊天室、关闭聊天室、成员管理、消息管理、客服分配、服务评分 - - TbVideoMeetingService 包含完整业务逻辑:创建会议、加入会议、开始/结束会议、权限验证 - - TbCustomerServiceService 包含客服管理:获取可用客服、更新状态、工作量管理 - - 已创建对应的 ServiceImpl 实现类 - - _Requirements: 2.1, 2.2_ - -- [x] 4.3 迁移工单 Controller 层 - - 已创建 TbWorkcaseController、TbChatRoomController、TbVideoMeetingController、TbCustomerServiceController - - TbChatRoomController 包含完整的聊天室功能:成员管理、消息管理、客服分配、服务评分 - - TbVideoMeetingController 包含完整的会议功能:创建、加入、开始、结束会议 - - TbCustomerServiceController 包含客服人员管理功能 - - 使用 @HasPermission 权限注解 - - 响应格式使用 R - - _Requirements: 2.1, 11.1, 11.4_ - -- [x] 4.4 迁移视频会议功能 - - 已创建 TbVideoMeetingService 和 TbVideoMeetingServiceImpl - - 包含创建会议、加入会议、开始会议、结束会议、获取活跃会议等功能 - - 会议访问权限验证(基于聊天室成员) - - 注:Jitsi JWT Token 生成需要后续配置 Jitsi 服务器参数 - - _Requirements: 2.6_ - -- [x] 4.5 迁移聊天室 WebSocket 功能 - - 已创建 ChatRoomWebSocketMessage、ChatRoomNotificationMessage 消息类 - - 已创建 ChatRoomMessageHandler、ChatRoomNotificationHandler 消息处理器 - - 已创建 ChatRoomWebSocketService 用于主动推送消息 - - 使用 pigx-common-websocket 进行实时推送 - - 配置 WebSocket 路径为 /ws/chat - - _Requirements: 2.1, 5.2_ - -- [x] 4.6 迁移 Jitsi JWT Token 生成功能 - - 已创建 JitsiProperties 配置类 - - 已创建 JitsiTokenService 接口和 JitsiTokenServiceImpl 实现 - - 已创建 JitsiTokenController 提供 Token 生成、验证、URL 构建 API - - 支持一键生成会议信息(房间名+Token+URL) - - 使用 jjwt 0.12.x 版本 API - - _Requirements: 2.6_ - -- [x] 4.7 迁移词云管理功能 - - 已创建 TbWordCloud 实体类 - - 已创建 TbWordCloudMapper 接口和 XML 映射文件 - - 已创建 TbWordCloudService 接口和 TbWordCloudServiceImpl 实现 - - 已创建 TbWordCloudController 提供词云 CRUD 和词频增加 API - - 支持词频自动累加(同一天、同一分类的相同词条) - - _Requirements: 2.1_ - -- [x] 5. AI 模块迁移(pigx-dify 模块) -- [x] 5.1 创建 pigx-dify 模块结构 - - 已创建 pigx-dify-api 和 pigx-dify-biz 子模块 - - 已配置 Maven 依赖和模块引用 - - 已创建启动类和配置文件 - - _Requirements: 4.1_ - -- [x] 5.2 迁移 AI 实体和数据层 - - 已创建 TbAgent、TbChat、TbChatMessage、TbKnowledge、TbKnowledgeFile、TbKnowledgeFileLog、PromptCard 实体 - - 使用 pigx 标准格式 - - 已创建对应的 Mapper 接口 - - _Requirements: 4.4, 4.6_ - -- [x] 5.3 迁移 Dify API 客户端 - - 已创建 DifyApiClient 完整功能(知识库管理、文档管理、对话、工作流、模型管理) - - 已创建 DifyProperties 配置类 - - 已创建 DifyException 异常类 - - 已创建 StreamCallback 回调接口 - - 已创建所有 DTO 类(ChatRequest/Response、Dataset*、Document*、Retrieval*、Workflow*、Conversation*、MessageHistory*、EmbeddingModel*、RerankModel*、DifyFileInfo) - - 支持流式响应和阻塞调用两种模式 - - 已配置 OkHttp 依赖 - - 已更新 application.yml 添加 Dify 配置 - - _Requirements: 4.2, 4.3_ - -- [x] 5.4 迁移 AI 业务逻辑 - - 已创建 TbAgentService、TbChatService、TbKnowledgeService 等服务接口和实现类 - - _Requirements: 4.1, 4.2_ - -- [x] 5.5 迁移 AI Controller 层 - - 已创建 TbAgentController、TbChatController、TbKnowledgeController - - 使用 @HasPermission 权限注解 - - _Requirements: 4.1, 11.1_ - -- [x] 5.6 配置 Dify 集成 - - 已配置 DifyProperties 包含完整配置(API地址、密钥、超时、上传、知识库) - - 已在 application.yml 中添加 Dify 配置项 - - 配置支持环境变量覆盖 - - _Requirements: 4.3, 4.7_ - -- [x] 6. 招标模块迁移 (pigx-bidding) -- [x] 6.1 迁移招标实体和数据层 - - 已创建 TbBiddingProject、TbBiddingDocument、TbBiddingRequirement、TbBidResponse、TbProcessNode 实体 - - 已创建对应的 Mapper 接口 - - _Requirements: 1.1, 1.3_ - -- [x] 6.2 迁移招标业务逻辑 - - 已创建 TbBiddingProjectService、TbBiddingDocumentService 等服务接口和实现类 - - _Requirements: 1.1, 1.2_ - -- [x] 6.3 迁移招标 API 接口 - - 已创建 TbBiddingProjectController、TbBiddingDocumentController - - 使用 @HasPermission 权限注解 - - _Requirements: 1.1, 1.5_ - -- [x] 7. 平台管理模块迁移 (platform) -- [x] 7.1 迁移平台管理功能 - - 源项目 platform 模块只有启动类,无实际业务代码 - - 平台配置功能可使用 pigx 的 sys_config 表和配置管理功能 - - _Requirements: 3.1, 3.2_ - -- [x] 7.2 迁移平台数据表 - - 无需迁移,使用 pigx 现有的配置管理表 - - _Requirements: 3.3_ - -- [x] 8. 消息模块迁移 (message) -- [x] 8.1 迁移消息实体和数据层 - - 源项目消息模块主要是邮件/短信发送功能,大部分方法为 TODO 状态 - - pigx 已有完善的消息通知功能(pigx-common-sms、pigx-common-mail) - - 直接使用 pigx 现有的消息功能即可 - - _Requirements: 5.1, 5.4_ - -- [x] 8.2 迁移消息通知功能 - - 使用 pigx-common-websocket 进行实时推送(已在 pigx-workcase 中实现) - - 使用 pigx-common-sms 进行短信发送 - - 使用 pigx-common-mail 进行邮件发送 - - _Requirements: 5.1, 5.2_ - -- [x] 8.3 保留微信通知功能 - - pigx 已有微信公众号/小程序消息推送功能 - - 可通过 pigx-mp 模块实现微信消息推送 - - _Requirements: 5.3_ - -- [x] 9. 文件服务适配 -- [x] 9.1 替换文件上传逻辑 - - 已在 pigx-workcase-biz、pigx-dify-biz、pigx-bidding-biz 中添加 pigx-common-oss 依赖 - - 使用 pigx 的 OssTemplate 进行文件上传/下载 - - 文件访问 URL 通过 pigx 网关统一管理 - - _Requirements: 6.1, 6.2_ - -- [x] 10. 定时任务迁移 -- [x] 10.1 迁移定时任务到 XXL-Job - - 源项目无定时任务需要迁移 - - 如需添加定时任务,可使用 pigx-visual/xxl-job 进行配置 - - _Requirements: 7.1, 7.2, 7.3_ - -- [ ] 11. 前端页面迁移 -- [x] 11.1 迁移工单前端页面 - - ✅ 已创建 API 层 (workcase.ts, chat.ts) - - ✅ 已创建类型定义 (workcase.ts, chatRoom.ts, customer.ts, conversation.ts, wordCloud.ts) - - ✅ 已创建工单列表页面 (views/workcase/index.vue) - - ✅ 已创建工单指派组件 (components/workcase/WorkcaseAssign.vue) - - ✅ 已创建工单详情组件 (views/workcase/detail/WorkcaseDetail.vue) - - ✅ 已创建聊天室消息组件 (views/workcase/chatRoom/ChatMessage.vue) - - 适配 pigx 的 request 工具和响应格式 - - _Requirements: 2.5_ - -- [ ] 11.2 迁移 AI 前端页面 - - 将 AI 相关页面迁移到 pigx-ai-ui/src/views/dify 目录 - - 包括智能体管理、对话界面、知识库管理 - - 适配 pigx 的 request 工具和响应格式 - - _Requirements: 4.5_ - -- [ ] 11.3 迁移招标前端页面 - - 将 bidding 页面迁移到 pigx-ai-ui/src/views/urban/bidding - - 适配 pigx 的 request 工具 - - _Requirements: 1.4_ - -- [ ] 11.4 迁移平台管理前端页面 - - 将 platform 页面迁移到 pigx-ai-ui/src/views/urban/platform - - _Requirements: 3.4_ - -- [ ] 11.5 迁移共享组件 - - 将 shared 包组件迁移到 pigx-ai-ui/src/components/urban - - 更新导入路径使用 pigx 工具函数 - - _Requirements: 9.1, 9.2_ - -- [ ] 11.6 适配 API 调用 - - 创建 pigx-ai-ui/src/api/urban 目录 - - 创建 workcase.ts、bidding.ts、platform.ts API 定义 - - 创建 pigx-ai-ui/src/api/dify 目录 - - 创建 agent.ts、chat.ts、knowledge.ts API 定义 - - 使用 pigx 的 request 工具和 R 响应格式 - - 更新 API 路径为 pigx 网关规则 - - _Requirements: 1.5, 9.4_ - -- [ ] 12. 数据迁移执行 -- [ ] 12.1 执行数据库 DDL 脚本 - - 在 MySQL 中执行 database-migration-script.md 中的建表语句 - - 验证表结构正确性 - - _Requirements: 8.1, 8.2_ - -- [ ] 12.2 执行业务数据迁移 - - 运行数据迁移脚本 - - 验证数据完整性 - - _Requirements: 8.5_ - -- [ ] 13. 集成测试和验证 -- [ ] 13.1 后端编译验证 - - 确保所有迁移代码可以通过编译 - - 验证 Maven 依赖正确 - - _Requirements: 所有后端需求_ - -- [ ] 13.2 端到端功能测试 - - 测试所有迁移功能的完整流程 - - 验证权限控制正确性 - - _Requirements: 所有需求_ - -- [ ] 13.3 租户隔离验证 - - 验证多租户数据隔离正确性 - - _Requirements: 8.4, 11.6_ - -- [ ] 14. 最终验收 - - 确保所有功能正常运行 - - 确认权限控制有效 - - 验证多租户数据隔离 - -## Notes - -- 任务 1、2.1、2.2、2.3 的文档已完成,可直接使用 -- 重点关注权限适配和用户服务调用的正确性 -- 已创建三个独立模块:pigx-workcase、pigx-bidding、pigx-dify -- 每个模块包含 api 和 biz 子模块,遵循 pigx 架构规范 -- 实体类使用 pigx 标准格式:@TenantTable、Model、createBy/updateBy/delFlag -- 前端迁移需要适配 pigx-ai-ui 的技术栈(Vue3 + TypeScript + Element Plus) -- 数据库迁移脚本已在 database-migration-script.md 中准备好 - -## 已创建的文件 - -### pigx-ai-ui 前端已迁移文件 - -#### API 层 -- `src/api/workcase/workcase.ts` - 工单管理 API -- `src/api/workcase/chat.ts` - 聊天室、客服、视频会议 API - -#### 类型定义 -- `src/types/workcase/workcase.ts` - 工单相关类型 -- `src/types/workcase/chatRoom.ts` - 聊天室相关类型 -- `src/types/workcase/customer.ts` - 客服相关类型 -- `src/types/workcase/conversation.ts` - 对话相关类型 -- `src/types/workcase/wordCloud.ts` - 词云相关类型 - -#### 组件 -- `src/components/workcase/WorkcaseAssign.vue` - 工单指派组件 - -#### 页面 -- `src/views/workcase/index.vue` - 工单列表页面 -- `src/views/workcase/detail/WorkcaseDetail.vue` - 工单详情组件 -- `src/views/workcase/detail/WorkcaseDetail.scss` - 工单详情样式 -- `src/views/workcase/chatRoom/ChatMessage.vue` - 聊天室消息组件 - -#### 导出文件 -- `src/views/workcase/chatRoom/index.ts` -- `src/views/workcase/detail/index.ts` -- Entity: TbWorkcase, TbChatRoom, TbChatRoomMessage, TbChatRoomMember, TbWorkcaseProcess, TbVideoMeeting, TbCustomerService, TbWordCloud -- Mapper: TbWorkcaseMapper, TbChatRoomMapper, TbChatRoomMessageMapper, TbChatRoomMemberMapper, TbWorkcaseProcessMapper, TbVideoMeetingMapper, TbCustomerServiceMapper, TbWordCloudMapper -- Service: TbWorkcaseService, TbChatRoomService(含完整业务逻辑), TbChatRoomMessageService, TbChatRoomMemberService, TbWorkcaseProcessService, TbVideoMeetingService(含完整业务逻辑), TbCustomerServiceService, TbWordCloudService, JitsiTokenService -- Controller: TbWorkcaseController, TbChatRoomController(含成员/消息/客服分配API), TbVideoMeetingController(含创建/加入/开始/结束会议API), TbCustomerServiceController, TbWordCloudController, JitsiTokenController -- WebSocket: ChatRoomWebSocketMessage, ChatRoomNotificationMessage, ChatRoomMessageHandler, ChatRoomNotificationHandler, ChatRoomWebSocketService -- Config: JitsiProperties, application.yml (port: 7070, WebSocket: /ws/chat) -- Application: PigxWorkcaseApplication - -#### 聊天室功能已迁移的API: -- 聊天室CRUD:创建、查询、修改、关闭、删除 -- 成员管理:添加成员、移除成员、获取成员列表、获取未读数、更新已读状态 -- 消息管理:发送消息、分页查询消息、删除消息 -- 客服分配:自动分配客服到聊天室 -- 服务评分:提交聊天室服务评分 - -#### 视频会议功能已迁移的API: -- 会议CRUD:创建、查询、删除 -- 会议操作:获取会议信息、加入会议、开始会议、结束会议 -- 聊天室关联:获取聊天室当前活跃会议 - -#### 客服人员管理已迁移的API: -- 客服CRUD:新增、查询、修改、删除 -- 状态管理:更新客服在线状态 -- 可用客服:获取可接待客服列表 - -#### WebSocket 实时推送功能: -- 消息类型:chat_message(聊天消息)、chat_notification(通知消息) -- 通知类型:member_join(成员加入)、member_leave(成员离开)、typing(正在输入)、room_closed(聊天室关闭) -- ChatRoomWebSocketService:主动推送消息、广播到聊天室、发送给指定用户 - -#### Jitsi JWT Token 功能: -- 生成 JWT Token:支持主持人/普通成员角色 -- 验证 Token:检查 Token 有效性和过期时间 -- 构建 iframe URL:包含默认配置和自定义配置 -- 生成房间名:基于工单ID生成唯一房间名 -- 一键生成会议信息:房间名+Token+URL - -#### 词云管理功能: -- 词云CRUD:新增、查询、修改、删除 -- 词频累加:同一天、同一分类的相同词条自动累加词频 -- 分页查询:支持按词语、分类、日期筛选 - -### pigx-dify 模块 -- Entity: TbAgent, TbChat, TbChatMessage, TbKnowledge, TbKnowledgeFile, TbKnowledgeFileLog, PromptCard -- Mapper: TbAgentMapper, TbChatMapper, TbChatMessageMapper, TbKnowledgeMapper, TbKnowledgeFileMapper, TbKnowledgeFileLogMapper -- Service: TbAgentService, TbChatService, TbChatMessageService, TbKnowledgeService, TbKnowledgeFileService, TbKnowledgeFileLogService -- Controller: TbAgentController, TbChatController, TbKnowledgeController -- Client: DifyApiClient(完整的 Dify API 客户端) -- Client DTO: ChatRequest, ChatResponse, DatasetCreateRequest, DatasetCreateResponse, DatasetDetailResponse, DatasetListResponse, DatasetUpdateRequest, DocumentListResponse, DocumentStatusResponse, DocumentUploadRequest, DocumentUploadResponse, RetrievalModel, RetrievalRequest, RetrievalResponse, WorkflowRunRequest, WorkflowRunResponse, ConversationListResponse, ConversationVariablesResponse, MessageHistoryResponse, EmbeddingModelResponse, RerankModelResponse, DifyFileInfo -- Callback: StreamCallback(流式响应回调接口) -- Exception: DifyException -- Config: DifyProperties, application.yml (port: 7080, Dify API 配置) -- Application: PigxDifyApplication - -#### Dify API 客户端功能: -- 知识库管理:创建、查询、更新、删除知识库 -- 文档管理:上传文档、查询文档列表、查询文档状态、删除文档 -- 知识库检索:从知识库检索相关内容 -- 对话功能:流式对话、阻塞式对话、停止对话、消息反馈 -- 工作流:执行工作流(阻塞模式) -- 对话历史:获取消息历史、对话列表、对话变量 -- 模型管理:获取嵌入模型列表、Rerank模型列表 -- 通用HTTP:GET、POST、PATCH、DELETE 方法 - -### pigx-bidding 模块 -- Entity: TbBiddingProject, TbBiddingDocument, TbBiddingRequirement, TbBidResponse, TbProcessNode -- Mapper: TbBiddingProjectMapper, TbBiddingDocumentMapper, TbBiddingRequirementMapper, TbBidResponseMapper, TbProcessNodeMapper -- Service: TbBiddingProjectService, TbBiddingDocumentService, TbBiddingRequirementService, TbBidResponseService, TbProcessNodeService -- Controller: TbBiddingProjectController, TbBiddingDocumentController -- Application: PigxBiddingApplication -- Config: application.yml (port: 7090) diff --git a/.kiro/specs/urbanlifeline-to-pigx-migration/tenant-isolation-guide.md b/.kiro/specs/urbanlifeline-to-pigx-migration/tenant-isolation-guide.md deleted file mode 100644 index 87e225c9..00000000 --- a/.kiro/specs/urbanlifeline-to-pigx-migration/tenant-isolation-guide.md +++ /dev/null @@ -1,505 +0,0 @@ -# 租户字段添加指南 - -## 概述 -pigx 是一个多租户 SaaS 平台,所有业务数据需要通过租户ID(tenant_id)进行隔离。本指南详细说明如何为所有业务表添加租户字段并实现租户隔离。 - -## 1. 租户字段规范 - -### 1.1 字段定义 -```sql -`tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID' -``` - -### 1.2 字段特性 -- **类型**:BIGINT -- **非空**:NOT NULL -- **默认值**:1(默认租户) -- **索引**:建议添加索引以提高查询性能 -- **注释**:'租户ID' - -## 2. 为现有表添加租户字段 - -### 2.1 通用 SQL 模板 -```sql --- 添加租户字段 -ALTER TABLE `表名` -ADD COLUMN `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID' -AFTER `某个字段`; - --- 添加索引 -ALTER TABLE `表名` -ADD INDEX `idx_tenant_id` (`tenant_id`); - --- 如果需要复合索引(常用查询条件+租户) -ALTER TABLE `表名` -ADD INDEX `idx_status_tenant` (`status`, `tenant_id`); -``` - -### 2.2 批量添加脚本 -```sql --- 工单模块 -ALTER TABLE `tb_workcase` ADD COLUMN `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID'; -ALTER TABLE `tb_workcase` ADD INDEX `idx_tenant_id` (`tenant_id`); - -ALTER TABLE `tb_workcase_process` ADD COLUMN `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID'; -ALTER TABLE `tb_workcase_process` ADD INDEX `idx_tenant_id` (`tenant_id`); - -ALTER TABLE `tb_workcase_device` ADD COLUMN `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID'; -ALTER TABLE `tb_workcase_device` ADD INDEX `idx_tenant_id` (`tenant_id`); - -ALTER TABLE `tb_chat_room` ADD COLUMN `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID'; -ALTER TABLE `tb_chat_room` ADD INDEX `idx_tenant_id` (`tenant_id`); - -ALTER TABLE `tb_chat_room_member` ADD COLUMN `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID'; -ALTER TABLE `tb_chat_room_member` ADD INDEX `idx_tenant_id` (`tenant_id`); - -ALTER TABLE `tb_chat_room_message` ADD COLUMN `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID'; -ALTER TABLE `tb_chat_room_message` ADD INDEX `idx_tenant_id` (`tenant_id`); - --- AI模块 -ALTER TABLE `tb_agent` ADD COLUMN `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID'; -ALTER TABLE `tb_agent` ADD INDEX `idx_tenant_id` (`tenant_id`); - -ALTER TABLE `tb_chat` ADD COLUMN `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID'; -ALTER TABLE `tb_chat` ADD INDEX `idx_tenant_id` (`tenant_id`); - -ALTER TABLE `tb_chat_message` ADD COLUMN `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID'; -ALTER TABLE `tb_chat_message` ADD INDEX `idx_tenant_id` (`tenant_id`); - -ALTER TABLE `tb_knowledge` ADD COLUMN `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID'; -ALTER TABLE `tb_knowledge` ADD INDEX `idx_tenant_id` (`tenant_id`); - --- 招标模块 -ALTER TABLE `tb_bidding_project` ADD COLUMN `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID'; -ALTER TABLE `tb_bidding_project` ADD INDEX `idx_tenant_id` (`tenant_id`); - -ALTER TABLE `tb_bidding_document` ADD COLUMN `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID'; -ALTER TABLE `tb_bidding_document` ADD INDEX `idx_tenant_id` (`tenant_id`); - --- 消息模块 -ALTER TABLE `tb_message` ADD COLUMN `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID'; -ALTER TABLE `tb_message` ADD INDEX `idx_tenant_id` (`tenant_id`); - -ALTER TABLE `tb_message_range` ADD COLUMN `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID'; -ALTER TABLE `tb_message_range` ADD INDEX `idx_tenant_id` (`tenant_id`); - -ALTER TABLE `tb_message_receiver` ADD COLUMN `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID'; -ALTER TABLE `tb_message_receiver` ADD INDEX `idx_tenant_id` (`tenant_id`); -``` - -## 3. 实体类添加租户字段 - -### 3.1 实体类模板 -```java -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.FieldFill; - -@Data -@TableName("tb_workcase") -public class TbWorkcase extends Model { - - // ... 其他字段 ... - - /** - * 租户ID - */ - @TableField(fill = FieldFill.INSERT) - private Long tenantId; -} -``` - -### 3.2 MyBatis-Plus 自动填充配置 -```java -import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; -import com.pig4cloud.pigx.common.security.util.SecurityUtils; -import org.apache.ibatis.reflection.MetaObject; -import org.springframework.stereotype.Component; - -@Component -public class MybatisPlusMetaObjectHandler implements MetaObjectHandler { - - @Override - public void insertFill(MetaObject metaObject) { - // 获取当前用户的租户ID - PigxUser user = SecurityUtils.getUser(); - if (user != null) { - // 自动填充租户ID - this.strictInsertFill(metaObject, "tenantId", Long.class, user.getTenantId()); - } else { - // 默认租户ID - this.strictInsertFill(metaObject, "tenantId", Long.class, 1L); - } - - // 填充其他字段 - this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now()); - this.strictInsertFill(metaObject, "createBy", String.class, user != null ? user.getUsername() : "system"); - this.strictInsertFill(metaObject, "delFlag", String.class, "0"); - } - - @Override - public void updateFill(MetaObject metaObject) { - this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); - - PigxUser user = SecurityUtils.getUser(); - if (user != null) { - this.strictUpdateFill(metaObject, "updateBy", String.class, user.getUsername()); - } - } -} -``` - -## 4. 配置租户拦截器 - -### 4.1 MyBatis-Plus 租户拦截器配置 -```java -import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; -import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor; -import com.pig4cloud.pigx.common.security.util.SecurityUtils; -import net.sf.jsqlparser.expression.Expression; -import net.sf.jsqlparser.expression.LongValue; -import net.sf.jsqlparser.schema.Column; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import java.util.Arrays; -import java.util.List; - -@Configuration -public class MybatisPlusConfig { - - @Bean - public MybatisPlusInterceptor mybatisPlusInterceptor() { - MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); - - // 添加租户拦截器 - interceptor.addInnerInterceptor(tenantLineInnerInterceptor()); - - // 添加分页拦截器等其他拦截器 - // interceptor.addInnerInterceptor(new PaginationInnerInterceptor()); - - return interceptor; - } - - private TenantLineInnerInterceptor tenantLineInnerInterceptor() { - return new TenantLineInnerInterceptor(new TenantLineHandler() { - - @Override - public Expression getTenantId() { - // 从当前用户获取租户ID - PigxUser user = SecurityUtils.getUser(); - Long tenantId = user != null ? user.getTenantId() : 1L; - return new LongValue(tenantId); - } - - @Override - public String getTenantIdColumn() { - // 租户ID字段名 - return "tenant_id"; - } - - @Override - public boolean ignoreTable(String tableName) { - // 忽略不需要租户隔离的表 - List ignoreTables = Arrays.asList( - "sys_user", // 系统用户表 - "sys_role", // 角色表 - "sys_menu", // 菜单表 - "sys_dict", // 字典表 - "sys_log", // 日志表 - "temp_user_mapping" // 临时映射表 - ); - return ignoreTables.contains(tableName); - } - }); - } -} -``` - -## 5. Service 层实现租户隔离 - -### 5.1 查询时自动添加租户条件 -```java -@Service -public class WorkcaseServiceImpl extends ServiceImpl - implements WorkcaseService { - - @Override - public List listByStatus(String status) { - // 租户拦截器会自动添加 tenant_id 条件 - return this.list(new QueryWrapper() - .eq("status", status)); - // 实际SQL: SELECT * FROM tb_workcase WHERE status = ? AND tenant_id = ? - } - - @Override - public TbWorkcase getById(String id) { - // 自动添加租户条件,确保不会查询到其他租户的数据 - return super.getById(id); - // 实际SQL: SELECT * FROM tb_workcase WHERE id = ? AND tenant_id = ? - } -} -``` - -### 5.2 保存时自动设置租户ID -```java -@Service -public class WorkcaseServiceImpl extends ServiceImpl - implements WorkcaseService { - - @Override - @Transactional(rollbackFor = Exception.class) - public Boolean createWorkcase(TbWorkcase workcase) { - // 通过 MetaObjectHandler 自动填充 tenant_id - // 不需要手动设置 - return this.save(workcase); - } - - // 如果需要手动设置(不推荐) - @Override - public Boolean createWorkcaseManual(TbWorkcase workcase) { - PigxUser user = SecurityUtils.getUser(); - workcase.setTenantId(user.getTenantId()); - workcase.setCreateBy(user.getUsername()); - workcase.setCreateTime(LocalDateTime.now()); - return this.save(workcase); - } -} -``` - -## 6. 特殊场景处理 - -### 6.1 跨租户查询(管理员功能) -```java -@Service -public class AdminService { - - @Autowired - private WorkcaseMapper workcaseMapper; - - /** - * 管理员查询所有租户的数据 - * 需要特殊权限 - */ - @PreAuthorize("@pms.hasPermission('admin_cross_tenant')") - public List listAllTenants() { - // 使用 @InterceptorIgnore 注解忽略租户拦截 - return workcaseMapper.selectAllWithoutTenant(); - } -} - -// Mapper 接口 -@Mapper -public interface WorkcaseMapper extends BaseMapper { - - @InterceptorIgnore(tenantLine = "true") - @Select("SELECT * FROM tb_workcase") - List selectAllWithoutTenant(); -} -``` - -### 6.2 定时任务中的租户处理 -```java -@Component -public class WorkcaseScheduledTask { - - @Autowired - private WorkcaseService workcaseService; - - /** - * 定时任务:为每个租户执行任务 - */ - @Scheduled(cron = "0 0 2 * * ?") - public void processAllTenants() { - // 获取所有租户列表 - List tenantIds = getTenantIds(); - - for (Long tenantId : tenantIds) { - // 设置当前租户上下文 - TenantContextHolder.setTenantId(tenantId); - try { - // 执行业务逻辑 - processForTenant(tenantId); - } finally { - // 清除租户上下文 - TenantContextHolder.clear(); - } - } - } -} -``` - -### 6.3 异步任务中的租户传递 -```java -@Service -public class AsyncService { - - /** - * 异步任务需要传递租户ID - */ - @Async - public void processAsync(Long tenantId, String workcaseId) { - // 在异步线程中设置租户ID - TenantContextHolder.setTenantId(tenantId); - try { - // 执行业务逻辑 - doProcess(workcaseId); - } finally { - TenantContextHolder.clear(); - } - } - - // 调用异步方法前获取租户ID - public void callAsync(String workcaseId) { - PigxUser user = SecurityUtils.getUser(); - Long tenantId = user.getTenantId(); - processAsync(tenantId, workcaseId); - } -} -``` - -## 7. 数据迁移时的租户处理 - -### 7.1 历史数据添加租户ID -```sql --- 为历史数据设置默认租户ID -UPDATE tb_workcase SET tenant_id = 1 WHERE tenant_id IS NULL; -UPDATE tb_chat_room SET tenant_id = 1 WHERE tenant_id IS NULL; -UPDATE tb_agent SET tenant_id = 1 WHERE tenant_id IS NULL; -``` - -### 7.2 根据部门映射租户 -```sql --- 如果有部门与租户的映射关系 -UPDATE tb_workcase w -JOIN sys_dept d ON w.dept_id = d.dept_id -SET w.tenant_id = d.tenant_id -WHERE w.tenant_id = 1; -``` - -## 8. 测试验证 - -### 8.1 租户隔离测试 -```java -@SpringBootTest -@RunWith(SpringRunner.class) -public class TenantIsolationTest { - - @Autowired - private WorkcaseService workcaseService; - - @Test - @WithMockUser(authorities = {"workcase_view"}) - public void testTenantIsolation() { - // 模拟租户1的用户 - mockTenant(1L); - List tenant1List = workcaseService.list(); - - // 模拟租户2的用户 - mockTenant(2L); - List tenant2List = workcaseService.list(); - - // 验证数据隔离 - assertNotEquals(tenant1List, tenant2List); - } - - private void mockTenant(Long tenantId) { - PigxUser user = new PigxUser(); - user.setTenantId(tenantId); - // 设置到安全上下文 - SecurityContextHolder.getContext().setAuthentication( - new UsernamePasswordAuthenticationToken(user, null, user.getAuthorities()) - ); - } -} -``` - -### 8.2 SQL 验证 -```sql --- 验证所有表都有租户字段 -SELECT - TABLE_NAME, - COLUMN_NAME -FROM INFORMATION_SCHEMA.COLUMNS -WHERE - TABLE_SCHEMA = 'your_database' - AND COLUMN_NAME = 'tenant_id' -ORDER BY TABLE_NAME; - --- 验证数据分布 -SELECT - tenant_id, - COUNT(*) as record_count -FROM tb_workcase -GROUP BY tenant_id; - --- 验证索引 -SHOW INDEX FROM tb_workcase WHERE Column_name = 'tenant_id'; -``` - -## 9. 注意事项 - -### 9.1 性能考虑 -- 租户ID字段必须建立索引 -- 常用查询条件可以建立复合索引(如:status + tenant_id) -- 大表可以考虑按租户分区 - -### 9.2 安全考虑 -- 确保租户拦截器正确配置 -- 敏感操作需要记录日志 -- 跨租户操作需要特殊权限 - -### 9.3 开发规范 -- 不要在代码中硬编码租户ID -- 始终从 SecurityUtils 获取当前租户 -- 使用 MyBatis-Plus 的自动填充功能 - -### 9.4 数据备份 -- 迁移前备份原始数据 -- 记录租户ID映射关系 -- 保留回滚方案 - -## 10. 故障排查 - -### 10.1 常见问题 - -**问题1:查询不到数据** -- 检查租户ID是否正确 -- 验证租户拦截器是否生效 -- 查看生成的SQL是否包含tenant_id条件 - -**问题2:插入数据失败** -- 检查tenant_id字段是否为NOT NULL -- 验证自动填充是否配置 -- 确认当前用户有租户信息 - -**问题3:跨租户数据泄露** -- 检查是否所有查询都经过租户拦截 -- 验证忽略表配置是否正确 -- 审查自定义SQL是否包含租户条件 - -### 10.2 调试建议 -```yaml -# application.yml - 开启SQL日志 -logging: - level: - com.pig4cloud.pigx.*.mapper: DEBUG - com.baomidou.mybatisplus: DEBUG - -# 查看实际执行的SQL -mybatis-plus: - configuration: - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl -``` - -## 11. 迁移检查清单 - -- [ ] 所有业务表添加 tenant_id 字段 -- [ ] 所有实体类添加 tenantId 属性 -- [ ] 配置 MyBatis-Plus 自动填充 -- [ ] 配置租户拦截器 -- [ ] 配置忽略表列表 -- [ ] 历史数据设置默认租户ID -- [ ] 建立租户ID索引 -- [ ] 测试租户隔离功能 -- [ ] 测试跨租户查询权限 -- [ ] 文档更新和团队培训 \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 00000000..203429db --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,27 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Python: FastAPI Server", + "type": "python", + "request": "launch", + "program": "${workspaceFolder}/difyPlugin/main.py", + "console": "integratedTerminal", + "justMyCode": true, + "env": { + "PYTHONUNBUFFERED": "1" + }, + "cwd": "${workspaceFolder}/difyPlugin", + "args": [] + }, + { + "name": "Python: Debug Plugin", + "type": "python", + "request": "launch", + "program": "${workspaceFolder}/difyPlugin/app/plugins/pdf/__init__.py", + "console": "integratedTerminal", + "justMyCode": true, + "cwd": "${workspaceFolder}/difyPlugin" + } + ] +} \ No newline at end of file diff --git a/Makefile b/Makefile deleted file mode 100644 index 88cd4d1a..00000000 --- a/Makefile +++ /dev/null @@ -1,116 +0,0 @@ -# Urban Lifeline 开发环境快捷命令 - -.PHONY: help up down logs restart clean build ps - -# 默认目标 -.DEFAULT_GOAL := help - -# 帮助信息 -help: - @echo "=========================================" - @echo " 泰豪电源 Urban Lifeline 开发环境" - @echo "=========================================" - @echo "" - @echo "可用命令:" - @echo " make up - 启动所有服务" - @echo " make down - 停止所有服务" - @echo " make restart - 重启所有服务" - @echo " make logs - 查看所有服务日志" - @echo " make ps - 查看服务状态" - @echo " make build - 重新构建镜像" - @echo " make clean - 清理所有数据(慎用)" - @echo "" - @echo "单独服务操作:" - @echo " make logs-portal - 查看主应用日志" - @echo " make logs-gateway - 查看网关日志" - @echo " make restart-portal - 重启主应用" - @echo " make shell-portal - 进入主应用容器" - @echo "" - -# 启动所有服务 -up: - @echo "启动开发环境..." - docker-compose -f docker-compose.dev.yml up -d - @echo "服务启动中,请稍候..." - @sleep 5 - @echo "" - @echo "访问地址:" - @echo " 主应用: http://localhost" - @echo " 招投标: http://localhost/bidding" - @echo " 智能客服: http://localhost/customer-service" - @echo " Gateway: http://localhost/api" - @echo " Nacos: http://localhost/nacos" - @echo "" - -# 停止所有服务 -down: - @echo "停止所有服务..." - docker-compose -f docker-compose.dev.yml down - -# 查看日志 -logs: - docker-compose -f docker-compose.dev.yml logs -f - -# 重启所有服务 -restart: - @echo "重启所有服务..." - docker-compose -f docker-compose.dev.yml restart - -# 查看服务状态 -ps: - docker-compose -f docker-compose.dev.yml ps - -# 重新构建镜像 -build: - @echo "重新构建所有镜像..." - docker-compose -f docker-compose.dev.yml build --no-cache - -# 清理所有数据(危险操作) -clean: - @echo "警告:此操作将删除所有容器、数据卷和镜像!" - @read -p "确认继续吗?(y/N): " confirm && [ "$$confirm" = "y" ] || exit 1 - docker-compose -f docker-compose.dev.yml down -v - docker system prune -af - -# ==================== 单独服务操作 ==================== - -# Portal 日志 -logs-portal: - docker-compose -f docker-compose.dev.yml logs -f portal - -# Gateway 日志 -logs-gateway: - docker-compose -f docker-compose.dev.yml logs -f gateway - -# Nginx 日志 -logs-nginx: - docker-compose -f docker-compose.dev.yml logs -f nginx - -# 共享包日志 -logs-shared: - docker-compose -f docker-compose.dev.yml logs -f shared - -# 重启 Portal -restart-portal: - docker-compose -f docker-compose.dev.yml restart portal - -# 重启 Gateway -restart-gateway: - docker-compose -f docker-compose.dev.yml restart gateway - -# 进入 Portal 容器 -shell-portal: - docker-compose -f docker-compose.dev.yml exec portal sh - -# 进入 Gateway 容器 -shell-gateway: - docker-compose -f docker-compose.dev.yml exec gateway sh - -# 进入数据库 -db: - docker-compose -f docker-compose.dev.yml exec postgres psql -U postgres -d urban_lifeline - -# 初始化数据库 -db-init: - @echo "初始化数据库..." - docker-compose -f docker-compose.dev.yml exec postgres psql -U postgres -d urban_lifeline -f /docker-entrypoint-initdb.d/initAll.sql diff --git a/README.md b/README.md deleted file mode 100644 index f07ca5ee..00000000 --- a/README.md +++ /dev/null @@ -1,227 +0,0 @@ -# 泰豪电源 AI 数智化平台 - -城市生命线智能管理系统 - Urban Lifeline - -## 项目简介 - -基于 **"一个底座、多种智能体"** 架构的企业级 AI 数智化平台,包含四大核心业务模块: - -1. **资料管理智能化** - 智能文档管理与检索 -2. **招投标自动化** - 招投标全流程智能化 -3. **售后客服智能化** - AI 驱动的智能客服系统 -4. **企业内部知识协同** - 知识库管理与协作 - -## 技术架构 - -### 后端技术栈 - -- **Java 21** + **Spring Boot 3.5** -- **Spring Cloud Gateway** - API 网关 -- **Nacos** - 服务注册与配置中心 -- **PostgreSQL 16** - 主数据库 -- **Redis 7** - 缓存 -- **Dubbo 3.3** - RPC 框架 - -### 前端技术栈 - -- **Vue 3.5** (` -``` - -**工作原理**: -1. 共享包构建为 ES Module (`components.js`) -2. 部署到独立 HTTP 服务 (`http://localhost:5000`) -3. 通过 Nginx 统一代理 (`http://localhost/shared/`) -4. 浏览器通过 Import Maps 直接加载 - -## 快速开始 - -### 方式一:Docker Compose(推荐) - -```bash -# 1. 启动所有服务(自动构建) -make up - -# 2. 等待服务启动(约1-2分钟) -make ps - -# 3. 访问应用 -open http://localhost -``` - -### 方式二:本地开发 - -```bash -# 1. 安装依赖 -pnpm install - -# 2. 启动后端服务(需要 Java 21) -cd urbanLifelineServ -mvn spring-boot:run - -# 3. 启动前端服务 -cd urbanLifelineWeb -pnpm dev - -# 4. 访问 -open http://localhost:3000 -``` - -## 项目结构 - -``` -urbanLifeline/ -├── urbanLifelineServ/ # 后端服务(Spring Boot) -│ ├── gateway/ # API 网关 -│ ├── auth/ # 认证服务 -│ ├── system/ # 系统服务 -│ ├── file/ # 文件服务 -│ └── common/ # 公共模块 -│ -├── urbanLifelineWeb/ # 前端应用(Vue 3 Monorepo) -│ ├── packages/ -│ │ ├── shared/ # 共享组件库 -│ │ │ ├── components/ # 公共组件 -│ │ │ ├── utils/ # 工具函数 -│ │ │ ├── api/ # API 封装 -│ │ │ └── composables/ # 组合式函数 -│ │ ├── portal/ # 主应用 -│ │ ├── app-bidding/ # 招投标应用 -│ │ └── app-knowledge/ # 知识协同应用 -│ ├── pnpm-workspace.yaml -│ └── turbo.json -│ -├── docker-compose.dev.yml # Docker 开发环境 -├── Makefile # 快捷命令 -└── docs/ # 文档 - ├── 前端完整指南.md # ⭐ 前端全流程文档 - └── 数据库设计文档.md # ⭐ 数据库全流程文档 -``` - -## 访问地址 - -| 应用 | 地址 | 说明 | -|------|------|------| -| **主应用** | http://localhost/ | Portal 统一入口 | -| **招投标** | http://localhost/bidding | 招投标智能体 | -| **智能客服** | http://localhost/customer-service | 客服系统 | -| **共享组件** | http://localhost/shared/components.js | ES Module | -| **API 网关** | http://localhost/api | Gateway | -| **Nacos** | http://localhost/nacos | 注册中心 | - -## 常用命令 - -```bash -# Docker 环境 -make up # 启动所有服务 -make down # 停止所有服务 -make logs # 查看日志 -make ps # 查看服务状态 -make restart # 重启服务 -make clean # 清理所有数据 - -# 单独服务 -make logs-portal # 查看主应用日志 -make logs-gateway # 查看网关日志 -make restart-portal # 重启主应用 -make shell-portal # 进入容器 -make db # 连接数据库 - -# 前端开发 -pnpm dev # 启动所有应用 -pnpm build # 构建所有应用 -pnpm --filter portal dev # 启动单个应用 -pnpm --filter portal build # 构建单个应用 -``` - -## 文档索引 - -- **[前端完整指南](./docs/前端完整指南.md)** - ⭐ 架构、开发、部署全流程 -- **[数据库完整指南](./docs/数据库完整指南.md)** - ⭐ Schema、表结构、优化方案 - -## 核心亮点 - -### 1. 共享组件运行时加载 - -```html - - -``` - -```vue - -``` - -### 2. Monorepo + Turborepo - -- 统一依赖管理 -- 增量构建加速 -- 任务并行执行 -- 远程缓存 - -### 3. Docker 一键启动 - -- 所有服务容器化 -- Nginx 统一网关 -- 支持热更新(HMR) -- 数据持久化 - -### 4. TypeScript 全栈 - -- 类型安全 -- 智能提示 -- 重构友好 - -## 环境要求 - -### Docker 环境(推荐) -- Docker 20.10+ -- Docker Compose 2.0+ - -### 本地开发 -- Node.js 20+ -- pnpm 9+ -- Java 21+ -- Maven 3.9+ -- PostgreSQL 16+ - -## 开发规范 - -- **前端**:ESLint + Prettier + Husky -- **提交规范**:Conventional Commits -- **分支策略**:Git Flow -- **代码审查**:必须 Code Review - -## License - -MIT - ---- - -**Built with ❤️ by Taihao Team** \ No newline at end of file diff --git a/ai-management-dify b/ai-management-dify index f1b32d51..9fffb6e4 160000 --- a/ai-management-dify +++ b/ai-management-dify @@ -1 +1 @@ -Subproject commit f1b32d51cbce89e4876a9ba9defe638c0d0f3aea +Subproject commit 9fffb6e421cdc0d84a3a730c04a799456ad66776 diff --git a/ai-management-platform b/ai-management-platform index bfea48fa..199d8180 160000 --- a/ai-management-platform +++ b/ai-management-platform @@ -1 +1 @@ -Subproject commit bfea48fa67f304cd29a3e755dab0adc68acb1b8d +Subproject commit 199d8180a698c62d79c5c853302733050fe9c0fa diff --git a/build.sh b/build.sh deleted file mode 100644 index e69de29b..00000000 diff --git a/difyPlugin/.vscode/launch.json b/difyPlugin/.vscode/launch.json deleted file mode 100644 index 3ef0a12c..00000000 --- a/difyPlugin/.vscode/launch.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "version": "0.2.0", - "configurations": [ - { - "name": "DifyPlugin: FastAPI", - "type": "debugpy", - "request": "launch", - "program": "run.py", - "cwd": "${workspaceFolder}", - "python": "F:\\Environment\\conda\\envs\\difyPlugin\\python.exe", - "env": { - "PYTHONPATH": "${workspaceFolder}/difyPlugin" - }, - "jinja": true - } - ] -} \ No newline at end of file diff --git a/difyPlugin/.vscode/settings.json b/difyPlugin/.vscode/settings.json deleted file mode 100644 index e69de29b..00000000 diff --git a/difyPlugin/DifyCLI.md b/difyPlugin/DifyCLI.md new file mode 100644 index 00000000..8f8a4387 --- /dev/null +++ b/difyPlugin/DifyCLI.md @@ -0,0 +1,146 @@ +> ## Documentation Index +> Fetch the complete documentation index at: https://docs.dify.ai/llms.txt +> Use this file to discover all available pages before exploring further. + +# CLI + +> Dify 插件开发命令行界面 + + ⚠️ 本文档由 AI 自动翻译。如有任何不准确之处,请参考[英文原版](/en/develop-plugin/getting-started/cli)。 + +使用命令行界面(CLI)设置和打包你的 Dify 插件。CLI 提供了一种简化的方式来管理你的插件开发工作流,从初始化到打包。 + +本指南将指导你如何使用 CLI 进行 Dify 插件开发。 + +## 前提条件 + +在开始之前,请确保已安装以下内容: + +* Python 版本 ≥ 3.12 +* Dify CLI +* Homebrew(适用于 Mac 用户) + +## 创建 Dify 插件项目 + + + + ```bash theme={null} + brew tap langgenius/dify + brew install dify + ``` + + + + 从 [Dify GitHub 发布页面](https://github.com/langgenius/dify-plugin-daemon/releases) 获取最新的 Dify CLI + + ```bash theme={null} + # Download dify-plugin-darwin-arm64 + chmod +x dify-plugin-darwin-arm64 + mv dify-plugin-darwin-arm64 dify + sudo mv dify /usr/local/bin/ + ``` + + + +现在你已成功安装 Dify CLI。你可以通过运行以下命令来验证安装: + +```bash theme={null} +dify version +``` + +你可以使用以下命令创建一个新的 Dify 插件项目: + +```bash theme={null} +dify plugin init +``` + +根据提示填写必填字段: + +```bash theme={null} +Edit profile of the plugin +Plugin name (press Enter to next step): hello-world +Author (press Enter to next step): langgenius +Description (press Enter to next step): hello world example +Repository URL (Optional) (press Enter to next step): Repository URL (Optional) + Enable multilingual README: [✔] English is required by default + +Languages to generate: + English: [✔] (required) + → 简体中文 (Simplified Chinese): [✔] + 日本語 (Japanese): [✘] + Português (Portuguese - Brazil): [✘] + +Controls: + ↑/↓ Navigate • Space/Tab Toggle selection • Enter Next step +``` + +选择 `python` 并按 Enter 继续使用 Python 插件模板。 + +```bash theme={null} +Select the type of plugin you want to create, and press `Enter` to continue +Before starting, here's some basic knowledge about Plugin types in Dify: + +- Tool: Tool Providers like Google Search, Stable Diffusion, etc. Used to perform specific tasks. +- Model: Model Providers like OpenAI, Anthropic, etc. Use their models to enhance AI capabilities. +- Endpoint: Similar to Service API in Dify and Ingress in Kubernetes. Extend HTTP services as endpoints with custom logi +- Agent Strategy: Implement your own agent strategies like Function Calling, ReAct, ToT, CoT, etc. + +Based on the ability you want to extend, Plugins are divided into four types: Tool, Model, Extension, and Agent Strategy + +- Tool: A tool provider that can also implement endpoints. For example, building a Discord Bot requires both Sending and +- Model: Strictly for model providers, no other extensions allowed. +- Extension: For simple HTTP services that extend functionality. +- Agent Strategy: Implement custom agent logic with a focused approach. + +We've provided templates to help you get started. Choose one of the options below: +-> tool + agent-strategy + llm + text-embedding + rerank + tts + speech2text + moderation + extension +``` + +输入默认的 dify 版本,留空则使用最新版本: + +```bash theme={null} +Edit minimal Dify version requirement, leave it blank by default +Minimal Dify version (press Enter to next step): +``` + +现在你已准备就绪!CLI 将创建一个以你提供的插件名称命名的新目录,并为你的插件设置基本结构。 + +```bash theme={null} +cd hello-world +``` + +## 运行插件 + +确保你在 hello-world 目录中 + +```bash theme={null} +cp .env.example .env +``` + +编辑 `.env` 文件以设置插件的环境变量,例如 API 密钥或其他配置。你可以在 Dify 仪表板中找到这些变量。登录到你的 Dify 环境,点击右上角的"插件"图标,然后点击调试图标(或类似虫子的图标)。在弹出窗口中,复制"API Key"和"Host Address"。(请参考你本地对应的截图,其中显示了获取密钥和主机地址的界面) + +```bash theme={null} +INSTALL_METHOD=remote +REMOTE_INSTALL_HOST=debug-plugin.dify.dev +REMOTE_INSTALL_PORT=5003 +REMOTE_INSTALL_KEY=********-****-****-****-************ +``` + +现在你可以使用以下命令在本地运行你的插件: + +```bash theme={null} +pip install -r requirements.txt +python -m main +``` + +*** + +[编辑此页面](https://github.com/langgenius/dify-docs/edit/main/en/develop-plugin/getting-started/cli.mdx) | [报告问题](https://github.com/langgenius/dify-docs/issues/new?template=docs.yml) diff --git a/difyPlugin/pdf/.difyignore b/difyPlugin/pdf/.difyignore new file mode 100644 index 00000000..4685c5eb --- /dev/null +++ b/difyPlugin/pdf/.difyignore @@ -0,0 +1,184 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +.python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +Pipfile.lock + +# UV +# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +uv.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/latest/usage/project/#working-with-version-control +.pdm.toml +.pdm-python +.pdm-build/ + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +.idea/ + +# Vscode +.vscode/ + +# Git +.git/ +.gitignore +.github/ + +# Mac +.DS_Store + +# Windows +Thumbs.db + +# Dify plugin packages +# To prevent packaging repetitively +*.difypkg + diff --git a/docker/dify/volumes/plugin_daemon/cwd/langgenius/siliconflow-0.0.38@4795747d4fca05fee9daf34b1bcc110ffbbfcd9112f5f9e914f90b8b5dd549e5/.env.example b/difyPlugin/pdf/.env.example similarity index 53% rename from docker/dify/volumes/plugin_daemon/cwd/langgenius/siliconflow-0.0.38@4795747d4fca05fee9daf34b1bcc110ffbbfcd9112f5f9e914f90b8b5dd549e5/.env.example rename to difyPlugin/pdf/.env.example index dbb75b85..60358af8 100644 --- a/docker/dify/volumes/plugin_daemon/cwd/langgenius/siliconflow-0.0.38@4795747d4fca05fee9daf34b1bcc110ffbbfcd9112f5f9e914f90b8b5dd549e5/.env.example +++ b/difyPlugin/pdf/.env.example @@ -1,4 +1,3 @@ INSTALL_METHOD=remote -REMOTE_INSTALL_HOST=debug-plugin.dify.dev -REMOTE_INSTALL_PORT=5003 +REMOTE_INSTALL_URL=debug.dify.ai:5003 REMOTE_INSTALL_KEY=********-****-****-****-************ diff --git a/difyPlugin/pdf/.github/workflows/plugin-publish.yml b/difyPlugin/pdf/.github/workflows/plugin-publish.yml new file mode 100644 index 00000000..d24c4dd5 --- /dev/null +++ b/difyPlugin/pdf/.github/workflows/plugin-publish.yml @@ -0,0 +1,109 @@ +name: Plugin Publish Workflow + +on: + release: + types: [published] + +jobs: + publish: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Download CLI tool + run: | + mkdir -p $RUNNER_TEMP/bin + cd $RUNNER_TEMP/bin + + wget https://github.com/langgenius/dify-plugin-daemon/releases/download/0.0.6/dify-plugin-linux-amd64 + chmod +x dify-plugin-linux-amd64 + + echo "CLI tool location:" + pwd + ls -la dify-plugin-linux-amd64 + + - name: Get basic info from manifest + id: get_basic_info + run: | + PLUGIN_NAME=$(grep "^name:" manifest.yaml | cut -d' ' -f2) + echo "Plugin name: $PLUGIN_NAME" + echo "plugin_name=$PLUGIN_NAME" >> $GITHUB_OUTPUT + + VERSION=$(grep "^version:" manifest.yaml | cut -d' ' -f2) + echo "Plugin version: $VERSION" + echo "version=$VERSION" >> $GITHUB_OUTPUT + + # If the author's name is not your github username, you can change the author here + AUTHOR=$(grep "^author:" manifest.yaml | cut -d' ' -f2) + echo "Plugin author: $AUTHOR" + echo "author=$AUTHOR" >> $GITHUB_OUTPUT + + - name: Package Plugin + id: package + run: | + cd $GITHUB_WORKSPACE + PACKAGE_NAME="${{ steps.get_basic_info.outputs.plugin_name }}-${{ steps.get_basic_info.outputs.version }}.difypkg" + $RUNNER_TEMP/bin/dify-plugin-linux-amd64 plugin package . -o "$PACKAGE_NAME" + + echo "Package result:" + ls -la "$PACKAGE_NAME" + echo "package_name=$PACKAGE_NAME" >> $GITHUB_OUTPUT + + echo "\nFull file path:" + pwd + echo "\nDirectory structure:" + tree || ls -R + + - name: Checkout target repo + uses: actions/checkout@v3 + with: + repository: ${{steps.get_basic_info.outputs.author}}/dify-plugins + path: dify-plugins + token: ${{ secrets.PLUGIN_ACTION }} + fetch-depth: 1 + persist-credentials: true + + - name: Prepare and create PR + run: | + PACKAGE_NAME="${{ steps.get_basic_info.outputs.plugin_name }}-${{ steps.get_basic_info.outputs.version }}.difypkg" + mkdir -p dify-plugins/${{ steps.get_basic_info.outputs.author }}/${{ steps.get_basic_info.outputs.plugin_name }} + mv "$PACKAGE_NAME" dify-plugins/${{ steps.get_basic_info.outputs.author }}/${{ steps.get_basic_info.outputs.plugin_name }}/ + + cd dify-plugins + + git config user.name "GitHub Actions" + git config user.email "actions@github.com" + + git fetch origin main + git checkout main + git pull origin main + + BRANCH_NAME="bump-${{ steps.get_basic_info.outputs.plugin_name }}-plugin-${{ steps.get_basic_info.outputs.version }}" + git checkout -b "$BRANCH_NAME" + + git add . + git commit -m "bump ${{ steps.get_basic_info.outputs.plugin_name }} plugin to version ${{ steps.get_basic_info.outputs.version }}" + + git push -u origin "$BRANCH_NAME" --force + + git branch -a + echo "Waiting for branch to sync..." + sleep 10 # Wait 10 seconds for branch sync + + - name: Create PR via GitHub API + env: + # How to config the token: + # 1. Profile -> Settings -> Developer settings -> Personal access tokens -> Generate new token (with repo scope) -> Copy the token + # 2. Go to the target repository -> Settings -> Secrets and variables -> Actions -> New repository secret -> Add the token as PLUGIN_ACTION + GH_TOKEN: ${{ secrets.PLUGIN_ACTION }} + run: | + gh pr create \ + --repo langgenius/dify-plugins \ + --head "${{ steps.get_basic_info.outputs.author }}:${{ steps.get_basic_info.outputs.plugin_name }}-${{ steps.get_basic_info.outputs.version }}" \ + --base main \ + --title "bump ${{ steps.get_basic_info.outputs.plugin_name }} plugin to version ${{ steps.get_basic_info.outputs.version }}" \ + --body "bump ${{ steps.get_basic_info.outputs.plugin_name }} plugin package to version ${{ steps.get_basic_info.outputs.version }} + + Changes: + - Updated plugin package file" || echo "PR already exists or creation skipped." # Handle cases where PR already exists diff --git a/difyPlugin/pdf/.gitignore b/difyPlugin/pdf/.gitignore new file mode 100644 index 00000000..a16dc979 --- /dev/null +++ b/difyPlugin/pdf/.gitignore @@ -0,0 +1,176 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# UV +# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +#uv.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/latest/usage/project/#working-with-version-control +.pdm.toml +.pdm-python +.pdm-build/ + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +.idea/ + +# Vscode +.vscode/ + +# macOS +.DS_Store +.AppleDouble +.LSOverride \ No newline at end of file diff --git a/difyPlugin/pdf/GUIDE.md b/difyPlugin/pdf/GUIDE.md new file mode 100644 index 00000000..27d33f9d --- /dev/null +++ b/difyPlugin/pdf/GUIDE.md @@ -0,0 +1,137 @@ +# Dify Plugin Development Guide + +Welcome to Dify plugin development! This guide will help you get started quickly. + +## Plugin Types + +Dify plugins extend three main capabilities: + +| Type | Description | Example | +|------|-------------|---------| +| **Tool** | Perform specific tasks | Google Search, Stable Diffusion | +| **Model** | AI model integrations | OpenAI, Anthropic | +| **Endpoint** | HTTP services | Custom APIs, integrations | + +You can create: +- **Tool**: Tool provider with optional endpoints (e.g., Discord bot) +- **Model**: Model provider only +- **Extension**: Simple HTTP service + +## Setup + +### Requirements +- Python 3.11+ +- Dependencies: `pip install -r requirements.txt` + +## Development Process + +
+1. Manifest Structure + +Edit `manifest.yaml` to describe your plugin: + +```yaml +version: 0.1.0 # Required: Plugin version +type: plugin # Required: plugin or bundle +author: YourOrganization # Required: Organization name +label: # Required: Multi-language names + en_US: Plugin Name + zh_Hans: 插件名称 +created_at: 2023-01-01T00:00:00Z # Required: Creation time (RFC3339) +icon: assets/icon.png # Required: Icon path + +# Resources and permissions +resource: + memory: 268435456 # Max memory (bytes) + permission: + tool: + enabled: true # Tool permission + model: + enabled: true # Model permission + llm: true + text_embedding: false + # Other model types... + # Other permissions... + +# Extensions definition +plugins: + tools: + - tools/my_tool.yaml # Tool definition files + models: + - models/my_model.yaml # Model definition files + endpoints: + - endpoints/my_api.yaml # Endpoint definition files + +# Runtime metadata +meta: + version: 0.0.1 # Manifest format version + arch: + - amd64 + - arm64 + runner: + language: python + version: "3.12" + entrypoint: main +``` + +**Restrictions:** +- Cannot extend both tools and models +- Must have at least one extension +- Cannot extend both models and endpoints +- Limited to one supplier per extension type +
+ +
+2. Implementation Examples + +Study these examples to understand plugin implementation: + +- [OpenAI](https://github.com/langgenius/dify-plugin-sdks/tree/main/python/examples/openai) - Model provider +- [Google Search](https://github.com/langgenius/dify-plugin-sdks/tree/main/python/examples/google) - Tool provider +- [Neko](https://github.com/langgenius/dify-plugin-sdks/tree/main/python/examples/neko) - Endpoint group +
+ +
+3. Testing & Debugging + +1. Copy `.env.example` to `.env` and configure: + ``` + INSTALL_METHOD=remote + REMOTE_INSTALL_URL=debug.dify.ai:5003 + REMOTE_INSTALL_KEY=your-debug-key + ``` + +2. Run your plugin: + ```bash + python -m main + ``` + +3. Refresh your Dify instance to see the plugin (marked as "debugging") +
+ +
+4. Publishing + +#### Manual Packaging +```bash +dify-plugin plugin package ./YOUR_PLUGIN_DIR +``` + +#### Automated GitHub Workflow + +Configure GitHub Actions to automate PR creation: + +1. Create a Personal Access Token for your forked repository +2. Add it as `PLUGIN_ACTION` secret in your source repo +3. Create `.github/workflows/plugin-publish.yml` + +When you create a release, the action will: +- Package your plugin +- Create a PR to your fork + +[Detailed workflow documentation](https://docs.dify.ai/plugins/publish-plugins/plugin-auto-publish-pr) +
+ +## Privacy Policy + +If publishing to the Marketplace, provide a privacy policy in [PRIVACY.md](PRIVACY.md). \ No newline at end of file diff --git a/difyPlugin/pdf/PRIVACY.md b/difyPlugin/pdf/PRIVACY.md new file mode 100644 index 00000000..b088c73a --- /dev/null +++ b/difyPlugin/pdf/PRIVACY.md @@ -0,0 +1,3 @@ +## Privacy + +!!! Please fill in the privacy policy of the plugin. \ No newline at end of file diff --git a/difyPlugin/pdf/README.md b/difyPlugin/pdf/README.md new file mode 100644 index 00000000..0b767ecf --- /dev/null +++ b/difyPlugin/pdf/README.md @@ -0,0 +1,10 @@ +## pdf + +**Author:** yslg +**Version:** 0.0.1 +**Type:** tool + +### Description + + + diff --git a/difyPlugin/pdf/_assets/icon-dark.svg b/difyPlugin/pdf/_assets/icon-dark.svg new file mode 100644 index 00000000..75a6cc1b --- /dev/null +++ b/difyPlugin/pdf/_assets/icon-dark.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/difyPlugin/pdf/_assets/icon.svg b/difyPlugin/pdf/_assets/icon.svg new file mode 100644 index 00000000..1decb4e0 --- /dev/null +++ b/difyPlugin/pdf/_assets/icon.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/difyPlugin/pdf/main.py b/difyPlugin/pdf/main.py new file mode 100644 index 00000000..7e1a983d --- /dev/null +++ b/difyPlugin/pdf/main.py @@ -0,0 +1,6 @@ +from dify_plugin import Plugin, DifyPluginEnv + +plugin = Plugin(DifyPluginEnv(MAX_REQUEST_TIMEOUT=120)) + +if __name__ == '__main__': + plugin.run() diff --git a/difyPlugin/pdf/manifest.yaml b/difyPlugin/pdf/manifest.yaml new file mode 100644 index 00000000..fb7631bf --- /dev/null +++ b/difyPlugin/pdf/manifest.yaml @@ -0,0 +1,37 @@ +version: 0.0.1 +type: plugin +author: yslg +name: pdf +label: + en_US: pdf + ja_JP: pdf + zh_Hans: pdf + pt_BR: pdf +description: + en_US: pdfTools + ja_JP: pdfTools + zh_Hans: pdfTools + pt_BR: pdfTools +icon: icon.svg +icon_dark: icon-dark.svg +resource: + memory: 268435456 + permission: + tool: + enabled: true +plugins: + tools: + - provider/pdf.yaml +meta: + version: 0.0.1 + arch: + - amd64 + - arm64 + runner: + language: python + version: "3.12" + entrypoint: main + minimum_dify_version: null +created_at: 2026-03-02T13:21:03.2806864+08:00 +privacy: PRIVACY.md +verified: false diff --git a/difyPlugin/pdf/plugin.json b/difyPlugin/pdf/plugin.json new file mode 100644 index 00000000..a3513216 --- /dev/null +++ b/difyPlugin/pdf/plugin.json @@ -0,0 +1,64 @@ +{ + "name": "pdf-plugin", + "version": "1.0.0", + "description": "PDF plugin for analyzing table of contents and extracting text", + "author": "System", + "type": "tool", + "main": "main.py", + "requirements": "requirements.txt", + "icon": "https://neeko-copilot.bytedance.net/api/text2image?prompt=PDF%20document%20icon&size=square", + "settings": [ + { + "key": "debug", + "type": "boolean", + "default": false, + "description": "Enable debug mode" + } + ], + "functions": [ + { + "name": "analyze_toc", + "description": "Analyze PDF and find table of contents", + "parameters": { + "type": "object", + "properties": { + "file": { + "type": "file", + "description": "PDF file to analyze", + "fileTypes": ["pdf"] + } + }, + "required": ["file"] + } + }, + { + "name": "extract_text", + "description": "Extract text from specified page range", + "parameters": { + "type": "object", + "properties": { + "file": { + "type": "file", + "description": "PDF file to extract text from", + "fileTypes": ["pdf"] + }, + "page_range": { + "type": "object", + "properties": { + "start": { + "type": "integer", + "default": 0, + "description": "Start page index" + }, + "end": { + "type": "integer", + "description": "End page index" + } + } + } + }, + "required": ["file"] + } + } + ] +} \ No newline at end of file diff --git a/difyPlugin/pdf/provider/pdf.py b/difyPlugin/pdf/provider/pdf.py new file mode 100644 index 00000000..50e7069e --- /dev/null +++ b/difyPlugin/pdf/provider/pdf.py @@ -0,0 +1,53 @@ +from typing import Any + +from dify_plugin import ToolProvider +from dify_plugin.errors.tool import ToolProviderCredentialValidationError + + +class PdfProvider(ToolProvider): + + def _validate_credentials(self, credentials: dict[str, Any]) -> None: + try: + """ + IMPLEMENT YOUR VALIDATION HERE + """ + except Exception as e: + raise ToolProviderCredentialValidationError(str(e)) + + ######################################################################################### + # If OAuth is supported, uncomment the following functions. + # Warning: please make sure that the sdk version is 0.4.2 or higher. + ######################################################################################### + # def _oauth_get_authorization_url(self, redirect_uri: str, system_credentials: Mapping[str, Any]) -> str: + # """ + # Generate the authorization URL for pdf OAuth. + # """ + # try: + # """ + # IMPLEMENT YOUR AUTHORIZATION URL GENERATION HERE + # """ + # except Exception as e: + # raise ToolProviderOAuthError(str(e)) + # return "" + + # def _oauth_get_credentials( + # self, redirect_uri: str, system_credentials: Mapping[str, Any], request: Request + # ) -> Mapping[str, Any]: + # """ + # Exchange code for access_token. + # """ + # try: + # """ + # IMPLEMENT YOUR CREDENTIALS EXCHANGE HERE + # """ + # except Exception as e: + # raise ToolProviderOAuthError(str(e)) + # return dict() + + # def _oauth_refresh_credentials( + # self, redirect_uri: str, system_credentials: Mapping[str, Any], credentials: Mapping[str, Any] + # ) -> OAuthCredentials: + # """ + # Refresh the credentials + # """ + # return OAuthCredentials(credentials=credentials, expires_at=-1) diff --git a/difyPlugin/pdf/provider/pdf.yaml b/difyPlugin/pdf/provider/pdf.yaml new file mode 100644 index 00000000..83a55577 --- /dev/null +++ b/difyPlugin/pdf/provider/pdf.yaml @@ -0,0 +1,63 @@ +identity: + author: "yslg" + name: "pdf" + label: + en_US: "pdf" + zh_Hans: "pdf" + pt_BR: "pdf" + ja_JP: "pdf" + description: + en_US: "pdfTools" + zh_Hans: "pdfTools" + pt_BR: "pdfTools" + ja_JP: "pdfTools" + icon: "icon.svg" + +######################################################################################### +# If you want to support OAuth, you can uncomment the following code. +######################################################################################### +# oauth_schema: +# client_schema: +# - name: "client_id" +# type: "secret-input" +# required: true +# url: https://example.com/oauth/authorize +# placeholder: +# en_US: "Please input your Client ID" +# zh_Hans: "请输入你的 Client ID" +# pt_BR: "Insira seu Client ID" +# help: +# en_US: "Client ID is used to authenticate requests to the example.com API." +# zh_Hans: "Client ID 用于认证请求到 example.com API。" +# pt_BR: "Client ID é usado para autenticar solicitações à API do example.com." +# label: +# zh_Hans: "Client ID" +# en_US: "Client ID" +# - name: "client_secret" +# type: "secret-input" +# required: true +# url: https://example.com/oauth/authorize +# placeholder: +# en_US: "Please input your Client Secret" +# zh_Hans: "请输入你的 Client Secret" +# pt_BR: "Insira seu Client Secret" +# help: +# en_US: "Client Secret is used to authenticate requests to the example.com API." +# zh_Hans: "Client Secret 用于认证请求到 example.com API。" +# pt_BR: "Client Secret é usado para autenticar solicitações à API do example.com." +# label: +# zh_Hans: "Client Secret" +# en_US: "Client Secret" +# credentials_schema: +# - name: "access_token" +# type: "secret-input" +# label: +# zh_Hans: "Access Token" +# en_US: "Access Token" + +tools: + - tools/pdf.yaml + - tools/pdf_single_page.yaml +extra: + python: + source: provider/pdf.py diff --git a/difyPlugin/pdf/requirements.txt b/difyPlugin/pdf/requirements.txt new file mode 100644 index 00000000..e9cf72f9 --- /dev/null +++ b/difyPlugin/pdf/requirements.txt @@ -0,0 +1,2 @@ +dify_plugin>=0.4.0,<0.7.0 +PyPDF2>=3.0.1 diff --git a/difyPlugin/pdf/tools/pdf.py b/difyPlugin/pdf/tools/pdf.py new file mode 100644 index 00000000..fc226c04 --- /dev/null +++ b/difyPlugin/pdf/tools/pdf.py @@ -0,0 +1,61 @@ +import re +from collections.abc import Generator +from io import BytesIO +from typing import Any + +import PyPDF2 +from dify_plugin import Tool +from dify_plugin.entities.tool import ToolInvokeMessage + + +class PdfTool(Tool): + def _invoke(self, tool_parameters: dict[str, Any]) -> Generator[ToolInvokeMessage]: + file = tool_parameters.get("file") + if not file: + yield self.create_text_message("Error: file is required") + return + + # file.blob returns bytes + pdf_bytes = file.blob + reader = PyPDF2.PdfReader(BytesIO(pdf_bytes)) + num_pages = len(reader.pages) + + toc_start = None + toc_end = None + + toc_patterns = [ + r'目录', + r'Table of Contents', + r'Contents', + r'目次' + ] + + for page_num in range(num_pages): + page = reader.pages[page_num] + text = page.extract_text() or "" + + if any(re.search(pattern, text, re.IGNORECASE) for pattern in toc_patterns): + if toc_start is None: + toc_start = page_num + toc_end = page_num + elif toc_start is not None and toc_end is not None: + break + + if toc_start is None: + yield self.create_json_message({ + "start": None, + "end": None, + "pages": [] + }) + return + + toc_pages = [] + for page_num in range(toc_start, toc_end + 1): + page = reader.pages[page_num] + toc_pages.append(page.extract_text() or "") + + yield self.create_json_message({ + "start": toc_start, + "end": toc_end, + "pages": toc_pages + }) \ No newline at end of file diff --git a/difyPlugin/pdf/tools/pdf.yaml b/difyPlugin/pdf/tools/pdf.yaml new file mode 100644 index 00000000..fe18f6ab --- /dev/null +++ b/difyPlugin/pdf/tools/pdf.yaml @@ -0,0 +1,36 @@ +identity: + name: "pdf" + author: "yslg" + label: + en_US: "Extract TOC Pages and Content" + zh_Hans: "提取目录页和内容" + pt_BR: "Extrair páginas de sumário e conteúdo" + ja_JP: "目次ページと内容を抽出" +description: + human: + en_US: "Extract table-of-contents page range and all page text in that range" + zh_Hans: "提取目录页范围以及该范围内所有页文本" + pt_BR: "Extrair intervalo de páginas de sumário e todo o texto nesse intervalo" + ja_JP: "目次ページ範囲とその範囲内の全ページテキストを抽出" + llm: "Extract table-of-contents page range and all page text in that range" +parameters: + - name: file + type: file + required: true + label: + en_US: PDF File + zh_Hans: PDF 文件 + pt_BR: Arquivo PDF + ja_JP: PDFファイル + human_description: + en_US: "PDF file to process" + zh_Hans: "要处理的 PDF 文件" + pt_BR: "Arquivo PDF para processar" + ja_JP: "処理するPDFファイル" + llm_description: "PDF file to process, output contains start/end/pages" + form: llm + fileTypes: + - "pdf" +extra: + python: + source: tools/pdf.py \ No newline at end of file diff --git a/difyPlugin/pdf/tools/pdf_single_page.py b/difyPlugin/pdf/tools/pdf_single_page.py new file mode 100644 index 00000000..5ed41ecf --- /dev/null +++ b/difyPlugin/pdf/tools/pdf_single_page.py @@ -0,0 +1,36 @@ +from collections.abc import Generator +from io import BytesIO +from typing import Any + +import PyPDF2 +from dify_plugin import Tool +from dify_plugin.entities.tool import ToolInvokeMessage + + +class PdfSinglePageTool(Tool): + def _invoke(self, tool_parameters: dict[str, Any]) -> Generator[ToolInvokeMessage]: + file = tool_parameters.get("file") + page = tool_parameters.get("page", 0) + + if not file: + yield self.create_text_message("Error: file is required") + return + + pdf_bytes = file.blob + reader = PyPDF2.PdfReader(BytesIO(pdf_bytes)) + num_pages = len(reader.pages) + + page_index = int(page) + if page_index < 0: + page_index = 0 + if page_index >= num_pages: + page_index = num_pages - 1 + + selected_page = reader.pages[page_index] + text = selected_page.extract_text() or "" + + yield self.create_json_message({ + "start": page_index, + "end": page_index, + "pages": [text] + }) diff --git a/difyPlugin/pdf/tools/pdf_single_page.yaml b/difyPlugin/pdf/tools/pdf_single_page.yaml new file mode 100644 index 00000000..5fef64ef --- /dev/null +++ b/difyPlugin/pdf/tools/pdf_single_page.yaml @@ -0,0 +1,52 @@ +identity: + name: "pdf_single_page" + author: "yslg" + label: + en_US: "Extract Single-Page Text" + zh_Hans: "提取单页文字" + pt_BR: "Extrair texto de página única" + ja_JP: "単一ページのテキストを抽出" +description: + human: + en_US: "Extract text from one specified page" + zh_Hans: "提取指定单页文字" + pt_BR: "Extrair texto de uma página especificada" + ja_JP: "指定した1ページのテキストを抽出" + llm: "Extract text from one specified page" +parameters: + - name: file + type: file + required: true + label: + en_US: PDF File + zh_Hans: PDF 文件 + pt_BR: Arquivo PDF + ja_JP: PDFファイル + human_description: + en_US: "PDF file to process" + zh_Hans: "要处理的 PDF 文件" + pt_BR: "Arquivo PDF para processar" + ja_JP: "処理するPDFファイル" + llm_description: "PDF file to process" + form: llm + fileTypes: + - "pdf" + - name: page + type: number + required: true + label: + en_US: Page Index + zh_Hans: 页码 + pt_BR: Índice da Página + ja_JP: ページ番号 + human_description: + en_US: "Single page index to extract" + zh_Hans: "要提取的单页页码" + pt_BR: "Índice da página única para extrair" + ja_JP: "抽出対象のページ番号" + llm_description: "Single page index to extract" + form: llm + default: 0 +extra: + python: + source: tools/pdf_single_page.py diff --git a/difyPlugin/需求文档.md b/difyPlugin/需求文档.md new file mode 100644 index 00000000..1a83901e --- /dev/null +++ b/difyPlugin/需求文档.md @@ -0,0 +1,122 @@ +# Dify 插件服务需求文档 + +## 1. 项目概述 + +开发一个基于 FastAPI 框架的 Dify 插件服务,实现与 Dify 平台的集成,支持多种插件的部署和管理,提供各种功能扩展。 + +## 2. 技术栈 + +- **框架**:FastAPI +- **语言**:Python 3.9+ +- **依赖管理**:Poetry 或 Pip +- **部署方式**:Docker 容器化 + +## 3. 项目架构 + +### 3.1 架构设计 +- **插件管理系统**:统一管理多个 Dify 插件 +- **插件加载机制**:支持动态加载和热更新插件 +- **插件隔离**:每个插件运行在独立的环境中 +- **API 网关**:统一的 API 入口,路由到对应插件 + +### 3.2 目录结构 +``` +difyPlugin/ +├── main.py # 应用入口 +├── requirements.txt # 依赖管理 +├── .env # 环境配置 +├── app/ +│ ├── api/ # API 路由 +│ ├── core/ # 核心配置 +│ ├── plugins/ # 插件目录 +│ │ ├── plugin1/ # 插件1 +│ │ ├── plugin2/ # 插件2 +│ │ └── __init__.py # 插件加载器 +│ └── services/ # 公共服务 +└── tests/ # 测试目录 +``` + +### 3.3 插件规范 +- **插件结构**:每个插件包含独立的配置、逻辑和 API +- **插件接口**:统一的插件接口规范 +- **插件注册**:自动发现和注册插件 +- **插件生命周期**:支持插件的启动、停止和重启 + +## 4. 核心功能 + +### 4.1 基础功能 +- **健康检查**:提供服务状态检查接口 +- **版本管理**:支持插件版本控制 +- **认证机制**:实现与 Dify 的安全认证 +- **插件管理**:支持插件的注册、启动、停止和卸载 + +### 4.2 业务功能 +- **数据处理**:支持各种数据格式的转换和处理 +- **外部 API 集成**:对接第三方服务的 API +- **自定义逻辑**:支持用户自定义业务逻辑 +- **事件处理**:响应 Dify 平台的事件触发 + +## 5. 接口设计 + +### 5.1 主要接口 +- `GET /health`:健康检查 +- `GET /api/v1/plugins`:获取插件列表 +- `GET /api/v1/plugins/{plugin_id}`:获取插件详情 +- `POST /api/v1/plugins/{plugin_id}/execute`:执行插件功能 +- `GET /api/v1/plugins/{plugin_id}/metadata`:获取插件元数据 +- `POST /api/v1/plugins/{plugin_id}/start`:启动插件 +- `POST /api/v1/plugins/{plugin_id}/stop`:停止插件 + +### 5.2 请求/响应格式 +- **请求格式**:JSON +- **响应格式**:JSON,包含状态码和数据 + +## 6. 部署要求 + +- **环境变量**:支持通过环境变量配置服务参数 +- **日志管理**:集成结构化日志 +- **监控指标**:提供 Prometheus 指标接口 +- **错误处理**:完善的错误处理和异常捕获 +- **插件隔离**:支持插件的独立部署和隔离 + +## 7. 集成方式 + +- **Dify 插件注册**:按照 Dify 插件规范注册 +- **Webhook 配置**:支持 Dify 平台的 Webhook 回调 +- **事件订阅**:订阅 Dify 平台的事件 +- **插件发现**:自动发现和注册新插件 + +## 8. 开发计划 + +### 8.1 阶段一:项目初始化 +- 创建 FastAPI 项目结构 +- 配置依赖管理 +- 实现插件管理系统 + +### 8.2 阶段二:核心功能开发 +- 实现插件加载机制 +- 开发插件接口规范 +- 实现数据处理功能 +- 集成外部 API + +### 8.3 阶段三:测试与部署 +- 编写单元测试 +- 集成测试 +- 容器化部署 +- 插件示例开发 + +## 9. 技术要求 + +- **代码质量**:遵循 PEP 8 编码规范 +- **文档**:完善的 API 文档 +- **性能**:优化响应速度和资源占用 +- **安全**:实现安全的认证和授权机制 +- **可扩展性**:支持插件的动态添加和移除 + +## 10. 交付物 + +- **源代码**:完整的项目代码 +- **部署文档**:详细的部署步骤 +- **API 文档**:自动生成的 API 文档 +- **测试报告**:测试结果和覆盖率报告 +- **插件开发指南**:插件开发和注册指南 \ No newline at end of file diff --git a/docker/.env.example b/docker/.env.example deleted file mode 100644 index b1023c3b..00000000 --- a/docker/.env.example +++ /dev/null @@ -1,42 +0,0 @@ -# ================================================ -# Urban Lifeline - Docker 环境变量配置 -# 复制此文件为 .env 并修改配置 -# ================================================ - -# 镜像版本 -IMAGE_VERSION=latest - -# 数据存储根目录 -DATA_ROOT=./volumes -LOG_ROOT=./volumes/logs - -# ====================== MySQL 配置 ====================== -MYSQL_HOST=host.docker.internal -MYSQL_PORT=3306 -MYSQL_USER=root -MYSQL_PASSWORD=123456 - -# ====================== Nacos 配置 ====================== -NACOS_SERVER_ADDR=nacos:8848 -NACOS_NAMESPACE= -NACOS_AUTH_TOKEN=ZlRkR2ZxR3BvZ1F0a3JxY2V6RUx2cUh1Rkx6V1ZQbE9kUVd1R1VOcWFFS2t3dG5hS0E9PQ== - -# ====================== MinIO 配置 ====================== -MINIO_ROOT_USER=minioadmin -MINIO_ROOT_PASSWORD=minioadmin123 -MINIO_ENDPOINT=http://minio:9000 - -# ====================== Jitsi 配置 ====================== -JITSI_PUBLIC_URL=https://org.xyzh.yslg.jitsi -JVB_HOST_ADDRESS=192.168.0.253 -JWT_APP_ID=urbanLifeline -JWT_APP_SECRET=urbanLifeline-jitsi-secret-key-2025-production-safe-hs256 - -# ====================== Dify 配置 ====================== -DIFY_API_URL=http://dify-api:5001 - -# ====================== Spring 配置 ====================== -SPRING_PROFILES_ACTIVE=prod - -# ====================== API 配置 ====================== -API_BASE_URL=http://gateway:8080 diff --git a/docker/Makefile b/docker/Makefile deleted file mode 100644 index 9946cdf6..00000000 --- a/docker/Makefile +++ /dev/null @@ -1,318 +0,0 @@ -# ================================================ -# Urban Lifeline - Docker 构建管理 Makefile -# ================================================ -# 使用方法: -# make help - 显示帮助信息 -# make build-all - 构建所有镜像 -# make build-serv - 构建所有后端服务镜像 -# make build-gateway - 构建单个服务镜像 -# make save-all - 导出所有镜像 -# make up - 启动所有服务 -# make down - 停止所有服务 -# ================================================ - -# 项目根目录(docker 目录的上级) -PROJECT_ROOT := $(shell cd .. && pwd) -DOCKER_DIR := $(shell pwd) - -# 镜像版本 -IMAGE_VERSION ?= $(shell date +%Y%m%d_%H%M%S) -IMAGE_REGISTRY ?= - -# 服务列表 -SERV_SERVICES := gateway system auth file ai workcase -WEB_SERVICES := platform workcase-web - -# 服务端口映射 -PORT_gateway := 8080 -PORT_system := 8082 -PORT_auth := 8081 -PORT_file := 8084 -PORT_ai := 8090 -PORT_workcase := 8088 - -# 输出目录 -BUILD_OUTPUT := $(DOCKER_DIR)/output - -# 颜色定义 -COLOR_RESET := \033[0m -COLOR_GREEN := \033[0;32m -COLOR_YELLOW := \033[0;33m -COLOR_BLUE := \033[0;34m -COLOR_RED := \033[0;31m - -# ================================================ -# 帮助信息 -# ================================================ -.PHONY: help -help: - @echo "$(COLOR_BLUE)=============================================$(COLOR_RESET)" - @echo "$(COLOR_BLUE) Urban Lifeline Docker 构建管理$(COLOR_RESET)" - @echo "$(COLOR_BLUE)=============================================$(COLOR_RESET)" - @echo "" - @echo "$(COLOR_GREEN)构建命令:$(COLOR_RESET)" - @echo " make build-base - 构建基础镜像" - @echo " make build-all - 构建所有镜像" - @echo " make build-serv - 构建所有后端服务镜像" - @echo " make build-web - 构建前端镜像" - @echo " make build- - 构建单个服务 (gateway/system/auth/file/ai/workcase)" - @echo "" - @echo "$(COLOR_GREEN)编译命令:$(COLOR_RESET)" - @echo " make compile-serv - 编译所有后端服务" - @echo " make compile- - 编译单个后端服务" - @echo " make compile-web - 编译所有前端项目" - @echo "" - @echo "$(COLOR_GREEN)导出命令:$(COLOR_RESET)" - @echo " make save-all - 导出所有镜像到 tar 文件" - @echo " make save-serv - 导出所有后端镜像" - @echo " make save- - 导出单个服务镜像" - @echo "" - @echo "$(COLOR_GREEN)运行命令:$(COLOR_RESET)" - @echo " make up - 启动所有服务" - @echo " make up-infra - 启动基础设施 (nacos/minio/jitsi)" - @echo " make up-serv - 启动后端服务" - @echo " make up-web - 启动前端服务" - @echo " make down - 停止所有服务" - @echo " make logs - 查看所有日志" - @echo " make status - 查看服务状态" - @echo "" - @echo "$(COLOR_GREEN)清理命令:$(COLOR_RESET)" - @echo " make clean - 清理构建产物" - @echo " make clean-images - 清理 Docker 镜像" - @echo "" - @echo "$(COLOR_YELLOW)当前版本: $(IMAGE_VERSION)$(COLOR_RESET)" - @echo "" - -# ================================================ -# 初始化 -# ================================================ -.PHONY: init -init: - @mkdir -p $(BUILD_OUTPUT) - @mkdir -p $(DOCKER_DIR)/volumes/logs - -# ================================================ -# 编译后端服务 -# ================================================ -.PHONY: compile-serv -compile-serv: - @echo "$(COLOR_YELLOW)编译所有后端服务...$(COLOR_RESET)" - @cd $(PROJECT_ROOT)/urbanLifelineServ && mvn clean package -DskipTests - @echo "$(COLOR_GREEN)✓ 后端服务编译完成$(COLOR_RESET)" - -.PHONY: $(addprefix compile-,$(SERV_SERVICES)) -$(addprefix compile-,$(SERV_SERVICES)): compile-%: - @echo "$(COLOR_YELLOW)编译 $* 服务...$(COLOR_RESET)" - @cd $(PROJECT_ROOT)/urbanLifelineServ && mvn clean package -DskipTests -pl $* -am - @echo "$(COLOR_GREEN)✓ $* 服务编译完成$(COLOR_RESET)" - -# ================================================ -# 编译前端项目 -# ================================================ -.PHONY: compile-web -compile-web: - @echo "$(COLOR_YELLOW)编译前端项目...$(COLOR_RESET)" - @cd $(PROJECT_ROOT)/urbanLifelineWeb && pnpm install && pnpm run build:all - @echo "$(COLOR_GREEN)✓ 前端项目编译完成$(COLOR_RESET)" - -.PHONY: compile-platform -compile-platform: - @echo "$(COLOR_YELLOW)编译 platform 项目...$(COLOR_RESET)" - @cd $(PROJECT_ROOT)/urbanLifelineWeb/packages/platform && pnpm run build - @echo "$(COLOR_GREEN)✓ platform 编译完成$(COLOR_RESET)" - -.PHONY: compile-workcase -compile-workcase-web: - @echo "$(COLOR_YELLOW)编译 workcase 项目...$(COLOR_RESET)" - @cd $(PROJECT_ROOT)/urbanLifelineWeb/packages/workcase && pnpm run build - @echo "$(COLOR_GREEN)✓ workcase 编译完成$(COLOR_RESET)" - -# ================================================ -# 构建 Docker 镜像 -# ================================================ -.PHONY: build-base -build-base: - @echo "$(COLOR_YELLOW)构建基础镜像...$(COLOR_RESET)" - @cd $(PROJECT_ROOT) && docker build \ - -t urban-lifeline-base-serv:$(IMAGE_VERSION) \ - -t urban-lifeline-base-serv:latest \ - -f docker/urbanLifeline/serv/Dockerfile.base . - @echo "$(COLOR_GREEN)✓ 基础镜像构建完成$(COLOR_RESET)" - -.PHONY: build-all -build-all: build-base build-serv build-web - @echo "$(COLOR_GREEN)✓ 所有镜像构建完成$(COLOR_RESET)" - -.PHONY: build-serv -build-serv: $(addprefix build-,$(SERV_SERVICES)) - @echo "$(COLOR_GREEN)✓ 所有后端服务镜像构建完成$(COLOR_RESET)" - -# 构建单个后端服务镜像 -.PHONY: $(addprefix build-,$(SERV_SERVICES)) -$(addprefix build-,$(SERV_SERVICES)): build-%: - @echo "$(COLOR_YELLOW)构建 $* 服务镜像...$(COLOR_RESET)" - @if [ ! -f "$(PROJECT_ROOT)/urbanLifelineServ/$*/target/$*-*.jar" ] && \ - [ ! -f "$(PROJECT_ROOT)/urbanLifelineServ/$*/target/*.jar" ]; then \ - echo "$(COLOR_RED)✗ JAR 包不存在,请先执行 make compile-$*$(COLOR_RESET)"; \ - exit 1; \ - fi - @cd $(PROJECT_ROOT) && docker build \ - --build-arg SERVICE_NAME=$* \ - --build-arg SERVICE_PORT=$(PORT_$*) \ - -t urban-lifeline-$*:$(IMAGE_VERSION) \ - -t urban-lifeline-$*:latest \ - -f docker/urbanLifeline/serv/Dockerfile.template . - @echo "$(COLOR_GREEN)✓ $* 镜像构建完成: urban-lifeline-$*:$(IMAGE_VERSION)$(COLOR_RESET)" - -.PHONY: build-web -build-web: build-platform build-workcase-web - @echo "$(COLOR_GREEN)✓ 所有前端镜像构建完成$(COLOR_RESET)" - -.PHONY: build-platform -build-platform: - @echo "$(COLOR_YELLOW)构建 platform 镜像...$(COLOR_RESET)" - @if [ ! -d "$(PROJECT_ROOT)/urbanLifelineWeb/packages/platform/dist" ]; then \ - echo "$(COLOR_RED)✗ platform dist 不存在,请先执行 make compile-web$(COLOR_RESET)"; \ - exit 1; \ - fi - @cd $(PROJECT_ROOT) && docker build \ - --build-arg WEB_NAME=platform \ - -t urban-lifeline-platform:$(IMAGE_VERSION) \ - -t urban-lifeline-platform:latest \ - -f docker/urbanLifeline/web/Dockerfile . - @echo "$(COLOR_GREEN)✓ platform 镜像构建完成$(COLOR_RESET)" - -.PHONY: build-workcase-web -build-workcase-web: - @echo "$(COLOR_YELLOW)构建 workcase-web 镜像...$(COLOR_RESET)" - @if [ ! -d "$(PROJECT_ROOT)/urbanLifelineWeb/packages/workcase/dist" ]; then \ - echo "$(COLOR_RED)✗ workcase dist 不存在,请先执行 make compile-web$(COLOR_RESET)"; \ - exit 1; \ - fi - @cd $(PROJECT_ROOT) && docker build \ - --build-arg WEB_NAME=workcase \ - -t urban-lifeline-workcase-web:$(IMAGE_VERSION) \ - -t urban-lifeline-workcase-web:latest \ - -f docker/urbanLifeline/web/Dockerfile . - @echo "$(COLOR_GREEN)✓ workcase-web 镜像构建完成$(COLOR_RESET)" - -# ================================================ -# 导出镜像 -# ================================================ -.PHONY: save-all -save-all: init save-serv save-web - @echo "$(COLOR_GREEN)✓ 所有镜像导出完成$(COLOR_RESET)" - @echo "输出目录: $(BUILD_OUTPUT)" - @ls -lh $(BUILD_OUTPUT)/*.tar 2>/dev/null || true - -.PHONY: save-serv -save-serv: $(addprefix save-,$(SERV_SERVICES)) - @echo "$(COLOR_GREEN)✓ 所有后端镜像导出完成$(COLOR_RESET)" - -.PHONY: $(addprefix save-,$(SERV_SERVICES)) -$(addprefix save-,$(SERV_SERVICES)): save-%: init - @echo "$(COLOR_YELLOW)导出 $* 镜像...$(COLOR_RESET)" - @docker save -o $(BUILD_OUTPUT)/urban-lifeline-$*_$(IMAGE_VERSION).tar \ - urban-lifeline-$*:$(IMAGE_VERSION) - @echo "$(COLOR_GREEN)✓ $* 镜像已导出: $(BUILD_OUTPUT)/urban-lifeline-$*_$(IMAGE_VERSION).tar$(COLOR_RESET)" - -.PHONY: save-web -save-web: save-platform save-workcase-web - @echo "$(COLOR_GREEN)✓ 所有前端镜像导出完成$(COLOR_RESET)" - -.PHONY: save-platform -save-platform: init - @echo "$(COLOR_YELLOW)导出 platform 镜像...$(COLOR_RESET)" - @docker save -o $(BUILD_OUTPUT)/urban-lifeline-platform_$(IMAGE_VERSION).tar \ - urban-lifeline-platform:$(IMAGE_VERSION) - @echo "$(COLOR_GREEN)✓ platform 镜像已导出$(COLOR_RESET)" - -.PHONY: save-workcase-web -save-workcase-web: init - @echo "$(COLOR_YELLOW)导出 workcase-web 镜像...$(COLOR_RESET)" - @docker save -o $(BUILD_OUTPUT)/urban-lifeline-workcase-web_$(IMAGE_VERSION).tar \ - urban-lifeline-workcase-web:$(IMAGE_VERSION) - @echo "$(COLOR_GREEN)✓ workcase-web 镜像已导出$(COLOR_RESET)" - -.PHONY: save-base -save-base: init - @echo "$(COLOR_YELLOW)导出基础镜像...$(COLOR_RESET)" - @docker save -o $(BUILD_OUTPUT)/urban-lifeline-base-serv_$(IMAGE_VERSION).tar \ - urban-lifeline-base-serv:$(IMAGE_VERSION) - @echo "$(COLOR_GREEN)✓ 基础镜像已导出$(COLOR_RESET)" - -# ================================================ -# Docker Compose 操作 -# ================================================ -.PHONY: up -up: - @echo "$(COLOR_YELLOW)启动所有服务...$(COLOR_RESET)" - @docker compose --profile all up -d - @echo "$(COLOR_GREEN)✓ 所有服务已启动$(COLOR_RESET)" - -.PHONY: up-infra -up-infra: - @echo "$(COLOR_YELLOW)启动基础设施...$(COLOR_RESET)" - @docker compose --profile infra up -d - @echo "$(COLOR_GREEN)✓ 基础设施已启动$(COLOR_RESET)" - -.PHONY: up-serv -up-serv: - @echo "$(COLOR_YELLOW)启动后端服务...$(COLOR_RESET)" - @docker compose --profile serv up -d - @echo "$(COLOR_GREEN)✓ 后端服务已启动$(COLOR_RESET)" - -.PHONY: up-web -up-web: - @echo "$(COLOR_YELLOW)前端已集成到 Nginx (infra),请使用 make up-infra$(COLOR_RESET)" - -.PHONY: down -down: - @echo "$(COLOR_YELLOW)停止所有服务...$(COLOR_RESET)" - @docker compose --profile all down - @echo "$(COLOR_GREEN)✓ 所有服务已停止$(COLOR_RESET)" - -.PHONY: restart -restart: down up - @echo "$(COLOR_GREEN)✓ 所有服务已重启$(COLOR_RESET)" - -.PHONY: logs -logs: - @docker compose logs -f - -.PHONY: status -status: - @echo "$(COLOR_BLUE)=============================================$(COLOR_RESET)" - @echo "$(COLOR_BLUE) 服务运行状态$(COLOR_RESET)" - @echo "$(COLOR_BLUE)=============================================$(COLOR_RESET)" - @docker compose ps - -# ================================================ -# 清理 -# ================================================ -.PHONY: clean -clean: - @echo "$(COLOR_YELLOW)清理构建产物...$(COLOR_RESET)" - @rm -rf $(BUILD_OUTPUT) - @echo "$(COLOR_GREEN)✓ 清理完成$(COLOR_RESET)" - -.PHONY: clean-images -clean-images: - @echo "$(COLOR_YELLOW)清理 Docker 镜像...$(COLOR_RESET)" - @docker images | grep "urban-lifeline" | awk '{print $$3}' | xargs -r docker rmi -f - @echo "$(COLOR_GREEN)✓ 镜像清理完成$(COLOR_RESET)" - -# ================================================ -# 快捷命令 -# ================================================ -.PHONY: full-build -full-build: compile-serv compile-web build-all - @echo "$(COLOR_GREEN)✓ 完整构建完成$(COLOR_RESET)" - -.PHONY: full-deploy -full-deploy: full-build save-all - @echo "$(COLOR_GREEN)✓ 完整部署包准备完成$(COLOR_RESET)" - @echo "输出目录: $(BUILD_OUTPUT)" - -# 默认目标 -.DEFAULT_GOAL := help diff --git a/docker/README.md b/docker/README.md deleted file mode 100644 index 28dcd31f..00000000 --- a/docker/README.md +++ /dev/null @@ -1,188 +0,0 @@ -# Urban Lifeline Docker 部署指南 - -## 目录结构 - -``` -docker/ -├── docker-compose.yml # 总控 compose 文件 -├── Makefile # 构建管理脚本 -├── .env.example # 环境变量模板 -├── README.md # 本文档 -│ -├── infra/ # Level 1: 基础设施 -│ └── docker-compose.yml # Nacos, MinIO, Jitsi Meet -│ -├── urbanLifeline/ -│ ├── serv/ # Level 2: 后端服务 -│ │ ├── docker-compose.yml -│ │ ├── Dockerfile.base # 基础镜像 -│ │ ├── Dockerfile.template # 服务镜像模板 -│ │ └── start.sh # 启动脚本 -│ │ -│ └── web/ # Level 3: 前端服务 -│ ├── docker-compose.yml -│ ├── Dockerfile -│ └── nginx/ # Nginx 配置 -│ ├── nginx.conf -│ └── conf.d/ -│ -├── dify/ # Dify AI 平台(独立管理) -│ └── docker-compose.yaml -│ -├── volumes/ # 数据卷目录 -│ ├── nacos/ -│ ├── minio/ -│ ├── jitsi/ -│ └── logs/ -│ -└── output/ # 镜像导出目录 -``` - -## 快速开始 - -### 1. 准备环境 - -```bash -# 复制环境变量配置 -cp .env.example .env - -# 编辑配置(根据实际环境修改) -vim .env -``` - -### 2. 编译项目 - -```bash -# 编译所有后端服务 -make compile-serv - -# 编译所有前端项目 -make compile-web - -# 或者一次性编译所有 -make full-build -``` - -### 3. 构建镜像 - -```bash -# 构建基础镜像(首次需要) -make build-base - -# 构建所有镜像 -make build-all - -# 或者单独构建 -make build-gateway -make build-system -make build-web -``` - -### 4. 启动服务 - -```bash -# 启动所有服务 -make up - -# 或者分层启动 -make up-infra # 先启动基础设施 -make up-serv # 再启动后端服务 -make up-web # 最后启动前端 -``` - -### 5. 查看状态 - -```bash -# 查看服务状态 -make status - -# 查看日志 -make logs - -# 查看特定服务日志 -docker compose logs -f gateway -``` - -## 服务层级 - -### Level 1: 基础设施 (infra) -- **Nginx**: 反向代理 + 前端静态资源 (80/443) -- **Nacos**: 服务注册与配置中心 (8848) -- **MinIO**: 对象存储服务 (9000/9001) -- **Jitsi Meet**: 视频会议服务 (8280) - -### Level 2: 后端服务 (serv) -启动顺序: gateway → system → file → auth → ai → workcase - -| 服务 | 端口 | 说明 | -|------|------|------| -| gateway | 8080 | API 网关 | -| system | 8082 | 系统服务 | -| file | 8084 | 文件服务 | -| auth | 8081 | 认证服务 | -| ai | 8090 | AI 服务 | -| workcase | 8088 | 工单服务 | - -### Level 3: 前端应用 (web) -前端静态资源已打包到 Nginx 镜像中,由 infra 层的 Nginx 服务提供: -- /platform - 管理平台 -- /workcase - 工单系统 - -## 常用命令 - -```bash -# 构建 -make build-all # 构建所有镜像 -make build-gateway # 构建单个服务 - -# 运行 -make up # 启动所有 -make up-infra # 只启动基础设施 -make down # 停止所有 - -# 导出 -make save-all # 导出所有镜像 -make save-gateway # 导出单个镜像 - -# 清理 -make clean # 清理构建产物 -make clean-images # 清理 Docker 镜像 -``` - -## 单独管理子服务 - -每个子目录都有独立的 docker-compose.yml,可以单独管理: - -```bash -# 只管理基础设施 -cd infra -docker compose up -d nacos -docker compose logs -f nacos - -# 只管理后端服务 -cd urbanLifeline/serv -docker compose up -d gateway -docker compose restart system -``` - -## 镜像导出与部署 - -```bash -# 导出所有镜像 -make save-all - -# 镜像文件在 output/ 目录 -ls -la output/ - -# 在目标服务器加载镜像 -docker load -i urban-lifeline-gateway_20251228_120000.tar -docker load -i urban-lifeline-web_20251228_120000.tar -``` - -## 注意事项 - -1. **首次部署**需要先构建基础镜像: `make build-base` -2. **MySQL** 需要在宿主机或单独容器中运行,配置 `MYSQL_HOST` -3. **Dify** 有独立的 docker-compose,在 `dify/` 目录单独管理 -4. 修改 `.env` 后需要重启服务才能生效 -5. 生产环境建议配置 SSL 证书 diff --git a/docker/build.sh b/docker/build.sh deleted file mode 100644 index d9aa8c9f..00000000 --- a/docker/build.sh +++ /dev/null @@ -1,381 +0,0 @@ -#!/bin/bash - -############################################## -# Urban Lifeline - 构建和打包脚本 -# -# 功能: -# 1. 编译后端/前端项目 -# 2. 构建 Docker 镜像 -# 3. 导出镜像到 tar 文件 -# -# 使用方法: -# ./build.sh [target] [options] -# -# 目标(target): -# base - 构建基础镜像 -# serv - 构建所有后端服务镜像 -# web - 构建前端镜像 -# all - 构建所有镜像(默认) -# gateway - 构建单个后端服务 -# system/auth/file/ai/workcase - 同上 -# -# 选项(options): -# compile - 先编译代码再构建镜像 -# save - 构建后导出镜像到 tar 文件 -# save=VERSION - 导出指定版本的镜像 -# -# 示例: -# ./build.sh all compile save # 编译+构建+导出所有 -# ./build.sh gateway compile # 编译+构建 gateway -# ./build.sh serv save # 构建+导出所有后端 -# ./build.sh web compile save # 编译+构建+导出前端 -############################################## - -set -e - -# 颜色定义 -RED='\033[0;31m' -GREEN='\033[0;32m' -YELLOW='\033[1;33m' -BLUE='\033[0;34m' -NC='\033[0m' - -log_info() { echo -e "${GREEN}[INFO]${NC} $1"; } -log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; } -log_error() { echo -e "${RED}[ERROR]${NC} $1"; } -log_step() { echo -e "${BLUE}[STEP]${NC} $1"; } - -# 项目路径 -SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd) -PROJECT_ROOT=$(cd "${SCRIPT_DIR}/.." && pwd) -DOCKER_DIR="${SCRIPT_DIR}" -BUILD_OUTPUT="${DOCKER_DIR}/output" -IMAGE_VERSION=$(date +%Y%m%d_%H%M%S) - -# 服务列表 -SERV_SERVICES="gateway system auth file ai workcase" - -# 服务端口映射 -declare -A SERVICE_PORTS=( - ["gateway"]=8080 - ["system"]=8082 - ["auth"]=8081 - ["file"]=8084 - ["ai"]=8090 - ["workcase"]=8088 -) - -# 解析参数 -BUILD_TARGET="${1:-all}" -shift || true - -DO_COMPILE=false -DO_SAVE=false -SAVE_VERSION="" - -for arg in "$@"; do - case $arg in - compile) - DO_COMPILE=true - ;; - save) - DO_SAVE=true - ;; - save=*) - DO_SAVE=true - SAVE_VERSION="${arg#save=}" - ;; - esac -done - -# 确定保存版本 -if [ "${DO_SAVE}" = true ] && [ -z "${SAVE_VERSION}" ]; then - SAVE_VERSION="${IMAGE_VERSION}" -fi - -echo "==========================================" -echo "Urban Lifeline - 构建脚本" -echo "==========================================" -log_info "构建目标: ${BUILD_TARGET}" -log_info "构建版本: ${IMAGE_VERSION}" -log_info "编译代码: ${DO_COMPILE}" -log_info "保存镜像: ${DO_SAVE}" -[ "${DO_SAVE}" = true ] && log_info "保存版本: ${SAVE_VERSION}" -echo "==========================================" -echo "" - -mkdir -p "${BUILD_OUTPUT}" - -# ================================================ -# 编译函数 -# ================================================ - -compile_serv_all() { - log_step "编译所有后端服务" - cd "${PROJECT_ROOT}/urbanLifelineServ" - mvn clean package -DskipTests - log_info "✅ 后端服务编译完成" -} - -compile_serv_single() { - local service=$1 - log_step "编译 ${service} 服务" - cd "${PROJECT_ROOT}/urbanLifelineServ" - mvn clean package -DskipTests -pl ${service} -am - log_info "✅ ${service} 服务编译完成" -} - -compile_web() { - log_step "编译前端项目" - cd "${PROJECT_ROOT}/urbanLifelineWeb" - - # 检查 pnpm - if command -v pnpm &> /dev/null; then - pnpm install - pnpm run build:all 2>/dev/null || { - # 如果没有 build:all 脚本,分别构建 - log_info "分别构建各前端项目..." - cd packages/shared && pnpm run build && cd ../.. - cd packages/platform && pnpm run build && cd ../.. - cd packages/workcase && pnpm run build && cd ../.. - } - else - npm install - npm run build:all 2>/dev/null || { - cd packages/shared && npm run build && cd ../.. - cd packages/platform && npm run build && cd ../.. - cd packages/workcase && npm run build && cd ../.. - } - fi - log_info "✅ 前端项目编译完成" -} - -# ================================================ -# 构建函数 -# ================================================ - -build_base() { - log_step "构建基础镜像" - cd "${PROJECT_ROOT}" - docker build \ - -t urban-lifeline-base-serv:${IMAGE_VERSION} \ - -t urban-lifeline-base-serv:latest \ - -f docker/urbanLifeline/serv/Dockerfile.base . - log_info "✅ 基础镜像构建完成: urban-lifeline-base-serv:${IMAGE_VERSION}" -} - -build_serv_single() { - local service=$1 - local port=${SERVICE_PORTS[$service]} - - log_step "构建 ${service} 服务镜像" - - # 检查 JAR 包 - local jar_file=$(find "${PROJECT_ROOT}/urbanLifelineServ/${service}/target" -name "*.jar" -type f 2>/dev/null | head -1) - if [ -z "$jar_file" ]; then - log_error "JAR 包不存在,请先编译: ./build.sh ${service} compile" - exit 1 - fi - - cd "${PROJECT_ROOT}" - docker build \ - --build-arg SERVICE_NAME=${service} \ - --build-arg SERVICE_PORT=${port} \ - -t urban-lifeline-${service}:${IMAGE_VERSION} \ - -t urban-lifeline-${service}:latest \ - -f docker/urbanLifeline/serv/Dockerfile.template . - - log_info "✅ ${service} 镜像构建完成: urban-lifeline-${service}:${IMAGE_VERSION}" -} - -build_serv_all() { - for service in ${SERV_SERVICES}; do - build_serv_single ${service} - done - log_info "✅ 所有后端服务镜像构建完成" -} - -build_web() { - build_platform - build_workcase_web - log_info "✅ 所有前端镜像构建完成" -} - -build_platform() { - log_step "构建 platform 镜像" - - if [ ! -d "${PROJECT_ROOT}/urbanLifelineWeb/packages/platform/dist" ]; then - log_error "platform dist 不存在,请先编译: ./build.sh platform compile" - exit 1 - fi - - cd "${PROJECT_ROOT}" - docker build \ - --build-arg WEB_NAME=platform \ - -t urban-lifeline-platform:${IMAGE_VERSION} \ - -t urban-lifeline-platform:latest \ - -f docker/urbanLifeline/web/Dockerfile . - - log_info "✅ platform 镜像构建完成: urban-lifeline-platform:${IMAGE_VERSION}" -} - -build_workcase_web() { - log_step "构建 workcase-web 镜像" - - if [ ! -d "${PROJECT_ROOT}/urbanLifelineWeb/packages/workcase/dist" ]; then - log_error "workcase dist 不存在,请先编译: ./build.sh workcase-web compile" - exit 1 - fi - - cd "${PROJECT_ROOT}" - docker build \ - --build-arg WEB_NAME=workcase \ - -t urban-lifeline-workcase-web:${IMAGE_VERSION} \ - -t urban-lifeline-workcase-web:latest \ - -f docker/urbanLifeline/web/Dockerfile . - - log_info "✅ workcase-web 镜像构建完成: urban-lifeline-workcase-web:${IMAGE_VERSION}" -} - -# ================================================ -# 导出函数 -# ================================================ - -save_image() { - local image_name=$1 - local version=${SAVE_VERSION} - local output_file="${BUILD_OUTPUT}/${image_name}_${version}.tar" - - log_info "导出镜像: ${image_name}:${version}" - - if ! docker images | grep -q "${image_name}.*${version}"; then - log_error "镜像不存在: ${image_name}:${version}" - return 1 - fi - - docker save -o "${output_file}" ${image_name}:${version} - local size=$(du -h "${output_file}" | cut -f1) - log_info "✅ 镜像已导出: ${output_file} (${size})" -} - -save_serv_all() { - for service in ${SERV_SERVICES}; do - save_image "urban-lifeline-${service}" - done -} - -# ================================================ -# 主流程 -# ================================================ - -main() { - # 编译 - if [ "${DO_COMPILE}" = true ]; then - case ${BUILD_TARGET} in - base) - # 基础镜像不需要编译 - ;; - serv) - compile_serv_all - ;; - web) - compile_web - ;; - all) - compile_serv_all - compile_web - ;; - gateway|system|auth|file|ai|workcase) - compile_serv_single ${BUILD_TARGET} - ;; - *) - log_error "未知目标: ${BUILD_TARGET}" - exit 1 - ;; - esac - fi - - # 构建镜像 - case ${BUILD_TARGET} in - base) - build_base - ;; - serv) - build_serv_all - ;; - web) - build_web - ;; - platform) - build_platform - ;; - workcase-web) - build_workcase_web - ;; - all) - # 检查基础镜像 - if ! docker images | grep -q "urban-lifeline-base-serv.*latest"; then - log_warn "基础镜像不存在,先构建基础镜像" - build_base - fi - build_serv_all - build_web - ;; - gateway|system|auth|file|ai|workcase) - build_serv_single ${BUILD_TARGET} - ;; - *) - log_error "未知目标: ${BUILD_TARGET}" - echo "" - echo "可用目标: base, serv, web, all, gateway, system, auth, file, ai, workcase, platform, workcase-web" - exit 1 - ;; - esac - - # 导出镜像 - if [ "${DO_SAVE}" = true ]; then - case ${BUILD_TARGET} in - base) - save_image "urban-lifeline-base-serv" - ;; - serv) - save_serv_all - ;; - web) - save_image "urban-lifeline-platform" - save_image "urban-lifeline-workcase-web" - ;; - platform) - save_image "urban-lifeline-platform" - ;; - workcase-web) - save_image "urban-lifeline-workcase-web" - ;; - all) - save_image "urban-lifeline-base-serv" - save_serv_all - save_image "urban-lifeline-platform" - save_image "urban-lifeline-workcase-web" - ;; - gateway|system|auth|file|ai|workcase) - save_image "urban-lifeline-${BUILD_TARGET}" - ;; - esac - - echo "" - log_info "导出文件列表:" - ls -lh "${BUILD_OUTPUT}"/*.tar 2>/dev/null || true - fi - - # 显示镜像列表 - echo "" - log_info "Docker 镜像列表:" - docker images | grep "urban-lifeline" | head -20 - - echo "" - echo "==========================================" - log_info "✅ 构建完成!" - echo "==========================================" -} - -main diff --git a/docker/dify/.env.example b/docker/dify/.env.example deleted file mode 100644 index 0323f36e..00000000 --- a/docker/dify/.env.example +++ /dev/null @@ -1,1437 +0,0 @@ -# ------------------------------ -# Environment Variables for API service & worker -# ------------------------------ - -# ------------------------------ -# Common Variables -# ------------------------------ - -# The backend URL of the console API, -# used to concatenate the authorization callback. -# If empty, it is the same domain. -# Example: https://api.console.dify.ai -CONSOLE_API_URL= - -# The front-end URL of the console web, -# used to concatenate some front-end addresses and for CORS configuration use. -# If empty, it is the same domain. -# Example: https://console.dify.ai -CONSOLE_WEB_URL= - -# Service API Url, -# used to display Service API Base Url to the front-end. -# If empty, it is the same domain. -# Example: https://api.dify.ai -SERVICE_API_URL= - -# Trigger external URL -# used to display trigger endpoint API Base URL to the front-end. -# Example: https://api.dify.ai -TRIGGER_URL=http://localhost - -# WebApp API backend Url, -# used to declare the back-end URL for the front-end API. -# If empty, it is the same domain. -# Example: https://api.app.dify.ai -APP_API_URL= - -# WebApp Url, -# used to display WebAPP API Base Url to the front-end. -# If empty, it is the same domain. -# Example: https://app.dify.ai -APP_WEB_URL= - -# File preview or download Url prefix. -# used to display File preview or download Url to the front-end or as Multi-model inputs; -# Url is signed and has expiration time. -# Setting FILES_URL is required for file processing plugins. -# - For https://example.com, use FILES_URL=https://example.com -# - For http://example.com, use FILES_URL=http://example.com -# Recommendation: use a dedicated domain (e.g., https://upload.example.com). -# Alternatively, use http://:5001 or http://api:5001, -# ensuring port 5001 is externally accessible (see docker-compose.yaml). -FILES_URL= - -# INTERNAL_FILES_URL is used for plugin daemon communication within Docker network. -# Set this to the internal Docker service URL for proper plugin file access. -# Example: INTERNAL_FILES_URL=http://api:5001 -INTERNAL_FILES_URL= - -# Ensure UTF-8 encoding -LANG=en_US.UTF-8 -LC_ALL=en_US.UTF-8 -PYTHONIOENCODING=utf-8 - -# ------------------------------ -# Server Configuration -# ------------------------------ - -# The log level for the application. -# Supported values are `DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL` -LOG_LEVEL=INFO -# Log file path -LOG_FILE=/app/logs/server.log -# Log file max size, the unit is MB -LOG_FILE_MAX_SIZE=20 -# Log file max backup count -LOG_FILE_BACKUP_COUNT=5 -# Log dateformat -LOG_DATEFORMAT=%Y-%m-%d %H:%M:%S -# Log Timezone -LOG_TZ=UTC - -# Debug mode, default is false. -# It is recommended to turn on this configuration for local development -# to prevent some problems caused by monkey patch. -DEBUG=false - -# Flask debug mode, it can output trace information at the interface when turned on, -# which is convenient for debugging. -FLASK_DEBUG=false - -# Enable request logging, which will log the request and response information. -# And the log level is DEBUG -ENABLE_REQUEST_LOGGING=False - -# A secret key that is used for securely signing the session cookie -# and encrypting sensitive information on the database. -# You can generate a strong key using `openssl rand -base64 42`. -SECRET_KEY=sk-9f73s3ljTXVcMT3Blb3ljTqtsKiGHXVcMT3BlbkFJLK7U - -# Password for admin user initialization. -# If left unset, admin user will not be prompted for a password -# when creating the initial admin account. -# The length of the password cannot exceed 30 characters. -INIT_PASSWORD= - -# Deployment environment. -# Supported values are `PRODUCTION`, `TESTING`. Default is `PRODUCTION`. -# Testing environment. There will be a distinct color label on the front-end page, -# indicating that this environment is a testing environment. -DEPLOY_ENV=PRODUCTION - -# Whether to enable the version check policy. -# If set to empty, https://updates.dify.ai will be called for version check. -CHECK_UPDATE_URL=https://updates.dify.ai - -# Used to change the OpenAI base address, default is https://api.openai.com/v1. -# When OpenAI cannot be accessed in China, replace it with a domestic mirror address, -# or when a local model provides OpenAI compatible API, it can be replaced. -OPENAI_API_BASE=https://api.openai.com/v1 - -# When enabled, migrations will be executed prior to application startup -# and the application will start after the migrations have completed. -MIGRATION_ENABLED=true - -# File Access Time specifies a time interval in seconds for the file to be accessed. -# The default value is 300 seconds. -FILES_ACCESS_TIMEOUT=300 - -# Access token expiration time in minutes -ACCESS_TOKEN_EXPIRE_MINUTES=60 - -# Refresh token expiration time in days -REFRESH_TOKEN_EXPIRE_DAYS=30 - -# The default number of active requests for the application, where 0 means unlimited, should be a non-negative integer. -APP_DEFAULT_ACTIVE_REQUESTS=0 -# The maximum number of active requests for the application, where 0 means unlimited, should be a non-negative integer. -APP_MAX_ACTIVE_REQUESTS=0 -APP_MAX_EXECUTION_TIME=1200 - -# ------------------------------ -# Container Startup Related Configuration -# Only effective when starting with docker image or docker-compose. -# ------------------------------ - -# API service binding address, default: 0.0.0.0, i.e., all addresses can be accessed. -DIFY_BIND_ADDRESS=0.0.0.0 - -# API service binding port number, default 5001. -DIFY_PORT=5001 - -# The number of API server workers, i.e., the number of workers. -# Formula: number of cpu cores x 2 + 1 for sync, 1 for Gevent -# Reference: https://docs.gunicorn.org/en/stable/design.html#how-many-workers -SERVER_WORKER_AMOUNT=1 - -# Defaults to gevent. If using windows, it can be switched to sync or solo. -# -# Warning: Changing this parameter requires disabling patching for -# psycopg2 and gRPC (see `gunicorn.conf.py` and `celery_entrypoint.py`). -# Modifying it may also decrease throughput. -# -# It is strongly discouraged to change this parameter. -SERVER_WORKER_CLASS=gevent - -# Default number of worker connections, the default is 10. -SERVER_WORKER_CONNECTIONS=10 - -# Similar to SERVER_WORKER_CLASS. -# If using windows, it can be switched to sync or solo. -# -# Warning: Changing this parameter requires disabling patching for -# psycopg2 and gRPC (see `gunicorn_conf.py` and `celery_entrypoint.py`). -# Modifying it may also decrease throughput. -# -# It is strongly discouraged to change this parameter. -CELERY_WORKER_CLASS= - -# Request handling timeout. The default is 200, -# it is recommended to set it to 360 to support a longer sse connection time. -GUNICORN_TIMEOUT=360 - -# The number of Celery workers. The default is 1, and can be set as needed. -CELERY_WORKER_AMOUNT= - -# Flag indicating whether to enable autoscaling of Celery workers. -# -# Autoscaling is useful when tasks are CPU intensive and can be dynamically -# allocated and deallocated based on the workload. -# -# When autoscaling is enabled, the maximum and minimum number of workers can -# be specified. The autoscaling algorithm will dynamically adjust the number -# of workers within the specified range. -# -# Default is false (i.e., autoscaling is disabled). -# -# Example: -# CELERY_AUTO_SCALE=true -CELERY_AUTO_SCALE=false - -# The maximum number of Celery workers that can be autoscaled. -# This is optional and only used when autoscaling is enabled. -# Default is not set. -CELERY_MAX_WORKERS= - -# The minimum number of Celery workers that can be autoscaled. -# This is optional and only used when autoscaling is enabled. -# Default is not set. -CELERY_MIN_WORKERS= - -# API Tool configuration -API_TOOL_DEFAULT_CONNECT_TIMEOUT=10 -API_TOOL_DEFAULT_READ_TIMEOUT=60 - -# ------------------------------- -# Datasource Configuration -# -------------------------------- -ENABLE_WEBSITE_JINAREADER=true -ENABLE_WEBSITE_FIRECRAWL=true -ENABLE_WEBSITE_WATERCRAWL=true - -# Enable inline LaTeX rendering with single dollar signs ($...$) in the web frontend -# Default is false for security reasons to prevent conflicts with regular text -NEXT_PUBLIC_ENABLE_SINGLE_DOLLAR_LATEX=false - -# ------------------------------ -# Database Configuration -# The database uses PostgreSQL or MySQL. OceanBase and seekdb are also supported. Please use the public schema. -# It is consistent with the configuration in the database service below. -# You can adjust the database configuration according to your needs. -# ------------------------------ - -# Database type, supported values are `postgresql` and `mysql` -DB_TYPE=postgresql -# For MySQL, only `root` user is supported for now -DB_USERNAME=postgres -DB_PASSWORD=difyai123456 -DB_HOST=db_postgres -DB_PORT=5432 -DB_DATABASE=dify - -# The size of the database connection pool. -# The default is 30 connections, which can be appropriately increased. -SQLALCHEMY_POOL_SIZE=30 -# The default is 10 connections, which allows temporary overflow beyond the pool size. -SQLALCHEMY_MAX_OVERFLOW=10 -# Database connection pool recycling time, the default is 3600 seconds. -SQLALCHEMY_POOL_RECYCLE=3600 -# Whether to print SQL, default is false. -SQLALCHEMY_ECHO=false -# If True, will test connections for liveness upon each checkout -SQLALCHEMY_POOL_PRE_PING=false -# Whether to enable the Last in first out option or use default FIFO queue if is false -SQLALCHEMY_POOL_USE_LIFO=false -# Number of seconds to wait for a connection from the pool before raising a timeout error. -# Default is 30 -SQLALCHEMY_POOL_TIMEOUT=30 - -# Maximum number of connections to the database -# Default is 100 -# -# Reference: https://www.postgresql.org/docs/current/runtime-config-connection.html#GUC-MAX-CONNECTIONS -POSTGRES_MAX_CONNECTIONS=100 - -# Sets the amount of shared memory used for postgres's shared buffers. -# Default is 128MB -# Recommended value: 25% of available memory -# Reference: https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-SHARED-BUFFERS -POSTGRES_SHARED_BUFFERS=128MB - -# Sets the amount of memory used by each database worker for working space. -# Default is 4MB -# -# Reference: https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-WORK-MEM -POSTGRES_WORK_MEM=4MB - -# Sets the amount of memory reserved for maintenance activities. -# Default is 64MB -# -# Reference: https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-MAINTENANCE-WORK-MEM -POSTGRES_MAINTENANCE_WORK_MEM=64MB - -# Sets the planner's assumption about the effective cache size. -# Default is 4096MB -# -# Reference: https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-EFFECTIVE-CACHE-SIZE -POSTGRES_EFFECTIVE_CACHE_SIZE=4096MB - -# Sets the maximum allowed duration of any statement before termination. -# Default is 0 (no timeout). -# -# Reference: https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-STATEMENT-TIMEOUT -# A value of 0 prevents the server from timing out statements. -POSTGRES_STATEMENT_TIMEOUT=0 - -# Sets the maximum allowed duration of any idle in-transaction session before termination. -# Default is 0 (no timeout). -# -# Reference: https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-IDLE-IN-TRANSACTION-SESSION-TIMEOUT -# A value of 0 prevents the server from terminating idle sessions. -POSTGRES_IDLE_IN_TRANSACTION_SESSION_TIMEOUT=0 - -# MySQL Performance Configuration -# Maximum number of connections to MySQL -# -# Default is 1000 -MYSQL_MAX_CONNECTIONS=1000 - -# InnoDB buffer pool size -# Default is 512M -# Recommended value: 70-80% of available memory for dedicated MySQL server -# Reference: https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_buffer_pool_size -MYSQL_INNODB_BUFFER_POOL_SIZE=512M - -# InnoDB log file size -# Default is 128M -# Reference: https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_log_file_size -MYSQL_INNODB_LOG_FILE_SIZE=128M - -# InnoDB flush log at transaction commit -# Default is 2 (flush to OS cache, sync every second) -# Options: 0 (no flush), 1 (flush and sync), 2 (flush to OS cache) -# Reference: https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_flush_log_at_trx_commit -MYSQL_INNODB_FLUSH_LOG_AT_TRX_COMMIT=2 - -# ------------------------------ -# Redis Configuration -# This Redis configuration is used for caching and for pub/sub during conversation. -# ------------------------------ - -REDIS_HOST=redis -REDIS_PORT=6379 -REDIS_USERNAME= -REDIS_PASSWORD=difyai123456 -REDIS_USE_SSL=false -# SSL configuration for Redis (when REDIS_USE_SSL=true) -REDIS_SSL_CERT_REQS=CERT_NONE -# Options: CERT_NONE, CERT_OPTIONAL, CERT_REQUIRED -REDIS_SSL_CA_CERTS= -# Path to CA certificate file for SSL verification -REDIS_SSL_CERTFILE= -# Path to client certificate file for SSL authentication -REDIS_SSL_KEYFILE= -# Path to client private key file for SSL authentication -REDIS_DB=0 - -# Whether to use Redis Sentinel mode. -# If set to true, the application will automatically discover and connect to the master node through Sentinel. -REDIS_USE_SENTINEL=false - -# List of Redis Sentinel nodes. If Sentinel mode is enabled, provide at least one Sentinel IP and port. -# Format: `:,:,:` -REDIS_SENTINELS= -REDIS_SENTINEL_SERVICE_NAME= -REDIS_SENTINEL_USERNAME= -REDIS_SENTINEL_PASSWORD= -REDIS_SENTINEL_SOCKET_TIMEOUT=0.1 - -# List of Redis Cluster nodes. If Cluster mode is enabled, provide at least one Cluster IP and port. -# Format: `:,:,:` -REDIS_USE_CLUSTERS=false -REDIS_CLUSTERS= -REDIS_CLUSTERS_PASSWORD= - -# ------------------------------ -# Celery Configuration -# ------------------------------ - -# Use standalone redis as the broker, and redis db 1 for celery broker. (redis_username is usually set by default as empty) -# Format as follows: `redis://:@:/`. -# Example: redis://:difyai123456@redis:6379/1 -# If use Redis Sentinel, format as follows: `sentinel://:@:/` -# For high availability, you can configure multiple Sentinel nodes (if provided) separated by semicolons like below example: -# Example: sentinel://:difyai123456@localhost:26379/1;sentinel://:difyai12345@localhost:26379/1;sentinel://:difyai12345@localhost:26379/1 -CELERY_BROKER_URL=redis://:difyai123456@redis:6379/1 -CELERY_BACKEND=redis -BROKER_USE_SSL=false - -# If you are using Redis Sentinel for high availability, configure the following settings. -CELERY_USE_SENTINEL=false -CELERY_SENTINEL_MASTER_NAME= -CELERY_SENTINEL_PASSWORD= -CELERY_SENTINEL_SOCKET_TIMEOUT=0.1 - -# ------------------------------ -# CORS Configuration -# Used to set the front-end cross-domain access policy. -# ------------------------------ - -# Specifies the allowed origins for cross-origin requests to the Web API, -# e.g. https://dify.app or * for all origins. -WEB_API_CORS_ALLOW_ORIGINS=* - -# Specifies the allowed origins for cross-origin requests to the console API, -# e.g. https://cloud.dify.ai or * for all origins. -CONSOLE_CORS_ALLOW_ORIGINS=* -# When the frontend and backend run on different subdomains, set COOKIE_DOMAIN to the site’s top-level domain (e.g., `example.com`). Leading dots are optional. -COOKIE_DOMAIN= -# When the frontend and backend run on different subdomains, set NEXT_PUBLIC_COOKIE_DOMAIN=1. -NEXT_PUBLIC_COOKIE_DOMAIN= - -# ------------------------------ -# File Storage Configuration -# ------------------------------ - -# The type of storage to use for storing user files. -STORAGE_TYPE=opendal - -# Apache OpenDAL Configuration -# The configuration for OpenDAL consists of the following format: OPENDAL__. -# You can find all the service configurations (CONFIG_NAME) in the repository at: https://github.com/apache/opendal/tree/main/core/src/services. -# Dify will scan configurations starting with OPENDAL_ and automatically apply them. -# The scheme name for the OpenDAL storage. -OPENDAL_SCHEME=fs -# Configurations for OpenDAL Local File System. -OPENDAL_FS_ROOT=storage - -# ClickZetta Volume Configuration (for storage backend) -# To use ClickZetta Volume as storage backend, set STORAGE_TYPE=clickzetta-volume -# Note: ClickZetta Volume will reuse the existing CLICKZETTA_* connection parameters - -# Volume type selection (three types available): -# - user: Personal/small team use, simple config, user-level permissions -# - table: Enterprise multi-tenant, smart routing, table-level + user-level permissions -# - external: Data lake integration, external storage connection, volume-level + storage-level permissions -CLICKZETTA_VOLUME_TYPE=user - -# External Volume name (required only when TYPE=external) -CLICKZETTA_VOLUME_NAME= - -# Table Volume table prefix (used only when TYPE=table) -CLICKZETTA_VOLUME_TABLE_PREFIX=dataset_ - -# Dify file directory prefix (isolates from other apps, recommended to keep default) -CLICKZETTA_VOLUME_DIFY_PREFIX=dify_km - -# S3 Configuration -# -S3_ENDPOINT= -S3_REGION=us-east-1 -S3_BUCKET_NAME=difyai -S3_ACCESS_KEY= -S3_SECRET_KEY= -# Whether to use AWS managed IAM roles for authenticating with the S3 service. -# If set to false, the access key and secret key must be provided. -S3_USE_AWS_MANAGED_IAM=false - -# Azure Blob Configuration -# -AZURE_BLOB_ACCOUNT_NAME=difyai -AZURE_BLOB_ACCOUNT_KEY=difyai -AZURE_BLOB_CONTAINER_NAME=difyai-container -AZURE_BLOB_ACCOUNT_URL=https://.blob.core.windows.net - -# Google Storage Configuration -# -GOOGLE_STORAGE_BUCKET_NAME=your-bucket-name -GOOGLE_STORAGE_SERVICE_ACCOUNT_JSON_BASE64= - -# The Alibaba Cloud OSS configurations, -# -ALIYUN_OSS_BUCKET_NAME=your-bucket-name -ALIYUN_OSS_ACCESS_KEY=your-access-key -ALIYUN_OSS_SECRET_KEY=your-secret-key -ALIYUN_OSS_ENDPOINT=https://oss-ap-southeast-1-internal.aliyuncs.com -ALIYUN_OSS_REGION=ap-southeast-1 -ALIYUN_OSS_AUTH_VERSION=v4 -# Don't start with '/'. OSS doesn't support leading slash in object names. -ALIYUN_OSS_PATH=your-path - -# Tencent COS Configuration -# -TENCENT_COS_BUCKET_NAME=your-bucket-name -TENCENT_COS_SECRET_KEY=your-secret-key -TENCENT_COS_SECRET_ID=your-secret-id -TENCENT_COS_REGION=your-region -TENCENT_COS_SCHEME=your-scheme - -# Oracle Storage Configuration -# -OCI_ENDPOINT=https://your-object-storage-namespace.compat.objectstorage.us-ashburn-1.oraclecloud.com -OCI_BUCKET_NAME=your-bucket-name -OCI_ACCESS_KEY=your-access-key -OCI_SECRET_KEY=your-secret-key -OCI_REGION=us-ashburn-1 - -# Huawei OBS Configuration -# -HUAWEI_OBS_BUCKET_NAME=your-bucket-name -HUAWEI_OBS_SECRET_KEY=your-secret-key -HUAWEI_OBS_ACCESS_KEY=your-access-key -HUAWEI_OBS_SERVER=your-server-url - -# Volcengine TOS Configuration -# -VOLCENGINE_TOS_BUCKET_NAME=your-bucket-name -VOLCENGINE_TOS_SECRET_KEY=your-secret-key -VOLCENGINE_TOS_ACCESS_KEY=your-access-key -VOLCENGINE_TOS_ENDPOINT=your-server-url -VOLCENGINE_TOS_REGION=your-region - -# Baidu OBS Storage Configuration -# -BAIDU_OBS_BUCKET_NAME=your-bucket-name -BAIDU_OBS_SECRET_KEY=your-secret-key -BAIDU_OBS_ACCESS_KEY=your-access-key -BAIDU_OBS_ENDPOINT=your-server-url - -# Supabase Storage Configuration -# -SUPABASE_BUCKET_NAME=your-bucket-name -SUPABASE_API_KEY=your-access-key -SUPABASE_URL=your-server-url - -# ------------------------------ -# Vector Database Configuration -# ------------------------------ - -# The type of vector store to use. -# Supported values are `weaviate`, `oceanbase`, `qdrant`, `milvus`, `myscale`, `relyt`, `pgvector`, `pgvecto-rs`, `chroma`, `opensearch`, `oracle`, `tencent`, `elasticsearch`, `elasticsearch-ja`, `analyticdb`, `couchbase`, `vikingdb`, `opengauss`, `tablestore`,`vastbase`,`tidb`,`tidb_on_qdrant`,`baidu`,`lindorm`,`huawei_cloud`,`upstash`, `matrixone`, `clickzetta`, `alibabacloud_mysql`. -VECTOR_STORE=weaviate -# Prefix used to create collection name in vector database -VECTOR_INDEX_NAME_PREFIX=Vector_index - -# The Weaviate endpoint URL. Only available when VECTOR_STORE is `weaviate`. -WEAVIATE_ENDPOINT=http://weaviate:8080 -WEAVIATE_API_KEY=WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih -WEAVIATE_GRPC_ENDPOINT=grpc://weaviate:50051 -WEAVIATE_TOKENIZATION=word - -# For OceanBase metadata database configuration, available when `DB_TYPE` is `mysql` and `COMPOSE_PROFILES` includes `oceanbase`. -# For OceanBase vector database configuration, available when `VECTOR_STORE` is `oceanbase` -# If you want to use OceanBase as both vector database and metadata database, you need to set `DB_TYPE` to `mysql`, `COMPOSE_PROFILES` is `oceanbase`, and set Database Configuration is the same as the vector database. -# seekdb is the lite version of OceanBase and shares the connection configuration with OceanBase. -OCEANBASE_VECTOR_HOST=oceanbase -OCEANBASE_VECTOR_PORT=2881 -OCEANBASE_VECTOR_USER=root@test -OCEANBASE_VECTOR_PASSWORD=difyai123456 -OCEANBASE_VECTOR_DATABASE=test -OCEANBASE_CLUSTER_NAME=difyai -OCEANBASE_MEMORY_LIMIT=6G -OCEANBASE_ENABLE_HYBRID_SEARCH=false -# For OceanBase vector database, built-in fulltext parsers are `ngram`, `beng`, `space`, `ngram2`, `ik` -# For OceanBase vector database, external fulltext parsers (require plugin installation) are `japanese_ftparser`, `thai_ftparser` -OCEANBASE_FULLTEXT_PARSER=ik -SEEKDB_MEMORY_LIMIT=2G - -# The Qdrant endpoint URL. Only available when VECTOR_STORE is `qdrant`. -QDRANT_URL=http://qdrant:6333 -QDRANT_API_KEY=difyai123456 -QDRANT_CLIENT_TIMEOUT=20 -QDRANT_GRPC_ENABLED=false -QDRANT_GRPC_PORT=6334 -QDRANT_REPLICATION_FACTOR=1 - -# Milvus configuration. Only available when VECTOR_STORE is `milvus`. -# The milvus uri. -MILVUS_URI=http://host.docker.internal:19530 -MILVUS_DATABASE= -MILVUS_TOKEN= -MILVUS_USER= -MILVUS_PASSWORD= -MILVUS_ENABLE_HYBRID_SEARCH=False -MILVUS_ANALYZER_PARAMS= - -# MyScale configuration, only available when VECTOR_STORE is `myscale` -# For multi-language support, please set MYSCALE_FTS_PARAMS with referring to: -# https://myscale.com/docs/en/text-search/#understanding-fts-index-parameters -MYSCALE_HOST=myscale -MYSCALE_PORT=8123 -MYSCALE_USER=default -MYSCALE_PASSWORD= -MYSCALE_DATABASE=dify -MYSCALE_FTS_PARAMS= - -# Couchbase configurations, only available when VECTOR_STORE is `couchbase` -# The connection string must include hostname defined in the docker-compose file (couchbase-server in this case) -COUCHBASE_CONNECTION_STRING=couchbase://couchbase-server -COUCHBASE_USER=Administrator -COUCHBASE_PASSWORD=password -COUCHBASE_BUCKET_NAME=Embeddings -COUCHBASE_SCOPE_NAME=_default - -# pgvector configurations, only available when VECTOR_STORE is `pgvector` -PGVECTOR_HOST=pgvector -PGVECTOR_PORT=5432 -PGVECTOR_USER=postgres -PGVECTOR_PASSWORD=difyai123456 -PGVECTOR_DATABASE=dify -PGVECTOR_MIN_CONNECTION=1 -PGVECTOR_MAX_CONNECTION=5 -PGVECTOR_PG_BIGM=false -PGVECTOR_PG_BIGM_VERSION=1.2-20240606 - -# vastbase configurations, only available when VECTOR_STORE is `vastbase` -VASTBASE_HOST=vastbase -VASTBASE_PORT=5432 -VASTBASE_USER=dify -VASTBASE_PASSWORD=Difyai123456 -VASTBASE_DATABASE=dify -VASTBASE_MIN_CONNECTION=1 -VASTBASE_MAX_CONNECTION=5 - -# pgvecto-rs configurations, only available when VECTOR_STORE is `pgvecto-rs` -PGVECTO_RS_HOST=pgvecto-rs -PGVECTO_RS_PORT=5432 -PGVECTO_RS_USER=postgres -PGVECTO_RS_PASSWORD=difyai123456 -PGVECTO_RS_DATABASE=dify - -# analyticdb configurations, only available when VECTOR_STORE is `analyticdb` -ANALYTICDB_KEY_ID=your-ak -ANALYTICDB_KEY_SECRET=your-sk -ANALYTICDB_REGION_ID=cn-hangzhou -ANALYTICDB_INSTANCE_ID=gp-ab123456 -ANALYTICDB_ACCOUNT=testaccount -ANALYTICDB_PASSWORD=testpassword -ANALYTICDB_NAMESPACE=dify -ANALYTICDB_NAMESPACE_PASSWORD=difypassword -ANALYTICDB_HOST=gp-test.aliyuncs.com -ANALYTICDB_PORT=5432 -ANALYTICDB_MIN_CONNECTION=1 -ANALYTICDB_MAX_CONNECTION=5 - -# TiDB vector configurations, only available when VECTOR_STORE is `tidb_vector` -TIDB_VECTOR_HOST=tidb -TIDB_VECTOR_PORT=4000 -TIDB_VECTOR_USER= -TIDB_VECTOR_PASSWORD= -TIDB_VECTOR_DATABASE=dify - -# Matrixone vector configurations. -MATRIXONE_HOST=matrixone -MATRIXONE_PORT=6001 -MATRIXONE_USER=dump -MATRIXONE_PASSWORD=111 -MATRIXONE_DATABASE=dify - -# Tidb on qdrant configuration, only available when VECTOR_STORE is `tidb_on_qdrant` -TIDB_ON_QDRANT_URL=http://127.0.0.1 -TIDB_ON_QDRANT_API_KEY=dify -TIDB_ON_QDRANT_CLIENT_TIMEOUT=20 -TIDB_ON_QDRANT_GRPC_ENABLED=false -TIDB_ON_QDRANT_GRPC_PORT=6334 -TIDB_PUBLIC_KEY=dify -TIDB_PRIVATE_KEY=dify -TIDB_API_URL=http://127.0.0.1 -TIDB_IAM_API_URL=http://127.0.0.1 -TIDB_REGION=regions/aws-us-east-1 -TIDB_PROJECT_ID=dify -TIDB_SPEND_LIMIT=100 - -# Chroma configuration, only available when VECTOR_STORE is `chroma` -CHROMA_HOST=127.0.0.1 -CHROMA_PORT=8000 -CHROMA_TENANT=default_tenant -CHROMA_DATABASE=default_database -CHROMA_AUTH_PROVIDER=chromadb.auth.token_authn.TokenAuthClientProvider -CHROMA_AUTH_CREDENTIALS= - -# Oracle configuration, only available when VECTOR_STORE is `oracle` -ORACLE_USER=dify -ORACLE_PASSWORD=dify -ORACLE_DSN=oracle:1521/FREEPDB1 -ORACLE_CONFIG_DIR=/app/api/storage/wallet -ORACLE_WALLET_LOCATION=/app/api/storage/wallet -ORACLE_WALLET_PASSWORD=dify -ORACLE_IS_AUTONOMOUS=false - -# AlibabaCloud MySQL configuration, only available when VECTOR_STORE is `alibabcloud_mysql` -ALIBABACLOUD_MYSQL_HOST=127.0.0.1 -ALIBABACLOUD_MYSQL_PORT=3306 -ALIBABACLOUD_MYSQL_USER=root -ALIBABACLOUD_MYSQL_PASSWORD=difyai123456 -ALIBABACLOUD_MYSQL_DATABASE=dify -ALIBABACLOUD_MYSQL_MAX_CONNECTION=5 -ALIBABACLOUD_MYSQL_HNSW_M=6 - -# relyt configurations, only available when VECTOR_STORE is `relyt` -RELYT_HOST=db -RELYT_PORT=5432 -RELYT_USER=postgres -RELYT_PASSWORD=difyai123456 -RELYT_DATABASE=postgres - -# open search configuration, only available when VECTOR_STORE is `opensearch` -OPENSEARCH_HOST=opensearch -OPENSEARCH_PORT=9200 -OPENSEARCH_SECURE=true -OPENSEARCH_VERIFY_CERTS=true -OPENSEARCH_AUTH_METHOD=basic -OPENSEARCH_USER=admin -OPENSEARCH_PASSWORD=admin -# If using AWS managed IAM, e.g. Managed Cluster or OpenSearch Serverless -OPENSEARCH_AWS_REGION=ap-southeast-1 -OPENSEARCH_AWS_SERVICE=aoss - -# tencent vector configurations, only available when VECTOR_STORE is `tencent` -TENCENT_VECTOR_DB_URL=http://127.0.0.1 -TENCENT_VECTOR_DB_API_KEY=dify -TENCENT_VECTOR_DB_TIMEOUT=30 -TENCENT_VECTOR_DB_USERNAME=dify -TENCENT_VECTOR_DB_DATABASE=dify -TENCENT_VECTOR_DB_SHARD=1 -TENCENT_VECTOR_DB_REPLICAS=2 -TENCENT_VECTOR_DB_ENABLE_HYBRID_SEARCH=false - -# ElasticSearch configuration, only available when VECTOR_STORE is `elasticsearch` -ELASTICSEARCH_HOST=0.0.0.0 -ELASTICSEARCH_PORT=9200 -ELASTICSEARCH_USERNAME=elastic -ELASTICSEARCH_PASSWORD=elastic -KIBANA_PORT=5601 - -# Using ElasticSearch Cloud Serverless, or not. -ELASTICSEARCH_USE_CLOUD=false -ELASTICSEARCH_CLOUD_URL=YOUR-ELASTICSEARCH_CLOUD_URL -ELASTICSEARCH_API_KEY=YOUR-ELASTICSEARCH_API_KEY - -ELASTICSEARCH_VERIFY_CERTS=False -ELASTICSEARCH_CA_CERTS= -ELASTICSEARCH_REQUEST_TIMEOUT=100000 -ELASTICSEARCH_RETRY_ON_TIMEOUT=True -ELASTICSEARCH_MAX_RETRIES=10 - -# baidu vector configurations, only available when VECTOR_STORE is `baidu` -BAIDU_VECTOR_DB_ENDPOINT=http://127.0.0.1:5287 -BAIDU_VECTOR_DB_CONNECTION_TIMEOUT_MS=30000 -BAIDU_VECTOR_DB_ACCOUNT=root -BAIDU_VECTOR_DB_API_KEY=dify -BAIDU_VECTOR_DB_DATABASE=dify -BAIDU_VECTOR_DB_SHARD=1 -BAIDU_VECTOR_DB_REPLICAS=3 -BAIDU_VECTOR_DB_INVERTED_INDEX_ANALYZER=DEFAULT_ANALYZER -BAIDU_VECTOR_DB_INVERTED_INDEX_PARSER_MODE=COARSE_MODE - -# VikingDB configurations, only available when VECTOR_STORE is `vikingdb` -VIKINGDB_ACCESS_KEY=your-ak -VIKINGDB_SECRET_KEY=your-sk -VIKINGDB_REGION=cn-shanghai -VIKINGDB_HOST=api-vikingdb.xxx.volces.com -VIKINGDB_SCHEMA=http -VIKINGDB_CONNECTION_TIMEOUT=30 -VIKINGDB_SOCKET_TIMEOUT=30 - -# Lindorm configuration, only available when VECTOR_STORE is `lindorm` -LINDORM_URL=http://localhost:30070 -LINDORM_USERNAME=admin -LINDORM_PASSWORD=admin -LINDORM_USING_UGC=True -LINDORM_QUERY_TIMEOUT=1 - -# opengauss configurations, only available when VECTOR_STORE is `opengauss` -OPENGAUSS_HOST=opengauss -OPENGAUSS_PORT=6600 -OPENGAUSS_USER=postgres -OPENGAUSS_PASSWORD=Dify@123 -OPENGAUSS_DATABASE=dify -OPENGAUSS_MIN_CONNECTION=1 -OPENGAUSS_MAX_CONNECTION=5 -OPENGAUSS_ENABLE_PQ=false - -# huawei cloud search service vector configurations, only available when VECTOR_STORE is `huawei_cloud` -HUAWEI_CLOUD_HOSTS=https://127.0.0.1:9200 -HUAWEI_CLOUD_USER=admin -HUAWEI_CLOUD_PASSWORD=admin - -# Upstash Vector configuration, only available when VECTOR_STORE is `upstash` -UPSTASH_VECTOR_URL=https://xxx-vector.upstash.io -UPSTASH_VECTOR_TOKEN=dify - -# TableStore Vector configuration -# (only used when VECTOR_STORE is tablestore) -TABLESTORE_ENDPOINT=https://instance-name.cn-hangzhou.ots.aliyuncs.com -TABLESTORE_INSTANCE_NAME=instance-name -TABLESTORE_ACCESS_KEY_ID=xxx -TABLESTORE_ACCESS_KEY_SECRET=xxx -TABLESTORE_NORMALIZE_FULLTEXT_BM25_SCORE=false - -# Clickzetta configuration, only available when VECTOR_STORE is `clickzetta` -CLICKZETTA_USERNAME= -CLICKZETTA_PASSWORD= -CLICKZETTA_INSTANCE= -CLICKZETTA_SERVICE=api.clickzetta.com -CLICKZETTA_WORKSPACE=quick_start -CLICKZETTA_VCLUSTER=default_ap -CLICKZETTA_SCHEMA=dify -CLICKZETTA_BATCH_SIZE=100 -CLICKZETTA_ENABLE_INVERTED_INDEX=true -CLICKZETTA_ANALYZER_TYPE=chinese -CLICKZETTA_ANALYZER_MODE=smart -CLICKZETTA_VECTOR_DISTANCE_FUNCTION=cosine_distance - -# ------------------------------ -# Knowledge Configuration -# ------------------------------ - -# Upload file size limit, default 15M. -UPLOAD_FILE_SIZE_LIMIT=100 - -# The maximum number of files that can be uploaded at a time, default 5. -UPLOAD_FILE_BATCH_LIMIT=5 - -# Comma-separated list of file extensions blocked from upload for security reasons. -# Extensions should be lowercase without dots (e.g., exe,bat,sh,dll). -# Empty by default to allow all file types. -# Recommended: exe,bat,cmd,com,scr,vbs,ps1,msi,dll -UPLOAD_FILE_EXTENSION_BLACKLIST= - -# Maximum number of files allowed in a single chunk attachment, default 10. -SINGLE_CHUNK_ATTACHMENT_LIMIT=10 - -# Maximum number of files allowed in a image batch upload operation -IMAGE_FILE_BATCH_LIMIT=10 - -# Maximum allowed image file size for attachments in megabytes, default 2. -ATTACHMENT_IMAGE_FILE_SIZE_LIMIT=2 - -# Timeout for downloading image attachments in seconds, default 60. -ATTACHMENT_IMAGE_DOWNLOAD_TIMEOUT=60 - - -# ETL type, support: `dify`, `Unstructured` -# `dify` Dify's proprietary file extraction scheme -# `Unstructured` Unstructured.io file extraction scheme -ETL_TYPE=dify - -# Unstructured API path and API key, needs to be configured when ETL_TYPE is Unstructured -# Or using Unstructured for document extractor node for pptx. -# For example: http://unstructured:8000/general/v0/general -UNSTRUCTURED_API_URL= -UNSTRUCTURED_API_KEY= -SCARF_NO_ANALYTICS=true - -# ------------------------------ -# Model Configuration -# ------------------------------ - -# The maximum number of tokens allowed for prompt generation. -# This setting controls the upper limit of tokens that can be used by the LLM -# when generating a prompt in the prompt generation tool. -# Default: 512 tokens. -PROMPT_GENERATION_MAX_TOKENS=512 - -# The maximum number of tokens allowed for code generation. -# This setting controls the upper limit of tokens that can be used by the LLM -# when generating code in the code generation tool. -# Default: 1024 tokens. -CODE_GENERATION_MAX_TOKENS=1024 - -# Enable or disable plugin based token counting. If disabled, token counting will return 0. -# This can improve performance by skipping token counting operations. -# Default: false (disabled). -PLUGIN_BASED_TOKEN_COUNTING_ENABLED=false - -# ------------------------------ -# Multi-modal Configuration -# ------------------------------ - -# The format of the image/video/audio/document sent when the multi-modal model is input, -# the default is base64, optional url. -# The delay of the call in url mode will be lower than that in base64 mode. -# It is generally recommended to use the more compatible base64 mode. -# If configured as url, you need to configure FILES_URL as an externally accessible address so that the multi-modal model can access the image/video/audio/document. -MULTIMODAL_SEND_FORMAT=base64 -# Upload image file size limit, default 10M. -UPLOAD_IMAGE_FILE_SIZE_LIMIT=10 -# Upload video file size limit, default 100M. -UPLOAD_VIDEO_FILE_SIZE_LIMIT=100 -# Upload audio file size limit, default 50M. -UPLOAD_AUDIO_FILE_SIZE_LIMIT=50 - -# ------------------------------ -# Sentry Configuration -# Used for application monitoring and error log tracking. -# ------------------------------ -SENTRY_DSN= - -# API Service Sentry DSN address, default is empty, when empty, -# all monitoring information is not reported to Sentry. -# If not set, Sentry error reporting will be disabled. -API_SENTRY_DSN= -# API Service The reporting ratio of Sentry events, if it is 0.01, it is 1%. -API_SENTRY_TRACES_SAMPLE_RATE=1.0 -# API Service The reporting ratio of Sentry profiles, if it is 0.01, it is 1%. -API_SENTRY_PROFILES_SAMPLE_RATE=1.0 - -# Web Service Sentry DSN address, default is empty, when empty, -# all monitoring information is not reported to Sentry. -# If not set, Sentry error reporting will be disabled. -WEB_SENTRY_DSN= - -# Plugin_daemon Service Sentry DSN address, default is empty, when empty, -# all monitoring information is not reported to Sentry. -# If not set, Sentry error reporting will be disabled. -PLUGIN_SENTRY_ENABLED=false -PLUGIN_SENTRY_DSN= - -# ------------------------------ -# Notion Integration Configuration -# Variables can be obtained by applying for Notion integration: https://www.notion.so/my-integrations -# ------------------------------ - -# Configure as "public" or "internal". -# Since Notion's OAuth redirect URL only supports HTTPS, -# if deploying locally, please use Notion's internal integration. -NOTION_INTEGRATION_TYPE=public -# Notion OAuth client secret (used for public integration type) -NOTION_CLIENT_SECRET= -# Notion OAuth client id (used for public integration type) -NOTION_CLIENT_ID= -# Notion internal integration secret. -# If the value of NOTION_INTEGRATION_TYPE is "internal", -# you need to configure this variable. -NOTION_INTERNAL_SECRET= - -# ------------------------------ -# Mail related configuration -# ------------------------------ - -# Mail type, support: resend, smtp, sendgrid -MAIL_TYPE=resend - -# Default send from email address, if not specified -# If using SendGrid, use the 'from' field for authentication if necessary. -MAIL_DEFAULT_SEND_FROM= - -# API-Key for the Resend email provider, used when MAIL_TYPE is `resend`. -RESEND_API_URL=https://api.resend.com -RESEND_API_KEY=your-resend-api-key - - -# SMTP server configuration, used when MAIL_TYPE is `smtp` -SMTP_SERVER= -SMTP_PORT=465 -SMTP_USERNAME= -SMTP_PASSWORD= -SMTP_USE_TLS=true -SMTP_OPPORTUNISTIC_TLS=false - -# Sendgid configuration -SENDGRID_API_KEY= - -# ------------------------------ -# Others Configuration -# ------------------------------ - -# Maximum length of segmentation tokens for indexing -INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH=4000 - -# Member invitation link valid time (hours), -# Default: 72. -INVITE_EXPIRY_HOURS=72 - -# Reset password token valid time (minutes), -RESET_PASSWORD_TOKEN_EXPIRY_MINUTES=5 -EMAIL_REGISTER_TOKEN_EXPIRY_MINUTES=5 -CHANGE_EMAIL_TOKEN_EXPIRY_MINUTES=5 -OWNER_TRANSFER_TOKEN_EXPIRY_MINUTES=5 - -# The sandbox service endpoint. -CODE_EXECUTION_ENDPOINT=http://sandbox:8194 -CODE_EXECUTION_API_KEY=dify-sandbox -CODE_EXECUTION_SSL_VERIFY=True -CODE_EXECUTION_POOL_MAX_CONNECTIONS=100 -CODE_EXECUTION_POOL_MAX_KEEPALIVE_CONNECTIONS=20 -CODE_EXECUTION_POOL_KEEPALIVE_EXPIRY=5.0 -CODE_MAX_NUMBER=9223372036854775807 -CODE_MIN_NUMBER=-9223372036854775808 -CODE_MAX_DEPTH=5 -CODE_MAX_PRECISION=20 -CODE_MAX_STRING_LENGTH=400000 -CODE_MAX_STRING_ARRAY_LENGTH=30 -CODE_MAX_OBJECT_ARRAY_LENGTH=30 -CODE_MAX_NUMBER_ARRAY_LENGTH=1000 -CODE_EXECUTION_CONNECT_TIMEOUT=10 -CODE_EXECUTION_READ_TIMEOUT=60 -CODE_EXECUTION_WRITE_TIMEOUT=10 -TEMPLATE_TRANSFORM_MAX_LENGTH=400000 - -# Workflow runtime configuration -WORKFLOW_MAX_EXECUTION_STEPS=500 -WORKFLOW_MAX_EXECUTION_TIME=1200 -WORKFLOW_CALL_MAX_DEPTH=5 -MAX_VARIABLE_SIZE=204800 -WORKFLOW_FILE_UPLOAD_LIMIT=10 - -# GraphEngine Worker Pool Configuration -# Minimum number of workers per GraphEngine instance (default: 1) -GRAPH_ENGINE_MIN_WORKERS=1 -# Maximum number of workers per GraphEngine instance (default: 10) -GRAPH_ENGINE_MAX_WORKERS=10 -# Queue depth threshold that triggers worker scale up (default: 3) -GRAPH_ENGINE_SCALE_UP_THRESHOLD=3 -# Seconds of idle time before scaling down workers (default: 5.0) -GRAPH_ENGINE_SCALE_DOWN_IDLE_TIME=5.0 - -# Workflow storage configuration -# Options: rdbms, hybrid -# rdbms: Use only the relational database (default) -# hybrid: Save new data to object storage, read from both object storage and RDBMS -WORKFLOW_NODE_EXECUTION_STORAGE=rdbms - -# Repository configuration -# Core workflow execution repository implementation -# Options: -# - core.repositories.sqlalchemy_workflow_execution_repository.SQLAlchemyWorkflowExecutionRepository (default) -# - core.repositories.celery_workflow_execution_repository.CeleryWorkflowExecutionRepository -CORE_WORKFLOW_EXECUTION_REPOSITORY=core.repositories.sqlalchemy_workflow_execution_repository.SQLAlchemyWorkflowExecutionRepository - -# Core workflow node execution repository implementation -# Options: -# - core.repositories.sqlalchemy_workflow_node_execution_repository.SQLAlchemyWorkflowNodeExecutionRepository (default) -# - core.repositories.celery_workflow_node_execution_repository.CeleryWorkflowNodeExecutionRepository -CORE_WORKFLOW_NODE_EXECUTION_REPOSITORY=core.repositories.sqlalchemy_workflow_node_execution_repository.SQLAlchemyWorkflowNodeExecutionRepository - -# API workflow run repository implementation -API_WORKFLOW_RUN_REPOSITORY=repositories.sqlalchemy_api_workflow_run_repository.DifyAPISQLAlchemyWorkflowRunRepository - -# API workflow node execution repository implementation -API_WORKFLOW_NODE_EXECUTION_REPOSITORY=repositories.sqlalchemy_api_workflow_node_execution_repository.DifyAPISQLAlchemyWorkflowNodeExecutionRepository - -# Workflow log cleanup configuration -# Enable automatic cleanup of workflow run logs to manage database size -WORKFLOW_LOG_CLEANUP_ENABLED=false -# Number of days to retain workflow run logs (default: 30 days) -WORKFLOW_LOG_RETENTION_DAYS=30 -# Batch size for workflow log cleanup operations (default: 100) -WORKFLOW_LOG_CLEANUP_BATCH_SIZE=100 - -# HTTP request node in workflow configuration -HTTP_REQUEST_NODE_MAX_BINARY_SIZE=10485760 -HTTP_REQUEST_NODE_MAX_TEXT_SIZE=1048576 -HTTP_REQUEST_NODE_SSL_VERIFY=True - -# HTTP request node timeout configuration -# Maximum timeout values (in seconds) that users can set in HTTP request nodes -# - Connect timeout: Time to wait for establishing connection (default: 10s) -# - Read timeout: Time to wait for receiving response data (default: 600s, 10 minutes) -# - Write timeout: Time to wait for sending request data (default: 600s, 10 minutes) -HTTP_REQUEST_MAX_CONNECT_TIMEOUT=10 -HTTP_REQUEST_MAX_READ_TIMEOUT=600 -HTTP_REQUEST_MAX_WRITE_TIMEOUT=600 - -# Base64 encoded CA certificate data for custom certificate verification (PEM format, optional) -# HTTP_REQUEST_NODE_SSL_CERT_DATA=LS0tLS1CRUdJTi... -# Base64 encoded client certificate data for mutual TLS authentication (PEM format, optional) -# HTTP_REQUEST_NODE_SSL_CLIENT_CERT_DATA=LS0tLS1CRUdJTi... -# Base64 encoded client private key data for mutual TLS authentication (PEM format, optional) -# HTTP_REQUEST_NODE_SSL_CLIENT_KEY_DATA=LS0tLS1CRUdJTi... - -# Webhook request configuration -WEBHOOK_REQUEST_BODY_MAX_SIZE=10485760 - -# Respect X-* headers to redirect clients -RESPECT_XFORWARD_HEADERS_ENABLED=false - -# SSRF Proxy server HTTP URL -SSRF_PROXY_HTTP_URL=http://ssrf_proxy:3128 -# SSRF Proxy server HTTPS URL -SSRF_PROXY_HTTPS_URL=http://ssrf_proxy:3128 - -# Maximum loop count in the workflow -LOOP_NODE_MAX_COUNT=100 - -# The maximum number of tools that can be used in the agent. -MAX_TOOLS_NUM=10 - -# Maximum number of Parallelism branches in the workflow -MAX_PARALLEL_LIMIT=10 - -# The maximum number of iterations for agent setting -MAX_ITERATIONS_NUM=99 - -# ------------------------------ -# Environment Variables for web Service -# ------------------------------ - -# The timeout for the text generation in millisecond -TEXT_GENERATION_TIMEOUT_MS=60000 - -# Allow rendering unsafe URLs which have "data:" scheme. -ALLOW_UNSAFE_DATA_SCHEME=false - -# Maximum number of tree depth in the workflow -MAX_TREE_DEPTH=50 - -# ------------------------------ -# Environment Variables for database Service -# ------------------------------ -# Postgres data directory -PGDATA=/var/lib/postgresql/data/pgdata - -# MySQL Default Configuration -MYSQL_HOST_VOLUME=./volumes/mysql/data - -# ------------------------------ -# Environment Variables for sandbox Service -# ------------------------------ - -# The API key for the sandbox service -SANDBOX_API_KEY=dify-sandbox -# The mode in which the Gin framework runs -SANDBOX_GIN_MODE=release -# The timeout for the worker in seconds -SANDBOX_WORKER_TIMEOUT=15 -# Enable network for the sandbox service -SANDBOX_ENABLE_NETWORK=true -# HTTP proxy URL for SSRF protection -SANDBOX_HTTP_PROXY=http://ssrf_proxy:3128 -# HTTPS proxy URL for SSRF protection -SANDBOX_HTTPS_PROXY=http://ssrf_proxy:3128 -# The port on which the sandbox service runs -SANDBOX_PORT=8194 - -# ------------------------------ -# Environment Variables for weaviate Service -# (only used when VECTOR_STORE is weaviate) -# ------------------------------ -WEAVIATE_PERSISTENCE_DATA_PATH=/var/lib/weaviate -WEAVIATE_QUERY_DEFAULTS_LIMIT=25 -WEAVIATE_AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=true -WEAVIATE_DEFAULT_VECTORIZER_MODULE=none -WEAVIATE_CLUSTER_HOSTNAME=node1 -WEAVIATE_AUTHENTICATION_APIKEY_ENABLED=true -WEAVIATE_AUTHENTICATION_APIKEY_ALLOWED_KEYS=WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih -WEAVIATE_AUTHENTICATION_APIKEY_USERS=hello@dify.ai -WEAVIATE_AUTHORIZATION_ADMINLIST_ENABLED=true -WEAVIATE_AUTHORIZATION_ADMINLIST_USERS=hello@dify.ai -WEAVIATE_DISABLE_TELEMETRY=false -WEAVIATE_ENABLE_TOKENIZER_GSE=false -WEAVIATE_ENABLE_TOKENIZER_KAGOME_JA=false -WEAVIATE_ENABLE_TOKENIZER_KAGOME_KR=false - -# ------------------------------ -# Environment Variables for Chroma -# (only used when VECTOR_STORE is chroma) -# ------------------------------ - -# Authentication credentials for Chroma server -CHROMA_SERVER_AUTHN_CREDENTIALS=difyai123456 -# Authentication provider for Chroma server -CHROMA_SERVER_AUTHN_PROVIDER=chromadb.auth.token_authn.TokenAuthenticationServerProvider -# Persistence setting for Chroma server -CHROMA_IS_PERSISTENT=TRUE - -# ------------------------------ -# Environment Variables for Oracle Service -# (only used when VECTOR_STORE is oracle) -# ------------------------------ -ORACLE_PWD=Dify123456 -ORACLE_CHARACTERSET=AL32UTF8 - -# ------------------------------ -# Environment Variables for milvus Service -# (only used when VECTOR_STORE is milvus) -# ------------------------------ -# ETCD configuration for auto compaction mode -ETCD_AUTO_COMPACTION_MODE=revision -# ETCD configuration for auto compaction retention in terms of number of revisions -ETCD_AUTO_COMPACTION_RETENTION=1000 -# ETCD configuration for backend quota in bytes -ETCD_QUOTA_BACKEND_BYTES=4294967296 -# ETCD configuration for the number of changes before triggering a snapshot -ETCD_SNAPSHOT_COUNT=50000 -# MinIO access key for authentication -MINIO_ACCESS_KEY=minioadmin -# MinIO secret key for authentication -MINIO_SECRET_KEY=minioadmin -# ETCD service endpoints -ETCD_ENDPOINTS=etcd:2379 -# MinIO service address -MINIO_ADDRESS=minio:9000 -# Enable or disable security authorization -MILVUS_AUTHORIZATION_ENABLED=true - -# ------------------------------ -# Environment Variables for pgvector / pgvector-rs Service -# (only used when VECTOR_STORE is pgvector / pgvector-rs) -# ------------------------------ -PGVECTOR_PGUSER=postgres -# The password for the default postgres user. -PGVECTOR_POSTGRES_PASSWORD=difyai123456 -# The name of the default postgres database. -PGVECTOR_POSTGRES_DB=dify -# postgres data directory -PGVECTOR_PGDATA=/var/lib/postgresql/data/pgdata - -# ------------------------------ -# Environment Variables for opensearch -# (only used when VECTOR_STORE is opensearch) -# ------------------------------ -OPENSEARCH_DISCOVERY_TYPE=single-node -OPENSEARCH_BOOTSTRAP_MEMORY_LOCK=true -OPENSEARCH_JAVA_OPTS_MIN=512m -OPENSEARCH_JAVA_OPTS_MAX=1024m -OPENSEARCH_INITIAL_ADMIN_PASSWORD=Qazwsxedc!@#123 -OPENSEARCH_MEMLOCK_SOFT=-1 -OPENSEARCH_MEMLOCK_HARD=-1 -OPENSEARCH_NOFILE_SOFT=65536 -OPENSEARCH_NOFILE_HARD=65536 - -# ------------------------------ -# Environment Variables for Nginx reverse proxy -# ------------------------------ -NGINX_SERVER_NAME=_ -NGINX_HTTPS_ENABLED=false -# HTTP port -NGINX_PORT=80 -# SSL settings are only applied when HTTPS_ENABLED is true -NGINX_SSL_PORT=443 -# if HTTPS_ENABLED is true, you're required to add your own SSL certificates/keys to the `./nginx/ssl` directory -# and modify the env vars below accordingly. -NGINX_SSL_CERT_FILENAME=dify.crt -NGINX_SSL_CERT_KEY_FILENAME=dify.key -NGINX_SSL_PROTOCOLS=TLSv1.1 TLSv1.2 TLSv1.3 - -# Nginx performance tuning -NGINX_WORKER_PROCESSES=auto -NGINX_CLIENT_MAX_BODY_SIZE=100M -NGINX_KEEPALIVE_TIMEOUT=65 - -# Proxy settings -NGINX_PROXY_READ_TIMEOUT=3600s -NGINX_PROXY_SEND_TIMEOUT=3600s - -# Set true to accept requests for /.well-known/acme-challenge/ -NGINX_ENABLE_CERTBOT_CHALLENGE=false - -# ------------------------------ -# Certbot Configuration -# ------------------------------ - -# Email address (required to get certificates from Let's Encrypt) -CERTBOT_EMAIL=your_email@example.com - -# Domain name -CERTBOT_DOMAIN=your_domain.com - -# certbot command options -# i.e: --force-renewal --dry-run --test-cert --debug -CERTBOT_OPTIONS= - -# ------------------------------ -# Environment Variables for SSRF Proxy -# ------------------------------ -SSRF_HTTP_PORT=3128 -SSRF_COREDUMP_DIR=/var/spool/squid -SSRF_REVERSE_PROXY_PORT=8194 -SSRF_SANDBOX_HOST=sandbox -SSRF_DEFAULT_TIME_OUT=5 -SSRF_DEFAULT_CONNECT_TIME_OUT=5 -SSRF_DEFAULT_READ_TIME_OUT=5 -SSRF_DEFAULT_WRITE_TIME_OUT=5 -SSRF_POOL_MAX_CONNECTIONS=100 -SSRF_POOL_MAX_KEEPALIVE_CONNECTIONS=20 -SSRF_POOL_KEEPALIVE_EXPIRY=5.0 - -# ------------------------------ -# docker env var for specifying vector db and metadata db type at startup -# (based on the vector db and metadata db type, the corresponding docker -# compose profile will be used) -# if you want to use unstructured, add ',unstructured' to the end -# ------------------------------ -COMPOSE_PROFILES=${VECTOR_STORE:-weaviate},${DB_TYPE:-postgresql} - -# ------------------------------ -# Docker Compose Service Expose Host Port Configurations -# ------------------------------ -EXPOSE_NGINX_PORT=80 -EXPOSE_NGINX_SSL_PORT=443 - -# ---------------------------------------------------------------------------- -# ModelProvider & Tool Position Configuration -# Used to specify the model providers and tools that can be used in the app. -# ---------------------------------------------------------------------------- - -# Pin, include, and exclude tools -# Use comma-separated values with no spaces between items. -# Example: POSITION_TOOL_PINS=bing,google -POSITION_TOOL_PINS= -POSITION_TOOL_INCLUDES= -POSITION_TOOL_EXCLUDES= - -# Pin, include, and exclude model providers -# Use comma-separated values with no spaces between items. -# Example: POSITION_PROVIDER_PINS=openai,openllm -POSITION_PROVIDER_PINS= -POSITION_PROVIDER_INCLUDES= -POSITION_PROVIDER_EXCLUDES= - -# CSP https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP -CSP_WHITELIST= - -# Enable or disable create tidb service job -CREATE_TIDB_SERVICE_JOB_ENABLED=false - -# Maximum number of submitted thread count in a ThreadPool for parallel node execution -MAX_SUBMIT_COUNT=100 - -# The maximum number of top-k value for RAG. -TOP_K_MAX_VALUE=10 - -# ------------------------------ -# Plugin Daemon Configuration -# ------------------------------ - -DB_PLUGIN_DATABASE=dify_plugin -EXPOSE_PLUGIN_DAEMON_PORT=5002 -PLUGIN_DAEMON_PORT=5002 -PLUGIN_DAEMON_KEY=lYkiYYT6owG+71oLerGzA7GXCgOT++6ovaezWAjpCjf+Sjc3ZtU+qUEi -PLUGIN_DAEMON_URL=http://plugin_daemon:5002 -PLUGIN_MAX_PACKAGE_SIZE=52428800 -PLUGIN_PPROF_ENABLED=false - -PLUGIN_DEBUGGING_HOST=0.0.0.0 -PLUGIN_DEBUGGING_PORT=5003 -EXPOSE_PLUGIN_DEBUGGING_HOST=localhost -EXPOSE_PLUGIN_DEBUGGING_PORT=5003 - -# If this key is changed, DIFY_INNER_API_KEY in plugin_daemon service must also be updated or agent node will fail. -PLUGIN_DIFY_INNER_API_KEY=QaHbTe77CtuXmsfyhR7+vRjI/+XbV1AaFy691iy+kGDv2Jvy0/eAh8Y1 -PLUGIN_DIFY_INNER_API_URL=http://api:5001 - -ENDPOINT_URL_TEMPLATE=http://localhost/e/{hook_id} - -MARKETPLACE_ENABLED=true -MARKETPLACE_API_URL=https://marketplace.dify.ai - -FORCE_VERIFYING_SIGNATURE=true -ENFORCE_LANGGENIUS_PLUGIN_SIGNATURES=true - -PLUGIN_STDIO_BUFFER_SIZE=1024 -PLUGIN_STDIO_MAX_BUFFER_SIZE=5242880 - -PLUGIN_PYTHON_ENV_INIT_TIMEOUT=120 -PLUGIN_MAX_EXECUTION_TIMEOUT=600 -# PIP_MIRROR_URL=https://pypi.tuna.tsinghua.edu.cn/simple -PIP_MIRROR_URL= - -# https://github.com/langgenius/dify-plugin-daemon/blob/main/.env.example -# Plugin storage type, local aws_s3 tencent_cos azure_blob aliyun_oss volcengine_tos -PLUGIN_STORAGE_TYPE=local -PLUGIN_STORAGE_LOCAL_ROOT=/app/storage -PLUGIN_WORKING_PATH=/app/storage/cwd -PLUGIN_INSTALLED_PATH=plugin -PLUGIN_PACKAGE_CACHE_PATH=plugin_packages -PLUGIN_MEDIA_CACHE_PATH=assets -# Plugin oss bucket -PLUGIN_STORAGE_OSS_BUCKET= -# Plugin oss s3 credentials -PLUGIN_S3_USE_AWS=false -PLUGIN_S3_USE_AWS_MANAGED_IAM=false -PLUGIN_S3_ENDPOINT= -PLUGIN_S3_USE_PATH_STYLE=false -PLUGIN_AWS_ACCESS_KEY= -PLUGIN_AWS_SECRET_KEY= -PLUGIN_AWS_REGION= -# Plugin oss azure blob -PLUGIN_AZURE_BLOB_STORAGE_CONTAINER_NAME= -PLUGIN_AZURE_BLOB_STORAGE_CONNECTION_STRING= -# Plugin oss tencent cos -PLUGIN_TENCENT_COS_SECRET_KEY= -PLUGIN_TENCENT_COS_SECRET_ID= -PLUGIN_TENCENT_COS_REGION= -# Plugin oss aliyun oss -PLUGIN_ALIYUN_OSS_REGION= -PLUGIN_ALIYUN_OSS_ENDPOINT= -PLUGIN_ALIYUN_OSS_ACCESS_KEY_ID= -PLUGIN_ALIYUN_OSS_ACCESS_KEY_SECRET= -PLUGIN_ALIYUN_OSS_AUTH_VERSION=v4 -PLUGIN_ALIYUN_OSS_PATH= -# Plugin oss volcengine tos -PLUGIN_VOLCENGINE_TOS_ENDPOINT= -PLUGIN_VOLCENGINE_TOS_ACCESS_KEY= -PLUGIN_VOLCENGINE_TOS_SECRET_KEY= -PLUGIN_VOLCENGINE_TOS_REGION= - -# ------------------------------ -# OTLP Collector Configuration -# ------------------------------ -ENABLE_OTEL=false -OTLP_TRACE_ENDPOINT= -OTLP_METRIC_ENDPOINT= -OTLP_BASE_ENDPOINT=http://localhost:4318 -OTLP_API_KEY= -OTEL_EXPORTER_OTLP_PROTOCOL= -OTEL_EXPORTER_TYPE=otlp -OTEL_SAMPLING_RATE=0.1 -OTEL_BATCH_EXPORT_SCHEDULE_DELAY=5000 -OTEL_MAX_QUEUE_SIZE=2048 -OTEL_MAX_EXPORT_BATCH_SIZE=512 -OTEL_METRIC_EXPORT_INTERVAL=60000 -OTEL_BATCH_EXPORT_TIMEOUT=10000 -OTEL_METRIC_EXPORT_TIMEOUT=30000 - -# Prevent Clickjacking -ALLOW_EMBED=false - -# Dataset queue monitor configuration -QUEUE_MONITOR_THRESHOLD=200 -# You can configure multiple ones, separated by commas. eg: test1@dify.ai,test2@dify.ai -QUEUE_MONITOR_ALERT_EMAILS= -# Monitor interval in minutes, default is 30 minutes -QUEUE_MONITOR_INTERVAL=30 - -# Swagger UI configuration -SWAGGER_UI_ENABLED=true -SWAGGER_UI_PATH=/swagger-ui.html - -# Whether to encrypt dataset IDs when exporting DSL files (default: true) -# Set to false to export dataset IDs as plain text for easier cross-environment import -DSL_EXPORT_ENCRYPT_DATASET_ID=true - -# Maximum number of segments for dataset segments API (0 for unlimited) -DATASET_MAX_SEGMENTS_PER_REQUEST=0 - -# Celery schedule tasks configuration -ENABLE_CLEAN_EMBEDDING_CACHE_TASK=false -ENABLE_CLEAN_UNUSED_DATASETS_TASK=false -ENABLE_CREATE_TIDB_SERVERLESS_TASK=false -ENABLE_UPDATE_TIDB_SERVERLESS_STATUS_TASK=false -ENABLE_CLEAN_MESSAGES=false -ENABLE_MAIL_CLEAN_DOCUMENT_NOTIFY_TASK=false -ENABLE_DATASETS_QUEUE_MONITOR=false -ENABLE_CHECK_UPGRADABLE_PLUGIN_TASK=true -ENABLE_WORKFLOW_SCHEDULE_POLLER_TASK=true -WORKFLOW_SCHEDULE_POLLER_INTERVAL=1 -WORKFLOW_SCHEDULE_POLLER_BATCH_SIZE=100 -WORKFLOW_SCHEDULE_MAX_DISPATCH_PER_TICK=0 - -# Tenant isolated task queue configuration -TENANT_ISOLATED_TASK_CONCURRENCY=1 - -# The API key of amplitude -AMPLITUDE_API_KEY= diff --git a/docker/dify/README.md b/docker/dify/README.md deleted file mode 100644 index 375570f1..00000000 --- a/docker/dify/README.md +++ /dev/null @@ -1,119 +0,0 @@ -## README for docker Deployment - -Welcome to the new `docker` directory for deploying Dify using Docker Compose. This README outlines the updates, deployment instructions, and migration details for existing users. - -### What's Updated - -- **Certbot Container**: `docker-compose.yaml` now contains `certbot` for managing SSL certificates. This container automatically renews certificates and ensures secure HTTPS connections.\ - For more information, refer `docker/certbot/README.md`. - -- **Persistent Environment Variables**: Environment variables are now managed through a `.env` file, ensuring that your configurations persist across deployments. - - > What is `.env`?

- > The `.env` file is a crucial component in Docker and Docker Compose environments, serving as a centralized configuration file where you can define environment variables that are accessible to the containers at runtime. This file simplifies the management of environment settings across different stages of development, testing, and production, providing consistency and ease of configuration to deployments. - -- **Unified Vector Database Services**: All vector database services are now managed from a single Docker Compose file `docker-compose.yaml`. You can switch between different vector databases by setting the `VECTOR_STORE` environment variable in your `.env` file. - -- **Mandatory .env File**: A `.env` file is now required to run `docker compose up`. This file is crucial for configuring your deployment and for any custom settings to persist through upgrades. - -### How to Deploy Dify with `docker-compose.yaml` - -1. **Prerequisites**: Ensure Docker and Docker Compose are installed on your system. -1. **Environment Setup**: - - Navigate to the `docker` directory. - - Copy the `.env.example` file to a new file named `.env` by running `cp .env.example .env`. - - Customize the `.env` file as needed. Refer to the `.env.example` file for detailed configuration options. -1. **Running the Services**: - - Execute `docker compose up` from the `docker` directory to start the services. - - To specify a vector database, set the `VECTOR_STORE` variable in your `.env` file to your desired vector database service, such as `milvus`, `weaviate`, or `opensearch`. -1. **SSL Certificate Setup**: - - Refer `docker/certbot/README.md` to set up SSL certificates using Certbot. -1. **OpenTelemetry Collector Setup**: - - Change `ENABLE_OTEL` to `true` in `.env`. - - Configure `OTLP_BASE_ENDPOINT` properly. - -### How to Deploy Middleware for Developing Dify - -1. **Middleware Setup**: - - Use the `docker-compose.middleware.yaml` for setting up essential middleware services like databases and caches. - - Navigate to the `docker` directory. - - Ensure the `middleware.env` file is created by running `cp middleware.env.example middleware.env` (refer to the `middleware.env.example` file). -1. **Running Middleware Services**: - - Navigate to the `docker` directory. - - Execute `docker compose --env-file middleware.env -f docker-compose.middleware.yaml -p dify up -d` to start PostgreSQL/MySQL (per `DB_TYPE`) plus the bundled Weaviate instance. - -> Compose automatically loads `COMPOSE_PROFILES=${DB_TYPE:-postgresql},weaviate` from `middleware.env`, so no extra `--profile` flags are needed. Adjust variables in `middleware.env` if you want a different combination of services. - -### Migration for Existing Users - -For users migrating from the `docker-legacy` setup: - -1. **Review Changes**: Familiarize yourself with the new `.env` configuration and Docker Compose setup. -1. **Transfer Customizations**: - - If you have customized configurations such as `docker-compose.yaml`, `ssrf_proxy/squid.conf`, or `nginx/conf.d/default.conf`, you will need to reflect these changes in the `.env` file you create. -1. **Data Migration**: - - Ensure that data from services like databases and caches is backed up and migrated appropriately to the new structure if necessary. - -### Overview of `.env` - -#### Key Modules and Customization - -- **Vector Database Services**: Depending on the type of vector database used (`VECTOR_STORE`), users can set specific endpoints, ports, and authentication details. -- **Storage Services**: Depending on the storage type (`STORAGE_TYPE`), users can configure specific settings for S3, Azure Blob, Google Storage, etc. -- **API and Web Services**: Users can define URLs and other settings that affect how the API and web frontend operate. - -#### Other notable variables - -The `.env.example` file provided in the Docker setup is extensive and covers a wide range of configuration options. It is structured into several sections, each pertaining to different aspects of the application and its services. Here are some of the key sections and variables: - -1. **Common Variables**: - - - `CONSOLE_API_URL`, `SERVICE_API_URL`: URLs for different API services. - - `APP_WEB_URL`: Frontend application URL. - - `FILES_URL`: Base URL for file downloads and previews. - -1. **Server Configuration**: - - - `LOG_LEVEL`, `DEBUG`, `FLASK_DEBUG`: Logging and debug settings. - - `SECRET_KEY`: A key for encrypting session cookies and other sensitive data. - -1. **Database Configuration**: - - - `DB_USERNAME`, `DB_PASSWORD`, `DB_HOST`, `DB_PORT`, `DB_DATABASE`: PostgreSQL database credentials and connection details. - -1. **Redis Configuration**: - - - `REDIS_HOST`, `REDIS_PORT`, `REDIS_PASSWORD`: Redis server connection settings. - -1. **Celery Configuration**: - - - `CELERY_BROKER_URL`: Configuration for Celery message broker. - -1. **Storage Configuration**: - - - `STORAGE_TYPE`, `S3_BUCKET_NAME`, `AZURE_BLOB_ACCOUNT_NAME`: Settings for file storage options like local, S3, Azure Blob, etc. - -1. **Vector Database Configuration**: - - - `VECTOR_STORE`: Type of vector database (e.g., `weaviate`, `milvus`). - - Specific settings for each vector store like `WEAVIATE_ENDPOINT`, `MILVUS_URI`. - -1. **CORS Configuration**: - - - `WEB_API_CORS_ALLOW_ORIGINS`, `CONSOLE_CORS_ALLOW_ORIGINS`: Settings for cross-origin resource sharing. - -1. **OpenTelemetry Configuration**: - - - `ENABLE_OTEL`: Enable OpenTelemetry collector in api. - - `OTLP_BASE_ENDPOINT`: Endpoint for your OTLP exporter. - -1. **Other Service-Specific Environment Variables**: - - - Each service like `nginx`, `redis`, `db`, and vector databases have specific environment variables that are directly referenced in the `docker-compose.yaml`. - -### Additional Information - -- **Continuous Improvement Phase**: We are actively seeking feedback from the community to refine and enhance the deployment process. As more users adopt this new method, we will continue to make improvements based on your experiences and suggestions. -- **Support**: For detailed configuration options and environment variable settings, refer to the `.env.example` file and the Docker Compose configuration files in the `docker` directory. - -This README aims to guide you through the deployment process using the new Docker Compose setup. For any issues or further assistance, please refer to the official documentation or contact support. diff --git a/docker/dify/certbot/README.md b/docker/dify/certbot/README.md deleted file mode 100644 index 62b1eee3..00000000 --- a/docker/dify/certbot/README.md +++ /dev/null @@ -1,76 +0,0 @@ -# Launching new servers with SSL certificates - -## Short description - -docker compose certbot configurations with Backward compatibility (without certbot container).\ -Use `docker compose --profile certbot up` to use this features. - -## The simplest way for launching new servers with SSL certificates - -1. Get letsencrypt certs\ - set `.env` values - ```properties - NGINX_SSL_CERT_FILENAME=fullchain.pem - NGINX_SSL_CERT_KEY_FILENAME=privkey.pem - NGINX_ENABLE_CERTBOT_CHALLENGE=true - CERTBOT_DOMAIN=your_domain.com - CERTBOT_EMAIL=example@your_domain.com - ``` - execute command: - ```shell - docker network prune - docker compose --profile certbot up --force-recreate -d - ``` - then after the containers launched: - ```shell - docker compose exec -it certbot /bin/sh /update-cert.sh - ``` -1. Edit `.env` file and `docker compose --profile certbot up` again.\ - set `.env` value additionally - ```properties - NGINX_HTTPS_ENABLED=true - ``` - execute command: - ```shell - docker compose --profile certbot up -d --no-deps --force-recreate nginx - ``` - Then you can access your serve with HTTPS.\ - [https://your_domain.com](https://your_domain.com) - -## SSL certificates renewal - -For SSL certificates renewal, execute commands below: - -```shell -docker compose exec -it certbot /bin/sh /update-cert.sh -docker compose exec nginx nginx -s reload -``` - -## Options for certbot - -`CERTBOT_OPTIONS` key might be helpful for testing. i.e., - -```properties -CERTBOT_OPTIONS=--dry-run -``` - -To apply changes to `CERTBOT_OPTIONS`, regenerate the certbot container before updating the certificates. - -```shell -docker compose --profile certbot up -d --no-deps --force-recreate certbot -docker compose exec -it certbot /bin/sh /update-cert.sh -``` - -Then, reload the nginx container if necessary. - -```shell -docker compose exec nginx nginx -s reload -``` - -## For legacy servers - -To use cert files dir `nginx/ssl` as before, simply launch containers WITHOUT `--profile certbot` option. - -```shell -docker compose up -d -``` diff --git a/docker/dify/certbot/docker-entrypoint.sh b/docker/dify/certbot/docker-entrypoint.sh deleted file mode 100644 index a70ecd82..00000000 --- a/docker/dify/certbot/docker-entrypoint.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/sh -set -e - -printf '%s\n' "Docker entrypoint script is running" - -printf '%s\n' "\nChecking specific environment variables:" -printf '%s\n' "CERTBOT_EMAIL: ${CERTBOT_EMAIL:-Not set}" -printf '%s\n' "CERTBOT_DOMAIN: ${CERTBOT_DOMAIN:-Not set}" -printf '%s\n' "CERTBOT_OPTIONS: ${CERTBOT_OPTIONS:-Not set}" - -printf '%s\n' "\nChecking mounted directories:" -for dir in "/etc/letsencrypt" "/var/www/html" "/var/log/letsencrypt"; do - if [ -d "$dir" ]; then - printf '%s\n' "$dir exists. Contents:" - ls -la "$dir" - else - printf '%s\n' "$dir does not exist." - fi -done - -printf '%s\n' "\nGenerating update-cert.sh from template" -sed -e "s|\${CERTBOT_EMAIL}|$CERTBOT_EMAIL|g" \ - -e "s|\${CERTBOT_DOMAIN}|$CERTBOT_DOMAIN|g" \ - -e "s|\${CERTBOT_OPTIONS}|$CERTBOT_OPTIONS|g" \ - /update-cert.template.txt > /update-cert.sh - -chmod +x /update-cert.sh - -printf '%s\n' "\nExecuting command:" "$@" -exec "$@" diff --git a/docker/dify/certbot/update-cert.template.txt b/docker/dify/certbot/update-cert.template.txt deleted file mode 100644 index 16786a19..00000000 --- a/docker/dify/certbot/update-cert.template.txt +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash -set -e - -DOMAIN="${CERTBOT_DOMAIN}" -EMAIL="${CERTBOT_EMAIL}" -OPTIONS="${CERTBOT_OPTIONS}" -CERT_NAME="${DOMAIN}" # 証明書名をドメイン名と同じにする - -# Check if the certificate already exists -if [ -f "/etc/letsencrypt/renewal/${CERT_NAME}.conf" ]; then - echo "Certificate exists. Attempting to renew..." - certbot renew --noninteractive --cert-name ${CERT_NAME} --webroot --webroot-path=/var/www/html --email ${EMAIL} --agree-tos --no-eff-email ${OPTIONS} -else - echo "Certificate does not exist. Obtaining a new certificate..." - certbot certonly --noninteractive --webroot --webroot-path=/var/www/html --email ${EMAIL} --agree-tos --no-eff-email -d ${DOMAIN} ${OPTIONS} -fi -echo "Certificate operation successful" -# Note: Nginx reload should be handled outside this container -echo "Please ensure to reload Nginx to apply any certificate changes." diff --git a/docker/dify/couchbase-server/Dockerfile b/docker/dify/couchbase-server/Dockerfile deleted file mode 100644 index 23e487e4..00000000 --- a/docker/dify/couchbase-server/Dockerfile +++ /dev/null @@ -1,4 +0,0 @@ -FROM couchbase/server:latest AS stage_base -# FROM couchbase:latest AS stage_base -COPY init-cbserver.sh /opt/couchbase/init/ -RUN chmod +x /opt/couchbase/init/init-cbserver.sh diff --git a/docker/dify/couchbase-server/init-cbserver.sh b/docker/dify/couchbase-server/init-cbserver.sh deleted file mode 100644 index e19a650f..00000000 --- a/docker/dify/couchbase-server/init-cbserver.sh +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/bash -# used to start couchbase server - can't get around this as docker compose only allows you to start one command - so we have to start couchbase like the standard couchbase Dockerfile would -# https://github.com/couchbase/docker/blob/master/enterprise/couchbase-server/7.2.0/Dockerfile#L88 - -/entrypoint.sh couchbase-server & - -# track if setup is complete so we don't try to setup again -FILE=/opt/couchbase/init/setupComplete.txt - -if ! [ -f "$FILE" ]; then - # used to automatically create the cluster based on environment variables - # https://docs.couchbase.com/server/current/cli/cbcli/couchbase-cli-cluster-init.html - - echo $COUCHBASE_ADMINISTRATOR_USERNAME ":" $COUCHBASE_ADMINISTRATOR_PASSWORD - - sleep 20s - /opt/couchbase/bin/couchbase-cli cluster-init -c 127.0.0.1 \ - --cluster-username $COUCHBASE_ADMINISTRATOR_USERNAME \ - --cluster-password $COUCHBASE_ADMINISTRATOR_PASSWORD \ - --services data,index,query,fts \ - --cluster-ramsize $COUCHBASE_RAM_SIZE \ - --cluster-index-ramsize $COUCHBASE_INDEX_RAM_SIZE \ - --cluster-eventing-ramsize $COUCHBASE_EVENTING_RAM_SIZE \ - --cluster-fts-ramsize $COUCHBASE_FTS_RAM_SIZE \ - --index-storage-setting default - - sleep 2s - - # used to auto create the bucket based on environment variables - # https://docs.couchbase.com/server/current/cli/cbcli/couchbase-cli-bucket-create.html - - /opt/couchbase/bin/couchbase-cli bucket-create -c localhost:8091 \ - --username $COUCHBASE_ADMINISTRATOR_USERNAME \ - --password $COUCHBASE_ADMINISTRATOR_PASSWORD \ - --bucket $COUCHBASE_BUCKET \ - --bucket-ramsize $COUCHBASE_BUCKET_RAMSIZE \ - --bucket-type couchbase - - # create file so we know that the cluster is setup and don't run the setup again - touch $FILE -fi - # docker compose will stop the container from running unless we do this - # known issue and workaround - tail -f /dev/null diff --git a/docker/dify/docker-compose-template.yaml b/docker/dify/docker-compose-template.yaml deleted file mode 100644 index b12d06ca..00000000 --- a/docker/dify/docker-compose-template.yaml +++ /dev/null @@ -1,907 +0,0 @@ -x-shared-env: &shared-api-worker-env -services: - # Init container to fix permissions - init_permissions: - image: busybox:latest - command: - - sh - - -c - - | - FLAG_FILE="/app/api/storage/.init_permissions" - if [ -f "$${FLAG_FILE}" ]; then - echo "Permissions already initialized. Exiting." - exit 0 - fi - echo "Initializing permissions for /app/api/storage" - chown -R 1001:1001 /app/api/storage && touch "$${FLAG_FILE}" - echo "Permissions initialized. Exiting." - volumes: - - ./volumes/app/storage:/app/api/storage - restart: "no" - - # API service - api: - image: langgenius/dify-api:1.11.1 - restart: always - environment: - # Use the shared environment variables. - <<: *shared-api-worker-env - # Startup mode, 'api' starts the API server. - MODE: api - SENTRY_DSN: ${API_SENTRY_DSN:-} - SENTRY_TRACES_SAMPLE_RATE: ${API_SENTRY_TRACES_SAMPLE_RATE:-1.0} - SENTRY_PROFILES_SAMPLE_RATE: ${API_SENTRY_PROFILES_SAMPLE_RATE:-1.0} - PLUGIN_REMOTE_INSTALL_HOST: ${EXPOSE_PLUGIN_DEBUGGING_HOST:-localhost} - PLUGIN_REMOTE_INSTALL_PORT: ${EXPOSE_PLUGIN_DEBUGGING_PORT:-5003} - PLUGIN_MAX_PACKAGE_SIZE: ${PLUGIN_MAX_PACKAGE_SIZE:-52428800} - INNER_API_KEY_FOR_PLUGIN: ${PLUGIN_DIFY_INNER_API_KEY:-QaHbTe77CtuXmsfyhR7+vRjI/+XbV1AaFy691iy+kGDv2Jvy0/eAh8Y1} - depends_on: - init_permissions: - condition: service_completed_successfully - db_postgres: - condition: service_healthy - required: false - db_mysql: - condition: service_healthy - required: false - oceanbase: - condition: service_healthy - required: false - seekdb: - condition: service_healthy - required: false - redis: - condition: service_started - volumes: - # Mount the storage directory to the container, for storing user files. - - ./volumes/app/storage:/app/api/storage - networks: - - ssrf_proxy_network - - default - - # worker service - # The Celery worker for processing all queues (dataset, workflow, mail, etc.) - worker: - image: langgenius/dify-api:1.11.1 - restart: always - environment: - # Use the shared environment variables. - <<: *shared-api-worker-env - # Startup mode, 'worker' starts the Celery worker for processing all queues. - MODE: worker - SENTRY_DSN: ${API_SENTRY_DSN:-} - SENTRY_TRACES_SAMPLE_RATE: ${API_SENTRY_TRACES_SAMPLE_RATE:-1.0} - SENTRY_PROFILES_SAMPLE_RATE: ${API_SENTRY_PROFILES_SAMPLE_RATE:-1.0} - PLUGIN_MAX_PACKAGE_SIZE: ${PLUGIN_MAX_PACKAGE_SIZE:-52428800} - INNER_API_KEY_FOR_PLUGIN: ${PLUGIN_DIFY_INNER_API_KEY:-QaHbTe77CtuXmsfyhR7+vRjI/+XbV1AaFy691iy+kGDv2Jvy0/eAh8Y1} - depends_on: - init_permissions: - condition: service_completed_successfully - db_postgres: - condition: service_healthy - required: false - db_mysql: - condition: service_healthy - required: false - oceanbase: - condition: service_healthy - required: false - seekdb: - condition: service_healthy - required: false - redis: - condition: service_started - volumes: - # Mount the storage directory to the container, for storing user files. - - ./volumes/app/storage:/app/api/storage - networks: - - ssrf_proxy_network - - default - - # worker_beat service - # Celery beat for scheduling periodic tasks. - worker_beat: - image: langgenius/dify-api:1.11.1 - restart: always - environment: - # Use the shared environment variables. - <<: *shared-api-worker-env - # Startup mode, 'worker_beat' starts the Celery beat for scheduling periodic tasks. - MODE: beat - depends_on: - init_permissions: - condition: service_completed_successfully - db_postgres: - condition: service_healthy - required: false - db_mysql: - condition: service_healthy - required: false - oceanbase: - condition: service_healthy - required: false - seekdb: - condition: service_healthy - required: false - redis: - condition: service_started - networks: - - ssrf_proxy_network - - default - - # Frontend web application. - web: - image: langgenius/dify-web:1.11.1 - restart: always - environment: - CONSOLE_API_URL: ${CONSOLE_API_URL:-} - APP_API_URL: ${APP_API_URL:-} - AMPLITUDE_API_KEY: ${AMPLITUDE_API_KEY:-} - NEXT_PUBLIC_COOKIE_DOMAIN: ${NEXT_PUBLIC_COOKIE_DOMAIN:-} - SENTRY_DSN: ${WEB_SENTRY_DSN:-} - NEXT_TELEMETRY_DISABLED: ${NEXT_TELEMETRY_DISABLED:-0} - TEXT_GENERATION_TIMEOUT_MS: ${TEXT_GENERATION_TIMEOUT_MS:-60000} - CSP_WHITELIST: ${CSP_WHITELIST:-} - ALLOW_EMBED: ${ALLOW_EMBED:-false} - ALLOW_UNSAFE_DATA_SCHEME: ${ALLOW_UNSAFE_DATA_SCHEME:-false} - MARKETPLACE_API_URL: ${MARKETPLACE_API_URL:-https://marketplace.dify.ai} - MARKETPLACE_URL: ${MARKETPLACE_URL:-https://marketplace.dify.ai} - TOP_K_MAX_VALUE: ${TOP_K_MAX_VALUE:-} - INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH: ${INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH:-} - PM2_INSTANCES: ${PM2_INSTANCES:-2} - LOOP_NODE_MAX_COUNT: ${LOOP_NODE_MAX_COUNT:-100} - MAX_TOOLS_NUM: ${MAX_TOOLS_NUM:-10} - MAX_PARALLEL_LIMIT: ${MAX_PARALLEL_LIMIT:-10} - MAX_ITERATIONS_NUM: ${MAX_ITERATIONS_NUM:-99} - MAX_TREE_DEPTH: ${MAX_TREE_DEPTH:-50} - ENABLE_WEBSITE_JINAREADER: ${ENABLE_WEBSITE_JINAREADER:-true} - ENABLE_WEBSITE_FIRECRAWL: ${ENABLE_WEBSITE_FIRECRAWL:-true} - ENABLE_WEBSITE_WATERCRAWL: ${ENABLE_WEBSITE_WATERCRAWL:-true} - - # The PostgreSQL database. - db_postgres: - image: postgres:15-alpine - profiles: - - postgresql - restart: always - environment: - POSTGRES_USER: ${DB_USERNAME:-postgres} - POSTGRES_PASSWORD: ${DB_PASSWORD:-difyai123456} - POSTGRES_DB: ${DB_DATABASE:-dify} - PGDATA: ${PGDATA:-/var/lib/postgresql/data/pgdata} - command: > - postgres -c 'max_connections=${POSTGRES_MAX_CONNECTIONS:-100}' - -c 'shared_buffers=${POSTGRES_SHARED_BUFFERS:-128MB}' - -c 'work_mem=${POSTGRES_WORK_MEM:-4MB}' - -c 'maintenance_work_mem=${POSTGRES_MAINTENANCE_WORK_MEM:-64MB}' - -c 'effective_cache_size=${POSTGRES_EFFECTIVE_CACHE_SIZE:-4096MB}' - -c 'statement_timeout=${POSTGRES_STATEMENT_TIMEOUT:-0}' - -c 'idle_in_transaction_session_timeout=${POSTGRES_IDLE_IN_TRANSACTION_SESSION_TIMEOUT:-0}' - volumes: - - ./volumes/db/data:/var/lib/postgresql/data - healthcheck: - test: - [ - "CMD", - "pg_isready", - "-h", - "db_postgres", - "-U", - "${DB_USERNAME:-postgres}", - "-d", - "${DB_DATABASE:-dify}", - ] - interval: 1s - timeout: 3s - retries: 60 - - # The mysql database. - db_mysql: - image: mysql:8.0 - profiles: - - mysql - restart: always - environment: - MYSQL_ROOT_PASSWORD: ${DB_PASSWORD:-difyai123456} - MYSQL_DATABASE: ${DB_DATABASE:-dify} - command: > - --max_connections=1000 - --innodb_buffer_pool_size=${MYSQL_INNODB_BUFFER_POOL_SIZE:-512M} - --innodb_log_file_size=${MYSQL_INNODB_LOG_FILE_SIZE:-128M} - --innodb_flush_log_at_trx_commit=${MYSQL_INNODB_FLUSH_LOG_AT_TRX_COMMIT:-2} - volumes: - - ${MYSQL_HOST_VOLUME:-./volumes/mysql/data}:/var/lib/mysql - healthcheck: - test: - [ - "CMD", - "mysqladmin", - "ping", - "-u", - "root", - "-p${DB_PASSWORD:-difyai123456}", - ] - interval: 1s - timeout: 3s - retries: 30 - - # The redis cache. - redis: - image: redis:6-alpine - restart: always - environment: - REDISCLI_AUTH: ${REDIS_PASSWORD:-difyai123456} - volumes: - # Mount the redis data directory to the container. - - ./volumes/redis/data:/data - # Set the redis password when startup redis server. - command: redis-server --requirepass ${REDIS_PASSWORD:-difyai123456} - healthcheck: - test: - [ - "CMD-SHELL", - "redis-cli -a ${REDIS_PASSWORD:-difyai123456} ping | grep -q PONG", - ] - - # The DifySandbox - sandbox: - image: langgenius/dify-sandbox:0.2.12 - restart: always - environment: - # The DifySandbox configurations - # Make sure you are changing this key for your deployment with a strong key. - # You can generate a strong key using `openssl rand -base64 42`. - API_KEY: ${SANDBOX_API_KEY:-dify-sandbox} - GIN_MODE: ${SANDBOX_GIN_MODE:-release} - WORKER_TIMEOUT: ${SANDBOX_WORKER_TIMEOUT:-15} - ENABLE_NETWORK: ${SANDBOX_ENABLE_NETWORK:-true} - HTTP_PROXY: ${SANDBOX_HTTP_PROXY:-http://ssrf_proxy:3128} - HTTPS_PROXY: ${SANDBOX_HTTPS_PROXY:-http://ssrf_proxy:3128} - SANDBOX_PORT: ${SANDBOX_PORT:-8194} - PIP_MIRROR_URL: ${PIP_MIRROR_URL:-} - volumes: - - ./volumes/sandbox/dependencies:/dependencies - - ./volumes/sandbox/conf:/conf - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8194/health"] - networks: - - ssrf_proxy_network - - # plugin daemon - plugin_daemon: - image: langgenius/dify-plugin-daemon:0.5.1-local - restart: always - environment: - # Use the shared environment variables. - <<: *shared-api-worker-env - DB_DATABASE: ${DB_PLUGIN_DATABASE:-dify_plugin} - SERVER_PORT: ${PLUGIN_DAEMON_PORT:-5002} - SERVER_KEY: ${PLUGIN_DAEMON_KEY:-lYkiYYT6owG+71oLerGzA7GXCgOT++6ovaezWAjpCjf+Sjc3ZtU+qUEi} - MAX_PLUGIN_PACKAGE_SIZE: ${PLUGIN_MAX_PACKAGE_SIZE:-52428800} - PPROF_ENABLED: ${PLUGIN_PPROF_ENABLED:-false} - DIFY_INNER_API_URL: ${PLUGIN_DIFY_INNER_API_URL:-http://api:5001} - DIFY_INNER_API_KEY: ${PLUGIN_DIFY_INNER_API_KEY:-QaHbTe77CtuXmsfyhR7+vRjI/+XbV1AaFy691iy+kGDv2Jvy0/eAh8Y1} - PLUGIN_REMOTE_INSTALLING_HOST: ${PLUGIN_DEBUGGING_HOST:-0.0.0.0} - PLUGIN_REMOTE_INSTALLING_PORT: ${PLUGIN_DEBUGGING_PORT:-5003} - PLUGIN_WORKING_PATH: ${PLUGIN_WORKING_PATH:-/app/storage/cwd} - FORCE_VERIFYING_SIGNATURE: ${FORCE_VERIFYING_SIGNATURE:-true} - PYTHON_ENV_INIT_TIMEOUT: ${PLUGIN_PYTHON_ENV_INIT_TIMEOUT:-120} - PLUGIN_MAX_EXECUTION_TIMEOUT: ${PLUGIN_MAX_EXECUTION_TIMEOUT:-600} - PLUGIN_STDIO_BUFFER_SIZE: ${PLUGIN_STDIO_BUFFER_SIZE:-1024} - PLUGIN_STDIO_MAX_BUFFER_SIZE: ${PLUGIN_STDIO_MAX_BUFFER_SIZE:-5242880} - PIP_MIRROR_URL: ${PIP_MIRROR_URL:-} - PLUGIN_STORAGE_TYPE: ${PLUGIN_STORAGE_TYPE:-local} - PLUGIN_STORAGE_LOCAL_ROOT: ${PLUGIN_STORAGE_LOCAL_ROOT:-/app/storage} - PLUGIN_INSTALLED_PATH: ${PLUGIN_INSTALLED_PATH:-plugin} - PLUGIN_PACKAGE_CACHE_PATH: ${PLUGIN_PACKAGE_CACHE_PATH:-plugin_packages} - PLUGIN_MEDIA_CACHE_PATH: ${PLUGIN_MEDIA_CACHE_PATH:-assets} - PLUGIN_STORAGE_OSS_BUCKET: ${PLUGIN_STORAGE_OSS_BUCKET:-} - S3_USE_AWS_MANAGED_IAM: ${PLUGIN_S3_USE_AWS_MANAGED_IAM:-false} - S3_USE_AWS: ${PLUGIN_S3_USE_AWS:-false} - S3_ENDPOINT: ${PLUGIN_S3_ENDPOINT:-} - S3_USE_PATH_STYLE: ${PLUGIN_S3_USE_PATH_STYLE:-false} - AWS_ACCESS_KEY: ${PLUGIN_AWS_ACCESS_KEY:-} - AWS_SECRET_KEY: ${PLUGIN_AWS_SECRET_KEY:-} - AWS_REGION: ${PLUGIN_AWS_REGION:-} - AZURE_BLOB_STORAGE_CONNECTION_STRING: ${PLUGIN_AZURE_BLOB_STORAGE_CONNECTION_STRING:-} - AZURE_BLOB_STORAGE_CONTAINER_NAME: ${PLUGIN_AZURE_BLOB_STORAGE_CONTAINER_NAME:-} - TENCENT_COS_SECRET_KEY: ${PLUGIN_TENCENT_COS_SECRET_KEY:-} - TENCENT_COS_SECRET_ID: ${PLUGIN_TENCENT_COS_SECRET_ID:-} - TENCENT_COS_REGION: ${PLUGIN_TENCENT_COS_REGION:-} - ALIYUN_OSS_REGION: ${PLUGIN_ALIYUN_OSS_REGION:-} - ALIYUN_OSS_ENDPOINT: ${PLUGIN_ALIYUN_OSS_ENDPOINT:-} - ALIYUN_OSS_ACCESS_KEY_ID: ${PLUGIN_ALIYUN_OSS_ACCESS_KEY_ID:-} - ALIYUN_OSS_ACCESS_KEY_SECRET: ${PLUGIN_ALIYUN_OSS_ACCESS_KEY_SECRET:-} - ALIYUN_OSS_AUTH_VERSION: ${PLUGIN_ALIYUN_OSS_AUTH_VERSION:-v4} - ALIYUN_OSS_PATH: ${PLUGIN_ALIYUN_OSS_PATH:-} - VOLCENGINE_TOS_ENDPOINT: ${PLUGIN_VOLCENGINE_TOS_ENDPOINT:-} - VOLCENGINE_TOS_ACCESS_KEY: ${PLUGIN_VOLCENGINE_TOS_ACCESS_KEY:-} - VOLCENGINE_TOS_SECRET_KEY: ${PLUGIN_VOLCENGINE_TOS_SECRET_KEY:-} - VOLCENGINE_TOS_REGION: ${PLUGIN_VOLCENGINE_TOS_REGION:-} - SENTRY_ENABLED: ${PLUGIN_SENTRY_ENABLED:-false} - SENTRY_DSN: ${PLUGIN_SENTRY_DSN:-} - ports: - - "${EXPOSE_PLUGIN_DEBUGGING_PORT:-5003}:${PLUGIN_DEBUGGING_PORT:-5003}" - volumes: - - ./volumes/plugin_daemon:/app/storage - depends_on: - db_postgres: - condition: service_healthy - required: false - db_mysql: - condition: service_healthy - required: false - oceanbase: - condition: service_healthy - required: false - seekdb: - condition: service_healthy - required: false - - # ssrf_proxy server - # for more information, please refer to - # https://docs.dify.ai/learn-more/faq/install-faq#18-why-is-ssrf-proxy-needed%3F - ssrf_proxy: - image: ubuntu/squid:latest - restart: always - volumes: - - ./ssrf_proxy/squid.conf.template:/etc/squid/squid.conf.template - - ./ssrf_proxy/docker-entrypoint.sh:/docker-entrypoint-mount.sh - entrypoint: - [ - "sh", - "-c", - "cp /docker-entrypoint-mount.sh /docker-entrypoint.sh && sed -i 's/\r$$//' /docker-entrypoint.sh && chmod +x /docker-entrypoint.sh && /docker-entrypoint.sh", - ] - environment: - # pls clearly modify the squid env vars to fit your network environment. - HTTP_PORT: ${SSRF_HTTP_PORT:-3128} - COREDUMP_DIR: ${SSRF_COREDUMP_DIR:-/var/spool/squid} - REVERSE_PROXY_PORT: ${SSRF_REVERSE_PROXY_PORT:-8194} - SANDBOX_HOST: ${SSRF_SANDBOX_HOST:-sandbox} - SANDBOX_PORT: ${SANDBOX_PORT:-8194} - networks: - - ssrf_proxy_network - - default - - # Certbot service - # use `docker-compose --profile certbot up` to start the certbot service. - certbot: - image: certbot/certbot - profiles: - - certbot - volumes: - - ./volumes/certbot/conf:/etc/letsencrypt - - ./volumes/certbot/www:/var/www/html - - ./volumes/certbot/logs:/var/log/letsencrypt - - ./volumes/certbot/conf/live:/etc/letsencrypt/live - - ./certbot/update-cert.template.txt:/update-cert.template.txt - - ./certbot/docker-entrypoint.sh:/docker-entrypoint.sh - environment: - - CERTBOT_EMAIL=${CERTBOT_EMAIL} - - CERTBOT_DOMAIN=${CERTBOT_DOMAIN} - - CERTBOT_OPTIONS=${CERTBOT_OPTIONS:-} - entrypoint: ["/docker-entrypoint.sh"] - command: ["tail", "-f", "/dev/null"] - - # The nginx reverse proxy. - # used for reverse proxying the API service and Web service. - nginx: - image: nginx:latest - restart: always - volumes: - - ./nginx/nginx.conf.template:/etc/nginx/nginx.conf.template - - ./nginx/proxy.conf.template:/etc/nginx/proxy.conf.template - - ./nginx/https.conf.template:/etc/nginx/https.conf.template - - ./nginx/conf.d:/etc/nginx/conf.d - - ./nginx/docker-entrypoint.sh:/docker-entrypoint-mount.sh - - ./nginx/ssl:/etc/ssl # cert dir (legacy) - - ./volumes/certbot/conf/live:/etc/letsencrypt/live # cert dir (with certbot container) - - ./volumes/certbot/conf:/etc/letsencrypt - - ./volumes/certbot/www:/var/www/html - entrypoint: - [ - "sh", - "-c", - "cp /docker-entrypoint-mount.sh /docker-entrypoint.sh && sed -i 's/\r$$//' /docker-entrypoint.sh && chmod +x /docker-entrypoint.sh && /docker-entrypoint.sh", - ] - environment: - NGINX_SERVER_NAME: ${NGINX_SERVER_NAME:-_} - NGINX_HTTPS_ENABLED: ${NGINX_HTTPS_ENABLED:-false} - NGINX_SSL_PORT: ${NGINX_SSL_PORT:-443} - NGINX_PORT: ${NGINX_PORT:-80} - # You're required to add your own SSL certificates/keys to the `./nginx/ssl` directory - # and modify the env vars below in .env if HTTPS_ENABLED is true. - NGINX_SSL_CERT_FILENAME: ${NGINX_SSL_CERT_FILENAME:-dify.crt} - NGINX_SSL_CERT_KEY_FILENAME: ${NGINX_SSL_CERT_KEY_FILENAME:-dify.key} - NGINX_SSL_PROTOCOLS: ${NGINX_SSL_PROTOCOLS:-TLSv1.1 TLSv1.2 TLSv1.3} - NGINX_WORKER_PROCESSES: ${NGINX_WORKER_PROCESSES:-auto} - NGINX_CLIENT_MAX_BODY_SIZE: ${NGINX_CLIENT_MAX_BODY_SIZE:-100M} - NGINX_KEEPALIVE_TIMEOUT: ${NGINX_KEEPALIVE_TIMEOUT:-65} - NGINX_PROXY_READ_TIMEOUT: ${NGINX_PROXY_READ_TIMEOUT:-3600s} - NGINX_PROXY_SEND_TIMEOUT: ${NGINX_PROXY_SEND_TIMEOUT:-3600s} - NGINX_ENABLE_CERTBOT_CHALLENGE: ${NGINX_ENABLE_CERTBOT_CHALLENGE:-false} - CERTBOT_DOMAIN: ${CERTBOT_DOMAIN:-} - depends_on: - - api - - web - ports: - - "${EXPOSE_NGINX_PORT:-80}:${NGINX_PORT:-80}" - - "${EXPOSE_NGINX_SSL_PORT:-443}:${NGINX_SSL_PORT:-443}" - - # The Weaviate vector store. - weaviate: - image: semitechnologies/weaviate:1.27.0 - profiles: - - weaviate - restart: always - volumes: - # Mount the Weaviate data directory to the con tainer. - - ./volumes/weaviate:/var/lib/weaviate - environment: - # The Weaviate configurations - # You can refer to the [Weaviate](https://weaviate.io/developers/weaviate/config-refs/env-vars) documentation for more information. - PERSISTENCE_DATA_PATH: ${WEAVIATE_PERSISTENCE_DATA_PATH:-/var/lib/weaviate} - QUERY_DEFAULTS_LIMIT: ${WEAVIATE_QUERY_DEFAULTS_LIMIT:-25} - AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: ${WEAVIATE_AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED:-false} - DEFAULT_VECTORIZER_MODULE: ${WEAVIATE_DEFAULT_VECTORIZER_MODULE:-none} - CLUSTER_HOSTNAME: ${WEAVIATE_CLUSTER_HOSTNAME:-node1} - AUTHENTICATION_APIKEY_ENABLED: ${WEAVIATE_AUTHENTICATION_APIKEY_ENABLED:-true} - AUTHENTICATION_APIKEY_ALLOWED_KEYS: ${WEAVIATE_AUTHENTICATION_APIKEY_ALLOWED_KEYS:-WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih} - AUTHENTICATION_APIKEY_USERS: ${WEAVIATE_AUTHENTICATION_APIKEY_USERS:-hello@dify.ai} - AUTHORIZATION_ADMINLIST_ENABLED: ${WEAVIATE_AUTHORIZATION_ADMINLIST_ENABLED:-true} - AUTHORIZATION_ADMINLIST_USERS: ${WEAVIATE_AUTHORIZATION_ADMINLIST_USERS:-hello@dify.ai} - DISABLE_TELEMETRY: ${WEAVIATE_DISABLE_TELEMETRY:-false} - ENABLE_TOKENIZER_GSE: ${WEAVIATE_ENABLE_TOKENIZER_GSE:-false} - ENABLE_TOKENIZER_KAGOME_JA: ${WEAVIATE_ENABLE_TOKENIZER_KAGOME_JA:-false} - ENABLE_TOKENIZER_KAGOME_KR: ${WEAVIATE_ENABLE_TOKENIZER_KAGOME_KR:-false} - - # OceanBase vector database - oceanbase: - image: oceanbase/oceanbase-ce:4.3.5-lts - container_name: oceanbase - profiles: - - oceanbase - restart: always - volumes: - - ./volumes/oceanbase/data:/root/ob - - ./volumes/oceanbase/conf:/root/.obd/cluster - - ./volumes/oceanbase/init.d:/root/boot/init.d - environment: - OB_MEMORY_LIMIT: ${OCEANBASE_MEMORY_LIMIT:-6G} - OB_SYS_PASSWORD: ${OCEANBASE_VECTOR_PASSWORD:-difyai123456} - OB_TENANT_PASSWORD: ${OCEANBASE_VECTOR_PASSWORD:-difyai123456} - OB_CLUSTER_NAME: ${OCEANBASE_CLUSTER_NAME:-difyai} - OB_SERVER_IP: 127.0.0.1 - MODE: mini - LANG: en_US.UTF-8 - ports: - - "${OCEANBASE_VECTOR_PORT:-2881}:2881" - healthcheck: - test: - [ - "CMD-SHELL", - 'obclient -h127.0.0.1 -P2881 -uroot@test -p${OCEANBASE_VECTOR_PASSWORD:-difyai123456} -e "SELECT 1;"', - ] - interval: 10s - retries: 30 - start_period: 30s - timeout: 10s - - # seekdb vector database - seekdb: - image: oceanbase/seekdb:latest - container_name: seekdb - profiles: - - seekdb - restart: always - volumes: - - ./volumes/seekdb:/var/lib/oceanbase - environment: - ROOT_PASSWORD: ${OCEANBASE_VECTOR_PASSWORD:-difyai123456} - MEMORY_LIMIT: ${SEEKDB_MEMORY_LIMIT:-2G} - REPORTER: dify-ai-seekdb - ports: - - "${OCEANBASE_VECTOR_PORT:-2881}:2881" - healthcheck: - test: - [ - "CMD-SHELL", - 'mysql -h127.0.0.1 -P2881 -uroot -p${OCEANBASE_VECTOR_PASSWORD:-difyai123456} -e "SELECT 1;"', - ] - interval: 5s - retries: 60 - timeout: 5s - - # Qdrant vector store. - # (if used, you need to set VECTOR_STORE to qdrant in the api & worker service.) - qdrant: - image: langgenius/qdrant:v1.8.3 - profiles: - - qdrant - restart: always - volumes: - - ./volumes/qdrant:/qdrant/storage - environment: - QDRANT_API_KEY: ${QDRANT_API_KEY:-difyai123456} - - # The Couchbase vector store. - couchbase-server: - build: ./couchbase-server - profiles: - - couchbase - restart: always - environment: - - CLUSTER_NAME=dify_search - - COUCHBASE_ADMINISTRATOR_USERNAME=${COUCHBASE_USER:-Administrator} - - COUCHBASE_ADMINISTRATOR_PASSWORD=${COUCHBASE_PASSWORD:-password} - - COUCHBASE_BUCKET=${COUCHBASE_BUCKET_NAME:-Embeddings} - - COUCHBASE_BUCKET_RAMSIZE=512 - - COUCHBASE_RAM_SIZE=2048 - - COUCHBASE_EVENTING_RAM_SIZE=512 - - COUCHBASE_INDEX_RAM_SIZE=512 - - COUCHBASE_FTS_RAM_SIZE=1024 - hostname: couchbase-server - container_name: couchbase-server - working_dir: /opt/couchbase - stdin_open: true - tty: true - entrypoint: [""] - command: sh -c "/opt/couchbase/init/init-cbserver.sh" - volumes: - - ./volumes/couchbase/data:/opt/couchbase/var/lib/couchbase/data - healthcheck: - # ensure bucket was created before proceeding - test: - [ - "CMD-SHELL", - "curl -s -f -u Administrator:password http://localhost:8091/pools/default/buckets | grep -q '\\[{' || exit 1", - ] - interval: 10s - retries: 10 - start_period: 30s - timeout: 10s - - # The pgvector vector database. - pgvector: - image: pgvector/pgvector:pg16 - profiles: - - pgvector - restart: always - environment: - PGUSER: ${PGVECTOR_PGUSER:-postgres} - # The password for the default postgres user. - POSTGRES_PASSWORD: ${PGVECTOR_POSTGRES_PASSWORD:-difyai123456} - # The name of the default postgres database. - POSTGRES_DB: ${PGVECTOR_POSTGRES_DB:-dify} - # postgres data directory - PGDATA: ${PGVECTOR_PGDATA:-/var/lib/postgresql/data/pgdata} - # pg_bigm module for full text search - PG_BIGM: ${PGVECTOR_PG_BIGM:-false} - PG_BIGM_VERSION: ${PGVECTOR_PG_BIGM_VERSION:-1.2-20240606} - volumes: - - ./volumes/pgvector/data:/var/lib/postgresql/data - - ./pgvector/docker-entrypoint.sh:/docker-entrypoint.sh - entrypoint: ["/docker-entrypoint.sh"] - healthcheck: - test: ["CMD", "pg_isready"] - interval: 1s - timeout: 3s - retries: 30 - - # get image from https://www.vastdata.com.cn/ - vastbase: - image: vastdata/vastbase-vector - profiles: - - vastbase - restart: always - environment: - - VB_DBCOMPATIBILITY=PG - - VB_DB=dify - - VB_USERNAME=dify - - VB_PASSWORD=Difyai123456 - ports: - - "5434:5432" - volumes: - - ./vastbase/lic:/home/vastbase/vastbase/lic - - ./vastbase/data:/home/vastbase/data - - ./vastbase/backup:/home/vastbase/backup - - ./vastbase/backup_log:/home/vastbase/backup_log - healthcheck: - test: ["CMD", "pg_isready"] - interval: 1s - timeout: 3s - retries: 30 - - # pgvecto-rs vector store - pgvecto-rs: - image: tensorchord/pgvecto-rs:pg16-v0.3.0 - profiles: - - pgvecto-rs - restart: always - environment: - PGUSER: ${PGVECTOR_PGUSER:-postgres} - # The password for the default postgres user. - POSTGRES_PASSWORD: ${PGVECTOR_POSTGRES_PASSWORD:-difyai123456} - # The name of the default postgres database. - POSTGRES_DB: ${PGVECTOR_POSTGRES_DB:-dify} - # postgres data directory - PGDATA: ${PGVECTOR_PGDATA:-/var/lib/postgresql/data/pgdata} - volumes: - - ./volumes/pgvecto_rs/data:/var/lib/postgresql/data - healthcheck: - test: ["CMD", "pg_isready"] - interval: 1s - timeout: 3s - retries: 30 - - # Chroma vector database - chroma: - image: ghcr.io/chroma-core/chroma:0.5.20 - profiles: - - chroma - restart: always - volumes: - - ./volumes/chroma:/chroma/chroma - environment: - CHROMA_SERVER_AUTHN_CREDENTIALS: ${CHROMA_SERVER_AUTHN_CREDENTIALS:-difyai123456} - CHROMA_SERVER_AUTHN_PROVIDER: ${CHROMA_SERVER_AUTHN_PROVIDER:-chromadb.auth.token_authn.TokenAuthenticationServerProvider} - IS_PERSISTENT: ${CHROMA_IS_PERSISTENT:-TRUE} - - # Oracle vector database - oracle: - image: container-registry.oracle.com/database/free:latest - profiles: - - oracle - restart: always - volumes: - - source: oradata - type: volume - target: /opt/oracle/oradata - - ./startupscripts:/opt/oracle/scripts/startup - environment: - ORACLE_PWD: ${ORACLE_PWD:-Dify123456} - ORACLE_CHARACTERSET: ${ORACLE_CHARACTERSET:-AL32UTF8} - - # Milvus vector database services - etcd: - container_name: milvus-etcd - image: quay.io/coreos/etcd:v3.5.5 - profiles: - - milvus - environment: - ETCD_AUTO_COMPACTION_MODE: ${ETCD_AUTO_COMPACTION_MODE:-revision} - ETCD_AUTO_COMPACTION_RETENTION: ${ETCD_AUTO_COMPACTION_RETENTION:-1000} - ETCD_QUOTA_BACKEND_BYTES: ${ETCD_QUOTA_BACKEND_BYTES:-4294967296} - ETCD_SNAPSHOT_COUNT: ${ETCD_SNAPSHOT_COUNT:-50000} - volumes: - - ./volumes/milvus/etcd:/etcd - command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd - healthcheck: - test: ["CMD", "etcdctl", "endpoint", "health"] - interval: 30s - timeout: 20s - retries: 3 - networks: - - milvus - - minio: - container_name: milvus-minio - image: minio/minio:RELEASE.2023-03-20T20-16-18Z - profiles: - - milvus - environment: - MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY:-minioadmin} - MINIO_SECRET_KEY: ${MINIO_SECRET_KEY:-minioadmin} - volumes: - - ./volumes/milvus/minio:/minio_data - command: minio server /minio_data --console-address ":9001" - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] - interval: 30s - timeout: 20s - retries: 3 - networks: - - milvus - - milvus-standalone: - container_name: milvus-standalone - image: milvusdb/milvus:v2.6.3 - profiles: - - milvus - command: ["milvus", "run", "standalone"] - environment: - ETCD_ENDPOINTS: ${ETCD_ENDPOINTS:-etcd:2379} - MINIO_ADDRESS: ${MINIO_ADDRESS:-minio:9000} - common.security.authorizationEnabled: ${MILVUS_AUTHORIZATION_ENABLED:-true} - volumes: - - ./volumes/milvus/milvus:/var/lib/milvus - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"] - interval: 30s - start_period: 90s - timeout: 20s - retries: 3 - depends_on: - - etcd - - minio - ports: - - 19530:19530 - - 9091:9091 - networks: - - milvus - - # Opensearch vector database - opensearch: - container_name: opensearch - image: opensearchproject/opensearch:latest - profiles: - - opensearch - environment: - discovery.type: ${OPENSEARCH_DISCOVERY_TYPE:-single-node} - bootstrap.memory_lock: ${OPENSEARCH_BOOTSTRAP_MEMORY_LOCK:-true} - OPENSEARCH_JAVA_OPTS: -Xms${OPENSEARCH_JAVA_OPTS_MIN:-512m} -Xmx${OPENSEARCH_JAVA_OPTS_MAX:-1024m} - OPENSEARCH_INITIAL_ADMIN_PASSWORD: ${OPENSEARCH_INITIAL_ADMIN_PASSWORD:-Qazwsxedc!@#123} - ulimits: - memlock: - soft: ${OPENSEARCH_MEMLOCK_SOFT:--1} - hard: ${OPENSEARCH_MEMLOCK_HARD:--1} - nofile: - soft: ${OPENSEARCH_NOFILE_SOFT:-65536} - hard: ${OPENSEARCH_NOFILE_HARD:-65536} - volumes: - - ./volumes/opensearch/data:/usr/share/opensearch/data - networks: - - opensearch-net - - opensearch-dashboards: - container_name: opensearch-dashboards - image: opensearchproject/opensearch-dashboards:latest - profiles: - - opensearch - environment: - OPENSEARCH_HOSTS: '["https://opensearch:9200"]' - volumes: - - ./volumes/opensearch/opensearch_dashboards.yml:/usr/share/opensearch-dashboards/config/opensearch_dashboards.yml - networks: - - opensearch-net - depends_on: - - opensearch - - # opengauss vector database. - opengauss: - image: opengauss/opengauss:7.0.0-RC1 - profiles: - - opengauss - privileged: true - restart: always - environment: - GS_USERNAME: ${OPENGAUSS_USER:-postgres} - GS_PASSWORD: ${OPENGAUSS_PASSWORD:-Dify@123} - GS_PORT: ${OPENGAUSS_PORT:-6600} - GS_DB: ${OPENGAUSS_DATABASE:-dify} - volumes: - - ./volumes/opengauss/data:/var/lib/opengauss/data - healthcheck: - test: ["CMD-SHELL", "netstat -lntp | grep tcp6 > /dev/null 2>&1"] - interval: 10s - timeout: 10s - retries: 10 - ports: - - ${OPENGAUSS_PORT:-6600}:${OPENGAUSS_PORT:-6600} - - # MyScale vector database - myscale: - container_name: myscale - image: myscale/myscaledb:1.6.4 - profiles: - - myscale - restart: always - tty: true - volumes: - - ./volumes/myscale/data:/var/lib/clickhouse - - ./volumes/myscale/log:/var/log/clickhouse-server - - ./volumes/myscale/config/users.d/custom_users_config.xml:/etc/clickhouse-server/users.d/custom_users_config.xml - ports: - - ${MYSCALE_PORT:-8123}:${MYSCALE_PORT:-8123} - - # Matrixone vector store. - matrixone: - hostname: matrixone - image: matrixorigin/matrixone:2.1.1 - profiles: - - matrixone - restart: always - volumes: - - ./volumes/matrixone/data:/mo-data - ports: - - ${MATRIXONE_PORT:-6001}:${MATRIXONE_PORT:-6001} - - # https://www.elastic.co/guide/en/elasticsearch/reference/current/settings.html - # https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html#docker-prod-prerequisites - elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:8.14.3 - container_name: elasticsearch - profiles: - - elasticsearch - - elasticsearch-ja - restart: always - volumes: - - ./elasticsearch/docker-entrypoint.sh:/docker-entrypoint-mount.sh - - dify_es01_data:/usr/share/elasticsearch/data - environment: - ELASTIC_PASSWORD: ${ELASTICSEARCH_PASSWORD:-elastic} - VECTOR_STORE: ${VECTOR_STORE:-} - cluster.name: dify-es-cluster - node.name: dify-es0 - discovery.type: single-node - xpack.license.self_generated.type: basic - xpack.security.enabled: "true" - xpack.security.enrollment.enabled: "false" - xpack.security.http.ssl.enabled: "false" - ports: - - ${ELASTICSEARCH_PORT:-9200}:9200 - deploy: - resources: - limits: - memory: 2g - entrypoint: ["sh", "-c", "sh /docker-entrypoint-mount.sh"] - healthcheck: - test: - ["CMD", "curl", "-s", "http://localhost:9200/_cluster/health?pretty"] - interval: 30s - timeout: 10s - retries: 50 - - # https://www.elastic.co/guide/en/kibana/current/docker.html - # https://www.elastic.co/guide/en/kibana/current/settings.html - kibana: - image: docker.elastic.co/kibana/kibana:8.14.3 - container_name: kibana - profiles: - - elasticsearch - depends_on: - - elasticsearch - restart: always - environment: - XPACK_ENCRYPTEDSAVEDOBJECTS_ENCRYPTIONKEY: d1a66dfd-c4d3-4a0a-8290-2abcb83ab3aa - NO_PROXY: localhost,127.0.0.1,elasticsearch,kibana - XPACK_SECURITY_ENABLED: "true" - XPACK_SECURITY_ENROLLMENT_ENABLED: "false" - XPACK_SECURITY_HTTP_SSL_ENABLED: "false" - XPACK_FLEET_ISAIRGAPPED: "true" - I18N_LOCALE: zh-CN - SERVER_PORT: "5601" - ELASTICSEARCH_HOSTS: http://elasticsearch:9200 - ports: - - ${KIBANA_PORT:-5601}:5601 - healthcheck: - test: ["CMD-SHELL", "curl -s http://localhost:5601 >/dev/null || exit 1"] - interval: 30s - timeout: 10s - retries: 3 - - # unstructured . - # (if used, you need to set ETL_TYPE to Unstructured in the api & worker service.) - unstructured: - image: downloads.unstructured.io/unstructured-io/unstructured-api:latest - profiles: - - unstructured - restart: always - volumes: - - ./volumes/unstructured:/app/data - -networks: - # create a network between sandbox, api and ssrf_proxy, and can not access outside. - ssrf_proxy_network: - driver: bridge - internal: true - milvus: - driver: bridge - opensearch-net: - driver: bridge - internal: true - -volumes: - oradata: - dify_es01_data: diff --git a/docker/dify/docker-compose.middleware.yaml b/docker/dify/docker-compose.middleware.yaml deleted file mode 100644 index 68ef217b..00000000 --- a/docker/dify/docker-compose.middleware.yaml +++ /dev/null @@ -1,250 +0,0 @@ -services: - # The postgres database. - db_postgres: - image: postgres:15-alpine - profiles: - - "" - - postgresql - restart: always - env_file: - - ./middleware.env - environment: - POSTGRES_PASSWORD: ${DB_PASSWORD:-difyai123456} - POSTGRES_DB: ${DB_DATABASE:-dify} - PGDATA: ${PGDATA:-/var/lib/postgresql/data/pgdata} - command: > - postgres -c 'max_connections=${POSTGRES_MAX_CONNECTIONS:-100}' - -c 'shared_buffers=${POSTGRES_SHARED_BUFFERS:-128MB}' - -c 'work_mem=${POSTGRES_WORK_MEM:-4MB}' - -c 'maintenance_work_mem=${POSTGRES_MAINTENANCE_WORK_MEM:-64MB}' - -c 'effective_cache_size=${POSTGRES_EFFECTIVE_CACHE_SIZE:-4096MB}' - -c 'statement_timeout=${POSTGRES_STATEMENT_TIMEOUT:-0}' - -c 'idle_in_transaction_session_timeout=${POSTGRES_IDLE_IN_TRANSACTION_SESSION_TIMEOUT:-0}' - volumes: - - ${PGDATA_HOST_VOLUME:-./volumes/db/data}:/var/lib/postgresql/data - ports: - - "${EXPOSE_POSTGRES_PORT:-5432}:5432" - healthcheck: - test: - [ - "CMD", - "pg_isready", - "-h", - "db_postgres", - "-U", - "${DB_USERNAME:-postgres}", - "-d", - "${DB_DATABASE:-dify}", - ] - interval: 1s - timeout: 3s - retries: 30 - - db_mysql: - image: mysql:8.0 - profiles: - - mysql - restart: always - env_file: - - ./middleware.env - environment: - MYSQL_ROOT_PASSWORD: ${DB_PASSWORD:-difyai123456} - MYSQL_DATABASE: ${DB_DATABASE:-dify} - command: > - --max_connections=1000 - --innodb_buffer_pool_size=${MYSQL_INNODB_BUFFER_POOL_SIZE:-512M} - --innodb_log_file_size=${MYSQL_INNODB_LOG_FILE_SIZE:-128M} - --innodb_flush_log_at_trx_commit=${MYSQL_INNODB_FLUSH_LOG_AT_TRX_COMMIT:-2} - volumes: - - ${MYSQL_HOST_VOLUME:-./volumes/mysql/data}:/var/lib/mysql - ports: - - "${EXPOSE_MYSQL_PORT:-3306}:3306" - healthcheck: - test: - [ - "CMD", - "mysqladmin", - "ping", - "-u", - "root", - "-p${DB_PASSWORD:-difyai123456}", - ] - interval: 1s - timeout: 3s - retries: 30 - - # The redis cache. - redis: - image: redis:6-alpine - restart: always - env_file: - - ./middleware.env - environment: - REDISCLI_AUTH: ${REDIS_PASSWORD:-difyai123456} - volumes: - # Mount the redis data directory to the container. - - ${REDIS_HOST_VOLUME:-./volumes/redis/data}:/data - # Set the redis password when startup redis server. - command: redis-server --requirepass ${REDIS_PASSWORD:-difyai123456} - ports: - - "${EXPOSE_REDIS_PORT:-6379}:6379" - healthcheck: - test: - [ - "CMD-SHELL", - "redis-cli -a ${REDIS_PASSWORD:-difyai123456} ping | grep -q PONG", - ] - - # The DifySandbox - sandbox: - image: langgenius/dify-sandbox:0.2.12 - restart: always - env_file: - - ./middleware.env - environment: - # The DifySandbox configurations - # Make sure you are changing this key for your deployment with a strong key. - # You can generate a strong key using `openssl rand -base64 42`. - API_KEY: ${SANDBOX_API_KEY:-dify-sandbox} - GIN_MODE: ${SANDBOX_GIN_MODE:-release} - WORKER_TIMEOUT: ${SANDBOX_WORKER_TIMEOUT:-15} - ENABLE_NETWORK: ${SANDBOX_ENABLE_NETWORK:-true} - HTTP_PROXY: ${SANDBOX_HTTP_PROXY:-http://ssrf_proxy:3128} - HTTPS_PROXY: ${SANDBOX_HTTPS_PROXY:-http://ssrf_proxy:3128} - SANDBOX_PORT: ${SANDBOX_PORT:-8194} - PIP_MIRROR_URL: ${PIP_MIRROR_URL:-} - volumes: - - ./volumes/sandbox/dependencies:/dependencies - - ./volumes/sandbox/conf:/conf - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8194/health"] - networks: - - ssrf_proxy_network - - # plugin daemon - plugin_daemon: - image: langgenius/dify-plugin-daemon:0.5.1-local - restart: always - env_file: - - ./middleware.env - environment: - # Use the shared environment variables. - DB_DATABASE: ${DB_PLUGIN_DATABASE:-dify_plugin} - REDIS_HOST: ${REDIS_HOST:-redis} - REDIS_PORT: ${REDIS_PORT:-6379} - REDIS_PASSWORD: ${REDIS_PASSWORD:-difyai123456} - SERVER_PORT: ${PLUGIN_DAEMON_PORT:-5002} - SERVER_KEY: ${PLUGIN_DAEMON_KEY:-lYkiYYT6owG+71oLerGzA7GXCgOT++6ovaezWAjpCjf+Sjc3ZtU+qUEi} - MAX_PLUGIN_PACKAGE_SIZE: ${PLUGIN_MAX_PACKAGE_SIZE:-52428800} - PPROF_ENABLED: ${PLUGIN_PPROF_ENABLED:-false} - DIFY_INNER_API_URL: ${PLUGIN_DIFY_INNER_API_URL:-http://host.docker.internal:5001} - DIFY_INNER_API_KEY: ${PLUGIN_DIFY_INNER_API_KEY:-QaHbTe77CtuXmsfyhR7+vRjI/+XbV1AaFy691iy+kGDv2Jvy0/eAh8Y1} - PLUGIN_REMOTE_INSTALLING_HOST: ${PLUGIN_DEBUGGING_HOST:-0.0.0.0} - PLUGIN_REMOTE_INSTALLING_PORT: ${PLUGIN_DEBUGGING_PORT:-5003} - PLUGIN_WORKING_PATH: ${PLUGIN_WORKING_PATH:-/app/storage/cwd} - PYTHON_ENV_INIT_TIMEOUT: ${PLUGIN_PYTHON_ENV_INIT_TIMEOUT:-120} - PLUGIN_MAX_EXECUTION_TIMEOUT: ${PLUGIN_MAX_EXECUTION_TIMEOUT:-600} - PIP_MIRROR_URL: ${PIP_MIRROR_URL:-} - PLUGIN_STORAGE_TYPE: ${PLUGIN_STORAGE_TYPE:-local} - PLUGIN_STORAGE_LOCAL_ROOT: ${PLUGIN_STORAGE_LOCAL_ROOT:-/app/storage} - PLUGIN_INSTALLED_PATH: ${PLUGIN_INSTALLED_PATH:-plugin} - PLUGIN_PACKAGE_CACHE_PATH: ${PLUGIN_PACKAGE_CACHE_PATH:-plugin_packages} - PLUGIN_MEDIA_CACHE_PATH: ${PLUGIN_MEDIA_CACHE_PATH:-assets} - PLUGIN_STORAGE_OSS_BUCKET: ${PLUGIN_STORAGE_OSS_BUCKET:-} - S3_USE_AWS: ${PLUGIN_S3_USE_AWS:-false} - S3_USE_AWS_MANAGED_IAM: ${PLUGIN_S3_USE_AWS_MANAGED_IAM:-false} - S3_ENDPOINT: ${PLUGIN_S3_ENDPOINT:-} - S3_USE_PATH_STYLE: ${PLUGIN_S3_USE_PATH_STYLE:-false} - AWS_ACCESS_KEY: ${PLUGIN_AWS_ACCESS_KEY:-} - AWS_SECRET_KEY: ${PLUGIN_AWS_SECRET_KEY:-} - AWS_REGION: ${PLUGIN_AWS_REGION:-} - AZURE_BLOB_STORAGE_CONNECTION_STRING: ${PLUGIN_AZURE_BLOB_STORAGE_CONNECTION_STRING:-} - AZURE_BLOB_STORAGE_CONTAINER_NAME: ${PLUGIN_AZURE_BLOB_STORAGE_CONTAINER_NAME:-} - TENCENT_COS_SECRET_KEY: ${PLUGIN_TENCENT_COS_SECRET_KEY:-} - TENCENT_COS_SECRET_ID: ${PLUGIN_TENCENT_COS_SECRET_ID:-} - TENCENT_COS_REGION: ${PLUGIN_TENCENT_COS_REGION:-} - ALIYUN_OSS_REGION: ${PLUGIN_ALIYUN_OSS_REGION:-} - ALIYUN_OSS_ENDPOINT: ${PLUGIN_ALIYUN_OSS_ENDPOINT:-} - ALIYUN_OSS_ACCESS_KEY_ID: ${PLUGIN_ALIYUN_OSS_ACCESS_KEY_ID:-} - ALIYUN_OSS_ACCESS_KEY_SECRET: ${PLUGIN_ALIYUN_OSS_ACCESS_KEY_SECRET:-} - ALIYUN_OSS_AUTH_VERSION: ${PLUGIN_ALIYUN_OSS_AUTH_VERSION:-v4} - ALIYUN_OSS_PATH: ${PLUGIN_ALIYUN_OSS_PATH:-} - VOLCENGINE_TOS_ENDPOINT: ${PLUGIN_VOLCENGINE_TOS_ENDPOINT:-} - VOLCENGINE_TOS_ACCESS_KEY: ${PLUGIN_VOLCENGINE_TOS_ACCESS_KEY:-} - VOLCENGINE_TOS_SECRET_KEY: ${PLUGIN_VOLCENGINE_TOS_SECRET_KEY:-} - VOLCENGINE_TOS_REGION: ${PLUGIN_VOLCENGINE_TOS_REGION:-} - THIRD_PARTY_SIGNATURE_VERIFICATION_ENABLED: true - THIRD_PARTY_SIGNATURE_VERIFICATION_PUBLIC_KEYS: /app/keys/publickey.pem - FORCE_VERIFYING_SIGNATURE: false - ports: - - "${EXPOSE_PLUGIN_DAEMON_PORT:-5002}:${PLUGIN_DAEMON_PORT:-5002}" - - "${EXPOSE_PLUGIN_DEBUGGING_PORT:-5003}:${PLUGIN_DEBUGGING_PORT:-5003}" - volumes: - - ./volumes/plugin_daemon:/app/storage - - # ssrf_proxy server - # for more information, please refer to - # https://docs.dify.ai/learn-more/faq/install-faq#18-why-is-ssrf-proxy-needed%3F - ssrf_proxy: - image: ubuntu/squid:latest - restart: always - volumes: - - ./ssrf_proxy/squid.conf.template:/etc/squid/squid.conf.template - - ./ssrf_proxy/docker-entrypoint.sh:/docker-entrypoint-mount.sh - entrypoint: - [ - "sh", - "-c", - "cp /docker-entrypoint-mount.sh /docker-entrypoint.sh && sed -i 's/\r$$//' /docker-entrypoint.sh && chmod +x /docker-entrypoint.sh && /docker-entrypoint.sh", - ] - env_file: - - ./middleware.env - environment: - # pls clearly modify the squid env vars to fit your network environment. - HTTP_PORT: ${SSRF_HTTP_PORT:-3128} - COREDUMP_DIR: ${SSRF_COREDUMP_DIR:-/var/spool/squid} - REVERSE_PROXY_PORT: ${SSRF_REVERSE_PROXY_PORT:-8194} - SANDBOX_HOST: ${SSRF_SANDBOX_HOST:-sandbox} - SANDBOX_PORT: ${SANDBOX_PORT:-8194} - ports: - - "${EXPOSE_SSRF_PROXY_PORT:-3128}:${SSRF_HTTP_PORT:-3128}" - - "${EXPOSE_SANDBOX_PORT:-8194}:${SANDBOX_PORT:-8194}" - networks: - - ssrf_proxy_network - - default - - # The Weaviate vector store. - weaviate: - image: semitechnologies/weaviate:1.27.0 - profiles: - - "" - - weaviate - restart: always - volumes: - # Mount the Weaviate data directory to the container. - - ${WEAVIATE_HOST_VOLUME:-./volumes/weaviate}:/var/lib/weaviate - env_file: - - ./middleware.env - environment: - # The Weaviate configurations - # You can refer to the [Weaviate](https://weaviate.io/developers/weaviate/config-refs/env-vars) documentation for more information. - PERSISTENCE_DATA_PATH: ${WEAVIATE_PERSISTENCE_DATA_PATH:-/var/lib/weaviate} - QUERY_DEFAULTS_LIMIT: ${WEAVIATE_QUERY_DEFAULTS_LIMIT:-25} - AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: ${WEAVIATE_AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED:-false} - DEFAULT_VECTORIZER_MODULE: ${WEAVIATE_DEFAULT_VECTORIZER_MODULE:-none} - CLUSTER_HOSTNAME: ${WEAVIATE_CLUSTER_HOSTNAME:-node1} - AUTHENTICATION_APIKEY_ENABLED: ${WEAVIATE_AUTHENTICATION_APIKEY_ENABLED:-true} - AUTHENTICATION_APIKEY_ALLOWED_KEYS: ${WEAVIATE_AUTHENTICATION_APIKEY_ALLOWED_KEYS:-WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih} - AUTHENTICATION_APIKEY_USERS: ${WEAVIATE_AUTHENTICATION_APIKEY_USERS:-hello@dify.ai} - AUTHORIZATION_ADMINLIST_ENABLED: ${WEAVIATE_AUTHORIZATION_ADMINLIST_ENABLED:-true} - AUTHORIZATION_ADMINLIST_USERS: ${WEAVIATE_AUTHORIZATION_ADMINLIST_USERS:-hello@dify.ai} - DISABLE_TELEMETRY: ${WEAVIATE_DISABLE_TELEMETRY:-false} - ports: - - "${EXPOSE_WEAVIATE_PORT:-8080}:8080" - - "${EXPOSE_WEAVIATE_GRPC_PORT:-50051}:50051" - -networks: - # create a network between sandbox, api and ssrf_proxy, and can not access outside. - ssrf_proxy_network: - driver: bridge - internal: true diff --git a/docker/dify/docker-compose.png b/docker/dify/docker-compose.png deleted file mode 100644 index 015d4502..00000000 Binary files a/docker/dify/docker-compose.png and /dev/null differ diff --git a/docker/dify/docker-compose.yaml b/docker/dify/docker-compose.yaml deleted file mode 100644 index 45941461..00000000 --- a/docker/dify/docker-compose.yaml +++ /dev/null @@ -1,1551 +0,0 @@ -# ================================================================== -# WARNING: This file is auto-generated by generate_docker_compose -# Do not modify this file directly. Instead, update the .env.example -# or docker-compose-template.yaml and regenerate this file. -# ================================================================== - -x-shared-env: &shared-api-worker-env - CONSOLE_API_URL: ${CONSOLE_API_URL:-} - CONSOLE_WEB_URL: ${CONSOLE_WEB_URL:-} - SERVICE_API_URL: ${SERVICE_API_URL:-} - TRIGGER_URL: ${TRIGGER_URL:-http://localhost} - APP_API_URL: ${APP_API_URL:-} - APP_WEB_URL: ${APP_WEB_URL:-} - FILES_URL: ${FILES_URL:-} - INTERNAL_FILES_URL: ${INTERNAL_FILES_URL:-} - LANG: ${LANG:-en_US.UTF-8} - LC_ALL: ${LC_ALL:-en_US.UTF-8} - PYTHONIOENCODING: ${PYTHONIOENCODING:-utf-8} - LOG_LEVEL: ${LOG_LEVEL:-INFO} - LOG_FILE: ${LOG_FILE:-/app/logs/server.log} - LOG_FILE_MAX_SIZE: ${LOG_FILE_MAX_SIZE:-20} - LOG_FILE_BACKUP_COUNT: ${LOG_FILE_BACKUP_COUNT:-5} - LOG_DATEFORMAT: ${LOG_DATEFORMAT:-%Y-%m-%d %H:%M:%S} - LOG_TZ: ${LOG_TZ:-UTC} - DEBUG: ${DEBUG:-false} - FLASK_DEBUG: ${FLASK_DEBUG:-false} - ENABLE_REQUEST_LOGGING: ${ENABLE_REQUEST_LOGGING:-False} - SECRET_KEY: ${SECRET_KEY:-sk-9f73s3ljTXVcMT3Blb3ljTqtsKiGHXVcMT3BlbkFJLK7U} - INIT_PASSWORD: ${INIT_PASSWORD:-} - DEPLOY_ENV: ${DEPLOY_ENV:-PRODUCTION} - CHECK_UPDATE_URL: ${CHECK_UPDATE_URL:-https://updates.dify.ai} - OPENAI_API_BASE: ${OPENAI_API_BASE:-https://api.openai.com/v1} - MIGRATION_ENABLED: ${MIGRATION_ENABLED:-true} - FILES_ACCESS_TIMEOUT: ${FILES_ACCESS_TIMEOUT:-300} - ACCESS_TOKEN_EXPIRE_MINUTES: ${ACCESS_TOKEN_EXPIRE_MINUTES:-60} - REFRESH_TOKEN_EXPIRE_DAYS: ${REFRESH_TOKEN_EXPIRE_DAYS:-30} - APP_DEFAULT_ACTIVE_REQUESTS: ${APP_DEFAULT_ACTIVE_REQUESTS:-0} - APP_MAX_ACTIVE_REQUESTS: ${APP_MAX_ACTIVE_REQUESTS:-0} - APP_MAX_EXECUTION_TIME: ${APP_MAX_EXECUTION_TIME:-1200} - DIFY_BIND_ADDRESS: ${DIFY_BIND_ADDRESS:-0.0.0.0} - DIFY_PORT: ${DIFY_PORT:-5001} - SERVER_WORKER_AMOUNT: ${SERVER_WORKER_AMOUNT:-1} - SERVER_WORKER_CLASS: ${SERVER_WORKER_CLASS:-gevent} - SERVER_WORKER_CONNECTIONS: ${SERVER_WORKER_CONNECTIONS:-10} - CELERY_WORKER_CLASS: ${CELERY_WORKER_CLASS:-} - GUNICORN_TIMEOUT: ${GUNICORN_TIMEOUT:-360} - CELERY_WORKER_AMOUNT: ${CELERY_WORKER_AMOUNT:-} - CELERY_AUTO_SCALE: ${CELERY_AUTO_SCALE:-false} - CELERY_MAX_WORKERS: ${CELERY_MAX_WORKERS:-} - CELERY_MIN_WORKERS: ${CELERY_MIN_WORKERS:-} - API_TOOL_DEFAULT_CONNECT_TIMEOUT: ${API_TOOL_DEFAULT_CONNECT_TIMEOUT:-10} - API_TOOL_DEFAULT_READ_TIMEOUT: ${API_TOOL_DEFAULT_READ_TIMEOUT:-60} - ENABLE_WEBSITE_JINAREADER: ${ENABLE_WEBSITE_JINAREADER:-true} - ENABLE_WEBSITE_FIRECRAWL: ${ENABLE_WEBSITE_FIRECRAWL:-true} - ENABLE_WEBSITE_WATERCRAWL: ${ENABLE_WEBSITE_WATERCRAWL:-true} - NEXT_PUBLIC_ENABLE_SINGLE_DOLLAR_LATEX: ${NEXT_PUBLIC_ENABLE_SINGLE_DOLLAR_LATEX:-false} - DB_TYPE: ${DB_TYPE:-postgresql} - DB_USERNAME: ${DB_USERNAME:-postgres} - DB_PASSWORD: ${DB_PASSWORD:-difyai123456} - DB_HOST: ${DB_HOST:-db_postgres} - DB_PORT: ${DB_PORT:-5432} - DB_DATABASE: ${DB_DATABASE:-dify} - SQLALCHEMY_POOL_SIZE: ${SQLALCHEMY_POOL_SIZE:-30} - SQLALCHEMY_MAX_OVERFLOW: ${SQLALCHEMY_MAX_OVERFLOW:-10} - SQLALCHEMY_POOL_RECYCLE: ${SQLALCHEMY_POOL_RECYCLE:-3600} - SQLALCHEMY_ECHO: ${SQLALCHEMY_ECHO:-false} - SQLALCHEMY_POOL_PRE_PING: ${SQLALCHEMY_POOL_PRE_PING:-false} - SQLALCHEMY_POOL_USE_LIFO: ${SQLALCHEMY_POOL_USE_LIFO:-false} - SQLALCHEMY_POOL_TIMEOUT: ${SQLALCHEMY_POOL_TIMEOUT:-30} - POSTGRES_MAX_CONNECTIONS: ${POSTGRES_MAX_CONNECTIONS:-100} - POSTGRES_SHARED_BUFFERS: ${POSTGRES_SHARED_BUFFERS:-128MB} - POSTGRES_WORK_MEM: ${POSTGRES_WORK_MEM:-4MB} - POSTGRES_MAINTENANCE_WORK_MEM: ${POSTGRES_MAINTENANCE_WORK_MEM:-64MB} - POSTGRES_EFFECTIVE_CACHE_SIZE: ${POSTGRES_EFFECTIVE_CACHE_SIZE:-4096MB} - POSTGRES_STATEMENT_TIMEOUT: ${POSTGRES_STATEMENT_TIMEOUT:-0} - POSTGRES_IDLE_IN_TRANSACTION_SESSION_TIMEOUT: ${POSTGRES_IDLE_IN_TRANSACTION_SESSION_TIMEOUT:-0} - MYSQL_MAX_CONNECTIONS: ${MYSQL_MAX_CONNECTIONS:-1000} - MYSQL_INNODB_BUFFER_POOL_SIZE: ${MYSQL_INNODB_BUFFER_POOL_SIZE:-512M} - MYSQL_INNODB_LOG_FILE_SIZE: ${MYSQL_INNODB_LOG_FILE_SIZE:-128M} - MYSQL_INNODB_FLUSH_LOG_AT_TRX_COMMIT: ${MYSQL_INNODB_FLUSH_LOG_AT_TRX_COMMIT:-2} - REDIS_HOST: ${REDIS_HOST:-redis} - REDIS_PORT: ${REDIS_PORT:-6379} - REDIS_USERNAME: ${REDIS_USERNAME:-} - REDIS_PASSWORD: ${REDIS_PASSWORD:-difyai123456} - REDIS_USE_SSL: ${REDIS_USE_SSL:-false} - REDIS_SSL_CERT_REQS: ${REDIS_SSL_CERT_REQS:-CERT_NONE} - REDIS_SSL_CA_CERTS: ${REDIS_SSL_CA_CERTS:-} - REDIS_SSL_CERTFILE: ${REDIS_SSL_CERTFILE:-} - REDIS_SSL_KEYFILE: ${REDIS_SSL_KEYFILE:-} - REDIS_DB: ${REDIS_DB:-0} - REDIS_USE_SENTINEL: ${REDIS_USE_SENTINEL:-false} - REDIS_SENTINELS: ${REDIS_SENTINELS:-} - REDIS_SENTINEL_SERVICE_NAME: ${REDIS_SENTINEL_SERVICE_NAME:-} - REDIS_SENTINEL_USERNAME: ${REDIS_SENTINEL_USERNAME:-} - REDIS_SENTINEL_PASSWORD: ${REDIS_SENTINEL_PASSWORD:-} - REDIS_SENTINEL_SOCKET_TIMEOUT: ${REDIS_SENTINEL_SOCKET_TIMEOUT:-0.1} - REDIS_USE_CLUSTERS: ${REDIS_USE_CLUSTERS:-false} - REDIS_CLUSTERS: ${REDIS_CLUSTERS:-} - REDIS_CLUSTERS_PASSWORD: ${REDIS_CLUSTERS_PASSWORD:-} - CELERY_BROKER_URL: ${CELERY_BROKER_URL:-redis://:difyai123456@redis:6379/1} - CELERY_BACKEND: ${CELERY_BACKEND:-redis} - BROKER_USE_SSL: ${BROKER_USE_SSL:-false} - CELERY_USE_SENTINEL: ${CELERY_USE_SENTINEL:-false} - CELERY_SENTINEL_MASTER_NAME: ${CELERY_SENTINEL_MASTER_NAME:-} - CELERY_SENTINEL_PASSWORD: ${CELERY_SENTINEL_PASSWORD:-} - CELERY_SENTINEL_SOCKET_TIMEOUT: ${CELERY_SENTINEL_SOCKET_TIMEOUT:-0.1} - WEB_API_CORS_ALLOW_ORIGINS: ${WEB_API_CORS_ALLOW_ORIGINS:-*} - CONSOLE_CORS_ALLOW_ORIGINS: ${CONSOLE_CORS_ALLOW_ORIGINS:-*} - COOKIE_DOMAIN: ${COOKIE_DOMAIN:-} - NEXT_PUBLIC_COOKIE_DOMAIN: ${NEXT_PUBLIC_COOKIE_DOMAIN:-} - STORAGE_TYPE: ${STORAGE_TYPE:-opendal} - OPENDAL_SCHEME: ${OPENDAL_SCHEME:-fs} - OPENDAL_FS_ROOT: ${OPENDAL_FS_ROOT:-storage} - CLICKZETTA_VOLUME_TYPE: ${CLICKZETTA_VOLUME_TYPE:-user} - CLICKZETTA_VOLUME_NAME: ${CLICKZETTA_VOLUME_NAME:-} - CLICKZETTA_VOLUME_TABLE_PREFIX: ${CLICKZETTA_VOLUME_TABLE_PREFIX:-dataset_} - CLICKZETTA_VOLUME_DIFY_PREFIX: ${CLICKZETTA_VOLUME_DIFY_PREFIX:-dify_km} - S3_ENDPOINT: ${S3_ENDPOINT:-} - S3_REGION: ${S3_REGION:-us-east-1} - S3_BUCKET_NAME: ${S3_BUCKET_NAME:-difyai} - S3_ACCESS_KEY: ${S3_ACCESS_KEY:-} - S3_SECRET_KEY: ${S3_SECRET_KEY:-} - S3_USE_AWS_MANAGED_IAM: ${S3_USE_AWS_MANAGED_IAM:-false} - AZURE_BLOB_ACCOUNT_NAME: ${AZURE_BLOB_ACCOUNT_NAME:-difyai} - AZURE_BLOB_ACCOUNT_KEY: ${AZURE_BLOB_ACCOUNT_KEY:-difyai} - AZURE_BLOB_CONTAINER_NAME: ${AZURE_BLOB_CONTAINER_NAME:-difyai-container} - AZURE_BLOB_ACCOUNT_URL: ${AZURE_BLOB_ACCOUNT_URL:-https://.blob.core.windows.net} - GOOGLE_STORAGE_BUCKET_NAME: ${GOOGLE_STORAGE_BUCKET_NAME:-your-bucket-name} - GOOGLE_STORAGE_SERVICE_ACCOUNT_JSON_BASE64: ${GOOGLE_STORAGE_SERVICE_ACCOUNT_JSON_BASE64:-} - ALIYUN_OSS_BUCKET_NAME: ${ALIYUN_OSS_BUCKET_NAME:-your-bucket-name} - ALIYUN_OSS_ACCESS_KEY: ${ALIYUN_OSS_ACCESS_KEY:-your-access-key} - ALIYUN_OSS_SECRET_KEY: ${ALIYUN_OSS_SECRET_KEY:-your-secret-key} - ALIYUN_OSS_ENDPOINT: ${ALIYUN_OSS_ENDPOINT:-https://oss-ap-southeast-1-internal.aliyuncs.com} - ALIYUN_OSS_REGION: ${ALIYUN_OSS_REGION:-ap-southeast-1} - ALIYUN_OSS_AUTH_VERSION: ${ALIYUN_OSS_AUTH_VERSION:-v4} - ALIYUN_OSS_PATH: ${ALIYUN_OSS_PATH:-your-path} - TENCENT_COS_BUCKET_NAME: ${TENCENT_COS_BUCKET_NAME:-your-bucket-name} - TENCENT_COS_SECRET_KEY: ${TENCENT_COS_SECRET_KEY:-your-secret-key} - TENCENT_COS_SECRET_ID: ${TENCENT_COS_SECRET_ID:-your-secret-id} - TENCENT_COS_REGION: ${TENCENT_COS_REGION:-your-region} - TENCENT_COS_SCHEME: ${TENCENT_COS_SCHEME:-your-scheme} - OCI_ENDPOINT: ${OCI_ENDPOINT:-https://your-object-storage-namespace.compat.objectstorage.us-ashburn-1.oraclecloud.com} - OCI_BUCKET_NAME: ${OCI_BUCKET_NAME:-your-bucket-name} - OCI_ACCESS_KEY: ${OCI_ACCESS_KEY:-your-access-key} - OCI_SECRET_KEY: ${OCI_SECRET_KEY:-your-secret-key} - OCI_REGION: ${OCI_REGION:-us-ashburn-1} - HUAWEI_OBS_BUCKET_NAME: ${HUAWEI_OBS_BUCKET_NAME:-your-bucket-name} - HUAWEI_OBS_SECRET_KEY: ${HUAWEI_OBS_SECRET_KEY:-your-secret-key} - HUAWEI_OBS_ACCESS_KEY: ${HUAWEI_OBS_ACCESS_KEY:-your-access-key} - HUAWEI_OBS_SERVER: ${HUAWEI_OBS_SERVER:-your-server-url} - VOLCENGINE_TOS_BUCKET_NAME: ${VOLCENGINE_TOS_BUCKET_NAME:-your-bucket-name} - VOLCENGINE_TOS_SECRET_KEY: ${VOLCENGINE_TOS_SECRET_KEY:-your-secret-key} - VOLCENGINE_TOS_ACCESS_KEY: ${VOLCENGINE_TOS_ACCESS_KEY:-your-access-key} - VOLCENGINE_TOS_ENDPOINT: ${VOLCENGINE_TOS_ENDPOINT:-your-server-url} - VOLCENGINE_TOS_REGION: ${VOLCENGINE_TOS_REGION:-your-region} - BAIDU_OBS_BUCKET_NAME: ${BAIDU_OBS_BUCKET_NAME:-your-bucket-name} - BAIDU_OBS_SECRET_KEY: ${BAIDU_OBS_SECRET_KEY:-your-secret-key} - BAIDU_OBS_ACCESS_KEY: ${BAIDU_OBS_ACCESS_KEY:-your-access-key} - BAIDU_OBS_ENDPOINT: ${BAIDU_OBS_ENDPOINT:-your-server-url} - SUPABASE_BUCKET_NAME: ${SUPABASE_BUCKET_NAME:-your-bucket-name} - SUPABASE_API_KEY: ${SUPABASE_API_KEY:-your-access-key} - SUPABASE_URL: ${SUPABASE_URL:-your-server-url} - VECTOR_STORE: ${VECTOR_STORE:-weaviate} - VECTOR_INDEX_NAME_PREFIX: ${VECTOR_INDEX_NAME_PREFIX:-Vector_index} - WEAVIATE_ENDPOINT: ${WEAVIATE_ENDPOINT:-http://weaviate:8080} - WEAVIATE_API_KEY: ${WEAVIATE_API_KEY:-WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih} - WEAVIATE_GRPC_ENDPOINT: ${WEAVIATE_GRPC_ENDPOINT:-grpc://weaviate:50051} - WEAVIATE_TOKENIZATION: ${WEAVIATE_TOKENIZATION:-word} - OCEANBASE_VECTOR_HOST: ${OCEANBASE_VECTOR_HOST:-oceanbase} - OCEANBASE_VECTOR_PORT: ${OCEANBASE_VECTOR_PORT:-2881} - OCEANBASE_VECTOR_USER: ${OCEANBASE_VECTOR_USER:-root@test} - OCEANBASE_VECTOR_PASSWORD: ${OCEANBASE_VECTOR_PASSWORD:-difyai123456} - OCEANBASE_VECTOR_DATABASE: ${OCEANBASE_VECTOR_DATABASE:-test} - OCEANBASE_CLUSTER_NAME: ${OCEANBASE_CLUSTER_NAME:-difyai} - OCEANBASE_MEMORY_LIMIT: ${OCEANBASE_MEMORY_LIMIT:-6G} - OCEANBASE_ENABLE_HYBRID_SEARCH: ${OCEANBASE_ENABLE_HYBRID_SEARCH:-false} - OCEANBASE_FULLTEXT_PARSER: ${OCEANBASE_FULLTEXT_PARSER:-ik} - SEEKDB_MEMORY_LIMIT: ${SEEKDB_MEMORY_LIMIT:-2G} - QDRANT_URL: ${QDRANT_URL:-http://qdrant:6333} - QDRANT_API_KEY: ${QDRANT_API_KEY:-difyai123456} - QDRANT_CLIENT_TIMEOUT: ${QDRANT_CLIENT_TIMEOUT:-20} - QDRANT_GRPC_ENABLED: ${QDRANT_GRPC_ENABLED:-false} - QDRANT_GRPC_PORT: ${QDRANT_GRPC_PORT:-6334} - QDRANT_REPLICATION_FACTOR: ${QDRANT_REPLICATION_FACTOR:-1} - MILVUS_URI: ${MILVUS_URI:-http://host.docker.internal:19530} - MILVUS_DATABASE: ${MILVUS_DATABASE:-} - MILVUS_TOKEN: ${MILVUS_TOKEN:-} - MILVUS_USER: ${MILVUS_USER:-} - MILVUS_PASSWORD: ${MILVUS_PASSWORD:-} - MILVUS_ENABLE_HYBRID_SEARCH: ${MILVUS_ENABLE_HYBRID_SEARCH:-False} - MILVUS_ANALYZER_PARAMS: ${MILVUS_ANALYZER_PARAMS:-} - MYSCALE_HOST: ${MYSCALE_HOST:-myscale} - MYSCALE_PORT: ${MYSCALE_PORT:-8123} - MYSCALE_USER: ${MYSCALE_USER:-default} - MYSCALE_PASSWORD: ${MYSCALE_PASSWORD:-} - MYSCALE_DATABASE: ${MYSCALE_DATABASE:-dify} - MYSCALE_FTS_PARAMS: ${MYSCALE_FTS_PARAMS:-} - COUCHBASE_CONNECTION_STRING: ${COUCHBASE_CONNECTION_STRING:-couchbase://couchbase-server} - COUCHBASE_USER: ${COUCHBASE_USER:-Administrator} - COUCHBASE_PASSWORD: ${COUCHBASE_PASSWORD:-password} - COUCHBASE_BUCKET_NAME: ${COUCHBASE_BUCKET_NAME:-Embeddings} - COUCHBASE_SCOPE_NAME: ${COUCHBASE_SCOPE_NAME:-_default} - PGVECTOR_HOST: ${PGVECTOR_HOST:-pgvector} - PGVECTOR_PORT: ${PGVECTOR_PORT:-5432} - PGVECTOR_USER: ${PGVECTOR_USER:-postgres} - PGVECTOR_PASSWORD: ${PGVECTOR_PASSWORD:-difyai123456} - PGVECTOR_DATABASE: ${PGVECTOR_DATABASE:-dify} - PGVECTOR_MIN_CONNECTION: ${PGVECTOR_MIN_CONNECTION:-1} - PGVECTOR_MAX_CONNECTION: ${PGVECTOR_MAX_CONNECTION:-5} - PGVECTOR_PG_BIGM: ${PGVECTOR_PG_BIGM:-false} - PGVECTOR_PG_BIGM_VERSION: ${PGVECTOR_PG_BIGM_VERSION:-1.2-20240606} - VASTBASE_HOST: ${VASTBASE_HOST:-vastbase} - VASTBASE_PORT: ${VASTBASE_PORT:-5432} - VASTBASE_USER: ${VASTBASE_USER:-dify} - VASTBASE_PASSWORD: ${VASTBASE_PASSWORD:-Difyai123456} - VASTBASE_DATABASE: ${VASTBASE_DATABASE:-dify} - VASTBASE_MIN_CONNECTION: ${VASTBASE_MIN_CONNECTION:-1} - VASTBASE_MAX_CONNECTION: ${VASTBASE_MAX_CONNECTION:-5} - PGVECTO_RS_HOST: ${PGVECTO_RS_HOST:-pgvecto-rs} - PGVECTO_RS_PORT: ${PGVECTO_RS_PORT:-5432} - PGVECTO_RS_USER: ${PGVECTO_RS_USER:-postgres} - PGVECTO_RS_PASSWORD: ${PGVECTO_RS_PASSWORD:-difyai123456} - PGVECTO_RS_DATABASE: ${PGVECTO_RS_DATABASE:-dify} - ANALYTICDB_KEY_ID: ${ANALYTICDB_KEY_ID:-your-ak} - ANALYTICDB_KEY_SECRET: ${ANALYTICDB_KEY_SECRET:-your-sk} - ANALYTICDB_REGION_ID: ${ANALYTICDB_REGION_ID:-cn-hangzhou} - ANALYTICDB_INSTANCE_ID: ${ANALYTICDB_INSTANCE_ID:-gp-ab123456} - ANALYTICDB_ACCOUNT: ${ANALYTICDB_ACCOUNT:-testaccount} - ANALYTICDB_PASSWORD: ${ANALYTICDB_PASSWORD:-testpassword} - ANALYTICDB_NAMESPACE: ${ANALYTICDB_NAMESPACE:-dify} - ANALYTICDB_NAMESPACE_PASSWORD: ${ANALYTICDB_NAMESPACE_PASSWORD:-difypassword} - ANALYTICDB_HOST: ${ANALYTICDB_HOST:-gp-test.aliyuncs.com} - ANALYTICDB_PORT: ${ANALYTICDB_PORT:-5432} - ANALYTICDB_MIN_CONNECTION: ${ANALYTICDB_MIN_CONNECTION:-1} - ANALYTICDB_MAX_CONNECTION: ${ANALYTICDB_MAX_CONNECTION:-5} - TIDB_VECTOR_HOST: ${TIDB_VECTOR_HOST:-tidb} - TIDB_VECTOR_PORT: ${TIDB_VECTOR_PORT:-4000} - TIDB_VECTOR_USER: ${TIDB_VECTOR_USER:-} - TIDB_VECTOR_PASSWORD: ${TIDB_VECTOR_PASSWORD:-} - TIDB_VECTOR_DATABASE: ${TIDB_VECTOR_DATABASE:-dify} - MATRIXONE_HOST: ${MATRIXONE_HOST:-matrixone} - MATRIXONE_PORT: ${MATRIXONE_PORT:-6001} - MATRIXONE_USER: ${MATRIXONE_USER:-dump} - MATRIXONE_PASSWORD: ${MATRIXONE_PASSWORD:-111} - MATRIXONE_DATABASE: ${MATRIXONE_DATABASE:-dify} - TIDB_ON_QDRANT_URL: ${TIDB_ON_QDRANT_URL:-http://127.0.0.1} - TIDB_ON_QDRANT_API_KEY: ${TIDB_ON_QDRANT_API_KEY:-dify} - TIDB_ON_QDRANT_CLIENT_TIMEOUT: ${TIDB_ON_QDRANT_CLIENT_TIMEOUT:-20} - TIDB_ON_QDRANT_GRPC_ENABLED: ${TIDB_ON_QDRANT_GRPC_ENABLED:-false} - TIDB_ON_QDRANT_GRPC_PORT: ${TIDB_ON_QDRANT_GRPC_PORT:-6334} - TIDB_PUBLIC_KEY: ${TIDB_PUBLIC_KEY:-dify} - TIDB_PRIVATE_KEY: ${TIDB_PRIVATE_KEY:-dify} - TIDB_API_URL: ${TIDB_API_URL:-http://127.0.0.1} - TIDB_IAM_API_URL: ${TIDB_IAM_API_URL:-http://127.0.0.1} - TIDB_REGION: ${TIDB_REGION:-regions/aws-us-east-1} - TIDB_PROJECT_ID: ${TIDB_PROJECT_ID:-dify} - TIDB_SPEND_LIMIT: ${TIDB_SPEND_LIMIT:-100} - CHROMA_HOST: ${CHROMA_HOST:-127.0.0.1} - CHROMA_PORT: ${CHROMA_PORT:-8000} - CHROMA_TENANT: ${CHROMA_TENANT:-default_tenant} - CHROMA_DATABASE: ${CHROMA_DATABASE:-default_database} - CHROMA_AUTH_PROVIDER: ${CHROMA_AUTH_PROVIDER:-chromadb.auth.token_authn.TokenAuthClientProvider} - CHROMA_AUTH_CREDENTIALS: ${CHROMA_AUTH_CREDENTIALS:-} - ORACLE_USER: ${ORACLE_USER:-dify} - ORACLE_PASSWORD: ${ORACLE_PASSWORD:-dify} - ORACLE_DSN: ${ORACLE_DSN:-oracle:1521/FREEPDB1} - ORACLE_CONFIG_DIR: ${ORACLE_CONFIG_DIR:-/app/api/storage/wallet} - ORACLE_WALLET_LOCATION: ${ORACLE_WALLET_LOCATION:-/app/api/storage/wallet} - ORACLE_WALLET_PASSWORD: ${ORACLE_WALLET_PASSWORD:-dify} - ORACLE_IS_AUTONOMOUS: ${ORACLE_IS_AUTONOMOUS:-false} - ALIBABACLOUD_MYSQL_HOST: ${ALIBABACLOUD_MYSQL_HOST:-127.0.0.1} - ALIBABACLOUD_MYSQL_PORT: ${ALIBABACLOUD_MYSQL_PORT:-3306} - ALIBABACLOUD_MYSQL_USER: ${ALIBABACLOUD_MYSQL_USER:-root} - ALIBABACLOUD_MYSQL_PASSWORD: ${ALIBABACLOUD_MYSQL_PASSWORD:-difyai123456} - ALIBABACLOUD_MYSQL_DATABASE: ${ALIBABACLOUD_MYSQL_DATABASE:-dify} - ALIBABACLOUD_MYSQL_MAX_CONNECTION: ${ALIBABACLOUD_MYSQL_MAX_CONNECTION:-5} - ALIBABACLOUD_MYSQL_HNSW_M: ${ALIBABACLOUD_MYSQL_HNSW_M:-6} - RELYT_HOST: ${RELYT_HOST:-db} - RELYT_PORT: ${RELYT_PORT:-5432} - RELYT_USER: ${RELYT_USER:-postgres} - RELYT_PASSWORD: ${RELYT_PASSWORD:-difyai123456} - RELYT_DATABASE: ${RELYT_DATABASE:-postgres} - OPENSEARCH_HOST: ${OPENSEARCH_HOST:-opensearch} - OPENSEARCH_PORT: ${OPENSEARCH_PORT:-9200} - OPENSEARCH_SECURE: ${OPENSEARCH_SECURE:-true} - OPENSEARCH_VERIFY_CERTS: ${OPENSEARCH_VERIFY_CERTS:-true} - OPENSEARCH_AUTH_METHOD: ${OPENSEARCH_AUTH_METHOD:-basic} - OPENSEARCH_USER: ${OPENSEARCH_USER:-admin} - OPENSEARCH_PASSWORD: ${OPENSEARCH_PASSWORD:-admin} - OPENSEARCH_AWS_REGION: ${OPENSEARCH_AWS_REGION:-ap-southeast-1} - OPENSEARCH_AWS_SERVICE: ${OPENSEARCH_AWS_SERVICE:-aoss} - TENCENT_VECTOR_DB_URL: ${TENCENT_VECTOR_DB_URL:-http://127.0.0.1} - TENCENT_VECTOR_DB_API_KEY: ${TENCENT_VECTOR_DB_API_KEY:-dify} - TENCENT_VECTOR_DB_TIMEOUT: ${TENCENT_VECTOR_DB_TIMEOUT:-30} - TENCENT_VECTOR_DB_USERNAME: ${TENCENT_VECTOR_DB_USERNAME:-dify} - TENCENT_VECTOR_DB_DATABASE: ${TENCENT_VECTOR_DB_DATABASE:-dify} - TENCENT_VECTOR_DB_SHARD: ${TENCENT_VECTOR_DB_SHARD:-1} - TENCENT_VECTOR_DB_REPLICAS: ${TENCENT_VECTOR_DB_REPLICAS:-2} - TENCENT_VECTOR_DB_ENABLE_HYBRID_SEARCH: ${TENCENT_VECTOR_DB_ENABLE_HYBRID_SEARCH:-false} - ELASTICSEARCH_HOST: ${ELASTICSEARCH_HOST:-0.0.0.0} - ELASTICSEARCH_PORT: ${ELASTICSEARCH_PORT:-9200} - ELASTICSEARCH_USERNAME: ${ELASTICSEARCH_USERNAME:-elastic} - ELASTICSEARCH_PASSWORD: ${ELASTICSEARCH_PASSWORD:-elastic} - KIBANA_PORT: ${KIBANA_PORT:-5601} - ELASTICSEARCH_USE_CLOUD: ${ELASTICSEARCH_USE_CLOUD:-false} - ELASTICSEARCH_CLOUD_URL: ${ELASTICSEARCH_CLOUD_URL:-YOUR-ELASTICSEARCH_CLOUD_URL} - ELASTICSEARCH_API_KEY: ${ELASTICSEARCH_API_KEY:-YOUR-ELASTICSEARCH_API_KEY} - ELASTICSEARCH_VERIFY_CERTS: ${ELASTICSEARCH_VERIFY_CERTS:-False} - ELASTICSEARCH_CA_CERTS: ${ELASTICSEARCH_CA_CERTS:-} - ELASTICSEARCH_REQUEST_TIMEOUT: ${ELASTICSEARCH_REQUEST_TIMEOUT:-100000} - ELASTICSEARCH_RETRY_ON_TIMEOUT: ${ELASTICSEARCH_RETRY_ON_TIMEOUT:-True} - ELASTICSEARCH_MAX_RETRIES: ${ELASTICSEARCH_MAX_RETRIES:-10} - BAIDU_VECTOR_DB_ENDPOINT: ${BAIDU_VECTOR_DB_ENDPOINT:-http://127.0.0.1:5287} - BAIDU_VECTOR_DB_CONNECTION_TIMEOUT_MS: ${BAIDU_VECTOR_DB_CONNECTION_TIMEOUT_MS:-30000} - BAIDU_VECTOR_DB_ACCOUNT: ${BAIDU_VECTOR_DB_ACCOUNT:-root} - BAIDU_VECTOR_DB_API_KEY: ${BAIDU_VECTOR_DB_API_KEY:-dify} - BAIDU_VECTOR_DB_DATABASE: ${BAIDU_VECTOR_DB_DATABASE:-dify} - BAIDU_VECTOR_DB_SHARD: ${BAIDU_VECTOR_DB_SHARD:-1} - BAIDU_VECTOR_DB_REPLICAS: ${BAIDU_VECTOR_DB_REPLICAS:-3} - BAIDU_VECTOR_DB_INVERTED_INDEX_ANALYZER: ${BAIDU_VECTOR_DB_INVERTED_INDEX_ANALYZER:-DEFAULT_ANALYZER} - BAIDU_VECTOR_DB_INVERTED_INDEX_PARSER_MODE: ${BAIDU_VECTOR_DB_INVERTED_INDEX_PARSER_MODE:-COARSE_MODE} - VIKINGDB_ACCESS_KEY: ${VIKINGDB_ACCESS_KEY:-your-ak} - VIKINGDB_SECRET_KEY: ${VIKINGDB_SECRET_KEY:-your-sk} - VIKINGDB_REGION: ${VIKINGDB_REGION:-cn-shanghai} - VIKINGDB_HOST: ${VIKINGDB_HOST:-api-vikingdb.xxx.volces.com} - VIKINGDB_SCHEMA: ${VIKINGDB_SCHEMA:-http} - VIKINGDB_CONNECTION_TIMEOUT: ${VIKINGDB_CONNECTION_TIMEOUT:-30} - VIKINGDB_SOCKET_TIMEOUT: ${VIKINGDB_SOCKET_TIMEOUT:-30} - LINDORM_URL: ${LINDORM_URL:-http://localhost:30070} - LINDORM_USERNAME: ${LINDORM_USERNAME:-admin} - LINDORM_PASSWORD: ${LINDORM_PASSWORD:-admin} - LINDORM_USING_UGC: ${LINDORM_USING_UGC:-True} - LINDORM_QUERY_TIMEOUT: ${LINDORM_QUERY_TIMEOUT:-1} - OPENGAUSS_HOST: ${OPENGAUSS_HOST:-opengauss} - OPENGAUSS_PORT: ${OPENGAUSS_PORT:-6600} - OPENGAUSS_USER: ${OPENGAUSS_USER:-postgres} - OPENGAUSS_PASSWORD: ${OPENGAUSS_PASSWORD:-Dify@123} - OPENGAUSS_DATABASE: ${OPENGAUSS_DATABASE:-dify} - OPENGAUSS_MIN_CONNECTION: ${OPENGAUSS_MIN_CONNECTION:-1} - OPENGAUSS_MAX_CONNECTION: ${OPENGAUSS_MAX_CONNECTION:-5} - OPENGAUSS_ENABLE_PQ: ${OPENGAUSS_ENABLE_PQ:-false} - HUAWEI_CLOUD_HOSTS: ${HUAWEI_CLOUD_HOSTS:-https://127.0.0.1:9200} - HUAWEI_CLOUD_USER: ${HUAWEI_CLOUD_USER:-admin} - HUAWEI_CLOUD_PASSWORD: ${HUAWEI_CLOUD_PASSWORD:-admin} - UPSTASH_VECTOR_URL: ${UPSTASH_VECTOR_URL:-https://xxx-vector.upstash.io} - UPSTASH_VECTOR_TOKEN: ${UPSTASH_VECTOR_TOKEN:-dify} - TABLESTORE_ENDPOINT: ${TABLESTORE_ENDPOINT:-https://instance-name.cn-hangzhou.ots.aliyuncs.com} - TABLESTORE_INSTANCE_NAME: ${TABLESTORE_INSTANCE_NAME:-instance-name} - TABLESTORE_ACCESS_KEY_ID: ${TABLESTORE_ACCESS_KEY_ID:-xxx} - TABLESTORE_ACCESS_KEY_SECRET: ${TABLESTORE_ACCESS_KEY_SECRET:-xxx} - TABLESTORE_NORMALIZE_FULLTEXT_BM25_SCORE: ${TABLESTORE_NORMALIZE_FULLTEXT_BM25_SCORE:-false} - CLICKZETTA_USERNAME: ${CLICKZETTA_USERNAME:-} - CLICKZETTA_PASSWORD: ${CLICKZETTA_PASSWORD:-} - CLICKZETTA_INSTANCE: ${CLICKZETTA_INSTANCE:-} - CLICKZETTA_SERVICE: ${CLICKZETTA_SERVICE:-api.clickzetta.com} - CLICKZETTA_WORKSPACE: ${CLICKZETTA_WORKSPACE:-quick_start} - CLICKZETTA_VCLUSTER: ${CLICKZETTA_VCLUSTER:-default_ap} - CLICKZETTA_SCHEMA: ${CLICKZETTA_SCHEMA:-dify} - CLICKZETTA_BATCH_SIZE: ${CLICKZETTA_BATCH_SIZE:-100} - CLICKZETTA_ENABLE_INVERTED_INDEX: ${CLICKZETTA_ENABLE_INVERTED_INDEX:-true} - CLICKZETTA_ANALYZER_TYPE: ${CLICKZETTA_ANALYZER_TYPE:-chinese} - CLICKZETTA_ANALYZER_MODE: ${CLICKZETTA_ANALYZER_MODE:-smart} - CLICKZETTA_VECTOR_DISTANCE_FUNCTION: ${CLICKZETTA_VECTOR_DISTANCE_FUNCTION:-cosine_distance} - UPLOAD_FILE_SIZE_LIMIT: ${UPLOAD_FILE_SIZE_LIMIT:-15} - UPLOAD_FILE_BATCH_LIMIT: ${UPLOAD_FILE_BATCH_LIMIT:-5} - UPLOAD_FILE_EXTENSION_BLACKLIST: ${UPLOAD_FILE_EXTENSION_BLACKLIST:-} - SINGLE_CHUNK_ATTACHMENT_LIMIT: ${SINGLE_CHUNK_ATTACHMENT_LIMIT:-10} - IMAGE_FILE_BATCH_LIMIT: ${IMAGE_FILE_BATCH_LIMIT:-10} - ATTACHMENT_IMAGE_FILE_SIZE_LIMIT: ${ATTACHMENT_IMAGE_FILE_SIZE_LIMIT:-2} - ATTACHMENT_IMAGE_DOWNLOAD_TIMEOUT: ${ATTACHMENT_IMAGE_DOWNLOAD_TIMEOUT:-60} - ETL_TYPE: ${ETL_TYPE:-dify} - UNSTRUCTURED_API_URL: ${UNSTRUCTURED_API_URL:-} - UNSTRUCTURED_API_KEY: ${UNSTRUCTURED_API_KEY:-} - SCARF_NO_ANALYTICS: ${SCARF_NO_ANALYTICS:-true} - PROMPT_GENERATION_MAX_TOKENS: ${PROMPT_GENERATION_MAX_TOKENS:-512} - CODE_GENERATION_MAX_TOKENS: ${CODE_GENERATION_MAX_TOKENS:-1024} - PLUGIN_BASED_TOKEN_COUNTING_ENABLED: ${PLUGIN_BASED_TOKEN_COUNTING_ENABLED:-false} - MULTIMODAL_SEND_FORMAT: ${MULTIMODAL_SEND_FORMAT:-base64} - UPLOAD_IMAGE_FILE_SIZE_LIMIT: ${UPLOAD_IMAGE_FILE_SIZE_LIMIT:-10} - UPLOAD_VIDEO_FILE_SIZE_LIMIT: ${UPLOAD_VIDEO_FILE_SIZE_LIMIT:-100} - UPLOAD_AUDIO_FILE_SIZE_LIMIT: ${UPLOAD_AUDIO_FILE_SIZE_LIMIT:-50} - SENTRY_DSN: ${SENTRY_DSN:-} - API_SENTRY_DSN: ${API_SENTRY_DSN:-} - API_SENTRY_TRACES_SAMPLE_RATE: ${API_SENTRY_TRACES_SAMPLE_RATE:-1.0} - API_SENTRY_PROFILES_SAMPLE_RATE: ${API_SENTRY_PROFILES_SAMPLE_RATE:-1.0} - WEB_SENTRY_DSN: ${WEB_SENTRY_DSN:-} - PLUGIN_SENTRY_ENABLED: ${PLUGIN_SENTRY_ENABLED:-false} - PLUGIN_SENTRY_DSN: ${PLUGIN_SENTRY_DSN:-} - NOTION_INTEGRATION_TYPE: ${NOTION_INTEGRATION_TYPE:-public} - NOTION_CLIENT_SECRET: ${NOTION_CLIENT_SECRET:-} - NOTION_CLIENT_ID: ${NOTION_CLIENT_ID:-} - NOTION_INTERNAL_SECRET: ${NOTION_INTERNAL_SECRET:-} - MAIL_TYPE: ${MAIL_TYPE:-resend} - MAIL_DEFAULT_SEND_FROM: ${MAIL_DEFAULT_SEND_FROM:-} - RESEND_API_URL: ${RESEND_API_URL:-https://api.resend.com} - RESEND_API_KEY: ${RESEND_API_KEY:-your-resend-api-key} - SMTP_SERVER: ${SMTP_SERVER:-} - SMTP_PORT: ${SMTP_PORT:-465} - SMTP_USERNAME: ${SMTP_USERNAME:-} - SMTP_PASSWORD: ${SMTP_PASSWORD:-} - SMTP_USE_TLS: ${SMTP_USE_TLS:-true} - SMTP_OPPORTUNISTIC_TLS: ${SMTP_OPPORTUNISTIC_TLS:-false} - SENDGRID_API_KEY: ${SENDGRID_API_KEY:-} - INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH: ${INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH:-4000} - INVITE_EXPIRY_HOURS: ${INVITE_EXPIRY_HOURS:-72} - RESET_PASSWORD_TOKEN_EXPIRY_MINUTES: ${RESET_PASSWORD_TOKEN_EXPIRY_MINUTES:-5} - EMAIL_REGISTER_TOKEN_EXPIRY_MINUTES: ${EMAIL_REGISTER_TOKEN_EXPIRY_MINUTES:-5} - CHANGE_EMAIL_TOKEN_EXPIRY_MINUTES: ${CHANGE_EMAIL_TOKEN_EXPIRY_MINUTES:-5} - OWNER_TRANSFER_TOKEN_EXPIRY_MINUTES: ${OWNER_TRANSFER_TOKEN_EXPIRY_MINUTES:-5} - CODE_EXECUTION_ENDPOINT: ${CODE_EXECUTION_ENDPOINT:-http://sandbox:8194} - CODE_EXECUTION_API_KEY: ${CODE_EXECUTION_API_KEY:-dify-sandbox} - CODE_EXECUTION_SSL_VERIFY: ${CODE_EXECUTION_SSL_VERIFY:-True} - CODE_EXECUTION_POOL_MAX_CONNECTIONS: ${CODE_EXECUTION_POOL_MAX_CONNECTIONS:-100} - CODE_EXECUTION_POOL_MAX_KEEPALIVE_CONNECTIONS: ${CODE_EXECUTION_POOL_MAX_KEEPALIVE_CONNECTIONS:-20} - CODE_EXECUTION_POOL_KEEPALIVE_EXPIRY: ${CODE_EXECUTION_POOL_KEEPALIVE_EXPIRY:-5.0} - CODE_MAX_NUMBER: ${CODE_MAX_NUMBER:-9223372036854775807} - CODE_MIN_NUMBER: ${CODE_MIN_NUMBER:--9223372036854775808} - CODE_MAX_DEPTH: ${CODE_MAX_DEPTH:-5} - CODE_MAX_PRECISION: ${CODE_MAX_PRECISION:-20} - CODE_MAX_STRING_LENGTH: ${CODE_MAX_STRING_LENGTH:-400000} - CODE_MAX_STRING_ARRAY_LENGTH: ${CODE_MAX_STRING_ARRAY_LENGTH:-30} - CODE_MAX_OBJECT_ARRAY_LENGTH: ${CODE_MAX_OBJECT_ARRAY_LENGTH:-30} - CODE_MAX_NUMBER_ARRAY_LENGTH: ${CODE_MAX_NUMBER_ARRAY_LENGTH:-1000} - CODE_EXECUTION_CONNECT_TIMEOUT: ${CODE_EXECUTION_CONNECT_TIMEOUT:-10} - CODE_EXECUTION_READ_TIMEOUT: ${CODE_EXECUTION_READ_TIMEOUT:-60} - CODE_EXECUTION_WRITE_TIMEOUT: ${CODE_EXECUTION_WRITE_TIMEOUT:-10} - TEMPLATE_TRANSFORM_MAX_LENGTH: ${TEMPLATE_TRANSFORM_MAX_LENGTH:-400000} - WORKFLOW_MAX_EXECUTION_STEPS: ${WORKFLOW_MAX_EXECUTION_STEPS:-500} - WORKFLOW_MAX_EXECUTION_TIME: ${WORKFLOW_MAX_EXECUTION_TIME:-1200} - WORKFLOW_CALL_MAX_DEPTH: ${WORKFLOW_CALL_MAX_DEPTH:-5} - MAX_VARIABLE_SIZE: ${MAX_VARIABLE_SIZE:-204800} - WORKFLOW_FILE_UPLOAD_LIMIT: ${WORKFLOW_FILE_UPLOAD_LIMIT:-10} - GRAPH_ENGINE_MIN_WORKERS: ${GRAPH_ENGINE_MIN_WORKERS:-1} - GRAPH_ENGINE_MAX_WORKERS: ${GRAPH_ENGINE_MAX_WORKERS:-10} - GRAPH_ENGINE_SCALE_UP_THRESHOLD: ${GRAPH_ENGINE_SCALE_UP_THRESHOLD:-3} - GRAPH_ENGINE_SCALE_DOWN_IDLE_TIME: ${GRAPH_ENGINE_SCALE_DOWN_IDLE_TIME:-5.0} - WORKFLOW_NODE_EXECUTION_STORAGE: ${WORKFLOW_NODE_EXECUTION_STORAGE:-rdbms} - CORE_WORKFLOW_EXECUTION_REPOSITORY: ${CORE_WORKFLOW_EXECUTION_REPOSITORY:-core.repositories.sqlalchemy_workflow_execution_repository.SQLAlchemyWorkflowExecutionRepository} - CORE_WORKFLOW_NODE_EXECUTION_REPOSITORY: ${CORE_WORKFLOW_NODE_EXECUTION_REPOSITORY:-core.repositories.sqlalchemy_workflow_node_execution_repository.SQLAlchemyWorkflowNodeExecutionRepository} - API_WORKFLOW_RUN_REPOSITORY: ${API_WORKFLOW_RUN_REPOSITORY:-repositories.sqlalchemy_api_workflow_run_repository.DifyAPISQLAlchemyWorkflowRunRepository} - API_WORKFLOW_NODE_EXECUTION_REPOSITORY: ${API_WORKFLOW_NODE_EXECUTION_REPOSITORY:-repositories.sqlalchemy_api_workflow_node_execution_repository.DifyAPISQLAlchemyWorkflowNodeExecutionRepository} - WORKFLOW_LOG_CLEANUP_ENABLED: ${WORKFLOW_LOG_CLEANUP_ENABLED:-false} - WORKFLOW_LOG_RETENTION_DAYS: ${WORKFLOW_LOG_RETENTION_DAYS:-30} - WORKFLOW_LOG_CLEANUP_BATCH_SIZE: ${WORKFLOW_LOG_CLEANUP_BATCH_SIZE:-100} - HTTP_REQUEST_NODE_MAX_BINARY_SIZE: ${HTTP_REQUEST_NODE_MAX_BINARY_SIZE:-10485760} - HTTP_REQUEST_NODE_MAX_TEXT_SIZE: ${HTTP_REQUEST_NODE_MAX_TEXT_SIZE:-1048576} - HTTP_REQUEST_NODE_SSL_VERIFY: ${HTTP_REQUEST_NODE_SSL_VERIFY:-True} - HTTP_REQUEST_MAX_CONNECT_TIMEOUT: ${HTTP_REQUEST_MAX_CONNECT_TIMEOUT:-10} - HTTP_REQUEST_MAX_READ_TIMEOUT: ${HTTP_REQUEST_MAX_READ_TIMEOUT:-600} - HTTP_REQUEST_MAX_WRITE_TIMEOUT: ${HTTP_REQUEST_MAX_WRITE_TIMEOUT:-600} - WEBHOOK_REQUEST_BODY_MAX_SIZE: ${WEBHOOK_REQUEST_BODY_MAX_SIZE:-10485760} - RESPECT_XFORWARD_HEADERS_ENABLED: ${RESPECT_XFORWARD_HEADERS_ENABLED:-false} - SSRF_PROXY_HTTP_URL: ${SSRF_PROXY_HTTP_URL:-http://ssrf_proxy:3128} - SSRF_PROXY_HTTPS_URL: ${SSRF_PROXY_HTTPS_URL:-http://ssrf_proxy:3128} - LOOP_NODE_MAX_COUNT: ${LOOP_NODE_MAX_COUNT:-100} - MAX_TOOLS_NUM: ${MAX_TOOLS_NUM:-10} - MAX_PARALLEL_LIMIT: ${MAX_PARALLEL_LIMIT:-10} - MAX_ITERATIONS_NUM: ${MAX_ITERATIONS_NUM:-99} - TEXT_GENERATION_TIMEOUT_MS: ${TEXT_GENERATION_TIMEOUT_MS:-60000} - ALLOW_UNSAFE_DATA_SCHEME: ${ALLOW_UNSAFE_DATA_SCHEME:-false} - MAX_TREE_DEPTH: ${MAX_TREE_DEPTH:-50} - PGDATA: ${PGDATA:-/var/lib/postgresql/data/pgdata} - MYSQL_HOST_VOLUME: ${MYSQL_HOST_VOLUME:-./volumes/mysql/data} - SANDBOX_API_KEY: ${SANDBOX_API_KEY:-dify-sandbox} - SANDBOX_GIN_MODE: ${SANDBOX_GIN_MODE:-release} - SANDBOX_WORKER_TIMEOUT: ${SANDBOX_WORKER_TIMEOUT:-15} - SANDBOX_ENABLE_NETWORK: ${SANDBOX_ENABLE_NETWORK:-true} - SANDBOX_HTTP_PROXY: ${SANDBOX_HTTP_PROXY:-http://ssrf_proxy:3128} - SANDBOX_HTTPS_PROXY: ${SANDBOX_HTTPS_PROXY:-http://ssrf_proxy:3128} - SANDBOX_PORT: ${SANDBOX_PORT:-8194} - WEAVIATE_PERSISTENCE_DATA_PATH: ${WEAVIATE_PERSISTENCE_DATA_PATH:-/var/lib/weaviate} - WEAVIATE_QUERY_DEFAULTS_LIMIT: ${WEAVIATE_QUERY_DEFAULTS_LIMIT:-25} - WEAVIATE_AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: ${WEAVIATE_AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED:-true} - WEAVIATE_DEFAULT_VECTORIZER_MODULE: ${WEAVIATE_DEFAULT_VECTORIZER_MODULE:-none} - WEAVIATE_CLUSTER_HOSTNAME: ${WEAVIATE_CLUSTER_HOSTNAME:-node1} - WEAVIATE_AUTHENTICATION_APIKEY_ENABLED: ${WEAVIATE_AUTHENTICATION_APIKEY_ENABLED:-true} - WEAVIATE_AUTHENTICATION_APIKEY_ALLOWED_KEYS: ${WEAVIATE_AUTHENTICATION_APIKEY_ALLOWED_KEYS:-WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih} - WEAVIATE_AUTHENTICATION_APIKEY_USERS: ${WEAVIATE_AUTHENTICATION_APIKEY_USERS:-hello@dify.ai} - WEAVIATE_AUTHORIZATION_ADMINLIST_ENABLED: ${WEAVIATE_AUTHORIZATION_ADMINLIST_ENABLED:-true} - WEAVIATE_AUTHORIZATION_ADMINLIST_USERS: ${WEAVIATE_AUTHORIZATION_ADMINLIST_USERS:-hello@dify.ai} - WEAVIATE_DISABLE_TELEMETRY: ${WEAVIATE_DISABLE_TELEMETRY:-false} - WEAVIATE_ENABLE_TOKENIZER_GSE: ${WEAVIATE_ENABLE_TOKENIZER_GSE:-false} - WEAVIATE_ENABLE_TOKENIZER_KAGOME_JA: ${WEAVIATE_ENABLE_TOKENIZER_KAGOME_JA:-false} - WEAVIATE_ENABLE_TOKENIZER_KAGOME_KR: ${WEAVIATE_ENABLE_TOKENIZER_KAGOME_KR:-false} - CHROMA_SERVER_AUTHN_CREDENTIALS: ${CHROMA_SERVER_AUTHN_CREDENTIALS:-difyai123456} - CHROMA_SERVER_AUTHN_PROVIDER: ${CHROMA_SERVER_AUTHN_PROVIDER:-chromadb.auth.token_authn.TokenAuthenticationServerProvider} - CHROMA_IS_PERSISTENT: ${CHROMA_IS_PERSISTENT:-TRUE} - ORACLE_PWD: ${ORACLE_PWD:-Dify123456} - ORACLE_CHARACTERSET: ${ORACLE_CHARACTERSET:-AL32UTF8} - ETCD_AUTO_COMPACTION_MODE: ${ETCD_AUTO_COMPACTION_MODE:-revision} - ETCD_AUTO_COMPACTION_RETENTION: ${ETCD_AUTO_COMPACTION_RETENTION:-1000} - ETCD_QUOTA_BACKEND_BYTES: ${ETCD_QUOTA_BACKEND_BYTES:-4294967296} - ETCD_SNAPSHOT_COUNT: ${ETCD_SNAPSHOT_COUNT:-50000} - MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY:-minioadmin} - MINIO_SECRET_KEY: ${MINIO_SECRET_KEY:-minioadmin} - ETCD_ENDPOINTS: ${ETCD_ENDPOINTS:-etcd:2379} - MINIO_ADDRESS: ${MINIO_ADDRESS:-minio:9000} - MILVUS_AUTHORIZATION_ENABLED: ${MILVUS_AUTHORIZATION_ENABLED:-true} - PGVECTOR_PGUSER: ${PGVECTOR_PGUSER:-postgres} - PGVECTOR_POSTGRES_PASSWORD: ${PGVECTOR_POSTGRES_PASSWORD:-difyai123456} - PGVECTOR_POSTGRES_DB: ${PGVECTOR_POSTGRES_DB:-dify} - PGVECTOR_PGDATA: ${PGVECTOR_PGDATA:-/var/lib/postgresql/data/pgdata} - OPENSEARCH_DISCOVERY_TYPE: ${OPENSEARCH_DISCOVERY_TYPE:-single-node} - OPENSEARCH_BOOTSTRAP_MEMORY_LOCK: ${OPENSEARCH_BOOTSTRAP_MEMORY_LOCK:-true} - OPENSEARCH_JAVA_OPTS_MIN: ${OPENSEARCH_JAVA_OPTS_MIN:-512m} - OPENSEARCH_JAVA_OPTS_MAX: ${OPENSEARCH_JAVA_OPTS_MAX:-1024m} - OPENSEARCH_INITIAL_ADMIN_PASSWORD: ${OPENSEARCH_INITIAL_ADMIN_PASSWORD:-Qazwsxedc!@#123} - OPENSEARCH_MEMLOCK_SOFT: ${OPENSEARCH_MEMLOCK_SOFT:--1} - OPENSEARCH_MEMLOCK_HARD: ${OPENSEARCH_MEMLOCK_HARD:--1} - OPENSEARCH_NOFILE_SOFT: ${OPENSEARCH_NOFILE_SOFT:-65536} - OPENSEARCH_NOFILE_HARD: ${OPENSEARCH_NOFILE_HARD:-65536} - NGINX_SERVER_NAME: ${NGINX_SERVER_NAME:-_} - NGINX_HTTPS_ENABLED: ${NGINX_HTTPS_ENABLED:-false} - NGINX_PORT: ${NGINX_PORT:-80} - NGINX_SSL_PORT: ${NGINX_SSL_PORT:-443} - NGINX_SSL_CERT_FILENAME: ${NGINX_SSL_CERT_FILENAME:-dify.crt} - NGINX_SSL_CERT_KEY_FILENAME: ${NGINX_SSL_CERT_KEY_FILENAME:-dify.key} - NGINX_SSL_PROTOCOLS: ${NGINX_SSL_PROTOCOLS:-TLSv1.1 TLSv1.2 TLSv1.3} - NGINX_WORKER_PROCESSES: ${NGINX_WORKER_PROCESSES:-auto} - NGINX_CLIENT_MAX_BODY_SIZE: ${NGINX_CLIENT_MAX_BODY_SIZE:-100M} - NGINX_KEEPALIVE_TIMEOUT: ${NGINX_KEEPALIVE_TIMEOUT:-65} - NGINX_PROXY_READ_TIMEOUT: ${NGINX_PROXY_READ_TIMEOUT:-3600s} - NGINX_PROXY_SEND_TIMEOUT: ${NGINX_PROXY_SEND_TIMEOUT:-3600s} - NGINX_ENABLE_CERTBOT_CHALLENGE: ${NGINX_ENABLE_CERTBOT_CHALLENGE:-false} - CERTBOT_EMAIL: ${CERTBOT_EMAIL:-your_email@example.com} - CERTBOT_DOMAIN: ${CERTBOT_DOMAIN:-your_domain.com} - CERTBOT_OPTIONS: ${CERTBOT_OPTIONS:-} - SSRF_HTTP_PORT: ${SSRF_HTTP_PORT:-3128} - SSRF_COREDUMP_DIR: ${SSRF_COREDUMP_DIR:-/var/spool/squid} - SSRF_REVERSE_PROXY_PORT: ${SSRF_REVERSE_PROXY_PORT:-8194} - SSRF_SANDBOX_HOST: ${SSRF_SANDBOX_HOST:-sandbox} - SSRF_DEFAULT_TIME_OUT: ${SSRF_DEFAULT_TIME_OUT:-5} - SSRF_DEFAULT_CONNECT_TIME_OUT: ${SSRF_DEFAULT_CONNECT_TIME_OUT:-5} - SSRF_DEFAULT_READ_TIME_OUT: ${SSRF_DEFAULT_READ_TIME_OUT:-5} - SSRF_DEFAULT_WRITE_TIME_OUT: ${SSRF_DEFAULT_WRITE_TIME_OUT:-5} - SSRF_POOL_MAX_CONNECTIONS: ${SSRF_POOL_MAX_CONNECTIONS:-100} - SSRF_POOL_MAX_KEEPALIVE_CONNECTIONS: ${SSRF_POOL_MAX_KEEPALIVE_CONNECTIONS:-20} - SSRF_POOL_KEEPALIVE_EXPIRY: ${SSRF_POOL_KEEPALIVE_EXPIRY:-5.0} - EXPOSE_NGINX_PORT: ${EXPOSE_NGINX_PORT:-80} - EXPOSE_NGINX_SSL_PORT: ${EXPOSE_NGINX_SSL_PORT:-443} - POSITION_TOOL_PINS: ${POSITION_TOOL_PINS:-} - POSITION_TOOL_INCLUDES: ${POSITION_TOOL_INCLUDES:-} - POSITION_TOOL_EXCLUDES: ${POSITION_TOOL_EXCLUDES:-} - POSITION_PROVIDER_PINS: ${POSITION_PROVIDER_PINS:-} - POSITION_PROVIDER_INCLUDES: ${POSITION_PROVIDER_INCLUDES:-} - POSITION_PROVIDER_EXCLUDES: ${POSITION_PROVIDER_EXCLUDES:-} - CSP_WHITELIST: ${CSP_WHITELIST:-} - CREATE_TIDB_SERVICE_JOB_ENABLED: ${CREATE_TIDB_SERVICE_JOB_ENABLED:-false} - MAX_SUBMIT_COUNT: ${MAX_SUBMIT_COUNT:-100} - TOP_K_MAX_VALUE: ${TOP_K_MAX_VALUE:-10} - DB_PLUGIN_DATABASE: ${DB_PLUGIN_DATABASE:-dify_plugin} - EXPOSE_PLUGIN_DAEMON_PORT: ${EXPOSE_PLUGIN_DAEMON_PORT:-5002} - PLUGIN_DAEMON_PORT: ${PLUGIN_DAEMON_PORT:-5002} - PLUGIN_DAEMON_KEY: ${PLUGIN_DAEMON_KEY:-lYkiYYT6owG+71oLerGzA7GXCgOT++6ovaezWAjpCjf+Sjc3ZtU+qUEi} - PLUGIN_DAEMON_URL: ${PLUGIN_DAEMON_URL:-http://plugin_daemon:5002} - PLUGIN_MAX_PACKAGE_SIZE: ${PLUGIN_MAX_PACKAGE_SIZE:-52428800} - PLUGIN_PPROF_ENABLED: ${PLUGIN_PPROF_ENABLED:-false} - PLUGIN_DEBUGGING_HOST: ${PLUGIN_DEBUGGING_HOST:-0.0.0.0} - PLUGIN_DEBUGGING_PORT: ${PLUGIN_DEBUGGING_PORT:-5003} - EXPOSE_PLUGIN_DEBUGGING_HOST: ${EXPOSE_PLUGIN_DEBUGGING_HOST:-localhost} - EXPOSE_PLUGIN_DEBUGGING_PORT: ${EXPOSE_PLUGIN_DEBUGGING_PORT:-5003} - PLUGIN_DIFY_INNER_API_KEY: ${PLUGIN_DIFY_INNER_API_KEY:-QaHbTe77CtuXmsfyhR7+vRjI/+XbV1AaFy691iy+kGDv2Jvy0/eAh8Y1} - PLUGIN_DIFY_INNER_API_URL: ${PLUGIN_DIFY_INNER_API_URL:-http://api:5001} - ENDPOINT_URL_TEMPLATE: ${ENDPOINT_URL_TEMPLATE:-http://localhost/e/{hook_id}} - MARKETPLACE_ENABLED: ${MARKETPLACE_ENABLED:-true} - MARKETPLACE_API_URL: ${MARKETPLACE_API_URL:-https://marketplace.dify.ai} - FORCE_VERIFYING_SIGNATURE: ${FORCE_VERIFYING_SIGNATURE:-true} - ENFORCE_LANGGENIUS_PLUGIN_SIGNATURES: ${ENFORCE_LANGGENIUS_PLUGIN_SIGNATURES:-true} - PLUGIN_STDIO_BUFFER_SIZE: ${PLUGIN_STDIO_BUFFER_SIZE:-1024} - PLUGIN_STDIO_MAX_BUFFER_SIZE: ${PLUGIN_STDIO_MAX_BUFFER_SIZE:-5242880} - PLUGIN_PYTHON_ENV_INIT_TIMEOUT: ${PLUGIN_PYTHON_ENV_INIT_TIMEOUT:-120} - PLUGIN_MAX_EXECUTION_TIMEOUT: ${PLUGIN_MAX_EXECUTION_TIMEOUT:-600} - PIP_MIRROR_URL: ${PIP_MIRROR_URL:-} - PLUGIN_STORAGE_TYPE: ${PLUGIN_STORAGE_TYPE:-local} - PLUGIN_STORAGE_LOCAL_ROOT: ${PLUGIN_STORAGE_LOCAL_ROOT:-/app/storage} - PLUGIN_WORKING_PATH: ${PLUGIN_WORKING_PATH:-/app/storage/cwd} - PLUGIN_INSTALLED_PATH: ${PLUGIN_INSTALLED_PATH:-plugin} - PLUGIN_PACKAGE_CACHE_PATH: ${PLUGIN_PACKAGE_CACHE_PATH:-plugin_packages} - PLUGIN_MEDIA_CACHE_PATH: ${PLUGIN_MEDIA_CACHE_PATH:-assets} - PLUGIN_STORAGE_OSS_BUCKET: ${PLUGIN_STORAGE_OSS_BUCKET:-} - PLUGIN_S3_USE_AWS: ${PLUGIN_S3_USE_AWS:-false} - PLUGIN_S3_USE_AWS_MANAGED_IAM: ${PLUGIN_S3_USE_AWS_MANAGED_IAM:-false} - PLUGIN_S3_ENDPOINT: ${PLUGIN_S3_ENDPOINT:-} - PLUGIN_S3_USE_PATH_STYLE: ${PLUGIN_S3_USE_PATH_STYLE:-false} - PLUGIN_AWS_ACCESS_KEY: ${PLUGIN_AWS_ACCESS_KEY:-} - PLUGIN_AWS_SECRET_KEY: ${PLUGIN_AWS_SECRET_KEY:-} - PLUGIN_AWS_REGION: ${PLUGIN_AWS_REGION:-} - PLUGIN_AZURE_BLOB_STORAGE_CONTAINER_NAME: ${PLUGIN_AZURE_BLOB_STORAGE_CONTAINER_NAME:-} - PLUGIN_AZURE_BLOB_STORAGE_CONNECTION_STRING: ${PLUGIN_AZURE_BLOB_STORAGE_CONNECTION_STRING:-} - PLUGIN_TENCENT_COS_SECRET_KEY: ${PLUGIN_TENCENT_COS_SECRET_KEY:-} - PLUGIN_TENCENT_COS_SECRET_ID: ${PLUGIN_TENCENT_COS_SECRET_ID:-} - PLUGIN_TENCENT_COS_REGION: ${PLUGIN_TENCENT_COS_REGION:-} - PLUGIN_ALIYUN_OSS_REGION: ${PLUGIN_ALIYUN_OSS_REGION:-} - PLUGIN_ALIYUN_OSS_ENDPOINT: ${PLUGIN_ALIYUN_OSS_ENDPOINT:-} - PLUGIN_ALIYUN_OSS_ACCESS_KEY_ID: ${PLUGIN_ALIYUN_OSS_ACCESS_KEY_ID:-} - PLUGIN_ALIYUN_OSS_ACCESS_KEY_SECRET: ${PLUGIN_ALIYUN_OSS_ACCESS_KEY_SECRET:-} - PLUGIN_ALIYUN_OSS_AUTH_VERSION: ${PLUGIN_ALIYUN_OSS_AUTH_VERSION:-v4} - PLUGIN_ALIYUN_OSS_PATH: ${PLUGIN_ALIYUN_OSS_PATH:-} - PLUGIN_VOLCENGINE_TOS_ENDPOINT: ${PLUGIN_VOLCENGINE_TOS_ENDPOINT:-} - PLUGIN_VOLCENGINE_TOS_ACCESS_KEY: ${PLUGIN_VOLCENGINE_TOS_ACCESS_KEY:-} - PLUGIN_VOLCENGINE_TOS_SECRET_KEY: ${PLUGIN_VOLCENGINE_TOS_SECRET_KEY:-} - PLUGIN_VOLCENGINE_TOS_REGION: ${PLUGIN_VOLCENGINE_TOS_REGION:-} - ENABLE_OTEL: ${ENABLE_OTEL:-false} - OTLP_TRACE_ENDPOINT: ${OTLP_TRACE_ENDPOINT:-} - OTLP_METRIC_ENDPOINT: ${OTLP_METRIC_ENDPOINT:-} - OTLP_BASE_ENDPOINT: ${OTLP_BASE_ENDPOINT:-http://localhost:4318} - OTLP_API_KEY: ${OTLP_API_KEY:-} - OTEL_EXPORTER_OTLP_PROTOCOL: ${OTEL_EXPORTER_OTLP_PROTOCOL:-} - OTEL_EXPORTER_TYPE: ${OTEL_EXPORTER_TYPE:-otlp} - OTEL_SAMPLING_RATE: ${OTEL_SAMPLING_RATE:-0.1} - OTEL_BATCH_EXPORT_SCHEDULE_DELAY: ${OTEL_BATCH_EXPORT_SCHEDULE_DELAY:-5000} - OTEL_MAX_QUEUE_SIZE: ${OTEL_MAX_QUEUE_SIZE:-2048} - OTEL_MAX_EXPORT_BATCH_SIZE: ${OTEL_MAX_EXPORT_BATCH_SIZE:-512} - OTEL_METRIC_EXPORT_INTERVAL: ${OTEL_METRIC_EXPORT_INTERVAL:-60000} - OTEL_BATCH_EXPORT_TIMEOUT: ${OTEL_BATCH_EXPORT_TIMEOUT:-10000} - OTEL_METRIC_EXPORT_TIMEOUT: ${OTEL_METRIC_EXPORT_TIMEOUT:-30000} - ALLOW_EMBED: ${ALLOW_EMBED:-false} - QUEUE_MONITOR_THRESHOLD: ${QUEUE_MONITOR_THRESHOLD:-200} - QUEUE_MONITOR_ALERT_EMAILS: ${QUEUE_MONITOR_ALERT_EMAILS:-} - QUEUE_MONITOR_INTERVAL: ${QUEUE_MONITOR_INTERVAL:-30} - SWAGGER_UI_ENABLED: ${SWAGGER_UI_ENABLED:-true} - SWAGGER_UI_PATH: ${SWAGGER_UI_PATH:-/swagger-ui.html} - DSL_EXPORT_ENCRYPT_DATASET_ID: ${DSL_EXPORT_ENCRYPT_DATASET_ID:-true} - DATASET_MAX_SEGMENTS_PER_REQUEST: ${DATASET_MAX_SEGMENTS_PER_REQUEST:-0} - ENABLE_CLEAN_EMBEDDING_CACHE_TASK: ${ENABLE_CLEAN_EMBEDDING_CACHE_TASK:-false} - ENABLE_CLEAN_UNUSED_DATASETS_TASK: ${ENABLE_CLEAN_UNUSED_DATASETS_TASK:-false} - ENABLE_CREATE_TIDB_SERVERLESS_TASK: ${ENABLE_CREATE_TIDB_SERVERLESS_TASK:-false} - ENABLE_UPDATE_TIDB_SERVERLESS_STATUS_TASK: ${ENABLE_UPDATE_TIDB_SERVERLESS_STATUS_TASK:-false} - ENABLE_CLEAN_MESSAGES: ${ENABLE_CLEAN_MESSAGES:-false} - ENABLE_MAIL_CLEAN_DOCUMENT_NOTIFY_TASK: ${ENABLE_MAIL_CLEAN_DOCUMENT_NOTIFY_TASK:-false} - ENABLE_DATASETS_QUEUE_MONITOR: ${ENABLE_DATASETS_QUEUE_MONITOR:-false} - ENABLE_CHECK_UPGRADABLE_PLUGIN_TASK: ${ENABLE_CHECK_UPGRADABLE_PLUGIN_TASK:-true} - ENABLE_WORKFLOW_SCHEDULE_POLLER_TASK: ${ENABLE_WORKFLOW_SCHEDULE_POLLER_TASK:-true} - WORKFLOW_SCHEDULE_POLLER_INTERVAL: ${WORKFLOW_SCHEDULE_POLLER_INTERVAL:-1} - WORKFLOW_SCHEDULE_POLLER_BATCH_SIZE: ${WORKFLOW_SCHEDULE_POLLER_BATCH_SIZE:-100} - WORKFLOW_SCHEDULE_MAX_DISPATCH_PER_TICK: ${WORKFLOW_SCHEDULE_MAX_DISPATCH_PER_TICK:-0} - TENANT_ISOLATED_TASK_CONCURRENCY: ${TENANT_ISOLATED_TASK_CONCURRENCY:-1} - AMPLITUDE_API_KEY: ${AMPLITUDE_API_KEY:-} - -services: - # Init container to fix permissions - init_permissions: - image: busybox:latest - command: - - sh - - -c - - | - FLAG_FILE="/app/api/storage/.init_permissions" - if [ -f "$${FLAG_FILE}" ]; then - echo "Permissions already initialized. Exiting." - exit 0 - fi - echo "Initializing permissions for /app/api/storage" - chown -R 1001:1001 /app/api/storage && touch "$${FLAG_FILE}" - echo "Permissions initialized. Exiting." - volumes: - - ./volumes/app/storage:/app/api/storage - restart: "no" - - # API service - api: - image: langgenius/dify-api:1.11.1 - restart: always - environment: - # Use the shared environment variables. - <<: *shared-api-worker-env - # Startup mode, 'api' starts the API server. - MODE: api - SENTRY_DSN: ${API_SENTRY_DSN:-} - SENTRY_TRACES_SAMPLE_RATE: ${API_SENTRY_TRACES_SAMPLE_RATE:-1.0} - SENTRY_PROFILES_SAMPLE_RATE: ${API_SENTRY_PROFILES_SAMPLE_RATE:-1.0} - PLUGIN_REMOTE_INSTALL_HOST: ${EXPOSE_PLUGIN_DEBUGGING_HOST:-localhost} - PLUGIN_REMOTE_INSTALL_PORT: ${EXPOSE_PLUGIN_DEBUGGING_PORT:-5003} - PLUGIN_MAX_PACKAGE_SIZE: ${PLUGIN_MAX_PACKAGE_SIZE:-52428800} - INNER_API_KEY_FOR_PLUGIN: ${PLUGIN_DIFY_INNER_API_KEY:-QaHbTe77CtuXmsfyhR7+vRjI/+XbV1AaFy691iy+kGDv2Jvy0/eAh8Y1} - depends_on: - init_permissions: - condition: service_completed_successfully - db_postgres: - condition: service_healthy - required: false - db_mysql: - condition: service_healthy - required: false - oceanbase: - condition: service_healthy - required: false - seekdb: - condition: service_healthy - required: false - redis: - condition: service_started - volumes: - # Mount the storage directory to the container, for storing user files. - - ./volumes/app/storage:/app/api/storage - networks: - - ssrf_proxy_network - - default - - # worker service - # The Celery worker for processing all queues (dataset, workflow, mail, etc.) - worker: - image: langgenius/dify-api:1.11.1 - restart: always - environment: - # Use the shared environment variables. - <<: *shared-api-worker-env - # Startup mode, 'worker' starts the Celery worker for processing all queues. - MODE: worker - SENTRY_DSN: ${API_SENTRY_DSN:-} - SENTRY_TRACES_SAMPLE_RATE: ${API_SENTRY_TRACES_SAMPLE_RATE:-1.0} - SENTRY_PROFILES_SAMPLE_RATE: ${API_SENTRY_PROFILES_SAMPLE_RATE:-1.0} - PLUGIN_MAX_PACKAGE_SIZE: ${PLUGIN_MAX_PACKAGE_SIZE:-52428800} - INNER_API_KEY_FOR_PLUGIN: ${PLUGIN_DIFY_INNER_API_KEY:-QaHbTe77CtuXmsfyhR7+vRjI/+XbV1AaFy691iy+kGDv2Jvy0/eAh8Y1} - depends_on: - init_permissions: - condition: service_completed_successfully - db_postgres: - condition: service_healthy - required: false - db_mysql: - condition: service_healthy - required: false - oceanbase: - condition: service_healthy - required: false - seekdb: - condition: service_healthy - required: false - redis: - condition: service_started - volumes: - # Mount the storage directory to the container, for storing user files. - - ./volumes/app/storage:/app/api/storage - networks: - - ssrf_proxy_network - - default - - # worker_beat service - # Celery beat for scheduling periodic tasks. - worker_beat: - image: langgenius/dify-api:1.11.1 - restart: always - environment: - # Use the shared environment variables. - <<: *shared-api-worker-env - # Startup mode, 'worker_beat' starts the Celery beat for scheduling periodic tasks. - MODE: beat - depends_on: - init_permissions: - condition: service_completed_successfully - db_postgres: - condition: service_healthy - required: false - db_mysql: - condition: service_healthy - required: false - oceanbase: - condition: service_healthy - required: false - seekdb: - condition: service_healthy - required: false - redis: - condition: service_started - networks: - - ssrf_proxy_network - - default - - # Frontend web application. - web: - image: langgenius/dify-web:1.11.1 - restart: always - environment: - CONSOLE_API_URL: ${CONSOLE_API_URL:-} - APP_API_URL: ${APP_API_URL:-} - AMPLITUDE_API_KEY: ${AMPLITUDE_API_KEY:-} - NEXT_PUBLIC_COOKIE_DOMAIN: ${NEXT_PUBLIC_COOKIE_DOMAIN:-} - SENTRY_DSN: ${WEB_SENTRY_DSN:-} - NEXT_TELEMETRY_DISABLED: ${NEXT_TELEMETRY_DISABLED:-0} - TEXT_GENERATION_TIMEOUT_MS: ${TEXT_GENERATION_TIMEOUT_MS:-60000} - CSP_WHITELIST: ${CSP_WHITELIST:-} - ALLOW_EMBED: ${ALLOW_EMBED:-false} - ALLOW_UNSAFE_DATA_SCHEME: ${ALLOW_UNSAFE_DATA_SCHEME:-false} - MARKETPLACE_API_URL: ${MARKETPLACE_API_URL:-https://marketplace.dify.ai} - MARKETPLACE_URL: ${MARKETPLACE_URL:-https://marketplace.dify.ai} - TOP_K_MAX_VALUE: ${TOP_K_MAX_VALUE:-} - INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH: ${INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH:-} - PM2_INSTANCES: ${PM2_INSTANCES:-2} - LOOP_NODE_MAX_COUNT: ${LOOP_NODE_MAX_COUNT:-100} - MAX_TOOLS_NUM: ${MAX_TOOLS_NUM:-10} - MAX_PARALLEL_LIMIT: ${MAX_PARALLEL_LIMIT:-10} - MAX_ITERATIONS_NUM: ${MAX_ITERATIONS_NUM:-99} - MAX_TREE_DEPTH: ${MAX_TREE_DEPTH:-50} - ENABLE_WEBSITE_JINAREADER: ${ENABLE_WEBSITE_JINAREADER:-true} - ENABLE_WEBSITE_FIRECRAWL: ${ENABLE_WEBSITE_FIRECRAWL:-true} - ENABLE_WEBSITE_WATERCRAWL: ${ENABLE_WEBSITE_WATERCRAWL:-true} - - # The PostgreSQL database. - db_postgres: - image: postgres:15-alpine - # profiles: - # - postgresql - restart: always - environment: - POSTGRES_USER: ${DB_USERNAME:-postgres} - POSTGRES_PASSWORD: ${DB_PASSWORD:-difyai123456} - POSTGRES_DB: ${DB_DATABASE:-dify} - PGDATA: ${PGDATA:-/var/lib/postgresql/data/pgdata} - command: > - postgres -c 'max_connections=${POSTGRES_MAX_CONNECTIONS:-100}' - -c 'shared_buffers=${POSTGRES_SHARED_BUFFERS:-128MB}' - -c 'work_mem=${POSTGRES_WORK_MEM:-4MB}' - -c 'maintenance_work_mem=${POSTGRES_MAINTENANCE_WORK_MEM:-64MB}' - -c 'effective_cache_size=${POSTGRES_EFFECTIVE_CACHE_SIZE:-4096MB}' - -c 'statement_timeout=${POSTGRES_STATEMENT_TIMEOUT:-0}' - -c 'idle_in_transaction_session_timeout=${POSTGRES_IDLE_IN_TRANSACTION_SESSION_TIMEOUT:-0}' - volumes: - - ./volumes/db/data:/var/lib/postgresql/data - healthcheck: - test: - [ - "CMD", - "pg_isready", - "-h", - "db_postgres", - "-U", - "${DB_USERNAME:-postgres}", - "-d", - "${DB_DATABASE:-dify}", - ] - interval: 1s - timeout: 3s - retries: 60 - - # The mysql database. - db_mysql: - image: mysql:8.0 - profiles: - - mysql - restart: always - environment: - MYSQL_ROOT_PASSWORD: ${DB_PASSWORD:-difyai123456} - MYSQL_DATABASE: ${DB_DATABASE:-dify} - command: > - --max_connections=1000 - --innodb_buffer_pool_size=${MYSQL_INNODB_BUFFER_POOL_SIZE:-512M} - --innodb_log_file_size=${MYSQL_INNODB_LOG_FILE_SIZE:-128M} - --innodb_flush_log_at_trx_commit=${MYSQL_INNODB_FLUSH_LOG_AT_TRX_COMMIT:-2} - volumes: - - ${MYSQL_HOST_VOLUME:-./volumes/mysql/data}:/var/lib/mysql - healthcheck: - test: - [ - "CMD", - "mysqladmin", - "ping", - "-u", - "root", - "-p${DB_PASSWORD:-difyai123456}", - ] - interval: 1s - timeout: 3s - retries: 30 - - # The redis cache. - redis: - image: redis:6-alpine - restart: always - environment: - REDISCLI_AUTH: ${REDIS_PASSWORD:-difyai123456} - volumes: - # Mount the redis data directory to the container. - - ./volumes/redis/data:/data - # Set the redis password when startup redis server. - command: redis-server --requirepass ${REDIS_PASSWORD:-difyai123456} - healthcheck: - test: - [ - "CMD-SHELL", - "redis-cli -a ${REDIS_PASSWORD:-difyai123456} ping | grep -q PONG", - ] - - # The DifySandbox - sandbox: - image: langgenius/dify-sandbox:0.2.12 - restart: always - environment: - # The DifySandbox configurations - # Make sure you are changing this key for your deployment with a strong key. - # You can generate a strong key using `openssl rand -base64 42`. - API_KEY: ${SANDBOX_API_KEY:-dify-sandbox} - GIN_MODE: ${SANDBOX_GIN_MODE:-release} - WORKER_TIMEOUT: ${SANDBOX_WORKER_TIMEOUT:-15} - ENABLE_NETWORK: ${SANDBOX_ENABLE_NETWORK:-true} - HTTP_PROXY: ${SANDBOX_HTTP_PROXY:-http://ssrf_proxy:3128} - HTTPS_PROXY: ${SANDBOX_HTTPS_PROXY:-http://ssrf_proxy:3128} - SANDBOX_PORT: ${SANDBOX_PORT:-8194} - PIP_MIRROR_URL: ${PIP_MIRROR_URL:-} - volumes: - - ./volumes/sandbox/dependencies:/dependencies - - ./volumes/sandbox/conf:/conf - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8194/health"] - networks: - - ssrf_proxy_network - - # plugin daemon - plugin_daemon: - image: langgenius/dify-plugin-daemon:0.5.1-local - restart: always - environment: - # Use the shared environment variables. - <<: *shared-api-worker-env - DB_DATABASE: ${DB_PLUGIN_DATABASE:-dify_plugin} - SERVER_PORT: ${PLUGIN_DAEMON_PORT:-5002} - SERVER_KEY: ${PLUGIN_DAEMON_KEY:-lYkiYYT6owG+71oLerGzA7GXCgOT++6ovaezWAjpCjf+Sjc3ZtU+qUEi} - MAX_PLUGIN_PACKAGE_SIZE: ${PLUGIN_MAX_PACKAGE_SIZE:-52428800} - PPROF_ENABLED: ${PLUGIN_PPROF_ENABLED:-false} - DIFY_INNER_API_URL: ${PLUGIN_DIFY_INNER_API_URL:-http://api:5001} - DIFY_INNER_API_KEY: ${PLUGIN_DIFY_INNER_API_KEY:-QaHbTe77CtuXmsfyhR7+vRjI/+XbV1AaFy691iy+kGDv2Jvy0/eAh8Y1} - PLUGIN_REMOTE_INSTALLING_HOST: ${PLUGIN_DEBUGGING_HOST:-0.0.0.0} - PLUGIN_REMOTE_INSTALLING_PORT: ${PLUGIN_DEBUGGING_PORT:-5003} - PLUGIN_WORKING_PATH: ${PLUGIN_WORKING_PATH:-/app/storage/cwd} - FORCE_VERIFYING_SIGNATURE: ${FORCE_VERIFYING_SIGNATURE:-true} - PYTHON_ENV_INIT_TIMEOUT: ${PLUGIN_PYTHON_ENV_INIT_TIMEOUT:-120} - PLUGIN_MAX_EXECUTION_TIMEOUT: ${PLUGIN_MAX_EXECUTION_TIMEOUT:-600} - PLUGIN_STDIO_BUFFER_SIZE: ${PLUGIN_STDIO_BUFFER_SIZE:-1024} - PLUGIN_STDIO_MAX_BUFFER_SIZE: ${PLUGIN_STDIO_MAX_BUFFER_SIZE:-5242880} - PIP_MIRROR_URL: ${PIP_MIRROR_URL:-} - PLUGIN_STORAGE_TYPE: ${PLUGIN_STORAGE_TYPE:-local} - PLUGIN_STORAGE_LOCAL_ROOT: ${PLUGIN_STORAGE_LOCAL_ROOT:-/app/storage} - PLUGIN_INSTALLED_PATH: ${PLUGIN_INSTALLED_PATH:-plugin} - PLUGIN_PACKAGE_CACHE_PATH: ${PLUGIN_PACKAGE_CACHE_PATH:-plugin_packages} - PLUGIN_MEDIA_CACHE_PATH: ${PLUGIN_MEDIA_CACHE_PATH:-assets} - PLUGIN_STORAGE_OSS_BUCKET: ${PLUGIN_STORAGE_OSS_BUCKET:-} - S3_USE_AWS_MANAGED_IAM: ${PLUGIN_S3_USE_AWS_MANAGED_IAM:-false} - S3_USE_AWS: ${PLUGIN_S3_USE_AWS:-false} - S3_ENDPOINT: ${PLUGIN_S3_ENDPOINT:-} - S3_USE_PATH_STYLE: ${PLUGIN_S3_USE_PATH_STYLE:-false} - AWS_ACCESS_KEY: ${PLUGIN_AWS_ACCESS_KEY:-} - AWS_SECRET_KEY: ${PLUGIN_AWS_SECRET_KEY:-} - AWS_REGION: ${PLUGIN_AWS_REGION:-} - AZURE_BLOB_STORAGE_CONNECTION_STRING: ${PLUGIN_AZURE_BLOB_STORAGE_CONNECTION_STRING:-} - AZURE_BLOB_STORAGE_CONTAINER_NAME: ${PLUGIN_AZURE_BLOB_STORAGE_CONTAINER_NAME:-} - TENCENT_COS_SECRET_KEY: ${PLUGIN_TENCENT_COS_SECRET_KEY:-} - TENCENT_COS_SECRET_ID: ${PLUGIN_TENCENT_COS_SECRET_ID:-} - TENCENT_COS_REGION: ${PLUGIN_TENCENT_COS_REGION:-} - ALIYUN_OSS_REGION: ${PLUGIN_ALIYUN_OSS_REGION:-} - ALIYUN_OSS_ENDPOINT: ${PLUGIN_ALIYUN_OSS_ENDPOINT:-} - ALIYUN_OSS_ACCESS_KEY_ID: ${PLUGIN_ALIYUN_OSS_ACCESS_KEY_ID:-} - ALIYUN_OSS_ACCESS_KEY_SECRET: ${PLUGIN_ALIYUN_OSS_ACCESS_KEY_SECRET:-} - ALIYUN_OSS_AUTH_VERSION: ${PLUGIN_ALIYUN_OSS_AUTH_VERSION:-v4} - ALIYUN_OSS_PATH: ${PLUGIN_ALIYUN_OSS_PATH:-} - VOLCENGINE_TOS_ENDPOINT: ${PLUGIN_VOLCENGINE_TOS_ENDPOINT:-} - VOLCENGINE_TOS_ACCESS_KEY: ${PLUGIN_VOLCENGINE_TOS_ACCESS_KEY:-} - VOLCENGINE_TOS_SECRET_KEY: ${PLUGIN_VOLCENGINE_TOS_SECRET_KEY:-} - VOLCENGINE_TOS_REGION: ${PLUGIN_VOLCENGINE_TOS_REGION:-} - SENTRY_ENABLED: ${PLUGIN_SENTRY_ENABLED:-false} - SENTRY_DSN: ${PLUGIN_SENTRY_DSN:-} - ports: - - "${EXPOSE_PLUGIN_DEBUGGING_PORT:-5003}:${PLUGIN_DEBUGGING_PORT:-5003}" - volumes: - - ./volumes/plugin_daemon:/app/storage - depends_on: - db_postgres: - condition: service_healthy - required: false - db_mysql: - condition: service_healthy - required: false - oceanbase: - condition: service_healthy - required: false - seekdb: - condition: service_healthy - required: false - - # ssrf_proxy server - # for more information, please refer to - # https://docs.dify.ai/learn-more/faq/install-faq#18-why-is-ssrf-proxy-needed%3F - ssrf_proxy: - image: ubuntu/squid:latest - restart: always - volumes: - - ./ssrf_proxy/squid.conf.template:/etc/squid/squid.conf.template - - ./ssrf_proxy/docker-entrypoint.sh:/docker-entrypoint-mount.sh - entrypoint: - [ - "sh", - "-c", - "cp /docker-entrypoint-mount.sh /docker-entrypoint.sh && sed -i 's/\r$$//' /docker-entrypoint.sh && chmod +x /docker-entrypoint.sh && /docker-entrypoint.sh", - ] - environment: - # pls clearly modify the squid env vars to fit your network environment. - HTTP_PORT: ${SSRF_HTTP_PORT:-3128} - COREDUMP_DIR: ${SSRF_COREDUMP_DIR:-/var/spool/squid} - REVERSE_PROXY_PORT: ${SSRF_REVERSE_PROXY_PORT:-8194} - SANDBOX_HOST: ${SSRF_SANDBOX_HOST:-sandbox} - SANDBOX_PORT: ${SANDBOX_PORT:-8194} - networks: - - ssrf_proxy_network - - default - - # Certbot service - # use `docker-compose --profile certbot up` to start the certbot service. - certbot: - image: certbot/certbot - profiles: - - certbot - volumes: - - ./volumes/certbot/conf:/etc/letsencrypt - - ./volumes/certbot/www:/var/www/html - - ./volumes/certbot/logs:/var/log/letsencrypt - - ./volumes/certbot/conf/live:/etc/letsencrypt/live - - ./certbot/update-cert.template.txt:/update-cert.template.txt - - ./certbot/docker-entrypoint.sh:/docker-entrypoint.sh - environment: - - CERTBOT_EMAIL=${CERTBOT_EMAIL} - - CERTBOT_DOMAIN=${CERTBOT_DOMAIN} - - CERTBOT_OPTIONS=${CERTBOT_OPTIONS:-} - entrypoint: ["/docker-entrypoint.sh"] - command: ["tail", "-f", "/dev/null"] - - # The nginx reverse proxy. - # used for reverse proxying the API service and Web service. - nginx: - image: nginx:latest - restart: always - volumes: - - ./nginx/nginx.conf.template:/etc/nginx/nginx.conf.template - - ./nginx/proxy.conf.template:/etc/nginx/proxy.conf.template - - ./nginx/https.conf.template:/etc/nginx/https.conf.template - - ./nginx/conf.d:/etc/nginx/conf.d - - ./nginx/docker-entrypoint.sh:/docker-entrypoint-mount.sh - - ./nginx/ssl:/etc/ssl # cert dir (legacy) - - ./volumes/certbot/conf/live:/etc/letsencrypt/live # cert dir (with certbot container) - - ./volumes/certbot/conf:/etc/letsencrypt - - ./volumes/certbot/www:/var/www/html - entrypoint: - [ - "sh", - "-c", - "cp /docker-entrypoint-mount.sh /docker-entrypoint.sh && sed -i 's/\r$$//' /docker-entrypoint.sh && chmod +x /docker-entrypoint.sh && /docker-entrypoint.sh", - ] - environment: - NGINX_SERVER_NAME: ${NGINX_SERVER_NAME:-_} - NGINX_HTTPS_ENABLED: ${NGINX_HTTPS_ENABLED:-false} - NGINX_SSL_PORT: ${NGINX_SSL_PORT:-443} - NGINX_PORT: ${NGINX_PORT:-80} - # You're required to add your own SSL certificates/keys to the `./nginx/ssl` directory - # and modify the env vars below in .env if HTTPS_ENABLED is true. - NGINX_SSL_CERT_FILENAME: ${NGINX_SSL_CERT_FILENAME:-dify.crt} - NGINX_SSL_CERT_KEY_FILENAME: ${NGINX_SSL_CERT_KEY_FILENAME:-dify.key} - NGINX_SSL_PROTOCOLS: ${NGINX_SSL_PROTOCOLS:-TLSv1.1 TLSv1.2 TLSv1.3} - NGINX_WORKER_PROCESSES: ${NGINX_WORKER_PROCESSES:-auto} - NGINX_CLIENT_MAX_BODY_SIZE: ${NGINX_CLIENT_MAX_BODY_SIZE:-100M} - NGINX_KEEPALIVE_TIMEOUT: ${NGINX_KEEPALIVE_TIMEOUT:-65} - NGINX_PROXY_READ_TIMEOUT: ${NGINX_PROXY_READ_TIMEOUT:-3600s} - NGINX_PROXY_SEND_TIMEOUT: ${NGINX_PROXY_SEND_TIMEOUT:-3600s} - NGINX_ENABLE_CERTBOT_CHALLENGE: ${NGINX_ENABLE_CERTBOT_CHALLENGE:-false} - CERTBOT_DOMAIN: ${CERTBOT_DOMAIN:-} - depends_on: - - api - - web - ports: - - "${EXPOSE_NGINX_PORT:-80}:${NGINX_PORT:-80}" - - "${EXPOSE_NGINX_SSL_PORT:-443}:${NGINX_SSL_PORT:-443}" - networks: - - ssrf_proxy_network - - default - - urban-lifeline - - # The Weaviate vector store. - weaviate: - image: semitechnologies/weaviate:1.27.0 - # profiles: - # - weaviate - restart: always - volumes: - # Mount the Weaviate data directory to the con tainer. - - ./volumes/weaviate:/var/lib/weaviate - environment: - # The Weaviate configurations - # You can refer to the [Weaviate](https://weaviate.io/developers/weaviate/config-refs/env-vars) documentation for more information. - PERSISTENCE_DATA_PATH: ${WEAVIATE_PERSISTENCE_DATA_PATH:-/var/lib/weaviate} - QUERY_DEFAULTS_LIMIT: ${WEAVIATE_QUERY_DEFAULTS_LIMIT:-25} - AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: ${WEAVIATE_AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED:-false} - DEFAULT_VECTORIZER_MODULE: ${WEAVIATE_DEFAULT_VECTORIZER_MODULE:-none} - CLUSTER_HOSTNAME: ${WEAVIATE_CLUSTER_HOSTNAME:-node1} - AUTHENTICATION_APIKEY_ENABLED: ${WEAVIATE_AUTHENTICATION_APIKEY_ENABLED:-true} - AUTHENTICATION_APIKEY_ALLOWED_KEYS: ${WEAVIATE_AUTHENTICATION_APIKEY_ALLOWED_KEYS:-WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih} - AUTHENTICATION_APIKEY_USERS: ${WEAVIATE_AUTHENTICATION_APIKEY_USERS:-hello@dify.ai} - AUTHORIZATION_ADMINLIST_ENABLED: ${WEAVIATE_AUTHORIZATION_ADMINLIST_ENABLED:-true} - AUTHORIZATION_ADMINLIST_USERS: ${WEAVIATE_AUTHORIZATION_ADMINLIST_USERS:-hello@dify.ai} - DISABLE_TELEMETRY: ${WEAVIATE_DISABLE_TELEMETRY:-false} - ENABLE_TOKENIZER_GSE: ${WEAVIATE_ENABLE_TOKENIZER_GSE:-false} - ENABLE_TOKENIZER_KAGOME_JA: ${WEAVIATE_ENABLE_TOKENIZER_KAGOME_JA:-false} - ENABLE_TOKENIZER_KAGOME_KR: ${WEAVIATE_ENABLE_TOKENIZER_KAGOME_KR:-false} - - # OceanBase vector database - oceanbase: - image: oceanbase/oceanbase-ce:4.3.5-lts - container_name: oceanbase - profiles: - - oceanbase - restart: always - volumes: - - ./volumes/oceanbase/data:/root/ob - - ./volumes/oceanbase/conf:/root/.obd/cluster - - ./volumes/oceanbase/init.d:/root/boot/init.d - environment: - OB_MEMORY_LIMIT: ${OCEANBASE_MEMORY_LIMIT:-6G} - OB_SYS_PASSWORD: ${OCEANBASE_VECTOR_PASSWORD:-difyai123456} - OB_TENANT_PASSWORD: ${OCEANBASE_VECTOR_PASSWORD:-difyai123456} - OB_CLUSTER_NAME: ${OCEANBASE_CLUSTER_NAME:-difyai} - OB_SERVER_IP: 127.0.0.1 - MODE: mini - LANG: en_US.UTF-8 - ports: - - "${OCEANBASE_VECTOR_PORT:-2881}:2881" - healthcheck: - test: - [ - "CMD-SHELL", - 'obclient -h127.0.0.1 -P2881 -uroot@test -p${OCEANBASE_VECTOR_PASSWORD:-difyai123456} -e "SELECT 1;"', - ] - interval: 10s - retries: 30 - start_period: 30s - timeout: 10s - - # seekdb vector database - seekdb: - image: oceanbase/seekdb:latest - container_name: seekdb - profiles: - - seekdb - restart: always - volumes: - - ./volumes/seekdb:/var/lib/oceanbase - environment: - ROOT_PASSWORD: ${OCEANBASE_VECTOR_PASSWORD:-difyai123456} - MEMORY_LIMIT: ${SEEKDB_MEMORY_LIMIT:-2G} - REPORTER: dify-ai-seekdb - ports: - - "${OCEANBASE_VECTOR_PORT:-2881}:2881" - healthcheck: - test: - [ - "CMD-SHELL", - 'mysql -h127.0.0.1 -P2881 -uroot -p${OCEANBASE_VECTOR_PASSWORD:-difyai123456} -e "SELECT 1;"', - ] - interval: 5s - retries: 60 - timeout: 5s - - # Qdrant vector store. - # (if used, you need to set VECTOR_STORE to qdrant in the api & worker service.) - qdrant: - image: langgenius/qdrant:v1.8.3 - profiles: - - qdrant - restart: always - volumes: - - ./volumes/qdrant:/qdrant/storage - environment: - QDRANT_API_KEY: ${QDRANT_API_KEY:-difyai123456} - - # The Couchbase vector store. - couchbase-server: - build: ./couchbase-server - profiles: - - couchbase - restart: always - environment: - - CLUSTER_NAME=dify_search - - COUCHBASE_ADMINISTRATOR_USERNAME=${COUCHBASE_USER:-Administrator} - - COUCHBASE_ADMINISTRATOR_PASSWORD=${COUCHBASE_PASSWORD:-password} - - COUCHBASE_BUCKET=${COUCHBASE_BUCKET_NAME:-Embeddings} - - COUCHBASE_BUCKET_RAMSIZE=512 - - COUCHBASE_RAM_SIZE=2048 - - COUCHBASE_EVENTING_RAM_SIZE=512 - - COUCHBASE_INDEX_RAM_SIZE=512 - - COUCHBASE_FTS_RAM_SIZE=1024 - hostname: couchbase-server - container_name: couchbase-server - working_dir: /opt/couchbase - stdin_open: true - tty: true - entrypoint: [""] - command: sh -c "/opt/couchbase/init/init-cbserver.sh" - volumes: - - ./volumes/couchbase/data:/opt/couchbase/var/lib/couchbase/data - healthcheck: - # ensure bucket was created before proceeding - test: - [ - "CMD-SHELL", - "curl -s -f -u Administrator:password http://localhost:8091/pools/default/buckets | grep -q '\\[{' || exit 1", - ] - interval: 10s - retries: 10 - start_period: 30s - timeout: 10s - - # The pgvector vector database. - pgvector: - image: pgvector/pgvector:pg16 - profiles: - - pgvector - restart: always - environment: - PGUSER: ${PGVECTOR_PGUSER:-postgres} - # The password for the default postgres user. - POSTGRES_PASSWORD: ${PGVECTOR_POSTGRES_PASSWORD:-difyai123456} - # The name of the default postgres database. - POSTGRES_DB: ${PGVECTOR_POSTGRES_DB:-dify} - # postgres data directory - PGDATA: ${PGVECTOR_PGDATA:-/var/lib/postgresql/data/pgdata} - # pg_bigm module for full text search - PG_BIGM: ${PGVECTOR_PG_BIGM:-false} - PG_BIGM_VERSION: ${PGVECTOR_PG_BIGM_VERSION:-1.2-20240606} - volumes: - - ./volumes/pgvector/data:/var/lib/postgresql/data - - ./pgvector/docker-entrypoint.sh:/docker-entrypoint.sh - entrypoint: ["/docker-entrypoint.sh"] - healthcheck: - test: ["CMD", "pg_isready"] - interval: 1s - timeout: 3s - retries: 30 - - # get image from https://www.vastdata.com.cn/ - vastbase: - image: vastdata/vastbase-vector - profiles: - - vastbase - restart: always - environment: - - VB_DBCOMPATIBILITY=PG - - VB_DB=dify - - VB_USERNAME=dify - - VB_PASSWORD=Difyai123456 - ports: - - "5434:5432" - volumes: - - ./vastbase/lic:/home/vastbase/vastbase/lic - - ./vastbase/data:/home/vastbase/data - - ./vastbase/backup:/home/vastbase/backup - - ./vastbase/backup_log:/home/vastbase/backup_log - healthcheck: - test: ["CMD", "pg_isready"] - interval: 1s - timeout: 3s - retries: 30 - - # pgvecto-rs vector store - pgvecto-rs: - image: tensorchord/pgvecto-rs:pg16-v0.3.0 - profiles: - - pgvecto-rs - restart: always - environment: - PGUSER: ${PGVECTOR_PGUSER:-postgres} - # The password for the default postgres user. - POSTGRES_PASSWORD: ${PGVECTOR_POSTGRES_PASSWORD:-difyai123456} - # The name of the default postgres database. - POSTGRES_DB: ${PGVECTOR_POSTGRES_DB:-dify} - # postgres data directory - PGDATA: ${PGVECTOR_PGDATA:-/var/lib/postgresql/data/pgdata} - volumes: - - ./volumes/pgvecto_rs/data:/var/lib/postgresql/data - healthcheck: - test: ["CMD", "pg_isready"] - interval: 1s - timeout: 3s - retries: 30 - - # Chroma vector database - chroma: - image: ghcr.io/chroma-core/chroma:0.5.20 - profiles: - - chroma - restart: always - volumes: - - ./volumes/chroma:/chroma/chroma - environment: - CHROMA_SERVER_AUTHN_CREDENTIALS: ${CHROMA_SERVER_AUTHN_CREDENTIALS:-difyai123456} - CHROMA_SERVER_AUTHN_PROVIDER: ${CHROMA_SERVER_AUTHN_PROVIDER:-chromadb.auth.token_authn.TokenAuthenticationServerProvider} - IS_PERSISTENT: ${CHROMA_IS_PERSISTENT:-TRUE} - - # Oracle vector database - oracle: - image: container-registry.oracle.com/database/free:latest - profiles: - - oracle - restart: always - volumes: - - source: oradata - type: volume - target: /opt/oracle/oradata - - ./startupscripts:/opt/oracle/scripts/startup - environment: - ORACLE_PWD: ${ORACLE_PWD:-Dify123456} - ORACLE_CHARACTERSET: ${ORACLE_CHARACTERSET:-AL32UTF8} - - # Milvus vector database services - etcd: - container_name: milvus-etcd - image: quay.io/coreos/etcd:v3.5.5 - profiles: - - milvus - environment: - ETCD_AUTO_COMPACTION_MODE: ${ETCD_AUTO_COMPACTION_MODE:-revision} - ETCD_AUTO_COMPACTION_RETENTION: ${ETCD_AUTO_COMPACTION_RETENTION:-1000} - ETCD_QUOTA_BACKEND_BYTES: ${ETCD_QUOTA_BACKEND_BYTES:-4294967296} - ETCD_SNAPSHOT_COUNT: ${ETCD_SNAPSHOT_COUNT:-50000} - volumes: - - ./volumes/milvus/etcd:/etcd - command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd - healthcheck: - test: ["CMD", "etcdctl", "endpoint", "health"] - interval: 30s - timeout: 20s - retries: 3 - networks: - - milvus - - minio: - container_name: milvus-minio - image: minio/minio:RELEASE.2023-03-20T20-16-18Z - profiles: - - milvus - environment: - MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY:-minioadmin} - MINIO_SECRET_KEY: ${MINIO_SECRET_KEY:-minioadmin} - volumes: - - ./volumes/milvus/minio:/minio_data - command: minio server /minio_data --console-address ":9001" - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] - interval: 30s - timeout: 20s - retries: 3 - networks: - - milvus - - milvus-standalone: - container_name: milvus-standalone - image: milvusdb/milvus:v2.6.3 - profiles: - - milvus - command: ["milvus", "run", "standalone"] - environment: - ETCD_ENDPOINTS: ${ETCD_ENDPOINTS:-etcd:2379} - MINIO_ADDRESS: ${MINIO_ADDRESS:-minio:9000} - common.security.authorizationEnabled: ${MILVUS_AUTHORIZATION_ENABLED:-true} - volumes: - - ./volumes/milvus/milvus:/var/lib/milvus - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"] - interval: 30s - start_period: 90s - timeout: 20s - retries: 3 - depends_on: - - etcd - - minio - ports: - - 19530:19530 - - 9091:9091 - networks: - - milvus - - # Opensearch vector database - opensearch: - container_name: opensearch - image: opensearchproject/opensearch:latest - profiles: - - opensearch - environment: - discovery.type: ${OPENSEARCH_DISCOVERY_TYPE:-single-node} - bootstrap.memory_lock: ${OPENSEARCH_BOOTSTRAP_MEMORY_LOCK:-true} - OPENSEARCH_JAVA_OPTS: -Xms${OPENSEARCH_JAVA_OPTS_MIN:-512m} -Xmx${OPENSEARCH_JAVA_OPTS_MAX:-1024m} - OPENSEARCH_INITIAL_ADMIN_PASSWORD: ${OPENSEARCH_INITIAL_ADMIN_PASSWORD:-Qazwsxedc!@#123} - ulimits: - memlock: - soft: ${OPENSEARCH_MEMLOCK_SOFT:--1} - hard: ${OPENSEARCH_MEMLOCK_HARD:--1} - nofile: - soft: ${OPENSEARCH_NOFILE_SOFT:-65536} - hard: ${OPENSEARCH_NOFILE_HARD:-65536} - volumes: - - ./volumes/opensearch/data:/usr/share/opensearch/data - networks: - - opensearch-net - - opensearch-dashboards: - container_name: opensearch-dashboards - image: opensearchproject/opensearch-dashboards:latest - profiles: - - opensearch - environment: - OPENSEARCH_HOSTS: '["https://opensearch:9200"]' - volumes: - - ./volumes/opensearch/opensearch_dashboards.yml:/usr/share/opensearch-dashboards/config/opensearch_dashboards.yml - networks: - - opensearch-net - depends_on: - - opensearch - - # opengauss vector database. - opengauss: - image: opengauss/opengauss:7.0.0-RC1 - profiles: - - opengauss - privileged: true - restart: always - environment: - GS_USERNAME: ${OPENGAUSS_USER:-postgres} - GS_PASSWORD: ${OPENGAUSS_PASSWORD:-Dify@123} - GS_PORT: ${OPENGAUSS_PORT:-6600} - GS_DB: ${OPENGAUSS_DATABASE:-dify} - volumes: - - ./volumes/opengauss/data:/var/lib/opengauss/data - healthcheck: - test: ["CMD-SHELL", "netstat -lntp | grep tcp6 > /dev/null 2>&1"] - interval: 10s - timeout: 10s - retries: 10 - ports: - - ${OPENGAUSS_PORT:-6600}:${OPENGAUSS_PORT:-6600} - - # MyScale vector database - myscale: - container_name: myscale - image: myscale/myscaledb:1.6.4 - profiles: - - myscale - restart: always - tty: true - volumes: - - ./volumes/myscale/data:/var/lib/clickhouse - - ./volumes/myscale/log:/var/log/clickhouse-server - - ./volumes/myscale/config/users.d/custom_users_config.xml:/etc/clickhouse-server/users.d/custom_users_config.xml - ports: - - ${MYSCALE_PORT:-8123}:${MYSCALE_PORT:-8123} - - # Matrixone vector store. - matrixone: - hostname: matrixone - image: matrixorigin/matrixone:2.1.1 - profiles: - - matrixone - restart: always - volumes: - - ./volumes/matrixone/data:/mo-data - ports: - - ${MATRIXONE_PORT:-6001}:${MATRIXONE_PORT:-6001} - - # https://www.elastic.co/guide/en/elasticsearch/reference/current/settings.html - # https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html#docker-prod-prerequisites - elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:8.14.3 - container_name: elasticsearch - profiles: - - elasticsearch - - elasticsearch-ja - restart: always - volumes: - - ./elasticsearch/docker-entrypoint.sh:/docker-entrypoint-mount.sh - - dify_es01_data:/usr/share/elasticsearch/data - environment: - ELASTIC_PASSWORD: ${ELASTICSEARCH_PASSWORD:-elastic} - VECTOR_STORE: ${VECTOR_STORE:-} - cluster.name: dify-es-cluster - node.name: dify-es0 - discovery.type: single-node - xpack.license.self_generated.type: basic - xpack.security.enabled: "true" - xpack.security.enrollment.enabled: "false" - xpack.security.http.ssl.enabled: "false" - ports: - - ${ELASTICSEARCH_PORT:-9200}:9200 - deploy: - resources: - limits: - memory: 2g - entrypoint: ["sh", "-c", "sh /docker-entrypoint-mount.sh"] - healthcheck: - test: - ["CMD", "curl", "-s", "http://localhost:9200/_cluster/health?pretty"] - interval: 30s - timeout: 10s - retries: 50 - - # https://www.elastic.co/guide/en/kibana/current/docker.html - # https://www.elastic.co/guide/en/kibana/current/settings.html - kibana: - image: docker.elastic.co/kibana/kibana:8.14.3 - container_name: kibana - profiles: - - elasticsearch - depends_on: - - elasticsearch - restart: always - environment: - XPACK_ENCRYPTEDSAVEDOBJECTS_ENCRYPTIONKEY: d1a66dfd-c4d3-4a0a-8290-2abcb83ab3aa - NO_PROXY: localhost,127.0.0.1,elasticsearch,kibana - XPACK_SECURITY_ENABLED: "true" - XPACK_SECURITY_ENROLLMENT_ENABLED: "false" - XPACK_SECURITY_HTTP_SSL_ENABLED: "false" - XPACK_FLEET_ISAIRGAPPED: "true" - I18N_LOCALE: zh-CN - SERVER_PORT: "5601" - ELASTICSEARCH_HOSTS: http://elasticsearch:9200 - ports: - - ${KIBANA_PORT:-5601}:5601 - healthcheck: - test: ["CMD-SHELL", "curl -s http://localhost:5601 >/dev/null || exit 1"] - interval: 30s - timeout: 10s - retries: 3 - - # unstructured . - # (if used, you need to set ETL_TYPE to Unstructured in the api & worker service.) - unstructured: - image: downloads.unstructured.io/unstructured-io/unstructured-api:latest - profiles: - - unstructured - restart: always - volumes: - - ./volumes/unstructured:/app/data - -networks: - # create a network between sandbox, api and ssrf_proxy, and can not access outside. - ssrf_proxy_network: - driver: bridge - internal: true - milvus: - driver: bridge - opensearch-net: - driver: bridge - internal: true - urban-lifeline: # 添加外部网络引用 - external: true - name: urban-lifeline -volumes: - oradata: - dify_es01_data: diff --git a/docker/dify/elasticsearch/docker-entrypoint.sh b/docker/dify/elasticsearch/docker-entrypoint.sh deleted file mode 100644 index 6669aec5..00000000 --- a/docker/dify/elasticsearch/docker-entrypoint.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -set -e - -if [ "${VECTOR_STORE}" = "elasticsearch-ja" ]; then - # Check if the ICU tokenizer plugin is installed - if ! /usr/share/elasticsearch/bin/elasticsearch-plugin list | grep -q analysis-icu; then - printf '%s\n' "Installing the ICU tokenizer plugin" - if ! /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-icu; then - printf '%s\n' "Failed to install the ICU tokenizer plugin" - exit 1 - fi - fi - # Check if the Japanese language analyzer plugin is installed - if ! /usr/share/elasticsearch/bin/elasticsearch-plugin list | grep -q analysis-kuromoji; then - printf '%s\n' "Installing the Japanese language analyzer plugin" - if ! /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji; then - printf '%s\n' "Failed to install the Japanese language analyzer plugin" - exit 1 - fi - fi -fi - -# Run the original entrypoint script -exec /bin/tini -- /usr/local/bin/docker-entrypoint.sh diff --git a/docker/dify/generate_docker_compose b/docker/dify/generate_docker_compose deleted file mode 100644 index b5c0acef..00000000 --- a/docker/dify/generate_docker_compose +++ /dev/null @@ -1,112 +0,0 @@ -#!/usr/bin/env python3 -import os -import re -import sys - - -def parse_env_example(file_path): - """ - Parses the .env.example file and returns a dictionary with variable names as keys and default values as values. - """ - env_vars = {} - with open(file_path, "r") as f: - for line_number, line in enumerate(f, 1): - line = line.strip() - # Ignore empty lines and comments - if not line or line.startswith("#"): - continue - # Use regex to parse KEY=VALUE - match = re.match(r"^([^=]+)=(.*)$", line) - if match: - key = match.group(1).strip() - value = match.group(2).strip() - # Remove possible quotes around the value - if (value.startswith('"') and value.endswith('"')) or ( - value.startswith("'") and value.endswith("'") - ): - value = value[1:-1] - env_vars[key] = value - else: - print(f"Warning: Unable to parse line {line_number}: {line}") - return env_vars - - -def generate_shared_env_block(env_vars, anchor_name="shared-api-worker-env"): - """ - Generates a shared environment variables block as a YAML string. - """ - lines = [f"x-shared-env: &{anchor_name}"] - for key, default in env_vars.items(): - if key == "COMPOSE_PROFILES": - continue - # If default value is empty, use ${KEY:-} - if default == "": - lines.append(f" {key}: ${{{key}:-}}") - else: - # If default value contains special characters, wrap it in quotes - if re.search(r"[:\s]", default): - default = f"{default}" - lines.append(f" {key}: ${{{key}:-{default}}}") - return "\n".join(lines) - - -def insert_shared_env(template_path, output_path, shared_env_block, header_comments): - """ - Inserts the shared environment variables block and header comments into the template file, - removing any existing x-shared-env anchors, and generates the final docker-compose.yaml file. - """ - with open(template_path, "r") as f: - template_content = f.read() - - # Remove existing x-shared-env: &shared-api-worker-env lines - template_content = re.sub( - r"^x-shared-env: &shared-api-worker-env\s*\n?", - "", - template_content, - flags=re.MULTILINE, - ) - - # Prepare the final content with header comments and shared env block - final_content = f"{header_comments}\n{shared_env_block}\n\n{template_content}" - - with open(output_path, "w") as f: - f.write(final_content) - print(f"Generated {output_path}") - - -def main(): - env_example_path = ".env.example" - template_path = "docker-compose-template.yaml" - output_path = "docker-compose.yaml" - anchor_name = "shared-api-worker-env" # Can be modified as needed - - # Define header comments to be added at the top of docker-compose.yaml - header_comments = ( - "# ==================================================================\n" - "# WARNING: This file is auto-generated by generate_docker_compose\n" - "# Do not modify this file directly. Instead, update the .env.example\n" - "# or docker-compose-template.yaml and regenerate this file.\n" - "# ==================================================================\n" - ) - - # Check if required files exist - for path in [env_example_path, template_path]: - if not os.path.isfile(path): - print(f"Error: File {path} does not exist.") - sys.exit(1) - - # Parse .env.example file - env_vars = parse_env_example(env_example_path) - - if not env_vars: - print("Warning: No environment variables found in .env.example.") - - # Generate shared environment variables block - shared_env_block = generate_shared_env_block(env_vars, anchor_name) - - # Insert shared environment variables block and header comments into the template - insert_shared_env(template_path, output_path, shared_env_block, header_comments) - - -if __name__ == "__main__": - main() diff --git a/docker/dify/middleware.env.example b/docker/dify/middleware.env.example deleted file mode 100644 index d4cbcd17..00000000 --- a/docker/dify/middleware.env.example +++ /dev/null @@ -1,215 +0,0 @@ -# ------------------------------ -# Environment Variables for db Service -# ------------------------------ -# Database Configuration -# Database type, supported values are `postgresql` and `mysql` -DB_TYPE=postgresql -# For MySQL, only `root` user is supported for now -DB_USERNAME=postgres -DB_PASSWORD=difyai123456 -DB_HOST=db_postgres -DB_PORT=5432 -DB_DATABASE=dify - -# PostgreSQL Configuration -# postgres data directory -PGDATA=/var/lib/postgresql/data/pgdata -PGDATA_HOST_VOLUME=./volumes/db/data - -# Maximum number of connections to the database -# Default is 100 -# -# Reference: https://www.postgresql.org/docs/current/runtime-config-connection.html#GUC-MAX-CONNECTIONS -POSTGRES_MAX_CONNECTIONS=100 - -# Sets the amount of shared memory used for postgres's shared buffers. -# Default is 128MB -# Recommended value: 25% of available memory -# Reference: https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-SHARED-BUFFERS -POSTGRES_SHARED_BUFFERS=128MB - -# Sets the amount of memory used by each database worker for working space. -# Default is 4MB -# -# Reference: https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-WORK-MEM -POSTGRES_WORK_MEM=4MB - -# Sets the amount of memory reserved for maintenance activities. -# Default is 64MB -# -# Reference: https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-MAINTENANCE-WORK-MEM -POSTGRES_MAINTENANCE_WORK_MEM=64MB - -# Sets the planner's assumption about the effective cache size. -# Default is 4096MB -# -# Reference: https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-EFFECTIVE-CACHE-SIZE -POSTGRES_EFFECTIVE_CACHE_SIZE=4096MB - -# Sets the maximum allowed duration of any statement before termination. -# Default is 0 (no timeout). -# -# Reference: https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-STATEMENT-TIMEOUT -# A value of 0 prevents the server from timing out statements. -POSTGRES_STATEMENT_TIMEOUT=0 - -# Sets the maximum allowed duration of any idle in-transaction session before termination. -# Default is 0 (no timeout). -# -# Reference: https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-IDLE-IN-TRANSACTION-SESSION-TIMEOUT -# A value of 0 prevents the server from terminating idle sessions. -POSTGRES_IDLE_IN_TRANSACTION_SESSION_TIMEOUT=0 - -# MySQL Configuration -# MySQL data directory host volume -MYSQL_HOST_VOLUME=./volumes/mysql/data - -# MySQL Performance Configuration -# Maximum number of connections to MySQL -# Default is 1000 -MYSQL_MAX_CONNECTIONS=1000 - -# InnoDB buffer pool size -# Default is 512M -# Recommended value: 70-80% of available memory for dedicated MySQL server -# Reference: https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_buffer_pool_size -MYSQL_INNODB_BUFFER_POOL_SIZE=512M - -# InnoDB log file size -# Default is 128M -# Reference: https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_log_file_size -MYSQL_INNODB_LOG_FILE_SIZE=128M - -# InnoDB flush log at transaction commit -# Default is 2 (flush to OS cache, sync every second) -# Options: 0 (no flush), 1 (flush and sync), 2 (flush to OS cache) -# Reference: https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_flush_log_at_trx_commit -MYSQL_INNODB_FLUSH_LOG_AT_TRX_COMMIT=2 - -# ----------------------------- -# Environment Variables for redis Service -# ----------------------------- -REDIS_HOST_VOLUME=./volumes/redis/data -REDIS_PASSWORD=difyai123456 - -# ------------------------------ -# Environment Variables for sandbox Service -# ------------------------------ -SANDBOX_API_KEY=dify-sandbox -SANDBOX_GIN_MODE=release -SANDBOX_WORKER_TIMEOUT=15 -SANDBOX_ENABLE_NETWORK=true -SANDBOX_HTTP_PROXY=http://ssrf_proxy:3128 -SANDBOX_HTTPS_PROXY=http://ssrf_proxy:3128 -SANDBOX_PORT=8194 - -# ------------------------------ -# Environment Variables for ssrf_proxy Service -# ------------------------------ -SSRF_HTTP_PORT=3128 -SSRF_COREDUMP_DIR=/var/spool/squid -SSRF_REVERSE_PROXY_PORT=8194 -SSRF_SANDBOX_HOST=sandbox - -# ------------------------------ -# Environment Variables for weaviate Service -# ------------------------------ -WEAVIATE_QUERY_DEFAULTS_LIMIT=25 -WEAVIATE_AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=true -WEAVIATE_DEFAULT_VECTORIZER_MODULE=none -WEAVIATE_CLUSTER_HOSTNAME=node1 -WEAVIATE_AUTHENTICATION_APIKEY_ENABLED=true -WEAVIATE_AUTHENTICATION_APIKEY_ALLOWED_KEYS=WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih -WEAVIATE_AUTHENTICATION_APIKEY_USERS=hello@dify.ai -WEAVIATE_AUTHORIZATION_ADMINLIST_ENABLED=true -WEAVIATE_AUTHORIZATION_ADMINLIST_USERS=hello@dify.ai -WEAVIATE_DISABLE_TELEMETRY=false -WEAVIATE_HOST_VOLUME=./volumes/weaviate - -# ------------------------------ -# Docker Compose profile configuration -# ------------------------------ -# Loaded automatically when running `docker compose --env-file middleware.env ...`. -# Controls which DB/vector services start, so no extra `--profile` flag is needed. -COMPOSE_PROFILES=${DB_TYPE:-postgresql},weaviate - -# ------------------------------ -# Docker Compose Service Expose Host Port Configurations -# ------------------------------ -EXPOSE_POSTGRES_PORT=5432 -EXPOSE_MYSQL_PORT=3306 -EXPOSE_REDIS_PORT=6379 -EXPOSE_SANDBOX_PORT=8194 -EXPOSE_SSRF_PROXY_PORT=3128 -EXPOSE_WEAVIATE_PORT=8080 - -# ------------------------------ -# Plugin Daemon Configuration -# ------------------------------ - -DB_PLUGIN_DATABASE=dify_plugin -EXPOSE_PLUGIN_DAEMON_PORT=5002 -PLUGIN_DAEMON_PORT=5002 -PLUGIN_DAEMON_KEY=lYkiYYT6owG+71oLerGzA7GXCgOT++6ovaezWAjpCjf+Sjc3ZtU+qUEi -PLUGIN_DAEMON_URL=http://host.docker.internal:5002 -PLUGIN_MAX_PACKAGE_SIZE=52428800 -PLUGIN_PPROF_ENABLED=false -PLUGIN_WORKING_PATH=/app/storage/cwd - -ENDPOINT_URL_TEMPLATE=http://localhost:5002/e/{hook_id} - -PLUGIN_DEBUGGING_PORT=5003 -PLUGIN_DEBUGGING_HOST=0.0.0.0 -EXPOSE_PLUGIN_DEBUGGING_HOST=localhost -EXPOSE_PLUGIN_DEBUGGING_PORT=5003 - -PLUGIN_DIFY_INNER_API_KEY=QaHbTe77CtuXmsfyhR7+vRjI/+XbV1AaFy691iy+kGDv2Jvy0/eAh8Y1 -PLUGIN_DIFY_INNER_API_URL=http://host.docker.internal:5001 - -MARKETPLACE_ENABLED=true -MARKETPLACE_API_URL=https://marketplace.dify.ai - -FORCE_VERIFYING_SIGNATURE=true - -PLUGIN_PYTHON_ENV_INIT_TIMEOUT=120 -PLUGIN_MAX_EXECUTION_TIMEOUT=600 -# PIP_MIRROR_URL=https://pypi.tuna.tsinghua.edu.cn/simple -PIP_MIRROR_URL= - -# https://github.com/langgenius/dify-plugin-daemon/blob/main/.env.example -# Plugin storage type, local aws_s3 tencent_cos azure_blob -PLUGIN_STORAGE_TYPE=local -PLUGIN_STORAGE_LOCAL_ROOT=/app/storage -PLUGIN_WORKING_PATH=/app/storage/cwd -PLUGIN_INSTALLED_PATH=plugin -PLUGIN_PACKAGE_CACHE_PATH=plugin_packages -PLUGIN_MEDIA_CACHE_PATH=assets -# Plugin oss bucket -PLUGIN_STORAGE_OSS_BUCKET= -# Plugin oss s3 credentials -PLUGIN_S3_USE_AWS_MANAGED_IAM=false -PLUGIN_S3_USE_AWS=false -PLUGIN_S3_ENDPOINT= -PLUGIN_S3_USE_PATH_STYLE=false -PLUGIN_AWS_ACCESS_KEY= -PLUGIN_AWS_SECRET_KEY= -PLUGIN_AWS_REGION= -# Plugin oss azure blob -PLUGIN_AZURE_BLOB_STORAGE_CONTAINER_NAME= -PLUGIN_AZURE_BLOB_STORAGE_CONNECTION_STRING= -# Plugin oss tencent cos -PLUGIN_TENCENT_COS_SECRET_KEY= -PLUGIN_TENCENT_COS_SECRET_ID= -PLUGIN_TENCENT_COS_REGION= -# Plugin oss aliyun oss -PLUGIN_ALIYUN_OSS_REGION= -PLUGIN_ALIYUN_OSS_ENDPOINT= -PLUGIN_ALIYUN_OSS_ACCESS_KEY_ID= -PLUGIN_ALIYUN_OSS_ACCESS_KEY_SECRET= -PLUGIN_ALIYUN_OSS_AUTH_VERSION=v4 -PLUGIN_ALIYUN_OSS_PATH= -# Plugin oss volcengine tos -PLUGIN_VOLCENGINE_TOS_ENDPOINT= -PLUGIN_VOLCENGINE_TOS_ACCESS_KEY= -PLUGIN_VOLCENGINE_TOS_SECRET_KEY= -PLUGIN_VOLCENGINE_TOS_REGION= diff --git a/docker/dify/nginx/conf.d/default.conf b/docker/dify/nginx/conf.d/default.conf deleted file mode 100644 index 047e9ce5..00000000 --- a/docker/dify/nginx/conf.d/default.conf +++ /dev/null @@ -1,58 +0,0 @@ -# Please do not directly edit this file. Instead, modify the .env variables related to NGINX configuration. - -server { - listen 80; - server_name _; - - location /console/api { - proxy_pass http://api:5001; - include proxy.conf; - } - - location /api { - proxy_pass http://api:5001; - include proxy.conf; - } - - location /v1 { - proxy_pass http://api:5001; - include proxy.conf; - } - - location /files { - proxy_pass http://api:5001; - include proxy.conf; - } - - location /explore { - proxy_pass http://web:3000; - include proxy.conf; - } - - location /e/ { - proxy_pass http://plugin_daemon:5002; - proxy_set_header Dify-Hook-Url $scheme://$host$request_uri; - include proxy.conf; - } - - location / { - proxy_pass http://web:3000; - include proxy.conf; - } - - location /mcp { - proxy_pass http://api:5001; - include proxy.conf; - } - - location /triggers { - proxy_pass http://api:5001; - include proxy.conf; - } - - # placeholder for acme challenge location - - - # placeholder for https config defined in https.conf.template - -} diff --git a/docker/dify/nginx/conf.d/default.conf.template b/docker/dify/nginx/conf.d/default.conf.template deleted file mode 100644 index 1d63c1b9..00000000 --- a/docker/dify/nginx/conf.d/default.conf.template +++ /dev/null @@ -1,58 +0,0 @@ -# Please do not directly edit this file. Instead, modify the .env variables related to NGINX configuration. - -server { - listen ${NGINX_PORT}; - server_name ${NGINX_SERVER_NAME}; - - location /console/api { - proxy_pass http://api:5001; - include proxy.conf; - } - - location /api { - proxy_pass http://api:5001; - include proxy.conf; - } - - location /v1 { - proxy_pass http://api:5001; - include proxy.conf; - } - - location /files { - proxy_pass http://api:5001; - include proxy.conf; - } - - location /explore { - proxy_pass http://web:3000; - include proxy.conf; - } - - location /e/ { - proxy_pass http://plugin_daemon:5002; - proxy_set_header Dify-Hook-Url $scheme://$host$request_uri; - include proxy.conf; - } - - location / { - proxy_pass http://web:3000; - include proxy.conf; - } - - location /mcp { - proxy_pass http://api:5001; - include proxy.conf; - } - - location /triggers { - proxy_pass http://api:5001; - include proxy.conf; - } - - # placeholder for acme challenge location - ${ACME_CHALLENGE_LOCATION} - - # placeholder for https config defined in https.conf.template - ${HTTPS_CONFIG} -} diff --git a/docker/dify/nginx/docker-entrypoint.sh b/docker/dify/nginx/docker-entrypoint.sh deleted file mode 100644 index 763254e3..00000000 --- a/docker/dify/nginx/docker-entrypoint.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/bash - -HTTPS_CONFIG='' - -if [ "${NGINX_HTTPS_ENABLED}" = "true" ]; then - # Check if the certificate and key files for the specified domain exist - if [ -n "${CERTBOT_DOMAIN}" ] && \ - [ -f "/etc/letsencrypt/live/${CERTBOT_DOMAIN}/${NGINX_SSL_CERT_FILENAME}" ] && \ - [ -f "/etc/letsencrypt/live/${CERTBOT_DOMAIN}/${NGINX_SSL_CERT_KEY_FILENAME}" ]; then - SSL_CERTIFICATE_PATH="/etc/letsencrypt/live/${CERTBOT_DOMAIN}/${NGINX_SSL_CERT_FILENAME}" - SSL_CERTIFICATE_KEY_PATH="/etc/letsencrypt/live/${CERTBOT_DOMAIN}/${NGINX_SSL_CERT_KEY_FILENAME}" - else - SSL_CERTIFICATE_PATH="/etc/ssl/${NGINX_SSL_CERT_FILENAME}" - SSL_CERTIFICATE_KEY_PATH="/etc/ssl/${NGINX_SSL_CERT_KEY_FILENAME}" - fi - export SSL_CERTIFICATE_PATH - export SSL_CERTIFICATE_KEY_PATH - - # set the HTTPS_CONFIG environment variable to the content of the https.conf.template - HTTPS_CONFIG=$(envsubst < /etc/nginx/https.conf.template) - export HTTPS_CONFIG - # Substitute the HTTPS_CONFIG in the default.conf.template with content from https.conf.template - envsubst '${HTTPS_CONFIG}' < /etc/nginx/conf.d/default.conf.template > /etc/nginx/conf.d/default.conf -fi -export HTTPS_CONFIG - -if [ "${NGINX_ENABLE_CERTBOT_CHALLENGE}" = "true" ]; then - ACME_CHALLENGE_LOCATION='location /.well-known/acme-challenge/ { root /var/www/html; }' -else - ACME_CHALLENGE_LOCATION='' -fi -export ACME_CHALLENGE_LOCATION - -env_vars=$(printenv | cut -d= -f1 | sed 's/^/$/g' | paste -sd, -) - -envsubst "$env_vars" < /etc/nginx/nginx.conf.template > /etc/nginx/nginx.conf -envsubst "$env_vars" < /etc/nginx/proxy.conf.template > /etc/nginx/proxy.conf - -envsubst "$env_vars" < /etc/nginx/conf.d/default.conf.template > /etc/nginx/conf.d/default.conf - -# Start Nginx using the default entrypoint -exec nginx -g 'daemon off;' diff --git a/docker/dify/nginx/https.conf.template b/docker/dify/nginx/https.conf.template deleted file mode 100644 index 296908d8..00000000 --- a/docker/dify/nginx/https.conf.template +++ /dev/null @@ -1,9 +0,0 @@ -# Please do not directly edit this file. Instead, modify the .env variables related to NGINX configuration. - -listen ${NGINX_SSL_PORT} ssl; -ssl_certificate ${SSL_CERTIFICATE_PATH}; -ssl_certificate_key ${SSL_CERTIFICATE_KEY_PATH}; -ssl_protocols ${NGINX_SSL_PROTOCOLS}; -ssl_prefer_server_ciphers on; -ssl_session_cache shared:SSL:10m; -ssl_session_timeout 10m; diff --git a/docker/dify/nginx/nginx.conf.template b/docker/dify/nginx/nginx.conf.template deleted file mode 100644 index 20446fae..00000000 --- a/docker/dify/nginx/nginx.conf.template +++ /dev/null @@ -1,34 +0,0 @@ -# Please do not directly edit this file. Instead, modify the .env variables related to NGINX configuration. - -user nginx; -worker_processes ${NGINX_WORKER_PROCESSES}; - -error_log /var/log/nginx/error.log notice; -pid /var/run/nginx.pid; - - -events { - worker_connections 1024; -} - - -http { - include /etc/nginx/mime.types; - default_type application/octet-stream; - - log_format main '$remote_addr - $remote_user [$time_local] "$request" ' - '$status $body_bytes_sent "$http_referer" ' - '"$http_user_agent" "$http_x_forwarded_for"'; - - access_log /var/log/nginx/access.log main; - - sendfile on; - #tcp_nopush on; - - keepalive_timeout ${NGINX_KEEPALIVE_TIMEOUT}; - - #gzip on; - client_max_body_size ${NGINX_CLIENT_MAX_BODY_SIZE}; - - include /etc/nginx/conf.d/*.conf; -} diff --git a/docker/dify/nginx/proxy.conf.template b/docker/dify/nginx/proxy.conf.template deleted file mode 100644 index 117f8061..00000000 --- a/docker/dify/nginx/proxy.conf.template +++ /dev/null @@ -1,11 +0,0 @@ -# Please do not directly edit this file. Instead, modify the .env variables related to NGINX configuration. - -proxy_set_header Host $host; -proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; -proxy_set_header X-Forwarded-Proto $scheme; -proxy_set_header X-Forwarded-Port $server_port; -proxy_http_version 1.1; -proxy_set_header Connection ""; -proxy_buffering off; -proxy_read_timeout ${NGINX_PROXY_READ_TIMEOUT}; -proxy_send_timeout ${NGINX_PROXY_SEND_TIMEOUT}; diff --git a/docker/dify/nginx/ssl/.gitkeep b/docker/dify/nginx/ssl/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/pgvector/docker-entrypoint.sh b/docker/dify/pgvector/docker-entrypoint.sh deleted file mode 100644 index 262eacfb..00000000 --- a/docker/dify/pgvector/docker-entrypoint.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash - -PG_MAJOR=16 - -if [ "${PG_BIGM}" = "true" ]; then - # install pg_bigm - apt-get update - apt-get install -y curl make gcc postgresql-server-dev-${PG_MAJOR} - - curl -LO https://github.com/pgbigm/pg_bigm/archive/refs/tags/v${PG_BIGM_VERSION}.tar.gz - tar xf v${PG_BIGM_VERSION}.tar.gz - cd pg_bigm-${PG_BIGM_VERSION} || exit 1 - make USE_PGXS=1 PG_CONFIG=/usr/bin/pg_config - make USE_PGXS=1 PG_CONFIG=/usr/bin/pg_config install - - cd - || exit 1 - rm -rf v${PG_BIGM_VERSION}.tar.gz pg_bigm-${PG_BIGM_VERSION} - - # enable pg_bigm - sed -i -e 's/^#\s*shared_preload_libraries.*/shared_preload_libraries = '\''pg_bigm'\''/' /var/lib/postgresql/data/pgdata/postgresql.conf -fi - -# Run the original entrypoint script -exec /usr/local/bin/docker-entrypoint.sh postgres diff --git a/docker/dify/ssrf_proxy/docker-entrypoint.sh b/docker/dify/ssrf_proxy/docker-entrypoint.sh deleted file mode 100644 index 613897bb..00000000 --- a/docker/dify/ssrf_proxy/docker-entrypoint.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/bash - -# Modified based on Squid OCI image entrypoint - -# This entrypoint aims to forward the squid logs to stdout to assist users of -# common container related tooling (e.g., kubernetes, docker-compose, etc) to -# access the service logs. - -# Moreover, it invokes the squid binary, leaving all the desired parameters to -# be provided by the "command" passed to the spawned container. If no command -# is provided by the user, the default behavior (as per the CMD statement in -# the Dockerfile) will be to use Ubuntu's default configuration [1] and run -# squid with the "-NYC" options to mimic the behavior of the Ubuntu provided -# systemd unit. - -# [1] The default configuration is changed in the Dockerfile to allow local -# network connections. See the Dockerfile for further information. - -echo "[ENTRYPOINT] re-create snakeoil self-signed certificate removed in the build process" -if [ ! -f /etc/ssl/private/ssl-cert-snakeoil.key ]; then - /usr/sbin/make-ssl-cert generate-default-snakeoil --force-overwrite > /dev/null 2>&1 -fi - -tail -F /var/log/squid/access.log 2>/dev/null & -tail -F /var/log/squid/error.log 2>/dev/null & -tail -F /var/log/squid/store.log 2>/dev/null & -tail -F /var/log/squid/cache.log 2>/dev/null & - -# Replace environment variables in the template and output to the squid.conf -echo "[ENTRYPOINT] replacing environment variables in the template" -awk '{ - while(match($0, /\${[A-Za-z_][A-Za-z_0-9]*}/)) { - var = substr($0, RSTART+2, RLENGTH-3) - val = ENVIRON[var] - $0 = substr($0, 1, RSTART-1) val substr($0, RSTART+RLENGTH) - } - print -}' /etc/squid/squid.conf.template > /etc/squid/squid.conf - -/usr/sbin/squid -Nz -echo "[ENTRYPOINT] starting squid" -/usr/sbin/squid -f /etc/squid/squid.conf -NYC 1 diff --git a/docker/dify/ssrf_proxy/squid.conf.template b/docker/dify/ssrf_proxy/squid.conf.template deleted file mode 100644 index 1775a1ff..00000000 --- a/docker/dify/ssrf_proxy/squid.conf.template +++ /dev/null @@ -1,56 +0,0 @@ -acl localnet src 0.0.0.1-0.255.255.255 # RFC 1122 "this" network (LAN) -acl localnet src 10.0.0.0/8 # RFC 1918 local private network (LAN) -acl localnet src 100.64.0.0/10 # RFC 6598 shared address space (CGN) -acl localnet src 169.254.0.0/16 # RFC 3927 link-local (directly plugged) machines -acl localnet src 172.16.0.0/12 # RFC 1918 local private network (LAN) -acl localnet src 192.168.0.0/16 # RFC 1918 local private network (LAN) -acl localnet src fc00::/7 # RFC 4193 local private network range -acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines -acl SSL_ports port 443 -# acl SSL_ports port 1025-65535 # Enable the configuration to resolve this issue: https://github.com/langgenius/dify/issues/12792 -acl Safe_ports port 80 # http -acl Safe_ports port 21 # ftp -acl Safe_ports port 443 # https -acl Safe_ports port 70 # gopher -acl Safe_ports port 210 # wais -acl Safe_ports port 1025-65535 # unregistered ports -acl Safe_ports port 280 # http-mgmt -acl Safe_ports port 488 # gss-http -acl Safe_ports port 591 # filemaker -acl Safe_ports port 777 # multiling http -acl CONNECT method CONNECT -acl allowed_domains dstdomain .marketplace.dify.ai -http_access allow allowed_domains -http_access deny !Safe_ports -http_access deny CONNECT !SSL_ports -http_access allow localhost manager -http_access deny manager -http_access allow localhost -include /etc/squid/conf.d/*.conf -http_access deny all - -################################## Proxy Server ################################ -http_port ${HTTP_PORT} -coredump_dir ${COREDUMP_DIR} -refresh_pattern ^ftp: 1440 20% 10080 -refresh_pattern ^gopher: 1440 0% 1440 -refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 -refresh_pattern \/(Packages|Sources)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims -refresh_pattern \/Release(|\.gpg)$ 0 0% 0 refresh-ims -refresh_pattern \/InRelease$ 0 0% 0 refresh-ims -refresh_pattern \/(Translation-.*)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims -refresh_pattern . 0 20% 4320 - - -# cache_dir ufs /var/spool/squid 100 16 256 -# upstream proxy, set to your own upstream proxy IP to avoid SSRF attacks -# cache_peer 172.1.1.1 parent 3128 0 no-query no-digest no-netdb-exchange default - -################################## Reverse Proxy To Sandbox ################################ -http_port ${REVERSE_PROXY_PORT} accel vhost -cache_peer ${SANDBOX_HOST} parent ${SANDBOX_PORT} 0 no-query originserver -acl src_all src all -http_access allow src_all - -# Unless the option's size is increased, an error will occur when uploading more than two files. -client_request_buffer_max_size 100 MB diff --git a/docker/dify/startupscripts/init.sh b/docker/dify/startupscripts/init.sh deleted file mode 100644 index dcee1e19..00000000 --- a/docker/dify/startupscripts/init.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env bash - -DB_INITIALIZED="/opt/oracle/oradata/dbinit" -#[ -f ${DB_INITIALIZED} ] && exit -#touch ${DB_INITIALIZED} -if [ -f ${DB_INITIALIZED} ]; then - echo 'File exists. Standards for have been Init' - exit -else - echo 'File does not exist. Standards for first time Start up this DB' - "$ORACLE_HOME"/bin/sqlplus -s "/ as sysdba" @"/opt/oracle/scripts/startup/init_user.script"; - touch ${DB_INITIALIZED} -fi diff --git a/docker/dify/startupscripts/init_user.script b/docker/dify/startupscripts/init_user.script deleted file mode 100644 index e710d827..00000000 --- a/docker/dify/startupscripts/init_user.script +++ /dev/null @@ -1,10 +0,0 @@ -show pdbs; -ALTER SYSTEM SET PROCESSES=500 SCOPE=SPFILE; -alter session set container= freepdb1; -create user dify identified by dify DEFAULT TABLESPACE users quota unlimited on users; -grant DB_DEVELOPER_ROLE to dify; - -BEGIN -CTX_DDL.CREATE_PREFERENCE('dify.world_lexer','WORLD_LEXER'); -END; -/ diff --git a/docker/dify/tidb/config/pd.toml b/docker/dify/tidb/config/pd.toml deleted file mode 100644 index 01e352a8..00000000 --- a/docker/dify/tidb/config/pd.toml +++ /dev/null @@ -1,4 +0,0 @@ -# PD Configuration File reference: -# https://docs.pingcap.com/tidb/stable/pd-configuration-file#pd-configuration-file -[replication] -max-replicas = 1 diff --git a/docker/dify/tidb/config/tiflash-learner.toml b/docker/dify/tidb/config/tiflash-learner.toml deleted file mode 100644 index 5098829a..00000000 --- a/docker/dify/tidb/config/tiflash-learner.toml +++ /dev/null @@ -1,13 +0,0 @@ -# TiFlash tiflash-learner.toml Configuration File reference: -# https://docs.pingcap.com/tidb/stable/tiflash-configuration#configure-the-tiflash-learnertoml-file - -log-file = "/logs/tiflash_tikv.log" - -[server] -engine-addr = "tiflash:4030" -addr = "0.0.0.0:20280" -advertise-addr = "tiflash:20280" -status-addr = "tiflash:20292" - -[storage] -data-dir = "/data/flash" diff --git a/docker/dify/tidb/config/tiflash.toml b/docker/dify/tidb/config/tiflash.toml deleted file mode 100644 index 30ac13ef..00000000 --- a/docker/dify/tidb/config/tiflash.toml +++ /dev/null @@ -1,19 +0,0 @@ -# TiFlash tiflash.toml Configuration File reference: -# https://docs.pingcap.com/tidb/stable/tiflash-configuration#configure-the-tiflashtoml-file - -listen_host = "0.0.0.0" -path = "/data" - -[flash] -tidb_status_addr = "tidb:10080" -service_addr = "tiflash:4030" - -[flash.proxy] -config = "/tiflash-learner.toml" - -[logger] -errorlog = "/logs/tiflash_error.log" -log = "/logs/tiflash.log" - -[raft] -pd_addr = "pd0:2379" diff --git a/docker/dify/tidb/docker-compose.yaml b/docker/dify/tidb/docker-compose.yaml deleted file mode 100644 index 9db69221..00000000 --- a/docker/dify/tidb/docker-compose.yaml +++ /dev/null @@ -1,63 +0,0 @@ -services: - pd0: - image: pingcap/pd:v8.5.1 - # ports: - # - "2379" - volumes: - - ./config/pd.toml:/pd.toml:ro - - ./volumes/data:/data - - ./volumes/logs:/logs - command: - - --name=pd0 - - --client-urls=http://0.0.0.0:2379 - - --peer-urls=http://0.0.0.0:2380 - - --advertise-client-urls=http://pd0:2379 - - --advertise-peer-urls=http://pd0:2380 - - --initial-cluster=pd0=http://pd0:2380 - - --data-dir=/data/pd - - --config=/pd.toml - - --log-file=/logs/pd.log - restart: on-failure - tikv: - image: pingcap/tikv:v8.5.1 - volumes: - - ./volumes/data:/data - - ./volumes/logs:/logs - command: - - --addr=0.0.0.0:20160 - - --advertise-addr=tikv:20160 - - --status-addr=tikv:20180 - - --data-dir=/data/tikv - - --pd=pd0:2379 - - --log-file=/logs/tikv.log - depends_on: - - "pd0" - restart: on-failure - tidb: - image: pingcap/tidb:v8.5.1 - # ports: - # - "4000:4000" - volumes: - - ./volumes/logs:/logs - command: - - --advertise-address=tidb - - --store=tikv - - --path=pd0:2379 - - --log-file=/logs/tidb.log - depends_on: - - "tikv" - restart: on-failure - tiflash: - image: pingcap/tiflash:v8.5.1 - volumes: - - ./config/tiflash.toml:/tiflash.toml:ro - - ./config/tiflash-learner.toml:/tiflash-learner.toml:ro - - ./volumes/data:/data - - ./volumes/logs:/logs - command: - - server - - --config-file=/tiflash.toml - depends_on: - - "tikv" - - "tidb" - restart: on-failure diff --git a/docker/dify/volumes/app/storage/.init_permissions b/docker/dify/volumes/app/storage/.init_permissions deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/app/storage/privkeys/fe3bcf55-9a04-4850-8473-7f97e1c09b97/private.pem b/docker/dify/volumes/app/storage/privkeys/fe3bcf55-9a04-4850-8473-7f97e1c09b97/private.pem deleted file mode 100644 index 0b44027f..00000000 --- a/docker/dify/volumes/app/storage/privkeys/fe3bcf55-9a04-4850-8473-7f97e1c09b97/private.pem +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEowIBAAKCAQEAzviset7ubYZgOjpGZTLgI01lkJ1b54EZCctU+KKd3VJ9B/su -cCTZ1ql7Fs5B4shZUu2MQOlO2twDC3gxW8ENj+yyU+r8toukxar2Iie3Qsp5tcJH -mWsq7Imo5RmUGLLwDV8AU0xRc4bRD5YGwiwZcRPODpgQBpnsKKoPNyvCeudEPr2S -gs63aQCDyv1Ny9jLTjvvHr2k531M5wChzT5miu0r0R+Hjrah0XnbRlQUubqHJOLH -FFp+XJowd0KAN26fjpEbFY2FwRa5POlbc1e2PEu+s3WJa0Iz5GQbhcOJ7ppA9Rft -k2CEAoNHfkbZcAxsySa++8+1Nq4hLFJubDYnWwIDAQABAoIBABEJJ5acKj86SUoM -U+ZZMAPCh3Kbe94WootLgOdPk0jiqkdG5dqgiIxXujmf/oz+dVkTE8agAuKW1hVS -mQAhaCQJlTVnvnypX9r5UyBv6Rtb88qsfseM/6UlQOaimq2xxM/aRaTq6jq6b74l -ria7Xy4PNZhpQcsZTkvxO3wMuQmelkkuhqbQF2fpNTTIZfbEehJatOTWIcWWkqRo -mZkKd4pHluaXDvczFFo31jSJ4jzrJS11Tx1s21rM4Iq2W+3B6nEVfvHaFqWMHve7 -+22ZWUUiMJbIpr7hy0bSBjY78HdR/EcQqPqT7uEawFaft8ybMP5AkuLEG9I6VtWq -gfPX/ckCgYEA3XbHuDP6Yzlc9tXapQEulM82B3mDtKAX72AqYGEpvZInrge6Fjwq -SdMGQHP/VsLq7t78g9negYQjT6J0qJ2V6s/1iVyr6uU3IQ06Q7+8xp6AQPSFShJk -o2nnODuvVMwwwH94ga1ntfPdzhYKfJ2E9Cbbn+NUZB/uxnsAxTTGGNcCgYEA7z9S -/M8eUfCOEBEC9EGuto8/hZ7Zmm0fuAdKx0zZzSVsKxeHUQoQJ1YQfnjKdlxNv1FI -K9g7wcMEvkUv/CMx7pQ/R4eyvbGlxGRAy1jUhgx1hxifBeYKd5j5BMAQ8n3/uRLR -3czW7i8Xzy0Z97kfy9ZHllbnbZQvYceDQY2ngR0CgYEA272Wz4PrhnaNcnGg/6Yb -lRXA80uzzg4nkaGminj+FJYnfvs1vgg2oYecJWmzSmAfAaMJhL4xk+sLqmF0RTYP -Yay0YXYtMuX6fHYGgOCHq7/rXAgDFQsJBkf3X4mBH693FBmm9WycgiKVy319LEaT -fDnuI0hKHQq+PfwgOIxznoMCgYBGj9WpDGkz34/2ux207p5Z55vji/s/6YleXIA4 -kbj3IV9qwjC9vQsQnviUZInKKOUhVRbFH6xYNG10tLE3WyYB6KVVMneMLRXn+22E -y/k6Y/hR1Pgp5DQYG/zt4rvc2T6P1jYhhaWqcCdEilfLUUVIeDV66Lyu+/KRkydq -MR5DHQKBgHn3HNAiHfLVef7+unoYu8ak6uqj5V74IJZdvcNZ4jUz7onk2o3h7pj0 -9xzWoakzv1ypK6rVBYr+2U4Mn728kz90rR9VV05YwbMQBcBH0gmBfGdbUjI9PH/+ -iUoxHK0G55ArzmZFtRGUpmEFak4xTpM48Wn5VApe9kMt3yX+FBbD ------END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/docker/dify/volumes/app/storage/upload_files/fe3bcf55-9a04-4850-8473-7f97e1c09b97/a2c5e6ca-4896-439b-8175-e38d9fb820f8.txt b/docker/dify/volumes/app/storage/upload_files/fe3bcf55-9a04-4850-8473-7f97e1c09b97/a2c5e6ca-4896-439b-8175-e38d9fb820f8.txt deleted file mode 100644 index 74e18b78..00000000 --- a/docker/dify/volumes/app/storage/upload_files/fe3bcf55-9a04-4850-8473-7f97e1c09b97/a2c5e6ca-4896-439b-8175-e38d9fb820f8.txt +++ /dev/null @@ -1,2 +0,0 @@ - -开发人员:AAAA \ No newline at end of file diff --git a/docker/dify/volumes/app/storage/upload_files/fe3bcf55-9a04-4850-8473-7f97e1c09b97/adec7f6b-6c2b-4ba0-b100-32ba090fafb5.txt b/docker/dify/volumes/app/storage/upload_files/fe3bcf55-9a04-4850-8473-7f97e1c09b97/adec7f6b-6c2b-4ba0-b100-32ba090fafb5.txt deleted file mode 100644 index 0d625b4a..00000000 --- a/docker/dify/volumes/app/storage/upload_files/fe3bcf55-9a04-4850-8473-7f97e1c09b97/adec7f6b-6c2b-4ba0-b100-32ba090fafb5.txt +++ /dev/null @@ -1,4 +0,0 @@ - -http://localhost/platform/admin/platform - -http://localhost:5173/datacenter \ No newline at end of file diff --git a/docker/dify/volumes/db/data/pgdata/PG_VERSION b/docker/dify/volumes/db/data/pgdata/PG_VERSION deleted file mode 100644 index 60d3b2f4..00000000 --- a/docker/dify/volumes/db/data/pgdata/PG_VERSION +++ /dev/null @@ -1 +0,0 @@ -15 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/112 b/docker/dify/volumes/db/data/pgdata/base/1/112 deleted file mode 100644 index 784a4c13..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/112 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/113 b/docker/dify/volumes/db/data/pgdata/base/1/113 deleted file mode 100644 index cc2c412b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/113 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/1247 b/docker/dify/volumes/db/data/pgdata/base/1/1247 deleted file mode 100644 index a628646c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/1247 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/1247_fsm b/docker/dify/volumes/db/data/pgdata/base/1/1247_fsm deleted file mode 100644 index d9ff302c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/1247_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/1247_vm b/docker/dify/volumes/db/data/pgdata/base/1/1247_vm deleted file mode 100644 index cb141f85..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/1247_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/1249 b/docker/dify/volumes/db/data/pgdata/base/1/1249 deleted file mode 100644 index 40021b04..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/1249 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/1249_fsm b/docker/dify/volumes/db/data/pgdata/base/1/1249_fsm deleted file mode 100644 index 87def576..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/1249_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/1249_vm b/docker/dify/volumes/db/data/pgdata/base/1/1249_vm deleted file mode 100644 index e7c32f42..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/1249_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/1255 b/docker/dify/volumes/db/data/pgdata/base/1/1255 deleted file mode 100644 index 549acf0e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/1255 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/1255_fsm b/docker/dify/volumes/db/data/pgdata/base/1/1255_fsm deleted file mode 100644 index 5abeaaf2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/1255_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/1255_vm b/docker/dify/volumes/db/data/pgdata/base/1/1255_vm deleted file mode 100644 index 7229f841..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/1255_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/1259 b/docker/dify/volumes/db/data/pgdata/base/1/1259 deleted file mode 100644 index e1e60120..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/1259 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/1259_fsm b/docker/dify/volumes/db/data/pgdata/base/1/1259_fsm deleted file mode 100644 index bb60b307..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/1259_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/1259_vm b/docker/dify/volumes/db/data/pgdata/base/1/1259_vm deleted file mode 100644 index a3f14f7f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/1259_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/13454 b/docker/dify/volumes/db/data/pgdata/base/1/13454 deleted file mode 100644 index d655791d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/13454 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/13454_fsm b/docker/dify/volumes/db/data/pgdata/base/1/13454_fsm deleted file mode 100644 index dff96115..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/13454_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/13454_vm b/docker/dify/volumes/db/data/pgdata/base/1/13454_vm deleted file mode 100644 index 4a8125b5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/13454_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/13457 b/docker/dify/volumes/db/data/pgdata/base/1/13457 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/13458 b/docker/dify/volumes/db/data/pgdata/base/1/13458 deleted file mode 100644 index 3a40f331..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/13458 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/13459 b/docker/dify/volumes/db/data/pgdata/base/1/13459 deleted file mode 100644 index 8199ae15..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/13459 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/13459_fsm b/docker/dify/volumes/db/data/pgdata/base/1/13459_fsm deleted file mode 100644 index 70d16ce4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/13459_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/13459_vm b/docker/dify/volumes/db/data/pgdata/base/1/13459_vm deleted file mode 100644 index b0ecc4c0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/13459_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/13462 b/docker/dify/volumes/db/data/pgdata/base/1/13462 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/13463 b/docker/dify/volumes/db/data/pgdata/base/1/13463 deleted file mode 100644 index fd105eb4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/13463 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/13464 b/docker/dify/volumes/db/data/pgdata/base/1/13464 deleted file mode 100644 index 8c69968b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/13464 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/13464_fsm b/docker/dify/volumes/db/data/pgdata/base/1/13464_fsm deleted file mode 100644 index d388044f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/13464_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/13464_vm b/docker/dify/volumes/db/data/pgdata/base/1/13464_vm deleted file mode 100644 index ea66334c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/13464_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/13467 b/docker/dify/volumes/db/data/pgdata/base/1/13467 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/13468 b/docker/dify/volumes/db/data/pgdata/base/1/13468 deleted file mode 100644 index 3207e9e0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/13468 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/13469 b/docker/dify/volumes/db/data/pgdata/base/1/13469 deleted file mode 100644 index baf18ff8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/13469 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/13469_fsm b/docker/dify/volumes/db/data/pgdata/base/1/13469_fsm deleted file mode 100644 index a836ddf7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/13469_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/13469_vm b/docker/dify/volumes/db/data/pgdata/base/1/13469_vm deleted file mode 100644 index c5da2a3c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/13469_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/13472 b/docker/dify/volumes/db/data/pgdata/base/1/13472 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/13473 b/docker/dify/volumes/db/data/pgdata/base/1/13473 deleted file mode 100644 index 32f23576..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/13473 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/1417 b/docker/dify/volumes/db/data/pgdata/base/1/1417 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/1418 b/docker/dify/volumes/db/data/pgdata/base/1/1418 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/174 b/docker/dify/volumes/db/data/pgdata/base/1/174 deleted file mode 100644 index 2e4cc9f3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/174 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/175 b/docker/dify/volumes/db/data/pgdata/base/1/175 deleted file mode 100644 index 15d51ddc..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/175 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2187 b/docker/dify/volumes/db/data/pgdata/base/1/2187 deleted file mode 100644 index cf6377d2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2187 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2224 b/docker/dify/volumes/db/data/pgdata/base/1/2224 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2228 b/docker/dify/volumes/db/data/pgdata/base/1/2228 deleted file mode 100644 index 738f259a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2228 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2328 b/docker/dify/volumes/db/data/pgdata/base/1/2328 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2336 b/docker/dify/volumes/db/data/pgdata/base/1/2336 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2337 b/docker/dify/volumes/db/data/pgdata/base/1/2337 deleted file mode 100644 index 105af49c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2337 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2579 b/docker/dify/volumes/db/data/pgdata/base/1/2579 deleted file mode 100644 index ae0d53ad..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2579 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2600 b/docker/dify/volumes/db/data/pgdata/base/1/2600 deleted file mode 100644 index a1305d7a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2600 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2600_fsm b/docker/dify/volumes/db/data/pgdata/base/1/2600_fsm deleted file mode 100644 index b8490844..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2600_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2600_vm b/docker/dify/volumes/db/data/pgdata/base/1/2600_vm deleted file mode 100644 index 7fac2cbe..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2600_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2601 b/docker/dify/volumes/db/data/pgdata/base/1/2601 deleted file mode 100644 index d8001c8c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2601 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2601_fsm b/docker/dify/volumes/db/data/pgdata/base/1/2601_fsm deleted file mode 100644 index d388044f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2601_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2601_vm b/docker/dify/volumes/db/data/pgdata/base/1/2601_vm deleted file mode 100644 index eb2d0155..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2601_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2602 b/docker/dify/volumes/db/data/pgdata/base/1/2602 deleted file mode 100644 index 4a27b0a3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2602 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2602_fsm b/docker/dify/volumes/db/data/pgdata/base/1/2602_fsm deleted file mode 100644 index 23170d85..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2602_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2602_vm b/docker/dify/volumes/db/data/pgdata/base/1/2602_vm deleted file mode 100644 index b7e83c3c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2602_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2603 b/docker/dify/volumes/db/data/pgdata/base/1/2603 deleted file mode 100644 index d511af56..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2603 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2603_fsm b/docker/dify/volumes/db/data/pgdata/base/1/2603_fsm deleted file mode 100644 index 949bd18f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2603_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2603_vm b/docker/dify/volumes/db/data/pgdata/base/1/2603_vm deleted file mode 100644 index f073a603..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2603_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2604 b/docker/dify/volumes/db/data/pgdata/base/1/2604 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2605 b/docker/dify/volumes/db/data/pgdata/base/1/2605 deleted file mode 100644 index eeaa7eaa..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2605 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2605_fsm b/docker/dify/volumes/db/data/pgdata/base/1/2605_fsm deleted file mode 100644 index f3b92bf7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2605_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2605_vm b/docker/dify/volumes/db/data/pgdata/base/1/2605_vm deleted file mode 100644 index 85d1e841..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2605_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2606 b/docker/dify/volumes/db/data/pgdata/base/1/2606 deleted file mode 100644 index 4737fa77..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2606 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2606_fsm b/docker/dify/volumes/db/data/pgdata/base/1/2606_fsm deleted file mode 100644 index 286dd813..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2606_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2606_vm b/docker/dify/volumes/db/data/pgdata/base/1/2606_vm deleted file mode 100644 index 86bc6bf5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2606_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2607 b/docker/dify/volumes/db/data/pgdata/base/1/2607 deleted file mode 100644 index bfad49ae..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2607 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2607_fsm b/docker/dify/volumes/db/data/pgdata/base/1/2607_fsm deleted file mode 100644 index 80ac8b14..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2607_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2607_vm b/docker/dify/volumes/db/data/pgdata/base/1/2607_vm deleted file mode 100644 index c0a22c62..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2607_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2608 b/docker/dify/volumes/db/data/pgdata/base/1/2608 deleted file mode 100644 index e75c37b5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2608 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2608_fsm b/docker/dify/volumes/db/data/pgdata/base/1/2608_fsm deleted file mode 100644 index 6ba89a46..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2608_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2608_vm b/docker/dify/volumes/db/data/pgdata/base/1/2608_vm deleted file mode 100644 index 9a21eb75..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2608_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2609 b/docker/dify/volumes/db/data/pgdata/base/1/2609 deleted file mode 100644 index 2983f4db..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2609 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2609_fsm b/docker/dify/volumes/db/data/pgdata/base/1/2609_fsm deleted file mode 100644 index 11f989b1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2609_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2609_vm b/docker/dify/volumes/db/data/pgdata/base/1/2609_vm deleted file mode 100644 index 61b91943..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2609_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2610 b/docker/dify/volumes/db/data/pgdata/base/1/2610 deleted file mode 100644 index 8251aeb8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2610 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2610_fsm b/docker/dify/volumes/db/data/pgdata/base/1/2610_fsm deleted file mode 100644 index dbd22e1f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2610_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2610_vm b/docker/dify/volumes/db/data/pgdata/base/1/2610_vm deleted file mode 100644 index 25f58e1c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2610_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2611 b/docker/dify/volumes/db/data/pgdata/base/1/2611 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2612 b/docker/dify/volumes/db/data/pgdata/base/1/2612 deleted file mode 100644 index c39ab4d5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2612 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2612_fsm b/docker/dify/volumes/db/data/pgdata/base/1/2612_fsm deleted file mode 100644 index 877976ac..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2612_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2612_vm b/docker/dify/volumes/db/data/pgdata/base/1/2612_vm deleted file mode 100644 index ef0dbfff..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2612_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2613 b/docker/dify/volumes/db/data/pgdata/base/1/2613 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2615 b/docker/dify/volumes/db/data/pgdata/base/1/2615 deleted file mode 100644 index db72cea7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2615 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2615_fsm b/docker/dify/volumes/db/data/pgdata/base/1/2615_fsm deleted file mode 100644 index d041693e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2615_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2615_vm b/docker/dify/volumes/db/data/pgdata/base/1/2615_vm deleted file mode 100644 index 233f9690..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2615_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2616 b/docker/dify/volumes/db/data/pgdata/base/1/2616 deleted file mode 100644 index 0d60d797..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2616 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2616_fsm b/docker/dify/volumes/db/data/pgdata/base/1/2616_fsm deleted file mode 100644 index cb924c95..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2616_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2616_vm b/docker/dify/volumes/db/data/pgdata/base/1/2616_vm deleted file mode 100644 index e704cec7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2616_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2617 b/docker/dify/volumes/db/data/pgdata/base/1/2617 deleted file mode 100644 index bcdfc183..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2617 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2617_fsm b/docker/dify/volumes/db/data/pgdata/base/1/2617_fsm deleted file mode 100644 index 29d60666..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2617_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2617_vm b/docker/dify/volumes/db/data/pgdata/base/1/2617_vm deleted file mode 100644 index 6db4a14c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2617_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2618 b/docker/dify/volumes/db/data/pgdata/base/1/2618 deleted file mode 100644 index 230b6370..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2618 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2618_fsm b/docker/dify/volumes/db/data/pgdata/base/1/2618_fsm deleted file mode 100644 index e162e372..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2618_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2618_vm b/docker/dify/volumes/db/data/pgdata/base/1/2618_vm deleted file mode 100644 index 7ad7e690..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2618_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2619 b/docker/dify/volumes/db/data/pgdata/base/1/2619 deleted file mode 100644 index cc799065..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2619 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2619_fsm b/docker/dify/volumes/db/data/pgdata/base/1/2619_fsm deleted file mode 100644 index 9924a538..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2619_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2619_vm b/docker/dify/volumes/db/data/pgdata/base/1/2619_vm deleted file mode 100644 index f4a2283c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2619_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2620 b/docker/dify/volumes/db/data/pgdata/base/1/2620 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2650 b/docker/dify/volumes/db/data/pgdata/base/1/2650 deleted file mode 100644 index 32ff8a16..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2650 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2651 b/docker/dify/volumes/db/data/pgdata/base/1/2651 deleted file mode 100644 index cff86c74..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2651 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2652 b/docker/dify/volumes/db/data/pgdata/base/1/2652 deleted file mode 100644 index ab53706f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2652 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2653 b/docker/dify/volumes/db/data/pgdata/base/1/2653 deleted file mode 100644 index 86b08571..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2653 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2654 b/docker/dify/volumes/db/data/pgdata/base/1/2654 deleted file mode 100644 index 095a4fd5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2654 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2655 b/docker/dify/volumes/db/data/pgdata/base/1/2655 deleted file mode 100644 index 4b4b3cc6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2655 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2656 b/docker/dify/volumes/db/data/pgdata/base/1/2656 deleted file mode 100644 index 2fd9a71f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2656 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2657 b/docker/dify/volumes/db/data/pgdata/base/1/2657 deleted file mode 100644 index d0384dc6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2657 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2658 b/docker/dify/volumes/db/data/pgdata/base/1/2658 deleted file mode 100644 index 2777e797..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2658 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2659 b/docker/dify/volumes/db/data/pgdata/base/1/2659 deleted file mode 100644 index dd90e168..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2659 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2660 b/docker/dify/volumes/db/data/pgdata/base/1/2660 deleted file mode 100644 index fd66d228..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2660 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2661 b/docker/dify/volumes/db/data/pgdata/base/1/2661 deleted file mode 100644 index 3c62a6fd..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2661 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2662 b/docker/dify/volumes/db/data/pgdata/base/1/2662 deleted file mode 100644 index b09801b1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2662 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2663 b/docker/dify/volumes/db/data/pgdata/base/1/2663 deleted file mode 100644 index 1fe3a98d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2663 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2664 b/docker/dify/volumes/db/data/pgdata/base/1/2664 deleted file mode 100644 index a7761ead..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2664 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2665 b/docker/dify/volumes/db/data/pgdata/base/1/2665 deleted file mode 100644 index 024d2917..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2665 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2666 b/docker/dify/volumes/db/data/pgdata/base/1/2666 deleted file mode 100644 index 55842a3c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2666 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2667 b/docker/dify/volumes/db/data/pgdata/base/1/2667 deleted file mode 100644 index 40aa4997..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2667 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2668 b/docker/dify/volumes/db/data/pgdata/base/1/2668 deleted file mode 100644 index 8ca1619c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2668 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2669 b/docker/dify/volumes/db/data/pgdata/base/1/2669 deleted file mode 100644 index b13c3353..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2669 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2670 b/docker/dify/volumes/db/data/pgdata/base/1/2670 deleted file mode 100644 index 936feee6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2670 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2673 b/docker/dify/volumes/db/data/pgdata/base/1/2673 deleted file mode 100644 index e431d106..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2673 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2674 b/docker/dify/volumes/db/data/pgdata/base/1/2674 deleted file mode 100644 index 24e0beb2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2674 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2675 b/docker/dify/volumes/db/data/pgdata/base/1/2675 deleted file mode 100644 index 91709217..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2675 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2678 b/docker/dify/volumes/db/data/pgdata/base/1/2678 deleted file mode 100644 index c718c7a0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2678 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2679 b/docker/dify/volumes/db/data/pgdata/base/1/2679 deleted file mode 100644 index b296d1cb..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2679 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2680 b/docker/dify/volumes/db/data/pgdata/base/1/2680 deleted file mode 100644 index 0d352e91..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2680 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2681 b/docker/dify/volumes/db/data/pgdata/base/1/2681 deleted file mode 100644 index b13b323c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2681 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2682 b/docker/dify/volumes/db/data/pgdata/base/1/2682 deleted file mode 100644 index 3141bcdc..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2682 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2683 b/docker/dify/volumes/db/data/pgdata/base/1/2683 deleted file mode 100644 index 117ee7ae..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2683 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2684 b/docker/dify/volumes/db/data/pgdata/base/1/2684 deleted file mode 100644 index 05092ecb..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2684 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2685 b/docker/dify/volumes/db/data/pgdata/base/1/2685 deleted file mode 100644 index 5bf0c30f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2685 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2686 b/docker/dify/volumes/db/data/pgdata/base/1/2686 deleted file mode 100644 index 3054a565..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2686 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2687 b/docker/dify/volumes/db/data/pgdata/base/1/2687 deleted file mode 100644 index 349490ed..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2687 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2688 b/docker/dify/volumes/db/data/pgdata/base/1/2688 deleted file mode 100644 index f00cec25..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2688 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2689 b/docker/dify/volumes/db/data/pgdata/base/1/2689 deleted file mode 100644 index 8329829d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2689 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2690 b/docker/dify/volumes/db/data/pgdata/base/1/2690 deleted file mode 100644 index 09176d40..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2690 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2691 b/docker/dify/volumes/db/data/pgdata/base/1/2691 deleted file mode 100644 index 6e60d7f1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2691 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2692 b/docker/dify/volumes/db/data/pgdata/base/1/2692 deleted file mode 100644 index c7e275c1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2692 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2693 b/docker/dify/volumes/db/data/pgdata/base/1/2693 deleted file mode 100644 index f6aef2f5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2693 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2696 b/docker/dify/volumes/db/data/pgdata/base/1/2696 deleted file mode 100644 index f90fb0ea..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2696 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2699 b/docker/dify/volumes/db/data/pgdata/base/1/2699 deleted file mode 100644 index 4a755207..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2699 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2701 b/docker/dify/volumes/db/data/pgdata/base/1/2701 deleted file mode 100644 index 82f5cd0e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2701 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2702 b/docker/dify/volumes/db/data/pgdata/base/1/2702 deleted file mode 100644 index 2d6a98c2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2702 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2703 b/docker/dify/volumes/db/data/pgdata/base/1/2703 deleted file mode 100644 index 01c87ae8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2703 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2704 b/docker/dify/volumes/db/data/pgdata/base/1/2704 deleted file mode 100644 index c3f65000..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2704 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2753 b/docker/dify/volumes/db/data/pgdata/base/1/2753 deleted file mode 100644 index 3c16dff6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2753 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2753_fsm b/docker/dify/volumes/db/data/pgdata/base/1/2753_fsm deleted file mode 100644 index 642bce3b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2753_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2753_vm b/docker/dify/volumes/db/data/pgdata/base/1/2753_vm deleted file mode 100644 index 72c3e6de..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2753_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2754 b/docker/dify/volumes/db/data/pgdata/base/1/2754 deleted file mode 100644 index bdd4d527..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2754 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2755 b/docker/dify/volumes/db/data/pgdata/base/1/2755 deleted file mode 100644 index fd5d56a2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2755 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2756 b/docker/dify/volumes/db/data/pgdata/base/1/2756 deleted file mode 100644 index 6a044745..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2756 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2757 b/docker/dify/volumes/db/data/pgdata/base/1/2757 deleted file mode 100644 index 8f9ccdf0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2757 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2830 b/docker/dify/volumes/db/data/pgdata/base/1/2830 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2831 b/docker/dify/volumes/db/data/pgdata/base/1/2831 deleted file mode 100644 index c0a407a0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2831 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2832 b/docker/dify/volumes/db/data/pgdata/base/1/2832 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2833 b/docker/dify/volumes/db/data/pgdata/base/1/2833 deleted file mode 100644 index eea5df63..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2833 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2834 b/docker/dify/volumes/db/data/pgdata/base/1/2834 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2835 b/docker/dify/volumes/db/data/pgdata/base/1/2835 deleted file mode 100644 index 8aad1359..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2835 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2836 b/docker/dify/volumes/db/data/pgdata/base/1/2836 deleted file mode 100644 index 5c9f07f8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2836 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2836_fsm b/docker/dify/volumes/db/data/pgdata/base/1/2836_fsm deleted file mode 100644 index 6e81497f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2836_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2836_vm b/docker/dify/volumes/db/data/pgdata/base/1/2836_vm deleted file mode 100644 index 5e43ad13..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2836_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2837 b/docker/dify/volumes/db/data/pgdata/base/1/2837 deleted file mode 100644 index 888d3af3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2837 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2838 b/docker/dify/volumes/db/data/pgdata/base/1/2838 deleted file mode 100644 index e59ce108..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2838 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2838_fsm b/docker/dify/volumes/db/data/pgdata/base/1/2838_fsm deleted file mode 100644 index a9b1e030..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2838_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2838_vm b/docker/dify/volumes/db/data/pgdata/base/1/2838_vm deleted file mode 100644 index cf7d8c70..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2838_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2839 b/docker/dify/volumes/db/data/pgdata/base/1/2839 deleted file mode 100644 index 1e07360f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2839 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2840 b/docker/dify/volumes/db/data/pgdata/base/1/2840 deleted file mode 100644 index 2c8f3044..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2840 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2840_fsm b/docker/dify/volumes/db/data/pgdata/base/1/2840_fsm deleted file mode 100644 index 911c9440..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2840_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2840_vm b/docker/dify/volumes/db/data/pgdata/base/1/2840_vm deleted file mode 100644 index 9520d1a2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2840_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2841 b/docker/dify/volumes/db/data/pgdata/base/1/2841 deleted file mode 100644 index d31f7c67..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2841 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2995 b/docker/dify/volumes/db/data/pgdata/base/1/2995 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/2996 b/docker/dify/volumes/db/data/pgdata/base/1/2996 deleted file mode 100644 index 170333a4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/2996 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3079 b/docker/dify/volumes/db/data/pgdata/base/1/3079 deleted file mode 100644 index 06243ba7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3079 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3079_fsm b/docker/dify/volumes/db/data/pgdata/base/1/3079_fsm deleted file mode 100644 index 7732d22b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3079_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3079_vm b/docker/dify/volumes/db/data/pgdata/base/1/3079_vm deleted file mode 100644 index f6c15836..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3079_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3080 b/docker/dify/volumes/db/data/pgdata/base/1/3080 deleted file mode 100644 index e6b1f43e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3080 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3081 b/docker/dify/volumes/db/data/pgdata/base/1/3081 deleted file mode 100644 index b9fb15c0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3081 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3085 b/docker/dify/volumes/db/data/pgdata/base/1/3085 deleted file mode 100644 index e640c6e8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3085 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3118 b/docker/dify/volumes/db/data/pgdata/base/1/3118 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3119 b/docker/dify/volumes/db/data/pgdata/base/1/3119 deleted file mode 100644 index db2bde09..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3119 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3164 b/docker/dify/volumes/db/data/pgdata/base/1/3164 deleted file mode 100644 index f493af70..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3164 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3256 b/docker/dify/volumes/db/data/pgdata/base/1/3256 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3257 b/docker/dify/volumes/db/data/pgdata/base/1/3257 deleted file mode 100644 index 64787da2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3257 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3258 b/docker/dify/volumes/db/data/pgdata/base/1/3258 deleted file mode 100644 index 09abe9b9..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3258 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3350 b/docker/dify/volumes/db/data/pgdata/base/1/3350 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3351 b/docker/dify/volumes/db/data/pgdata/base/1/3351 deleted file mode 100644 index 2bfef7fb..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3351 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3379 b/docker/dify/volumes/db/data/pgdata/base/1/3379 deleted file mode 100644 index caced87c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3379 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3380 b/docker/dify/volumes/db/data/pgdata/base/1/3380 deleted file mode 100644 index 55d6862d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3380 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3381 b/docker/dify/volumes/db/data/pgdata/base/1/3381 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3394 b/docker/dify/volumes/db/data/pgdata/base/1/3394 deleted file mode 100644 index 71374fc7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3394 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3394_fsm b/docker/dify/volumes/db/data/pgdata/base/1/3394_fsm deleted file mode 100644 index 9622a2f0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3394_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3394_vm b/docker/dify/volumes/db/data/pgdata/base/1/3394_vm deleted file mode 100644 index d6dbec86..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3394_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3395 b/docker/dify/volumes/db/data/pgdata/base/1/3395 deleted file mode 100644 index c31f4b0b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3395 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3429 b/docker/dify/volumes/db/data/pgdata/base/1/3429 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3430 b/docker/dify/volumes/db/data/pgdata/base/1/3430 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3431 b/docker/dify/volumes/db/data/pgdata/base/1/3431 deleted file mode 100644 index ce872ee1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3431 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3433 b/docker/dify/volumes/db/data/pgdata/base/1/3433 deleted file mode 100644 index 68ea223e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3433 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3439 b/docker/dify/volumes/db/data/pgdata/base/1/3439 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3440 b/docker/dify/volumes/db/data/pgdata/base/1/3440 deleted file mode 100644 index 0545e4bb..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3440 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3455 b/docker/dify/volumes/db/data/pgdata/base/1/3455 deleted file mode 100644 index 0767e59f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3455 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3456 b/docker/dify/volumes/db/data/pgdata/base/1/3456 deleted file mode 100644 index 1f4db93b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3456 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3456_fsm b/docker/dify/volumes/db/data/pgdata/base/1/3456_fsm deleted file mode 100644 index 8f765c68..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3456_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3456_vm b/docker/dify/volumes/db/data/pgdata/base/1/3456_vm deleted file mode 100644 index c0a04f4d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3456_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3466 b/docker/dify/volumes/db/data/pgdata/base/1/3466 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3467 b/docker/dify/volumes/db/data/pgdata/base/1/3467 deleted file mode 100644 index c7016e10..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3467 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3468 b/docker/dify/volumes/db/data/pgdata/base/1/3468 deleted file mode 100644 index fab333bd..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3468 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3501 b/docker/dify/volumes/db/data/pgdata/base/1/3501 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3502 b/docker/dify/volumes/db/data/pgdata/base/1/3502 deleted file mode 100644 index ece495c9..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3502 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3503 b/docker/dify/volumes/db/data/pgdata/base/1/3503 deleted file mode 100644 index 53f9b69e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3503 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3534 b/docker/dify/volumes/db/data/pgdata/base/1/3534 deleted file mode 100644 index 11fad3bb..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3534 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3541 b/docker/dify/volumes/db/data/pgdata/base/1/3541 deleted file mode 100644 index 40869ad3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3541 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3541_fsm b/docker/dify/volumes/db/data/pgdata/base/1/3541_fsm deleted file mode 100644 index a3a2de4d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3541_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3541_vm b/docker/dify/volumes/db/data/pgdata/base/1/3541_vm deleted file mode 100644 index 51f0e82e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3541_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3542 b/docker/dify/volumes/db/data/pgdata/base/1/3542 deleted file mode 100644 index ced00669..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3542 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3574 b/docker/dify/volumes/db/data/pgdata/base/1/3574 deleted file mode 100644 index b026df10..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3574 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3575 b/docker/dify/volumes/db/data/pgdata/base/1/3575 deleted file mode 100644 index bdec5326..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3575 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3576 b/docker/dify/volumes/db/data/pgdata/base/1/3576 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3596 b/docker/dify/volumes/db/data/pgdata/base/1/3596 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3597 b/docker/dify/volumes/db/data/pgdata/base/1/3597 deleted file mode 100644 index 08855a4d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3597 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3598 b/docker/dify/volumes/db/data/pgdata/base/1/3598 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3599 b/docker/dify/volumes/db/data/pgdata/base/1/3599 deleted file mode 100644 index aaf38926..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3599 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3600 b/docker/dify/volumes/db/data/pgdata/base/1/3600 deleted file mode 100644 index a125931a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3600 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3600_fsm b/docker/dify/volumes/db/data/pgdata/base/1/3600_fsm deleted file mode 100644 index cebec199..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3600_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3600_vm b/docker/dify/volumes/db/data/pgdata/base/1/3600_vm deleted file mode 100644 index b9fcd6a9..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3600_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3601 b/docker/dify/volumes/db/data/pgdata/base/1/3601 deleted file mode 100644 index 04c846ec..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3601 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3601_fsm b/docker/dify/volumes/db/data/pgdata/base/1/3601_fsm deleted file mode 100644 index 7732d22b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3601_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3601_vm b/docker/dify/volumes/db/data/pgdata/base/1/3601_vm deleted file mode 100644 index 3db367e2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3601_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3602 b/docker/dify/volumes/db/data/pgdata/base/1/3602 deleted file mode 100644 index 265567f1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3602 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3602_fsm b/docker/dify/volumes/db/data/pgdata/base/1/3602_fsm deleted file mode 100644 index d7897de2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3602_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3602_vm b/docker/dify/volumes/db/data/pgdata/base/1/3602_vm deleted file mode 100644 index 9b4d7923..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3602_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3603 b/docker/dify/volumes/db/data/pgdata/base/1/3603 deleted file mode 100644 index 1b0d6cf3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3603 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3603_fsm b/docker/dify/volumes/db/data/pgdata/base/1/3603_fsm deleted file mode 100644 index c28dd4fa..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3603_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3603_vm b/docker/dify/volumes/db/data/pgdata/base/1/3603_vm deleted file mode 100644 index 102cff1b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3603_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3604 b/docker/dify/volumes/db/data/pgdata/base/1/3604 deleted file mode 100644 index 5aad5993..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3604 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3605 b/docker/dify/volumes/db/data/pgdata/base/1/3605 deleted file mode 100644 index 9f8d1fe7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3605 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3606 b/docker/dify/volumes/db/data/pgdata/base/1/3606 deleted file mode 100644 index abe7a1cf..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3606 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3607 b/docker/dify/volumes/db/data/pgdata/base/1/3607 deleted file mode 100644 index e3a3bbc6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3607 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3608 b/docker/dify/volumes/db/data/pgdata/base/1/3608 deleted file mode 100644 index 88266dac..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3608 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3609 b/docker/dify/volumes/db/data/pgdata/base/1/3609 deleted file mode 100644 index 5ff24567..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3609 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3712 b/docker/dify/volumes/db/data/pgdata/base/1/3712 deleted file mode 100644 index aa23ee97..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3712 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3764 b/docker/dify/volumes/db/data/pgdata/base/1/3764 deleted file mode 100644 index 1c794036..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3764 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3764_fsm b/docker/dify/volumes/db/data/pgdata/base/1/3764_fsm deleted file mode 100644 index f64db4df..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3764_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3764_vm b/docker/dify/volumes/db/data/pgdata/base/1/3764_vm deleted file mode 100644 index d7118cad..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3764_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3766 b/docker/dify/volumes/db/data/pgdata/base/1/3766 deleted file mode 100644 index c4134620..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3766 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3767 b/docker/dify/volumes/db/data/pgdata/base/1/3767 deleted file mode 100644 index 6cbae02d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3767 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/3997 b/docker/dify/volumes/db/data/pgdata/base/1/3997 deleted file mode 100644 index 8969d818..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/3997 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/4143 b/docker/dify/volumes/db/data/pgdata/base/1/4143 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/4144 b/docker/dify/volumes/db/data/pgdata/base/1/4144 deleted file mode 100644 index 5188a14b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/4144 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/4145 b/docker/dify/volumes/db/data/pgdata/base/1/4145 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/4146 b/docker/dify/volumes/db/data/pgdata/base/1/4146 deleted file mode 100644 index 957732fc..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/4146 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/4147 b/docker/dify/volumes/db/data/pgdata/base/1/4147 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/4148 b/docker/dify/volumes/db/data/pgdata/base/1/4148 deleted file mode 100644 index 9c7057c3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/4148 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/4149 b/docker/dify/volumes/db/data/pgdata/base/1/4149 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/4150 b/docker/dify/volumes/db/data/pgdata/base/1/4150 deleted file mode 100644 index 390d428a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/4150 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/4151 b/docker/dify/volumes/db/data/pgdata/base/1/4151 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/4152 b/docker/dify/volumes/db/data/pgdata/base/1/4152 deleted file mode 100644 index 1a289fd8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/4152 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/4153 b/docker/dify/volumes/db/data/pgdata/base/1/4153 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/4154 b/docker/dify/volumes/db/data/pgdata/base/1/4154 deleted file mode 100644 index d0d1ca59..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/4154 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/4155 b/docker/dify/volumes/db/data/pgdata/base/1/4155 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/4156 b/docker/dify/volumes/db/data/pgdata/base/1/4156 deleted file mode 100644 index 5b4bf370..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/4156 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/4157 b/docker/dify/volumes/db/data/pgdata/base/1/4157 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/4158 b/docker/dify/volumes/db/data/pgdata/base/1/4158 deleted file mode 100644 index 937d3d28..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/4158 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/4159 b/docker/dify/volumes/db/data/pgdata/base/1/4159 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/4160 b/docker/dify/volumes/db/data/pgdata/base/1/4160 deleted file mode 100644 index d10cfd60..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/4160 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/4163 b/docker/dify/volumes/db/data/pgdata/base/1/4163 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/4164 b/docker/dify/volumes/db/data/pgdata/base/1/4164 deleted file mode 100644 index a94c963f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/4164 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/4165 b/docker/dify/volumes/db/data/pgdata/base/1/4165 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/4166 b/docker/dify/volumes/db/data/pgdata/base/1/4166 deleted file mode 100644 index 2229586f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/4166 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/4167 b/docker/dify/volumes/db/data/pgdata/base/1/4167 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/4168 b/docker/dify/volumes/db/data/pgdata/base/1/4168 deleted file mode 100644 index 472740b9..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/4168 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/4169 b/docker/dify/volumes/db/data/pgdata/base/1/4169 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/4170 b/docker/dify/volumes/db/data/pgdata/base/1/4170 deleted file mode 100644 index 88d09b3d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/4170 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/4171 b/docker/dify/volumes/db/data/pgdata/base/1/4171 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/4172 b/docker/dify/volumes/db/data/pgdata/base/1/4172 deleted file mode 100644 index 3eed1ee2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/4172 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/4173 b/docker/dify/volumes/db/data/pgdata/base/1/4173 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/4174 b/docker/dify/volumes/db/data/pgdata/base/1/4174 deleted file mode 100644 index a0819a24..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/4174 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/5002 b/docker/dify/volumes/db/data/pgdata/base/1/5002 deleted file mode 100644 index aefa40dd..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/5002 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/548 b/docker/dify/volumes/db/data/pgdata/base/1/548 deleted file mode 100644 index 7c6567d5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/548 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/549 b/docker/dify/volumes/db/data/pgdata/base/1/549 deleted file mode 100644 index 26a3887d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/549 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/6102 b/docker/dify/volumes/db/data/pgdata/base/1/6102 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/6104 b/docker/dify/volumes/db/data/pgdata/base/1/6104 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/6106 b/docker/dify/volumes/db/data/pgdata/base/1/6106 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/6110 b/docker/dify/volumes/db/data/pgdata/base/1/6110 deleted file mode 100644 index 42e19200..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/6110 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/6111 b/docker/dify/volumes/db/data/pgdata/base/1/6111 deleted file mode 100644 index d012727d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/6111 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/6112 b/docker/dify/volumes/db/data/pgdata/base/1/6112 deleted file mode 100644 index 293367c2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/6112 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/6113 b/docker/dify/volumes/db/data/pgdata/base/1/6113 deleted file mode 100644 index 542f8faa..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/6113 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/6116 b/docker/dify/volumes/db/data/pgdata/base/1/6116 deleted file mode 100644 index 787d5d18..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/6116 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/6117 b/docker/dify/volumes/db/data/pgdata/base/1/6117 deleted file mode 100644 index 2b5656b2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/6117 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/6175 b/docker/dify/volumes/db/data/pgdata/base/1/6175 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/6176 b/docker/dify/volumes/db/data/pgdata/base/1/6176 deleted file mode 100644 index bfd14df5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/6176 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/6228 b/docker/dify/volumes/db/data/pgdata/base/1/6228 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/6229 b/docker/dify/volumes/db/data/pgdata/base/1/6229 deleted file mode 100644 index 5d03213f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/6229 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/6237 b/docker/dify/volumes/db/data/pgdata/base/1/6237 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/6238 b/docker/dify/volumes/db/data/pgdata/base/1/6238 deleted file mode 100644 index e7c0e8c3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/6238 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/6239 b/docker/dify/volumes/db/data/pgdata/base/1/6239 deleted file mode 100644 index 6c60b507..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/6239 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/826 b/docker/dify/volumes/db/data/pgdata/base/1/826 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/827 b/docker/dify/volumes/db/data/pgdata/base/1/827 deleted file mode 100644 index 94a900ec..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/827 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/828 b/docker/dify/volumes/db/data/pgdata/base/1/828 deleted file mode 100644 index ca304614..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/828 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/1/PG_VERSION b/docker/dify/volumes/db/data/pgdata/base/1/PG_VERSION deleted file mode 100644 index 60d3b2f4..00000000 --- a/docker/dify/volumes/db/data/pgdata/base/1/PG_VERSION +++ /dev/null @@ -1 +0,0 @@ -15 diff --git a/docker/dify/volumes/db/data/pgdata/base/1/pg_filenode.map b/docker/dify/volumes/db/data/pgdata/base/1/pg_filenode.map deleted file mode 100644 index 193d78f3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/1/pg_filenode.map and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/112 b/docker/dify/volumes/db/data/pgdata/base/16384/112 deleted file mode 100644 index 25abbe18..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/112 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/113 b/docker/dify/volumes/db/data/pgdata/base/16384/113 deleted file mode 100644 index a80f205b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/113 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/1247 b/docker/dify/volumes/db/data/pgdata/base/16384/1247 deleted file mode 100644 index b3ebfdfd..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/1247 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/1247_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/1247_fsm deleted file mode 100644 index ded7942c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/1247_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/1247_vm b/docker/dify/volumes/db/data/pgdata/base/16384/1247_vm deleted file mode 100644 index fe75f988..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/1247_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/1249 b/docker/dify/volumes/db/data/pgdata/base/16384/1249 deleted file mode 100644 index 7fbfd7cb..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/1249 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/1249_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/1249_fsm deleted file mode 100644 index cad5d3ea..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/1249_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/1249_vm b/docker/dify/volumes/db/data/pgdata/base/16384/1249_vm deleted file mode 100644 index dc05e060..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/1249_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/1255 b/docker/dify/volumes/db/data/pgdata/base/16384/1255 deleted file mode 100644 index 44839fc3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/1255 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/1255_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/1255_fsm deleted file mode 100644 index 1da47ca5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/1255_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/1255_vm b/docker/dify/volumes/db/data/pgdata/base/16384/1255_vm deleted file mode 100644 index 84965158..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/1255_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/1259 b/docker/dify/volumes/db/data/pgdata/base/16384/1259 deleted file mode 100644 index 4984f36f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/1259 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/1259_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/1259_fsm deleted file mode 100644 index ade259ec..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/1259_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/1259_vm b/docker/dify/volumes/db/data/pgdata/base/16384/1259_vm deleted file mode 100644 index 0947432d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/1259_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/13454 b/docker/dify/volumes/db/data/pgdata/base/16384/13454 deleted file mode 100644 index 7875149a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/13454 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/13454_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/13454_fsm deleted file mode 100644 index 75dbb92a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/13454_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/13454_vm b/docker/dify/volumes/db/data/pgdata/base/16384/13454_vm deleted file mode 100644 index 2d1ddd05..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/13454_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/13457 b/docker/dify/volumes/db/data/pgdata/base/16384/13457 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/13458 b/docker/dify/volumes/db/data/pgdata/base/16384/13458 deleted file mode 100644 index 4af3f5ff..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/13458 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/13459 b/docker/dify/volumes/db/data/pgdata/base/16384/13459 deleted file mode 100644 index 2c9e6aed..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/13459 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/13459_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/13459_fsm deleted file mode 100644 index 294cb014..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/13459_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/13459_vm b/docker/dify/volumes/db/data/pgdata/base/16384/13459_vm deleted file mode 100644 index 5765fcf6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/13459_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/13462 b/docker/dify/volumes/db/data/pgdata/base/16384/13462 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/13463 b/docker/dify/volumes/db/data/pgdata/base/16384/13463 deleted file mode 100644 index 2caed3a9..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/13463 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/13464 b/docker/dify/volumes/db/data/pgdata/base/16384/13464 deleted file mode 100644 index 15bfeab8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/13464 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/13464_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/13464_fsm deleted file mode 100644 index 648ca85d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/13464_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/13464_vm b/docker/dify/volumes/db/data/pgdata/base/16384/13464_vm deleted file mode 100644 index 158a38d6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/13464_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/13467 b/docker/dify/volumes/db/data/pgdata/base/16384/13467 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/13468 b/docker/dify/volumes/db/data/pgdata/base/16384/13468 deleted file mode 100644 index ec59efe4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/13468 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/13469 b/docker/dify/volumes/db/data/pgdata/base/16384/13469 deleted file mode 100644 index 3bda3969..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/13469 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/13469_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/13469_fsm deleted file mode 100644 index fe1059df..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/13469_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/13469_vm b/docker/dify/volumes/db/data/pgdata/base/16384/13469_vm deleted file mode 100644 index 89259d61..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/13469_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/13472 b/docker/dify/volumes/db/data/pgdata/base/16384/13472 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/13473 b/docker/dify/volumes/db/data/pgdata/base/16384/13473 deleted file mode 100644 index 7bd890cf..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/13473 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/1417 b/docker/dify/volumes/db/data/pgdata/base/16384/1417 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/1418 b/docker/dify/volumes/db/data/pgdata/base/16384/1418 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16385 b/docker/dify/volumes/db/data/pgdata/base/16384/16385 deleted file mode 100644 index 811b2d63..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16385 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16385_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/16385_fsm deleted file mode 100644 index 0908076c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16385_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16385_vm b/docker/dify/volumes/db/data/pgdata/base/16384/16385_vm deleted file mode 100644 index fcfce801..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16385_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16388 b/docker/dify/volumes/db/data/pgdata/base/16384/16388 deleted file mode 100644 index 9460e7fc..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16388 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16401 b/docker/dify/volumes/db/data/pgdata/base/16384/16401 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16407 b/docker/dify/volumes/db/data/pgdata/base/16384/16407 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16408 b/docker/dify/volumes/db/data/pgdata/base/16384/16408 deleted file mode 100644 index 53a27bc8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16408 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16409 b/docker/dify/volumes/db/data/pgdata/base/16384/16409 deleted file mode 100644 index 9fe6b53d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16409 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16411 b/docker/dify/volumes/db/data/pgdata/base/16384/16411 deleted file mode 100644 index 57f59779..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16411 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16413 b/docker/dify/volumes/db/data/pgdata/base/16384/16413 deleted file mode 100644 index b7697dc2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16413 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16415 b/docker/dify/volumes/db/data/pgdata/base/16384/16415 deleted file mode 100644 index 1b7210aa..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16415 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16422 b/docker/dify/volumes/db/data/pgdata/base/16384/16422 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16423 b/docker/dify/volumes/db/data/pgdata/base/16384/16423 deleted file mode 100644 index 0e25c391..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16423 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16424 b/docker/dify/volumes/db/data/pgdata/base/16384/16424 deleted file mode 100644 index 8aa1241b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16424 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16426 b/docker/dify/volumes/db/data/pgdata/base/16384/16426 deleted file mode 100644 index 6a22756a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16426 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16427 b/docker/dify/volumes/db/data/pgdata/base/16384/16427 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16432 b/docker/dify/volumes/db/data/pgdata/base/16384/16432 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16433 b/docker/dify/volumes/db/data/pgdata/base/16384/16433 deleted file mode 100644 index c42697ad..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16433 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16434 b/docker/dify/volumes/db/data/pgdata/base/16384/16434 deleted file mode 100644 index 84f8839f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16434 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16436 b/docker/dify/volumes/db/data/pgdata/base/16384/16436 deleted file mode 100644 index 5608bcff..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16436 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16437 b/docker/dify/volumes/db/data/pgdata/base/16384/16437 deleted file mode 100644 index a2f25187..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16437 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16442 b/docker/dify/volumes/db/data/pgdata/base/16384/16442 deleted file mode 100644 index d5ed286c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16442 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16444 b/docker/dify/volumes/db/data/pgdata/base/16384/16444 deleted file mode 100644 index 73f84581..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16444 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16445 b/docker/dify/volumes/db/data/pgdata/base/16384/16445 deleted file mode 100644 index 00bb9a62..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16445 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16446 b/docker/dify/volumes/db/data/pgdata/base/16384/16446 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16451 b/docker/dify/volumes/db/data/pgdata/base/16384/16451 deleted file mode 100644 index 8a8b57da..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16451 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16453 b/docker/dify/volumes/db/data/pgdata/base/16384/16453 deleted file mode 100644 index e6424dfb..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16453 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16454 b/docker/dify/volumes/db/data/pgdata/base/16384/16454 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16460 b/docker/dify/volumes/db/data/pgdata/base/16384/16460 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16461 b/docker/dify/volumes/db/data/pgdata/base/16384/16461 deleted file mode 100644 index 78b8d11c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16461 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16462 b/docker/dify/volumes/db/data/pgdata/base/16384/16462 deleted file mode 100644 index 4ac82413..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16462 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16464 b/docker/dify/volumes/db/data/pgdata/base/16384/16464 deleted file mode 100644 index 88291e25..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16464 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16465 b/docker/dify/volumes/db/data/pgdata/base/16384/16465 deleted file mode 100644 index abbdc6ff..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16465 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16474 b/docker/dify/volumes/db/data/pgdata/base/16384/16474 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16475 b/docker/dify/volumes/db/data/pgdata/base/16384/16475 deleted file mode 100644 index 9e573e16..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16475 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16476 b/docker/dify/volumes/db/data/pgdata/base/16384/16476 deleted file mode 100644 index a8ad0699..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16476 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16478 b/docker/dify/volumes/db/data/pgdata/base/16384/16478 deleted file mode 100644 index 1b9b2650..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16478 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16479 b/docker/dify/volumes/db/data/pgdata/base/16384/16479 deleted file mode 100644 index ecaf87fa..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16479 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16480 b/docker/dify/volumes/db/data/pgdata/base/16384/16480 deleted file mode 100644 index 77254d8f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16480 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16481 b/docker/dify/volumes/db/data/pgdata/base/16384/16481 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16485 b/docker/dify/volumes/db/data/pgdata/base/16384/16485 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16486 b/docker/dify/volumes/db/data/pgdata/base/16384/16486 deleted file mode 100644 index 469b9ff9..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16486 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16487 b/docker/dify/volumes/db/data/pgdata/base/16384/16487 deleted file mode 100644 index a7be9f21..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16487 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16489 b/docker/dify/volumes/db/data/pgdata/base/16384/16489 deleted file mode 100644 index 7d66eb7a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16489 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16491 b/docker/dify/volumes/db/data/pgdata/base/16384/16491 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16495 b/docker/dify/volumes/db/data/pgdata/base/16384/16495 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16496 b/docker/dify/volumes/db/data/pgdata/base/16384/16496 deleted file mode 100644 index 6021cae1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16496 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16497 b/docker/dify/volumes/db/data/pgdata/base/16384/16497 deleted file mode 100644 index 988eb0f8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16497 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16499 b/docker/dify/volumes/db/data/pgdata/base/16384/16499 deleted file mode 100644 index 862ca6e8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16499 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16501 b/docker/dify/volumes/db/data/pgdata/base/16384/16501 deleted file mode 100644 index 4dde6917..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16501 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16501_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/16501_fsm deleted file mode 100644 index ec5ff948..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16501_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16508 b/docker/dify/volumes/db/data/pgdata/base/16384/16508 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16509 b/docker/dify/volumes/db/data/pgdata/base/16384/16509 deleted file mode 100644 index 0d8fbb9c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16509 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16510 b/docker/dify/volumes/db/data/pgdata/base/16384/16510 deleted file mode 100644 index 4959ef37..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16510 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16512 b/docker/dify/volumes/db/data/pgdata/base/16384/16512 deleted file mode 100644 index 16487dfd..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16512 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16513 b/docker/dify/volumes/db/data/pgdata/base/16384/16513 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16517 b/docker/dify/volumes/db/data/pgdata/base/16384/16517 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16518 b/docker/dify/volumes/db/data/pgdata/base/16384/16518 deleted file mode 100644 index a2ab58c7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16518 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16519 b/docker/dify/volumes/db/data/pgdata/base/16384/16519 deleted file mode 100644 index 4e842655..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16519 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16521 b/docker/dify/volumes/db/data/pgdata/base/16384/16521 deleted file mode 100644 index dfdae640..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16521 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16523 b/docker/dify/volumes/db/data/pgdata/base/16384/16523 deleted file mode 100644 index cf403b2b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16523 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16524 b/docker/dify/volumes/db/data/pgdata/base/16384/16524 deleted file mode 100644 index 7fd9e2e3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16524 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16530 b/docker/dify/volumes/db/data/pgdata/base/16384/16530 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16531 b/docker/dify/volumes/db/data/pgdata/base/16384/16531 deleted file mode 100644 index b819ee4f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16531 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16532 b/docker/dify/volumes/db/data/pgdata/base/16384/16532 deleted file mode 100644 index c8a4126d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16532 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16534 b/docker/dify/volumes/db/data/pgdata/base/16384/16534 deleted file mode 100644 index 415e21f1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16534 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16535 b/docker/dify/volumes/db/data/pgdata/base/16384/16535 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16540 b/docker/dify/volumes/db/data/pgdata/base/16384/16540 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16541 b/docker/dify/volumes/db/data/pgdata/base/16384/16541 deleted file mode 100644 index 109e2fe7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16541 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16542 b/docker/dify/volumes/db/data/pgdata/base/16384/16542 deleted file mode 100644 index 27ab8a52..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16542 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16544 b/docker/dify/volumes/db/data/pgdata/base/16384/16544 deleted file mode 100644 index 0f08d47f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16544 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16545 b/docker/dify/volumes/db/data/pgdata/base/16384/16545 deleted file mode 100644 index c38b6b0e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16545 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16553 b/docker/dify/volumes/db/data/pgdata/base/16384/16553 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16554 b/docker/dify/volumes/db/data/pgdata/base/16384/16554 deleted file mode 100644 index bd13a1ec..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16554 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16555 b/docker/dify/volumes/db/data/pgdata/base/16384/16555 deleted file mode 100644 index c245cfe7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16555 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16557 b/docker/dify/volumes/db/data/pgdata/base/16384/16557 deleted file mode 100644 index 7b0bdb76..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16557 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16558 b/docker/dify/volumes/db/data/pgdata/base/16384/16558 deleted file mode 100644 index 3a86c508..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16558 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16562 b/docker/dify/volumes/db/data/pgdata/base/16384/16562 deleted file mode 100644 index fa8ab846..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16562 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16564 b/docker/dify/volumes/db/data/pgdata/base/16384/16564 deleted file mode 100644 index 48e6d4f8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16564 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16564_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/16564_fsm deleted file mode 100644 index c9ab17b2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16564_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16571 b/docker/dify/volumes/db/data/pgdata/base/16384/16571 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16572 b/docker/dify/volumes/db/data/pgdata/base/16384/16572 deleted file mode 100644 index 4a326067..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16572 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16573 b/docker/dify/volumes/db/data/pgdata/base/16384/16573 deleted file mode 100644 index c18eafe5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16573 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16575 b/docker/dify/volumes/db/data/pgdata/base/16384/16575 deleted file mode 100644 index c47ec098..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16575 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16577 b/docker/dify/volumes/db/data/pgdata/base/16384/16577 deleted file mode 100644 index 1c5b0b09..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16577 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16578 b/docker/dify/volumes/db/data/pgdata/base/16384/16578 deleted file mode 100644 index f2b3bdc3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16578 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16579 b/docker/dify/volumes/db/data/pgdata/base/16384/16579 deleted file mode 100644 index ab4c8a65..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16579 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16596 b/docker/dify/volumes/db/data/pgdata/base/16384/16596 deleted file mode 100644 index 380b157c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16596 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16601 b/docker/dify/volumes/db/data/pgdata/base/16384/16601 deleted file mode 100644 index 3ac89039..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16601 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16601_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/16601_fsm deleted file mode 100644 index c2b733de..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16601_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16602 b/docker/dify/volumes/db/data/pgdata/base/16384/16602 deleted file mode 100644 index 828df7b2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16602 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16603 b/docker/dify/volumes/db/data/pgdata/base/16384/16603 deleted file mode 100644 index 0a5a0c66..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16603 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16607 b/docker/dify/volumes/db/data/pgdata/base/16384/16607 deleted file mode 100644 index 96b294ef..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16607 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16614 b/docker/dify/volumes/db/data/pgdata/base/16384/16614 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16615 b/docker/dify/volumes/db/data/pgdata/base/16384/16615 deleted file mode 100644 index 7ac12444..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16615 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16616 b/docker/dify/volumes/db/data/pgdata/base/16384/16616 deleted file mode 100644 index 548155ea..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16616 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16618 b/docker/dify/volumes/db/data/pgdata/base/16384/16618 deleted file mode 100644 index 97218675..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16618 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16619 b/docker/dify/volumes/db/data/pgdata/base/16384/16619 deleted file mode 100644 index bc33d636..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16619 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16620 b/docker/dify/volumes/db/data/pgdata/base/16384/16620 deleted file mode 100644 index a8163559..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16620 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16626 b/docker/dify/volumes/db/data/pgdata/base/16384/16626 deleted file mode 100644 index be4adb3b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16626 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16628 b/docker/dify/volumes/db/data/pgdata/base/16384/16628 deleted file mode 100644 index 160bb625..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16628 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16630 b/docker/dify/volumes/db/data/pgdata/base/16384/16630 deleted file mode 100644 index 0b29c386..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16630 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16631 b/docker/dify/volumes/db/data/pgdata/base/16384/16631 deleted file mode 100644 index 351667d2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16631 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16632 b/docker/dify/volumes/db/data/pgdata/base/16384/16632 deleted file mode 100644 index ca08570b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16632 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16633 b/docker/dify/volumes/db/data/pgdata/base/16384/16633 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16639 b/docker/dify/volumes/db/data/pgdata/base/16384/16639 deleted file mode 100644 index 1650f061..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16639 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16641 b/docker/dify/volumes/db/data/pgdata/base/16384/16641 deleted file mode 100644 index 2f754580..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16641 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16642 b/docker/dify/volumes/db/data/pgdata/base/16384/16642 deleted file mode 100644 index cee40dbb..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16642 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16643 b/docker/dify/volumes/db/data/pgdata/base/16384/16643 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16648 b/docker/dify/volumes/db/data/pgdata/base/16384/16648 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16649 b/docker/dify/volumes/db/data/pgdata/base/16384/16649 deleted file mode 100644 index 4cf1f9ce..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16649 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16650 b/docker/dify/volumes/db/data/pgdata/base/16384/16650 deleted file mode 100644 index 9b610c54..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16650 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16652 b/docker/dify/volumes/db/data/pgdata/base/16384/16652 deleted file mode 100644 index 61767934..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16652 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16653 b/docker/dify/volumes/db/data/pgdata/base/16384/16653 deleted file mode 100644 index 2a7a137c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16653 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16654 b/docker/dify/volumes/db/data/pgdata/base/16384/16654 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16659 b/docker/dify/volumes/db/data/pgdata/base/16384/16659 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16660 b/docker/dify/volumes/db/data/pgdata/base/16384/16660 deleted file mode 100644 index e40ba187..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16660 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16661 b/docker/dify/volumes/db/data/pgdata/base/16384/16661 deleted file mode 100644 index 5330def5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16661 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16663 b/docker/dify/volumes/db/data/pgdata/base/16384/16663 deleted file mode 100644 index dbc7c1bb..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16663 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16664 b/docker/dify/volumes/db/data/pgdata/base/16384/16664 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16670 b/docker/dify/volumes/db/data/pgdata/base/16384/16670 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16671 b/docker/dify/volumes/db/data/pgdata/base/16384/16671 deleted file mode 100644 index 5f93eb0a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16671 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16672 b/docker/dify/volumes/db/data/pgdata/base/16384/16672 deleted file mode 100644 index 464b4f46..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16672 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16674 b/docker/dify/volumes/db/data/pgdata/base/16384/16674 deleted file mode 100644 index 1cc838fc..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16674 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16675 b/docker/dify/volumes/db/data/pgdata/base/16384/16675 deleted file mode 100644 index 75fb9651..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16675 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16676 b/docker/dify/volumes/db/data/pgdata/base/16384/16676 deleted file mode 100644 index 79c7b47b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16676 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16677 b/docker/dify/volumes/db/data/pgdata/base/16384/16677 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16683 b/docker/dify/volumes/db/data/pgdata/base/16384/16683 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16684 b/docker/dify/volumes/db/data/pgdata/base/16384/16684 deleted file mode 100644 index a823cba3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16684 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16685 b/docker/dify/volumes/db/data/pgdata/base/16384/16685 deleted file mode 100644 index 91abaabc..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16685 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16687 b/docker/dify/volumes/db/data/pgdata/base/16384/16687 deleted file mode 100644 index 49bf04ae..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16687 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16688 b/docker/dify/volumes/db/data/pgdata/base/16384/16688 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16693 b/docker/dify/volumes/db/data/pgdata/base/16384/16693 deleted file mode 100644 index b28eaada..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16693 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16712 b/docker/dify/volumes/db/data/pgdata/base/16384/16712 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16718 b/docker/dify/volumes/db/data/pgdata/base/16384/16718 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16719 b/docker/dify/volumes/db/data/pgdata/base/16384/16719 deleted file mode 100644 index fd3ef405..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16719 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16720 b/docker/dify/volumes/db/data/pgdata/base/16384/16720 deleted file mode 100644 index ff450697..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16720 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16722 b/docker/dify/volumes/db/data/pgdata/base/16384/16722 deleted file mode 100644 index 6505172b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16722 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16724 b/docker/dify/volumes/db/data/pgdata/base/16384/16724 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16729 b/docker/dify/volumes/db/data/pgdata/base/16384/16729 deleted file mode 100644 index 7019e262..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16729 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16743 b/docker/dify/volumes/db/data/pgdata/base/16384/16743 deleted file mode 100644 index d3ec863b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16743 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16751 b/docker/dify/volumes/db/data/pgdata/base/16384/16751 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16752 b/docker/dify/volumes/db/data/pgdata/base/16384/16752 deleted file mode 100644 index 1183d39d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16752 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16753 b/docker/dify/volumes/db/data/pgdata/base/16384/16753 deleted file mode 100644 index 998d5caa..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16753 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16755 b/docker/dify/volumes/db/data/pgdata/base/16384/16755 deleted file mode 100644 index c4646636..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16755 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16756 b/docker/dify/volumes/db/data/pgdata/base/16384/16756 deleted file mode 100644 index ee452375..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16756 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16757 b/docker/dify/volumes/db/data/pgdata/base/16384/16757 deleted file mode 100644 index 0c58d5f1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16757 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16764 b/docker/dify/volumes/db/data/pgdata/base/16384/16764 deleted file mode 100644 index 429023f9..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16764 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16766 b/docker/dify/volumes/db/data/pgdata/base/16384/16766 deleted file mode 100644 index 7c60d565..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16766 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16768 b/docker/dify/volumes/db/data/pgdata/base/16384/16768 deleted file mode 100644 index 408e4a4c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16768 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16769 b/docker/dify/volumes/db/data/pgdata/base/16384/16769 deleted file mode 100644 index 479dee62..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16769 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16770 b/docker/dify/volumes/db/data/pgdata/base/16384/16770 deleted file mode 100644 index 5282ddea..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16770 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16778 b/docker/dify/volumes/db/data/pgdata/base/16384/16778 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16779 b/docker/dify/volumes/db/data/pgdata/base/16384/16779 deleted file mode 100644 index ecd39902..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16779 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16780 b/docker/dify/volumes/db/data/pgdata/base/16384/16780 deleted file mode 100644 index b4fe9519..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16780 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16782 b/docker/dify/volumes/db/data/pgdata/base/16384/16782 deleted file mode 100644 index c586285f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16782 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16788 b/docker/dify/volumes/db/data/pgdata/base/16384/16788 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16789 b/docker/dify/volumes/db/data/pgdata/base/16384/16789 deleted file mode 100644 index b1e88d1d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16789 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16790 b/docker/dify/volumes/db/data/pgdata/base/16384/16790 deleted file mode 100644 index 7fac5e2d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16790 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16792 b/docker/dify/volumes/db/data/pgdata/base/16384/16792 deleted file mode 100644 index f854d760..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16792 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16793 b/docker/dify/volumes/db/data/pgdata/base/16384/16793 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16799 b/docker/dify/volumes/db/data/pgdata/base/16384/16799 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16800 b/docker/dify/volumes/db/data/pgdata/base/16384/16800 deleted file mode 100644 index 78a6cd08..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16800 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16801 b/docker/dify/volumes/db/data/pgdata/base/16384/16801 deleted file mode 100644 index 9518f157..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16801 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16803 b/docker/dify/volumes/db/data/pgdata/base/16384/16803 deleted file mode 100644 index ea4b0703..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16803 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16804 b/docker/dify/volumes/db/data/pgdata/base/16384/16804 deleted file mode 100644 index e0177f46..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16804 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16805 b/docker/dify/volumes/db/data/pgdata/base/16384/16805 deleted file mode 100644 index 5ac3cfad..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16805 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16806 b/docker/dify/volumes/db/data/pgdata/base/16384/16806 deleted file mode 100644 index 99a0ad9b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16806 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16806_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/16806_fsm deleted file mode 100644 index 655a3294..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16806_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16816 b/docker/dify/volumes/db/data/pgdata/base/16384/16816 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16817 b/docker/dify/volumes/db/data/pgdata/base/16384/16817 deleted file mode 100644 index fd350c1e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16817 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16818 b/docker/dify/volumes/db/data/pgdata/base/16384/16818 deleted file mode 100644 index 40550c92..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16818 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16820 b/docker/dify/volumes/db/data/pgdata/base/16384/16820 deleted file mode 100644 index c66e669b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16820 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16821 b/docker/dify/volumes/db/data/pgdata/base/16384/16821 deleted file mode 100644 index 604ae6a4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16821 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16822 b/docker/dify/volumes/db/data/pgdata/base/16384/16822 deleted file mode 100644 index 407f171a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16822 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16823 b/docker/dify/volumes/db/data/pgdata/base/16384/16823 deleted file mode 100644 index f7dc0837..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16823 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16825 b/docker/dify/volumes/db/data/pgdata/base/16384/16825 deleted file mode 100644 index 6702851b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16825 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16827 b/docker/dify/volumes/db/data/pgdata/base/16384/16827 deleted file mode 100644 index 7646da06..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16827 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16829 b/docker/dify/volumes/db/data/pgdata/base/16384/16829 deleted file mode 100644 index e7f43f80..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16829 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16831 b/docker/dify/volumes/db/data/pgdata/base/16384/16831 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16838 b/docker/dify/volumes/db/data/pgdata/base/16384/16838 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16839 b/docker/dify/volumes/db/data/pgdata/base/16384/16839 deleted file mode 100644 index be622d5d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16839 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16840 b/docker/dify/volumes/db/data/pgdata/base/16384/16840 deleted file mode 100644 index b9ee0cb2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16840 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16861 b/docker/dify/volumes/db/data/pgdata/base/16384/16861 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16868 b/docker/dify/volumes/db/data/pgdata/base/16384/16868 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16869 b/docker/dify/volumes/db/data/pgdata/base/16384/16869 deleted file mode 100644 index 22217843..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16869 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16870 b/docker/dify/volumes/db/data/pgdata/base/16384/16870 deleted file mode 100644 index 3b522a01..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16870 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16872 b/docker/dify/volumes/db/data/pgdata/base/16384/16872 deleted file mode 100644 index ceb79c02..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16872 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16874 b/docker/dify/volumes/db/data/pgdata/base/16384/16874 deleted file mode 100644 index 2d0044b2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16874 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16875 b/docker/dify/volumes/db/data/pgdata/base/16384/16875 deleted file mode 100644 index 38a2d960..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16875 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16881 b/docker/dify/volumes/db/data/pgdata/base/16384/16881 deleted file mode 100644 index 3c2b09d2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16881 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16883 b/docker/dify/volumes/db/data/pgdata/base/16384/16883 deleted file mode 100644 index 15059f4c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16883 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16884 b/docker/dify/volumes/db/data/pgdata/base/16384/16884 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16890 b/docker/dify/volumes/db/data/pgdata/base/16384/16890 deleted file mode 100644 index 233edf38..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16890 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16892 b/docker/dify/volumes/db/data/pgdata/base/16384/16892 deleted file mode 100644 index c386121f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16892 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16901 b/docker/dify/volumes/db/data/pgdata/base/16384/16901 deleted file mode 100644 index 0bd063d4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16901 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16904 b/docker/dify/volumes/db/data/pgdata/base/16384/16904 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16905 b/docker/dify/volumes/db/data/pgdata/base/16384/16905 deleted file mode 100644 index 0f426f87..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16905 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16906 b/docker/dify/volumes/db/data/pgdata/base/16384/16906 deleted file mode 100644 index fbfbb693..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16906 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16907 b/docker/dify/volumes/db/data/pgdata/base/16384/16907 deleted file mode 100644 index 8a26c969..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16907 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16908 b/docker/dify/volumes/db/data/pgdata/base/16384/16908 deleted file mode 100644 index 540ff214..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16908 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16909 b/docker/dify/volumes/db/data/pgdata/base/16384/16909 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16917 b/docker/dify/volumes/db/data/pgdata/base/16384/16917 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16918 b/docker/dify/volumes/db/data/pgdata/base/16384/16918 deleted file mode 100644 index 271ca094..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16918 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16919 b/docker/dify/volumes/db/data/pgdata/base/16384/16919 deleted file mode 100644 index fed59e8e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16919 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16921 b/docker/dify/volumes/db/data/pgdata/base/16384/16921 deleted file mode 100644 index cc0d2974..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16921 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16931 b/docker/dify/volumes/db/data/pgdata/base/16384/16931 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16936 b/docker/dify/volumes/db/data/pgdata/base/16384/16936 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16937 b/docker/dify/volumes/db/data/pgdata/base/16384/16937 deleted file mode 100644 index 624676ce..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16937 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16938 b/docker/dify/volumes/db/data/pgdata/base/16384/16938 deleted file mode 100644 index 6e15ce43..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16938 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16940 b/docker/dify/volumes/db/data/pgdata/base/16384/16940 deleted file mode 100644 index b9daabf5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16940 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16941 b/docker/dify/volumes/db/data/pgdata/base/16384/16941 deleted file mode 100644 index 8aabfe2d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16941 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16946 b/docker/dify/volumes/db/data/pgdata/base/16384/16946 deleted file mode 100644 index 05c973b5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16946 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16948 b/docker/dify/volumes/db/data/pgdata/base/16384/16948 deleted file mode 100644 index 60b24792..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16948 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16949 b/docker/dify/volumes/db/data/pgdata/base/16384/16949 deleted file mode 100644 index c020270f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16949 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16951 b/docker/dify/volumes/db/data/pgdata/base/16384/16951 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16956 b/docker/dify/volumes/db/data/pgdata/base/16384/16956 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16957 b/docker/dify/volumes/db/data/pgdata/base/16384/16957 deleted file mode 100644 index e5bc7fac..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16957 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16958 b/docker/dify/volumes/db/data/pgdata/base/16384/16958 deleted file mode 100644 index 8f3ba1e2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16958 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16960 b/docker/dify/volumes/db/data/pgdata/base/16384/16960 deleted file mode 100644 index d2cf48ce..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16960 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16961 b/docker/dify/volumes/db/data/pgdata/base/16384/16961 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16966 b/docker/dify/volumes/db/data/pgdata/base/16384/16966 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16967 b/docker/dify/volumes/db/data/pgdata/base/16384/16967 deleted file mode 100644 index cd595708..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16967 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16968 b/docker/dify/volumes/db/data/pgdata/base/16384/16968 deleted file mode 100644 index 65101082..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16968 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16970 b/docker/dify/volumes/db/data/pgdata/base/16384/16970 deleted file mode 100644 index bea3db69..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16970 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16971 b/docker/dify/volumes/db/data/pgdata/base/16384/16971 deleted file mode 100644 index f1eed85c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16971 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16973 b/docker/dify/volumes/db/data/pgdata/base/16384/16973 deleted file mode 100644 index 78e63da3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16973 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16974 b/docker/dify/volumes/db/data/pgdata/base/16384/16974 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16979 b/docker/dify/volumes/db/data/pgdata/base/16384/16979 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16980 b/docker/dify/volumes/db/data/pgdata/base/16384/16980 deleted file mode 100644 index 781fd02d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16980 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16981 b/docker/dify/volumes/db/data/pgdata/base/16384/16981 deleted file mode 100644 index e0ff5746..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16981 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16983 b/docker/dify/volumes/db/data/pgdata/base/16384/16983 deleted file mode 100644 index fd8f76ff..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16983 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16984 b/docker/dify/volumes/db/data/pgdata/base/16384/16984 deleted file mode 100644 index 78afc307..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16984 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16985 b/docker/dify/volumes/db/data/pgdata/base/16384/16985 deleted file mode 100644 index 14491067..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16985 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16989 b/docker/dify/volumes/db/data/pgdata/base/16384/16989 deleted file mode 100644 index 26e52a8a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16989 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16990 b/docker/dify/volumes/db/data/pgdata/base/16384/16990 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16997 b/docker/dify/volumes/db/data/pgdata/base/16384/16997 deleted file mode 100644 index 6ebef16e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16997 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/16999 b/docker/dify/volumes/db/data/pgdata/base/16384/16999 deleted file mode 100644 index ec71df9a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/16999 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17010 b/docker/dify/volumes/db/data/pgdata/base/16384/17010 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17016 b/docker/dify/volumes/db/data/pgdata/base/16384/17016 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17017 b/docker/dify/volumes/db/data/pgdata/base/16384/17017 deleted file mode 100644 index e6544aca..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17017 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17018 b/docker/dify/volumes/db/data/pgdata/base/16384/17018 deleted file mode 100644 index 6e6a1867..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17018 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17022 b/docker/dify/volumes/db/data/pgdata/base/16384/17022 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17028 b/docker/dify/volumes/db/data/pgdata/base/16384/17028 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17029 b/docker/dify/volumes/db/data/pgdata/base/16384/17029 deleted file mode 100644 index c086d4be..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17029 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17030 b/docker/dify/volumes/db/data/pgdata/base/16384/17030 deleted file mode 100644 index 1b47b05e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17030 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17032 b/docker/dify/volumes/db/data/pgdata/base/16384/17032 deleted file mode 100644 index 01361260..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17032 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17041 b/docker/dify/volumes/db/data/pgdata/base/16384/17041 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17051 b/docker/dify/volumes/db/data/pgdata/base/16384/17051 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17052 b/docker/dify/volumes/db/data/pgdata/base/16384/17052 deleted file mode 100644 index a10a6b19..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17052 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17053 b/docker/dify/volumes/db/data/pgdata/base/16384/17053 deleted file mode 100644 index 94ced266..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17053 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17055 b/docker/dify/volumes/db/data/pgdata/base/16384/17055 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17061 b/docker/dify/volumes/db/data/pgdata/base/16384/17061 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17062 b/docker/dify/volumes/db/data/pgdata/base/16384/17062 deleted file mode 100644 index 7fd5fa26..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17062 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17063 b/docker/dify/volumes/db/data/pgdata/base/16384/17063 deleted file mode 100644 index a2cbca60..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17063 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17065 b/docker/dify/volumes/db/data/pgdata/base/16384/17065 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17068 b/docker/dify/volumes/db/data/pgdata/base/16384/17068 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17069 b/docker/dify/volumes/db/data/pgdata/base/16384/17069 deleted file mode 100644 index 9d8bdd84..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17069 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17070 b/docker/dify/volumes/db/data/pgdata/base/16384/17070 deleted file mode 100644 index 986ebc53..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17070 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17071 b/docker/dify/volumes/db/data/pgdata/base/16384/17071 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17075 b/docker/dify/volumes/db/data/pgdata/base/16384/17075 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17076 b/docker/dify/volumes/db/data/pgdata/base/16384/17076 deleted file mode 100644 index db68b7e7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17076 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17077 b/docker/dify/volumes/db/data/pgdata/base/16384/17077 deleted file mode 100644 index 034fc7cd..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17077 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17079 b/docker/dify/volumes/db/data/pgdata/base/16384/17079 deleted file mode 100644 index 0019f1e2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17079 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17080 b/docker/dify/volumes/db/data/pgdata/base/16384/17080 deleted file mode 100644 index acf00e79..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17080 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17081 b/docker/dify/volumes/db/data/pgdata/base/16384/17081 deleted file mode 100644 index 09f26553..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17081 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17083 b/docker/dify/volumes/db/data/pgdata/base/16384/17083 deleted file mode 100644 index 4c79d83f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17083 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17086 b/docker/dify/volumes/db/data/pgdata/base/16384/17086 deleted file mode 100644 index 4ca6aae5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17086 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17090 b/docker/dify/volumes/db/data/pgdata/base/16384/17090 deleted file mode 100644 index fa019609..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17090 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17092 b/docker/dify/volumes/db/data/pgdata/base/16384/17092 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17097 b/docker/dify/volumes/db/data/pgdata/base/16384/17097 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17098 b/docker/dify/volumes/db/data/pgdata/base/16384/17098 deleted file mode 100644 index d866eb8b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17098 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17099 b/docker/dify/volumes/db/data/pgdata/base/16384/17099 deleted file mode 100644 index 7a3daccc..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17099 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17101 b/docker/dify/volumes/db/data/pgdata/base/16384/17101 deleted file mode 100644 index 27dbb4f7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17101 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17102 b/docker/dify/volumes/db/data/pgdata/base/16384/17102 deleted file mode 100644 index f71328b3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17102 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17102_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/17102_fsm deleted file mode 100644 index 55c10c5c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17102_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17108 b/docker/dify/volumes/db/data/pgdata/base/16384/17108 deleted file mode 100644 index 3665a687..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17108 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17109 b/docker/dify/volumes/db/data/pgdata/base/16384/17109 deleted file mode 100644 index 200df4d6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17109 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17110 b/docker/dify/volumes/db/data/pgdata/base/16384/17110 deleted file mode 100644 index 35df7967..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17110 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17112 b/docker/dify/volumes/db/data/pgdata/base/16384/17112 deleted file mode 100644 index 26253c67..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17112 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17113 b/docker/dify/volumes/db/data/pgdata/base/16384/17113 deleted file mode 100644 index 0c4245af..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17113 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17127 b/docker/dify/volumes/db/data/pgdata/base/16384/17127 deleted file mode 100644 index 422109a3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17127 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17127_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/17127_fsm deleted file mode 100644 index 0deb9155..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17127_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17132 b/docker/dify/volumes/db/data/pgdata/base/16384/17132 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17133 b/docker/dify/volumes/db/data/pgdata/base/16384/17133 deleted file mode 100644 index 0f2eaed4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17133 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17134 b/docker/dify/volumes/db/data/pgdata/base/16384/17134 deleted file mode 100644 index a7ead0e9..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17134 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17136 b/docker/dify/volumes/db/data/pgdata/base/16384/17136 deleted file mode 100644 index 3b680da3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17136 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17142 b/docker/dify/volumes/db/data/pgdata/base/16384/17142 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17147 b/docker/dify/volumes/db/data/pgdata/base/16384/17147 deleted file mode 100644 index 9c38b0a4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17147 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17149 b/docker/dify/volumes/db/data/pgdata/base/16384/17149 deleted file mode 100644 index 08f8ea5c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17149 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17150 b/docker/dify/volumes/db/data/pgdata/base/16384/17150 deleted file mode 100644 index 65ef314f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17150 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17151 b/docker/dify/volumes/db/data/pgdata/base/16384/17151 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17156 b/docker/dify/volumes/db/data/pgdata/base/16384/17156 deleted file mode 100644 index 8565cf33..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17156 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17158 b/docker/dify/volumes/db/data/pgdata/base/16384/17158 deleted file mode 100644 index 020656b0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17158 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17159 b/docker/dify/volumes/db/data/pgdata/base/16384/17159 deleted file mode 100644 index 52465cd0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17159 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17160 b/docker/dify/volumes/db/data/pgdata/base/16384/17160 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17167 b/docker/dify/volumes/db/data/pgdata/base/16384/17167 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17168 b/docker/dify/volumes/db/data/pgdata/base/16384/17168 deleted file mode 100644 index e7824c7b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17168 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17169 b/docker/dify/volumes/db/data/pgdata/base/16384/17169 deleted file mode 100644 index 78d093f2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17169 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17171 b/docker/dify/volumes/db/data/pgdata/base/16384/17171 deleted file mode 100644 index bbd177bd..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17171 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17173 b/docker/dify/volumes/db/data/pgdata/base/16384/17173 deleted file mode 100644 index 30217487..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17173 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17175 b/docker/dify/volumes/db/data/pgdata/base/16384/17175 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17179 b/docker/dify/volumes/db/data/pgdata/base/16384/17179 deleted file mode 100644 index dbaf7df2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17179 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17183 b/docker/dify/volumes/db/data/pgdata/base/16384/17183 deleted file mode 100644 index 1b0ad075..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17183 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17187 b/docker/dify/volumes/db/data/pgdata/base/16384/17187 deleted file mode 100644 index 6926a0ff..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17187 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17194 b/docker/dify/volumes/db/data/pgdata/base/16384/17194 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17195 b/docker/dify/volumes/db/data/pgdata/base/16384/17195 deleted file mode 100644 index f2aebe2c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17195 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17196 b/docker/dify/volumes/db/data/pgdata/base/16384/17196 deleted file mode 100644 index 09e41fd1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17196 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17198 b/docker/dify/volumes/db/data/pgdata/base/16384/17198 deleted file mode 100644 index 32ae8e07..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17198 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17199 b/docker/dify/volumes/db/data/pgdata/base/16384/17199 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17207 b/docker/dify/volumes/db/data/pgdata/base/16384/17207 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17208 b/docker/dify/volumes/db/data/pgdata/base/16384/17208 deleted file mode 100644 index fd3768cb..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17208 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17209 b/docker/dify/volumes/db/data/pgdata/base/16384/17209 deleted file mode 100644 index 963276bf..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17209 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17211 b/docker/dify/volumes/db/data/pgdata/base/16384/17211 deleted file mode 100644 index 5a290315..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17211 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17220 b/docker/dify/volumes/db/data/pgdata/base/16384/17220 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17221 b/docker/dify/volumes/db/data/pgdata/base/16384/17221 deleted file mode 100644 index 04f273ef..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17221 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17223 b/docker/dify/volumes/db/data/pgdata/base/16384/17223 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17230 b/docker/dify/volumes/db/data/pgdata/base/16384/17230 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17231 b/docker/dify/volumes/db/data/pgdata/base/16384/17231 deleted file mode 100644 index d7d707a0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17231 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17232 b/docker/dify/volumes/db/data/pgdata/base/16384/17232 deleted file mode 100644 index 979b05cf..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17232 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17234 b/docker/dify/volumes/db/data/pgdata/base/16384/17234 deleted file mode 100644 index b400b4be..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17234 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17235 b/docker/dify/volumes/db/data/pgdata/base/16384/17235 deleted file mode 100644 index dc9a1f21..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17235 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17236 b/docker/dify/volumes/db/data/pgdata/base/16384/17236 deleted file mode 100644 index ae45a4a7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17236 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17237 b/docker/dify/volumes/db/data/pgdata/base/16384/17237 deleted file mode 100644 index 180c4f0f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17237 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17250 b/docker/dify/volumes/db/data/pgdata/base/16384/17250 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17257 b/docker/dify/volumes/db/data/pgdata/base/16384/17257 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17258 b/docker/dify/volumes/db/data/pgdata/base/16384/17258 deleted file mode 100644 index 2973b8b5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17258 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17259 b/docker/dify/volumes/db/data/pgdata/base/16384/17259 deleted file mode 100644 index 2dd29482..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17259 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17261 b/docker/dify/volumes/db/data/pgdata/base/16384/17261 deleted file mode 100644 index ce2d009c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17261 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17262 b/docker/dify/volumes/db/data/pgdata/base/16384/17262 deleted file mode 100644 index dd5937d0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17262 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17263 b/docker/dify/volumes/db/data/pgdata/base/16384/17263 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17269 b/docker/dify/volumes/db/data/pgdata/base/16384/17269 deleted file mode 100644 index 453649f4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17269 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17271 b/docker/dify/volumes/db/data/pgdata/base/16384/17271 deleted file mode 100644 index 69af6694..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17271 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17272 b/docker/dify/volumes/db/data/pgdata/base/16384/17272 deleted file mode 100644 index 37e0ff7f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17272 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17273 b/docker/dify/volumes/db/data/pgdata/base/16384/17273 deleted file mode 100644 index 75f132ee..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17273 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17274 b/docker/dify/volumes/db/data/pgdata/base/16384/17274 deleted file mode 100644 index 882744e5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17274 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17283 b/docker/dify/volumes/db/data/pgdata/base/16384/17283 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17288 b/docker/dify/volumes/db/data/pgdata/base/16384/17288 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17289 b/docker/dify/volumes/db/data/pgdata/base/16384/17289 deleted file mode 100644 index cc00beb6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17289 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17290 b/docker/dify/volumes/db/data/pgdata/base/16384/17290 deleted file mode 100644 index 69728bf9..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17290 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17292 b/docker/dify/volumes/db/data/pgdata/base/16384/17292 deleted file mode 100644 index b5a69ce3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17292 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17293 b/docker/dify/volumes/db/data/pgdata/base/16384/17293 deleted file mode 100644 index af971a21..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17293 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17298 b/docker/dify/volumes/db/data/pgdata/base/16384/17298 deleted file mode 100644 index 5b79f88c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17298 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17299 b/docker/dify/volumes/db/data/pgdata/base/16384/17299 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17305 b/docker/dify/volumes/db/data/pgdata/base/16384/17305 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17306 b/docker/dify/volumes/db/data/pgdata/base/16384/17306 deleted file mode 100644 index fe4fbc85..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17306 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17307 b/docker/dify/volumes/db/data/pgdata/base/16384/17307 deleted file mode 100644 index 11b333c0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17307 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17309 b/docker/dify/volumes/db/data/pgdata/base/16384/17309 deleted file mode 100644 index c68d0570..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17309 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17310 b/docker/dify/volumes/db/data/pgdata/base/16384/17310 deleted file mode 100644 index c4e2504b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17310 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17325 b/docker/dify/volumes/db/data/pgdata/base/16384/17325 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17332 b/docker/dify/volumes/db/data/pgdata/base/16384/17332 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17333 b/docker/dify/volumes/db/data/pgdata/base/16384/17333 deleted file mode 100644 index 9f5223c4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17333 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17334 b/docker/dify/volumes/db/data/pgdata/base/16384/17334 deleted file mode 100644 index a8ee47f0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17334 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17336 b/docker/dify/volumes/db/data/pgdata/base/16384/17336 deleted file mode 100644 index 20a863ce..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17336 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17337 b/docker/dify/volumes/db/data/pgdata/base/16384/17337 deleted file mode 100644 index ca8650c8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17337 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17338 b/docker/dify/volumes/db/data/pgdata/base/16384/17338 deleted file mode 100644 index a8669b38..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17338 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17339 b/docker/dify/volumes/db/data/pgdata/base/16384/17339 deleted file mode 100644 index d8b85285..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17339 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17340 b/docker/dify/volumes/db/data/pgdata/base/16384/17340 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17345 b/docker/dify/volumes/db/data/pgdata/base/16384/17345 deleted file mode 100644 index 157ef19e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17345 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17347 b/docker/dify/volumes/db/data/pgdata/base/16384/17347 deleted file mode 100644 index 95ea01b6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17347 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17350 b/docker/dify/volumes/db/data/pgdata/base/16384/17350 deleted file mode 100644 index 3d6e0685..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17350 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17352 b/docker/dify/volumes/db/data/pgdata/base/16384/17352 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17359 b/docker/dify/volumes/db/data/pgdata/base/16384/17359 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17360 b/docker/dify/volumes/db/data/pgdata/base/16384/17360 deleted file mode 100644 index f08c9622..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17360 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17361 b/docker/dify/volumes/db/data/pgdata/base/16384/17361 deleted file mode 100644 index a5efaade..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17361 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17363 b/docker/dify/volumes/db/data/pgdata/base/16384/17363 deleted file mode 100644 index 0a831447..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17363 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17364 b/docker/dify/volumes/db/data/pgdata/base/16384/17364 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17370 b/docker/dify/volumes/db/data/pgdata/base/16384/17370 deleted file mode 100644 index c2975569..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17370 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17372 b/docker/dify/volumes/db/data/pgdata/base/16384/17372 deleted file mode 100644 index 60168c8e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17372 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17373 b/docker/dify/volumes/db/data/pgdata/base/16384/17373 deleted file mode 100644 index ebc40b03..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17373 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17374 b/docker/dify/volumes/db/data/pgdata/base/16384/17374 deleted file mode 100644 index c8ecb770..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17374 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17376 b/docker/dify/volumes/db/data/pgdata/base/16384/17376 deleted file mode 100644 index d6eb65a2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17376 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17376_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/17376_fsm deleted file mode 100644 index 22b4365d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17376_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17379 b/docker/dify/volumes/db/data/pgdata/base/16384/17379 deleted file mode 100644 index afd151ad..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17379 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17380 b/docker/dify/volumes/db/data/pgdata/base/16384/17380 deleted file mode 100644 index e8d338ed..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17380 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17381 b/docker/dify/volumes/db/data/pgdata/base/16384/17381 deleted file mode 100644 index 2fbdaa02..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17381 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17382 b/docker/dify/volumes/db/data/pgdata/base/16384/17382 deleted file mode 100644 index 991dc45a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17382 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17386 b/docker/dify/volumes/db/data/pgdata/base/16384/17386 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17392 b/docker/dify/volumes/db/data/pgdata/base/16384/17392 deleted file mode 100644 index 21c6e8d1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17392 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17394 b/docker/dify/volumes/db/data/pgdata/base/16384/17394 deleted file mode 100644 index 81780d4b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17394 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17397 b/docker/dify/volumes/db/data/pgdata/base/16384/17397 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17398 b/docker/dify/volumes/db/data/pgdata/base/16384/17398 deleted file mode 100644 index e788f3ee..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17398 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/174 b/docker/dify/volumes/db/data/pgdata/base/16384/174 deleted file mode 100644 index 20ed18ab..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/174 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17405 b/docker/dify/volumes/db/data/pgdata/base/16384/17405 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17410 b/docker/dify/volumes/db/data/pgdata/base/16384/17410 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17411 b/docker/dify/volumes/db/data/pgdata/base/16384/17411 deleted file mode 100644 index 3beba7df..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17411 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17412 b/docker/dify/volumes/db/data/pgdata/base/16384/17412 deleted file mode 100644 index 09351412..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17412 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17414 b/docker/dify/volumes/db/data/pgdata/base/16384/17414 deleted file mode 100644 index fff3d040..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17414 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17415 b/docker/dify/volumes/db/data/pgdata/base/16384/17415 deleted file mode 100644 index db8c47ef..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17415 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17416 b/docker/dify/volumes/db/data/pgdata/base/16384/17416 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17421 b/docker/dify/volumes/db/data/pgdata/base/16384/17421 deleted file mode 100644 index 26886029..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17421 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17423 b/docker/dify/volumes/db/data/pgdata/base/16384/17423 deleted file mode 100644 index 16764379..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17423 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17424 b/docker/dify/volumes/db/data/pgdata/base/16384/17424 deleted file mode 100644 index f8f96b57..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17424 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17425 b/docker/dify/volumes/db/data/pgdata/base/16384/17425 deleted file mode 100644 index 62055ec4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17425 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17426 b/docker/dify/volumes/db/data/pgdata/base/16384/17426 deleted file mode 100644 index 8f4fd862..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17426 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17427 b/docker/dify/volumes/db/data/pgdata/base/16384/17427 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17433 b/docker/dify/volumes/db/data/pgdata/base/16384/17433 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17434 b/docker/dify/volumes/db/data/pgdata/base/16384/17434 deleted file mode 100644 index ef2735b3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17434 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17435 b/docker/dify/volumes/db/data/pgdata/base/16384/17435 deleted file mode 100644 index c1b585e3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17435 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17437 b/docker/dify/volumes/db/data/pgdata/base/16384/17437 deleted file mode 100644 index ef0e84a4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17437 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17438 b/docker/dify/volumes/db/data/pgdata/base/16384/17438 deleted file mode 100644 index 27b658da..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17438 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17440 b/docker/dify/volumes/db/data/pgdata/base/16384/17440 deleted file mode 100644 index 115d5e62..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17440 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17443 b/docker/dify/volumes/db/data/pgdata/base/16384/17443 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17444 b/docker/dify/volumes/db/data/pgdata/base/16384/17444 deleted file mode 100644 index 373a5f12..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17444 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17445 b/docker/dify/volumes/db/data/pgdata/base/16384/17445 deleted file mode 100644 index 990a71dc..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17445 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17446 b/docker/dify/volumes/db/data/pgdata/base/16384/17446 deleted file mode 100644 index 0cd98522..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17446 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17447 b/docker/dify/volumes/db/data/pgdata/base/16384/17447 deleted file mode 100644 index e2365c26..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17447 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17448 b/docker/dify/volumes/db/data/pgdata/base/16384/17448 deleted file mode 100644 index 03a2c5d6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17448 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17449 b/docker/dify/volumes/db/data/pgdata/base/16384/17449 deleted file mode 100644 index eae7dccd..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17449 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17449_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/17449_fsm deleted file mode 100644 index 7c0083e4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17449_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17450 b/docker/dify/volumes/db/data/pgdata/base/16384/17450 deleted file mode 100644 index 03b2d6e7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17450 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17451 b/docker/dify/volumes/db/data/pgdata/base/16384/17451 deleted file mode 100644 index dcd3559f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17451 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17452 b/docker/dify/volumes/db/data/pgdata/base/16384/17452 deleted file mode 100644 index 3d9c71a3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17452 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17453 b/docker/dify/volumes/db/data/pgdata/base/16384/17453 deleted file mode 100644 index abf0ad44..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17453 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17454 b/docker/dify/volumes/db/data/pgdata/base/16384/17454 deleted file mode 100644 index facdda52..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17454 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17460 b/docker/dify/volumes/db/data/pgdata/base/16384/17460 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17461 b/docker/dify/volumes/db/data/pgdata/base/16384/17461 deleted file mode 100644 index 4b0d61e7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17461 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17462 b/docker/dify/volumes/db/data/pgdata/base/16384/17462 deleted file mode 100644 index 61aceb12..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17462 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17464 b/docker/dify/volumes/db/data/pgdata/base/16384/17464 deleted file mode 100644 index 44fbc199..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17464 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17466 b/docker/dify/volumes/db/data/pgdata/base/16384/17466 deleted file mode 100644 index b2cfbd0a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17466 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17467 b/docker/dify/volumes/db/data/pgdata/base/16384/17467 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17474 b/docker/dify/volumes/db/data/pgdata/base/16384/17474 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17475 b/docker/dify/volumes/db/data/pgdata/base/16384/17475 deleted file mode 100644 index 66d37165..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17475 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17476 b/docker/dify/volumes/db/data/pgdata/base/16384/17476 deleted file mode 100644 index 679d0f40..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17476 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17478 b/docker/dify/volumes/db/data/pgdata/base/16384/17478 deleted file mode 100644 index 91704a52..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17478 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17480 b/docker/dify/volumes/db/data/pgdata/base/16384/17480 deleted file mode 100644 index dcd36307..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17480 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17482 b/docker/dify/volumes/db/data/pgdata/base/16384/17482 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17488 b/docker/dify/volumes/db/data/pgdata/base/16384/17488 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17489 b/docker/dify/volumes/db/data/pgdata/base/16384/17489 deleted file mode 100644 index dd80e5d4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17489 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17490 b/docker/dify/volumes/db/data/pgdata/base/16384/17490 deleted file mode 100644 index a257e1ab..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17490 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17492 b/docker/dify/volumes/db/data/pgdata/base/16384/17492 deleted file mode 100644 index d3fb8e31..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17492 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17494 b/docker/dify/volumes/db/data/pgdata/base/16384/17494 deleted file mode 100644 index 430d0ab6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17494 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17496 b/docker/dify/volumes/db/data/pgdata/base/16384/17496 deleted file mode 100644 index a3659599..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17496 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/175 b/docker/dify/volumes/db/data/pgdata/base/16384/175 deleted file mode 100644 index b67971d4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/175 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17500 b/docker/dify/volumes/db/data/pgdata/base/16384/17500 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17504 b/docker/dify/volumes/db/data/pgdata/base/16384/17504 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17505 b/docker/dify/volumes/db/data/pgdata/base/16384/17505 deleted file mode 100644 index 5c58a945..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17505 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17506 b/docker/dify/volumes/db/data/pgdata/base/16384/17506 deleted file mode 100644 index 111b338e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17506 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17508 b/docker/dify/volumes/db/data/pgdata/base/16384/17508 deleted file mode 100644 index 1a335531..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17508 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17524 b/docker/dify/volumes/db/data/pgdata/base/16384/17524 deleted file mode 100644 index 4dc4f03e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17524 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17546 b/docker/dify/volumes/db/data/pgdata/base/16384/17546 deleted file mode 100644 index 0a3928bd..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17546 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17552 b/docker/dify/volumes/db/data/pgdata/base/16384/17552 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17553 b/docker/dify/volumes/db/data/pgdata/base/16384/17553 deleted file mode 100644 index 7c5ceb0e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17553 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17554 b/docker/dify/volumes/db/data/pgdata/base/16384/17554 deleted file mode 100644 index 444b7ddd..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17554 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17556 b/docker/dify/volumes/db/data/pgdata/base/16384/17556 deleted file mode 100644 index 3c7e446f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17556 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17557 b/docker/dify/volumes/db/data/pgdata/base/16384/17557 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17563 b/docker/dify/volumes/db/data/pgdata/base/16384/17563 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17564 b/docker/dify/volumes/db/data/pgdata/base/16384/17564 deleted file mode 100644 index ac6d94c8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17564 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17565 b/docker/dify/volumes/db/data/pgdata/base/16384/17565 deleted file mode 100644 index 073df4ba..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17565 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17567 b/docker/dify/volumes/db/data/pgdata/base/16384/17567 deleted file mode 100644 index b51e6e17..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17567 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17568 b/docker/dify/volumes/db/data/pgdata/base/16384/17568 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17576 b/docker/dify/volumes/db/data/pgdata/base/16384/17576 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17577 b/docker/dify/volumes/db/data/pgdata/base/16384/17577 deleted file mode 100644 index c2b1a07a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17577 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17578 b/docker/dify/volumes/db/data/pgdata/base/16384/17578 deleted file mode 100644 index 6995d2eb..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17578 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17580 b/docker/dify/volumes/db/data/pgdata/base/16384/17580 deleted file mode 100644 index f030d92b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17580 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17581 b/docker/dify/volumes/db/data/pgdata/base/16384/17581 deleted file mode 100644 index cf0441f2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17581 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17583 b/docker/dify/volumes/db/data/pgdata/base/16384/17583 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17587 b/docker/dify/volumes/db/data/pgdata/base/16384/17587 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17588 b/docker/dify/volumes/db/data/pgdata/base/16384/17588 deleted file mode 100644 index 499a3865..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17588 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17589 b/docker/dify/volumes/db/data/pgdata/base/16384/17589 deleted file mode 100644 index 508089b4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17589 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17591 b/docker/dify/volumes/db/data/pgdata/base/16384/17591 deleted file mode 100644 index 46f33484..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17591 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17593 b/docker/dify/volumes/db/data/pgdata/base/16384/17593 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17599 b/docker/dify/volumes/db/data/pgdata/base/16384/17599 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17600 b/docker/dify/volumes/db/data/pgdata/base/16384/17600 deleted file mode 100644 index 100b48c9..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17600 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17601 b/docker/dify/volumes/db/data/pgdata/base/16384/17601 deleted file mode 100644 index e2b26a6c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17601 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17603 b/docker/dify/volumes/db/data/pgdata/base/16384/17603 deleted file mode 100644 index 7692246b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17603 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17620 b/docker/dify/volumes/db/data/pgdata/base/16384/17620 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17625 b/docker/dify/volumes/db/data/pgdata/base/16384/17625 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17626 b/docker/dify/volumes/db/data/pgdata/base/16384/17626 deleted file mode 100644 index 94eba751..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17626 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17627 b/docker/dify/volumes/db/data/pgdata/base/16384/17627 deleted file mode 100644 index 08b8228a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17627 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17629 b/docker/dify/volumes/db/data/pgdata/base/16384/17629 deleted file mode 100644 index a8fefea8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17629 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17630 b/docker/dify/volumes/db/data/pgdata/base/16384/17630 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17636 b/docker/dify/volumes/db/data/pgdata/base/16384/17636 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17637 b/docker/dify/volumes/db/data/pgdata/base/16384/17637 deleted file mode 100644 index 5d544291..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17637 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17638 b/docker/dify/volumes/db/data/pgdata/base/16384/17638 deleted file mode 100644 index 801d215d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17638 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17640 b/docker/dify/volumes/db/data/pgdata/base/16384/17640 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17646 b/docker/dify/volumes/db/data/pgdata/base/16384/17646 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17647 b/docker/dify/volumes/db/data/pgdata/base/16384/17647 deleted file mode 100644 index 83d01b18..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17647 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17648 b/docker/dify/volumes/db/data/pgdata/base/16384/17648 deleted file mode 100644 index 05bc2806..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17648 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17650 b/docker/dify/volumes/db/data/pgdata/base/16384/17650 deleted file mode 100644 index 047ae133..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17650 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17651 b/docker/dify/volumes/db/data/pgdata/base/16384/17651 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17657 b/docker/dify/volumes/db/data/pgdata/base/16384/17657 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17658 b/docker/dify/volumes/db/data/pgdata/base/16384/17658 deleted file mode 100644 index 6666b392..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17658 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17659 b/docker/dify/volumes/db/data/pgdata/base/16384/17659 deleted file mode 100644 index 15f9884d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17659 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17661 b/docker/dify/volumes/db/data/pgdata/base/16384/17661 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17670 b/docker/dify/volumes/db/data/pgdata/base/16384/17670 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17671 b/docker/dify/volumes/db/data/pgdata/base/16384/17671 deleted file mode 100644 index 46893b89..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17671 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17672 b/docker/dify/volumes/db/data/pgdata/base/16384/17672 deleted file mode 100644 index c1369921..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17672 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17674 b/docker/dify/volumes/db/data/pgdata/base/16384/17674 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17679 b/docker/dify/volumes/db/data/pgdata/base/16384/17679 deleted file mode 100644 index e3ff517b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17679 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17681 b/docker/dify/volumes/db/data/pgdata/base/16384/17681 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17686 b/docker/dify/volumes/db/data/pgdata/base/16384/17686 deleted file mode 100644 index 1d696607..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17686 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17688 b/docker/dify/volumes/db/data/pgdata/base/16384/17688 deleted file mode 100644 index ebccdd63..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17688 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17694 b/docker/dify/volumes/db/data/pgdata/base/16384/17694 deleted file mode 100644 index d8ebb8a3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17694 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17696 b/docker/dify/volumes/db/data/pgdata/base/16384/17696 deleted file mode 100644 index 74fa3ea9..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17696 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17697 b/docker/dify/volumes/db/data/pgdata/base/16384/17697 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17703 b/docker/dify/volumes/db/data/pgdata/base/16384/17703 deleted file mode 100644 index 103c509f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17703 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17705 b/docker/dify/volumes/db/data/pgdata/base/16384/17705 deleted file mode 100644 index b76f129d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17705 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17707 b/docker/dify/volumes/db/data/pgdata/base/16384/17707 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17713 b/docker/dify/volumes/db/data/pgdata/base/16384/17713 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17714 b/docker/dify/volumes/db/data/pgdata/base/16384/17714 deleted file mode 100644 index ebbea4d2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17714 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17715 b/docker/dify/volumes/db/data/pgdata/base/16384/17715 deleted file mode 100644 index abb54c79..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17715 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17717 b/docker/dify/volumes/db/data/pgdata/base/16384/17717 deleted file mode 100644 index bc043dc2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17717 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17730 b/docker/dify/volumes/db/data/pgdata/base/16384/17730 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17737 b/docker/dify/volumes/db/data/pgdata/base/16384/17737 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17738 b/docker/dify/volumes/db/data/pgdata/base/16384/17738 deleted file mode 100644 index 8158b80c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17738 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17739 b/docker/dify/volumes/db/data/pgdata/base/16384/17739 deleted file mode 100644 index 129e0cf4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17739 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17741 b/docker/dify/volumes/db/data/pgdata/base/16384/17741 deleted file mode 100644 index 4df3150d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17741 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17743 b/docker/dify/volumes/db/data/pgdata/base/16384/17743 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17749 b/docker/dify/volumes/db/data/pgdata/base/16384/17749 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17750 b/docker/dify/volumes/db/data/pgdata/base/16384/17750 deleted file mode 100644 index e30725f5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17750 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17751 b/docker/dify/volumes/db/data/pgdata/base/16384/17751 deleted file mode 100644 index ff121cd7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17751 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17753 b/docker/dify/volumes/db/data/pgdata/base/16384/17753 deleted file mode 100644 index fda07c24..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17753 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17755 b/docker/dify/volumes/db/data/pgdata/base/16384/17755 deleted file mode 100644 index e23ab67b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17755 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17756 b/docker/dify/volumes/db/data/pgdata/base/16384/17756 deleted file mode 100644 index 95330b0c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17756 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17757 b/docker/dify/volumes/db/data/pgdata/base/16384/17757 deleted file mode 100644 index 1e6494f0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17757 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17758 b/docker/dify/volumes/db/data/pgdata/base/16384/17758 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17764 b/docker/dify/volumes/db/data/pgdata/base/16384/17764 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17765 b/docker/dify/volumes/db/data/pgdata/base/16384/17765 deleted file mode 100644 index 485b59b4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17765 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17766 b/docker/dify/volumes/db/data/pgdata/base/16384/17766 deleted file mode 100644 index 4542f9b7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17766 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17768 b/docker/dify/volumes/db/data/pgdata/base/16384/17768 deleted file mode 100644 index 85d51672..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17768 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17770 b/docker/dify/volumes/db/data/pgdata/base/16384/17770 deleted file mode 100644 index 83f464c0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17770 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17771 b/docker/dify/volumes/db/data/pgdata/base/16384/17771 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17777 b/docker/dify/volumes/db/data/pgdata/base/16384/17777 deleted file mode 100644 index dc4f66d6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17777 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17779 b/docker/dify/volumes/db/data/pgdata/base/16384/17779 deleted file mode 100644 index 077880b2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17779 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17781 b/docker/dify/volumes/db/data/pgdata/base/16384/17781 deleted file mode 100644 index 2b842618..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17781 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17782 b/docker/dify/volumes/db/data/pgdata/base/16384/17782 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17787 b/docker/dify/volumes/db/data/pgdata/base/16384/17787 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17788 b/docker/dify/volumes/db/data/pgdata/base/16384/17788 deleted file mode 100644 index eacb6877..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17788 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17789 b/docker/dify/volumes/db/data/pgdata/base/16384/17789 deleted file mode 100644 index b93e7510..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17789 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17791 b/docker/dify/volumes/db/data/pgdata/base/16384/17791 deleted file mode 100644 index 6fade65d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17791 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17792 b/docker/dify/volumes/db/data/pgdata/base/16384/17792 deleted file mode 100644 index 8b570d6f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17792 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17793 b/docker/dify/volumes/db/data/pgdata/base/16384/17793 deleted file mode 100644 index 22c353aa..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17793 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17794 b/docker/dify/volumes/db/data/pgdata/base/16384/17794 deleted file mode 100644 index 3456b47f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17794 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17795 b/docker/dify/volumes/db/data/pgdata/base/16384/17795 deleted file mode 100644 index 9f3225ec..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17795 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17796 b/docker/dify/volumes/db/data/pgdata/base/16384/17796 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17802 b/docker/dify/volumes/db/data/pgdata/base/16384/17802 deleted file mode 100644 index afd72477..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17802 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17804 b/docker/dify/volumes/db/data/pgdata/base/16384/17804 deleted file mode 100644 index 73a6f790..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17804 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17806 b/docker/dify/volumes/db/data/pgdata/base/16384/17806 deleted file mode 100644 index 2242d280..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17806 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17808 b/docker/dify/volumes/db/data/pgdata/base/16384/17808 deleted file mode 100644 index f13fc594..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17808 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17812 b/docker/dify/volumes/db/data/pgdata/base/16384/17812 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17815 b/docker/dify/volumes/db/data/pgdata/base/16384/17815 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17816 b/docker/dify/volumes/db/data/pgdata/base/16384/17816 deleted file mode 100644 index 5b0fd1a1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17816 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17817 b/docker/dify/volumes/db/data/pgdata/base/16384/17817 deleted file mode 100644 index 40bea091..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17817 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17818 b/docker/dify/volumes/db/data/pgdata/base/16384/17818 deleted file mode 100644 index a3ba1067..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17818 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17819 b/docker/dify/volumes/db/data/pgdata/base/16384/17819 deleted file mode 100644 index 5f4f4e5a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17819 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17821 b/docker/dify/volumes/db/data/pgdata/base/16384/17821 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17824 b/docker/dify/volumes/db/data/pgdata/base/16384/17824 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17825 b/docker/dify/volumes/db/data/pgdata/base/16384/17825 deleted file mode 100644 index baaa340b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17825 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17826 b/docker/dify/volumes/db/data/pgdata/base/16384/17826 deleted file mode 100644 index d8552606..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17826 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17827 b/docker/dify/volumes/db/data/pgdata/base/16384/17827 deleted file mode 100644 index dce9d9bb..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17827 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17828 b/docker/dify/volumes/db/data/pgdata/base/16384/17828 deleted file mode 100644 index cb599a10..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17828 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17829 b/docker/dify/volumes/db/data/pgdata/base/16384/17829 deleted file mode 100644 index 38c54a48..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17829 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17830 b/docker/dify/volumes/db/data/pgdata/base/16384/17830 deleted file mode 100644 index 86461dc2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17830 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17838 b/docker/dify/volumes/db/data/pgdata/base/16384/17838 deleted file mode 100644 index 532ce645..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17838 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17841 b/docker/dify/volumes/db/data/pgdata/base/16384/17841 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17842 b/docker/dify/volumes/db/data/pgdata/base/16384/17842 deleted file mode 100644 index 18f37b06..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17842 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17843 b/docker/dify/volumes/db/data/pgdata/base/16384/17843 deleted file mode 100644 index 318ba200..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17843 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17844 b/docker/dify/volumes/db/data/pgdata/base/16384/17844 deleted file mode 100644 index 0690a6ce..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17844 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17847 b/docker/dify/volumes/db/data/pgdata/base/16384/17847 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17850 b/docker/dify/volumes/db/data/pgdata/base/16384/17850 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17851 b/docker/dify/volumes/db/data/pgdata/base/16384/17851 deleted file mode 100644 index aae0e496..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17851 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17852 b/docker/dify/volumes/db/data/pgdata/base/16384/17852 deleted file mode 100644 index 71b39e02..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17852 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17853 b/docker/dify/volumes/db/data/pgdata/base/16384/17853 deleted file mode 100644 index 966beb72..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17853 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17856 b/docker/dify/volumes/db/data/pgdata/base/16384/17856 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17859 b/docker/dify/volumes/db/data/pgdata/base/16384/17859 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17860 b/docker/dify/volumes/db/data/pgdata/base/16384/17860 deleted file mode 100644 index 658a52f9..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17860 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17861 b/docker/dify/volumes/db/data/pgdata/base/16384/17861 deleted file mode 100644 index c137fcb5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17861 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17862 b/docker/dify/volumes/db/data/pgdata/base/16384/17862 deleted file mode 100644 index b1872a81..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17862 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17863 b/docker/dify/volumes/db/data/pgdata/base/16384/17863 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17868 b/docker/dify/volumes/db/data/pgdata/base/16384/17868 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17869 b/docker/dify/volumes/db/data/pgdata/base/16384/17869 deleted file mode 100644 index 5f78a638..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17869 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17870 b/docker/dify/volumes/db/data/pgdata/base/16384/17870 deleted file mode 100644 index 47cbeba6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17870 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17872 b/docker/dify/volumes/db/data/pgdata/base/16384/17872 deleted file mode 100644 index d049363f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17872 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17873 b/docker/dify/volumes/db/data/pgdata/base/16384/17873 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17877 b/docker/dify/volumes/db/data/pgdata/base/16384/17877 deleted file mode 100644 index 7391cd49..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17877 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17879 b/docker/dify/volumes/db/data/pgdata/base/16384/17879 deleted file mode 100644 index 4942e517..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17879 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/17880 b/docker/dify/volumes/db/data/pgdata/base/16384/17880 deleted file mode 100644 index 8004909b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/17880 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2187 b/docker/dify/volumes/db/data/pgdata/base/16384/2187 deleted file mode 100644 index 05e30f4a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2187 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2224 b/docker/dify/volumes/db/data/pgdata/base/16384/2224 deleted file mode 100644 index 7e2df319..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2224 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2228 b/docker/dify/volumes/db/data/pgdata/base/16384/2228 deleted file mode 100644 index 768f1957..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2228 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2328 b/docker/dify/volumes/db/data/pgdata/base/16384/2328 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2336 b/docker/dify/volumes/db/data/pgdata/base/16384/2336 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2337 b/docker/dify/volumes/db/data/pgdata/base/16384/2337 deleted file mode 100644 index b71be3ae..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2337 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2579 b/docker/dify/volumes/db/data/pgdata/base/16384/2579 deleted file mode 100644 index ffd43013..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2579 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2600 b/docker/dify/volumes/db/data/pgdata/base/16384/2600 deleted file mode 100644 index d237cc96..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2600 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2600_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/2600_fsm deleted file mode 100644 index ff0c2c28..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2600_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2600_vm b/docker/dify/volumes/db/data/pgdata/base/16384/2600_vm deleted file mode 100644 index bf001d05..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2600_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2601 b/docker/dify/volumes/db/data/pgdata/base/16384/2601 deleted file mode 100644 index 20065849..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2601 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2601_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/2601_fsm deleted file mode 100644 index 4e44bdf0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2601_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2601_vm b/docker/dify/volumes/db/data/pgdata/base/16384/2601_vm deleted file mode 100644 index e64d857b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2601_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2602 b/docker/dify/volumes/db/data/pgdata/base/16384/2602 deleted file mode 100644 index a75a131c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2602 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2602_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/2602_fsm deleted file mode 100644 index dbd864c8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2602_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2602_vm b/docker/dify/volumes/db/data/pgdata/base/16384/2602_vm deleted file mode 100644 index 1a115235..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2602_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2603 b/docker/dify/volumes/db/data/pgdata/base/16384/2603 deleted file mode 100644 index 49896d2c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2603 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2603_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/2603_fsm deleted file mode 100644 index 1279ef51..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2603_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2603_vm b/docker/dify/volumes/db/data/pgdata/base/16384/2603_vm deleted file mode 100644 index 565929a1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2603_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2604 b/docker/dify/volumes/db/data/pgdata/base/16384/2604 deleted file mode 100644 index 1b1f0aa4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2604 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2604_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/2604_fsm deleted file mode 100644 index 53cc81a0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2604_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2605 b/docker/dify/volumes/db/data/pgdata/base/16384/2605 deleted file mode 100644 index 92cf5b74..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2605 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2605_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/2605_fsm deleted file mode 100644 index de696013..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2605_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2605_vm b/docker/dify/volumes/db/data/pgdata/base/16384/2605_vm deleted file mode 100644 index 688e596d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2605_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2606 b/docker/dify/volumes/db/data/pgdata/base/16384/2606 deleted file mode 100644 index 1386d68f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2606 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2606_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/2606_fsm deleted file mode 100644 index 72ead5f7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2606_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2606_vm b/docker/dify/volumes/db/data/pgdata/base/16384/2606_vm deleted file mode 100644 index 88666e7f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2606_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2607 b/docker/dify/volumes/db/data/pgdata/base/16384/2607 deleted file mode 100644 index 887a6384..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2607 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2607_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/2607_fsm deleted file mode 100644 index b1689f34..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2607_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2607_vm b/docker/dify/volumes/db/data/pgdata/base/16384/2607_vm deleted file mode 100644 index 51ef2ba3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2607_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2608 b/docker/dify/volumes/db/data/pgdata/base/16384/2608 deleted file mode 100644 index 35a51e9b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2608 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2608_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/2608_fsm deleted file mode 100644 index 3d9001e3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2608_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2608_vm b/docker/dify/volumes/db/data/pgdata/base/16384/2608_vm deleted file mode 100644 index 005520b5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2608_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2609 b/docker/dify/volumes/db/data/pgdata/base/16384/2609 deleted file mode 100644 index 3c5632e0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2609 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2609_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/2609_fsm deleted file mode 100644 index 87a235eb..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2609_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2609_vm b/docker/dify/volumes/db/data/pgdata/base/16384/2609_vm deleted file mode 100644 index b2b9622c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2609_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2610 b/docker/dify/volumes/db/data/pgdata/base/16384/2610 deleted file mode 100644 index e46444c1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2610 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2610_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/2610_fsm deleted file mode 100644 index dc31f68e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2610_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2610_vm b/docker/dify/volumes/db/data/pgdata/base/16384/2610_vm deleted file mode 100644 index 4e3ca74d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2610_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2611 b/docker/dify/volumes/db/data/pgdata/base/16384/2611 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2612 b/docker/dify/volumes/db/data/pgdata/base/16384/2612 deleted file mode 100644 index bda71d3a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2612 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2612_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/2612_fsm deleted file mode 100644 index 714c209d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2612_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2612_vm b/docker/dify/volumes/db/data/pgdata/base/16384/2612_vm deleted file mode 100644 index 7170ea81..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2612_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2613 b/docker/dify/volumes/db/data/pgdata/base/16384/2613 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2615 b/docker/dify/volumes/db/data/pgdata/base/16384/2615 deleted file mode 100644 index 1cc4d52b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2615 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2615_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/2615_fsm deleted file mode 100644 index 4d5efdb5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2615_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2615_vm b/docker/dify/volumes/db/data/pgdata/base/16384/2615_vm deleted file mode 100644 index 72209ea8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2615_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2616 b/docker/dify/volumes/db/data/pgdata/base/16384/2616 deleted file mode 100644 index b878420c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2616 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2616_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/2616_fsm deleted file mode 100644 index 64ac7f39..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2616_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2616_vm b/docker/dify/volumes/db/data/pgdata/base/16384/2616_vm deleted file mode 100644 index a222f5da..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2616_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2617 b/docker/dify/volumes/db/data/pgdata/base/16384/2617 deleted file mode 100644 index e5f3ded5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2617 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2617_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/2617_fsm deleted file mode 100644 index eb1aff99..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2617_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2617_vm b/docker/dify/volumes/db/data/pgdata/base/16384/2617_vm deleted file mode 100644 index b062f6a7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2617_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2618 b/docker/dify/volumes/db/data/pgdata/base/16384/2618 deleted file mode 100644 index d6640915..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2618 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2618_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/2618_fsm deleted file mode 100644 index e735f6d7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2618_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2618_vm b/docker/dify/volumes/db/data/pgdata/base/16384/2618_vm deleted file mode 100644 index bff0ac2a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2618_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2619 b/docker/dify/volumes/db/data/pgdata/base/16384/2619 deleted file mode 100644 index 1a473a46..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2619 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2619_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/2619_fsm deleted file mode 100644 index e7521595..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2619_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2619_vm b/docker/dify/volumes/db/data/pgdata/base/16384/2619_vm deleted file mode 100644 index 1fbafe5f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2619_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2620 b/docker/dify/volumes/db/data/pgdata/base/16384/2620 deleted file mode 100644 index bf9b01b1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2620 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2650 b/docker/dify/volumes/db/data/pgdata/base/16384/2650 deleted file mode 100644 index 7d632178..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2650 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2651 b/docker/dify/volumes/db/data/pgdata/base/16384/2651 deleted file mode 100644 index e8c320c0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2651 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2652 b/docker/dify/volumes/db/data/pgdata/base/16384/2652 deleted file mode 100644 index de2dc374..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2652 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2653 b/docker/dify/volumes/db/data/pgdata/base/16384/2653 deleted file mode 100644 index e44a768a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2653 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2654 b/docker/dify/volumes/db/data/pgdata/base/16384/2654 deleted file mode 100644 index 358e3786..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2654 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2655 b/docker/dify/volumes/db/data/pgdata/base/16384/2655 deleted file mode 100644 index 5f2b51c8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2655 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2656 b/docker/dify/volumes/db/data/pgdata/base/16384/2656 deleted file mode 100644 index 74fb7c6d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2656 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2657 b/docker/dify/volumes/db/data/pgdata/base/16384/2657 deleted file mode 100644 index 4902fe5a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2657 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2658 b/docker/dify/volumes/db/data/pgdata/base/16384/2658 deleted file mode 100644 index 9ccd921c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2658 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2659 b/docker/dify/volumes/db/data/pgdata/base/16384/2659 deleted file mode 100644 index 4b7a1cd0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2659 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2660 b/docker/dify/volumes/db/data/pgdata/base/16384/2660 deleted file mode 100644 index 96b2866e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2660 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2661 b/docker/dify/volumes/db/data/pgdata/base/16384/2661 deleted file mode 100644 index fbbf78d1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2661 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2662 b/docker/dify/volumes/db/data/pgdata/base/16384/2662 deleted file mode 100644 index d0245bc2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2662 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2663 b/docker/dify/volumes/db/data/pgdata/base/16384/2663 deleted file mode 100644 index 44c3fb76..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2663 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2664 b/docker/dify/volumes/db/data/pgdata/base/16384/2664 deleted file mode 100644 index 680693f6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2664 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2665 b/docker/dify/volumes/db/data/pgdata/base/16384/2665 deleted file mode 100644 index db28558f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2665 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2666 b/docker/dify/volumes/db/data/pgdata/base/16384/2666 deleted file mode 100644 index a8ac582d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2666 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2667 b/docker/dify/volumes/db/data/pgdata/base/16384/2667 deleted file mode 100644 index c6a49284..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2667 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2668 b/docker/dify/volumes/db/data/pgdata/base/16384/2668 deleted file mode 100644 index 5b86d79f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2668 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2669 b/docker/dify/volumes/db/data/pgdata/base/16384/2669 deleted file mode 100644 index 54a89dbd..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2669 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2670 b/docker/dify/volumes/db/data/pgdata/base/16384/2670 deleted file mode 100644 index f4d7b28e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2670 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2673 b/docker/dify/volumes/db/data/pgdata/base/16384/2673 deleted file mode 100644 index b0dcf015..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2673 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2674 b/docker/dify/volumes/db/data/pgdata/base/16384/2674 deleted file mode 100644 index c3a2fb5c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2674 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2675 b/docker/dify/volumes/db/data/pgdata/base/16384/2675 deleted file mode 100644 index 4ad4dc3f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2675 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2678 b/docker/dify/volumes/db/data/pgdata/base/16384/2678 deleted file mode 100644 index 650a989c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2678 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2679 b/docker/dify/volumes/db/data/pgdata/base/16384/2679 deleted file mode 100644 index 8151b074..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2679 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2680 b/docker/dify/volumes/db/data/pgdata/base/16384/2680 deleted file mode 100644 index 217f6467..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2680 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2681 b/docker/dify/volumes/db/data/pgdata/base/16384/2681 deleted file mode 100644 index e6bb11a6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2681 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2682 b/docker/dify/volumes/db/data/pgdata/base/16384/2682 deleted file mode 100644 index 78c574c4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2682 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2683 b/docker/dify/volumes/db/data/pgdata/base/16384/2683 deleted file mode 100644 index 019c290e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2683 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2684 b/docker/dify/volumes/db/data/pgdata/base/16384/2684 deleted file mode 100644 index f8db3ade..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2684 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2685 b/docker/dify/volumes/db/data/pgdata/base/16384/2685 deleted file mode 100644 index aedfd253..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2685 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2686 b/docker/dify/volumes/db/data/pgdata/base/16384/2686 deleted file mode 100644 index a9614f10..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2686 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2687 b/docker/dify/volumes/db/data/pgdata/base/16384/2687 deleted file mode 100644 index bfcefe98..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2687 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2688 b/docker/dify/volumes/db/data/pgdata/base/16384/2688 deleted file mode 100644 index 147e2881..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2688 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2689 b/docker/dify/volumes/db/data/pgdata/base/16384/2689 deleted file mode 100644 index 20b3b0ba..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2689 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2690 b/docker/dify/volumes/db/data/pgdata/base/16384/2690 deleted file mode 100644 index a9ddfeda..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2690 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2691 b/docker/dify/volumes/db/data/pgdata/base/16384/2691 deleted file mode 100644 index bb81f3bf..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2691 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2692 b/docker/dify/volumes/db/data/pgdata/base/16384/2692 deleted file mode 100644 index 5cab507c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2692 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2693 b/docker/dify/volumes/db/data/pgdata/base/16384/2693 deleted file mode 100644 index 899c0f02..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2693 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2696 b/docker/dify/volumes/db/data/pgdata/base/16384/2696 deleted file mode 100644 index bd9a3f78..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2696 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2699 b/docker/dify/volumes/db/data/pgdata/base/16384/2699 deleted file mode 100644 index fd99f43a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2699 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2701 b/docker/dify/volumes/db/data/pgdata/base/16384/2701 deleted file mode 100644 index b53fbf7b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2701 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2702 b/docker/dify/volumes/db/data/pgdata/base/16384/2702 deleted file mode 100644 index 3898f845..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2702 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2703 b/docker/dify/volumes/db/data/pgdata/base/16384/2703 deleted file mode 100644 index dcf48d3f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2703 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2704 b/docker/dify/volumes/db/data/pgdata/base/16384/2704 deleted file mode 100644 index fa5b535b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2704 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2753 b/docker/dify/volumes/db/data/pgdata/base/16384/2753 deleted file mode 100644 index eed22fa5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2753 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2753_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/2753_fsm deleted file mode 100644 index 38310e9f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2753_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2753_vm b/docker/dify/volumes/db/data/pgdata/base/16384/2753_vm deleted file mode 100644 index e99bd093..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2753_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2754 b/docker/dify/volumes/db/data/pgdata/base/16384/2754 deleted file mode 100644 index 536caca8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2754 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2755 b/docker/dify/volumes/db/data/pgdata/base/16384/2755 deleted file mode 100644 index 291a3928..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2755 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2756 b/docker/dify/volumes/db/data/pgdata/base/16384/2756 deleted file mode 100644 index a0aafa58..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2756 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2757 b/docker/dify/volumes/db/data/pgdata/base/16384/2757 deleted file mode 100644 index 67b07963..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2757 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2830 b/docker/dify/volumes/db/data/pgdata/base/16384/2830 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2831 b/docker/dify/volumes/db/data/pgdata/base/16384/2831 deleted file mode 100644 index 4e4ec344..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2831 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2832 b/docker/dify/volumes/db/data/pgdata/base/16384/2832 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2833 b/docker/dify/volumes/db/data/pgdata/base/16384/2833 deleted file mode 100644 index e4816312..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2833 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2834 b/docker/dify/volumes/db/data/pgdata/base/16384/2834 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2835 b/docker/dify/volumes/db/data/pgdata/base/16384/2835 deleted file mode 100644 index ea9290eb..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2835 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2836 b/docker/dify/volumes/db/data/pgdata/base/16384/2836 deleted file mode 100644 index b0a99e19..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2836 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2836_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/2836_fsm deleted file mode 100644 index c8820328..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2836_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2836_vm b/docker/dify/volumes/db/data/pgdata/base/16384/2836_vm deleted file mode 100644 index bb163723..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2836_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2837 b/docker/dify/volumes/db/data/pgdata/base/16384/2837 deleted file mode 100644 index d1ebb528..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2837 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2838 b/docker/dify/volumes/db/data/pgdata/base/16384/2838 deleted file mode 100644 index bb985539..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2838 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2838_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/2838_fsm deleted file mode 100644 index 3d74a178..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2838_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2838_vm b/docker/dify/volumes/db/data/pgdata/base/16384/2838_vm deleted file mode 100644 index 57c0610c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2838_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2839 b/docker/dify/volumes/db/data/pgdata/base/16384/2839 deleted file mode 100644 index b1d534b0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2839 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2840 b/docker/dify/volumes/db/data/pgdata/base/16384/2840 deleted file mode 100644 index aeba1557..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2840 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2840_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/2840_fsm deleted file mode 100644 index 118c93d0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2840_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2840_vm b/docker/dify/volumes/db/data/pgdata/base/16384/2840_vm deleted file mode 100644 index 24d4d228..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2840_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2841 b/docker/dify/volumes/db/data/pgdata/base/16384/2841 deleted file mode 100644 index dbde4a3a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2841 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2995 b/docker/dify/volumes/db/data/pgdata/base/16384/2995 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/2996 b/docker/dify/volumes/db/data/pgdata/base/16384/2996 deleted file mode 100644 index 2193b699..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/2996 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3079 b/docker/dify/volumes/db/data/pgdata/base/16384/3079 deleted file mode 100644 index 9ceefc27..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3079 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3079_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/3079_fsm deleted file mode 100644 index c9e260c1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3079_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3079_vm b/docker/dify/volumes/db/data/pgdata/base/16384/3079_vm deleted file mode 100644 index bf82d1d7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3079_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3080 b/docker/dify/volumes/db/data/pgdata/base/16384/3080 deleted file mode 100644 index e63d17c9..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3080 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3081 b/docker/dify/volumes/db/data/pgdata/base/16384/3081 deleted file mode 100644 index 5a1a6b3c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3081 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3085 b/docker/dify/volumes/db/data/pgdata/base/16384/3085 deleted file mode 100644 index fc643f04..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3085 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3118 b/docker/dify/volumes/db/data/pgdata/base/16384/3118 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3119 b/docker/dify/volumes/db/data/pgdata/base/16384/3119 deleted file mode 100644 index d222ce61..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3119 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3164 b/docker/dify/volumes/db/data/pgdata/base/16384/3164 deleted file mode 100644 index 27b56500..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3164 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3256 b/docker/dify/volumes/db/data/pgdata/base/16384/3256 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3257 b/docker/dify/volumes/db/data/pgdata/base/16384/3257 deleted file mode 100644 index 19cbc83a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3257 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3258 b/docker/dify/volumes/db/data/pgdata/base/16384/3258 deleted file mode 100644 index 8e94b77a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3258 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3350 b/docker/dify/volumes/db/data/pgdata/base/16384/3350 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3351 b/docker/dify/volumes/db/data/pgdata/base/16384/3351 deleted file mode 100644 index 3d6266c7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3351 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3379 b/docker/dify/volumes/db/data/pgdata/base/16384/3379 deleted file mode 100644 index 16eb1337..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3379 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3380 b/docker/dify/volumes/db/data/pgdata/base/16384/3380 deleted file mode 100644 index ee20b71e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3380 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3381 b/docker/dify/volumes/db/data/pgdata/base/16384/3381 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3394 b/docker/dify/volumes/db/data/pgdata/base/16384/3394 deleted file mode 100644 index 256ff31d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3394 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3394_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/3394_fsm deleted file mode 100644 index 37a542ff..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3394_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3394_vm b/docker/dify/volumes/db/data/pgdata/base/16384/3394_vm deleted file mode 100644 index 26fa89dd..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3394_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3395 b/docker/dify/volumes/db/data/pgdata/base/16384/3395 deleted file mode 100644 index 8ed59d53..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3395 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3429 b/docker/dify/volumes/db/data/pgdata/base/16384/3429 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3430 b/docker/dify/volumes/db/data/pgdata/base/16384/3430 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3431 b/docker/dify/volumes/db/data/pgdata/base/16384/3431 deleted file mode 100644 index 545e3d18..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3431 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3433 b/docker/dify/volumes/db/data/pgdata/base/16384/3433 deleted file mode 100644 index f444b936..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3433 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3439 b/docker/dify/volumes/db/data/pgdata/base/16384/3439 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3440 b/docker/dify/volumes/db/data/pgdata/base/16384/3440 deleted file mode 100644 index 230c84a1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3440 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3455 b/docker/dify/volumes/db/data/pgdata/base/16384/3455 deleted file mode 100644 index 0a8eff3e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3455 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3456 b/docker/dify/volumes/db/data/pgdata/base/16384/3456 deleted file mode 100644 index a1bce693..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3456 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3456_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/3456_fsm deleted file mode 100644 index c11022f1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3456_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3456_vm b/docker/dify/volumes/db/data/pgdata/base/16384/3456_vm deleted file mode 100644 index 76c2c01e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3456_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3466 b/docker/dify/volumes/db/data/pgdata/base/16384/3466 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3467 b/docker/dify/volumes/db/data/pgdata/base/16384/3467 deleted file mode 100644 index 9c0b15b5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3467 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3468 b/docker/dify/volumes/db/data/pgdata/base/16384/3468 deleted file mode 100644 index 67cb9321..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3468 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3501 b/docker/dify/volumes/db/data/pgdata/base/16384/3501 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3502 b/docker/dify/volumes/db/data/pgdata/base/16384/3502 deleted file mode 100644 index 5e75ac3d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3502 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3503 b/docker/dify/volumes/db/data/pgdata/base/16384/3503 deleted file mode 100644 index 756d641c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3503 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3534 b/docker/dify/volumes/db/data/pgdata/base/16384/3534 deleted file mode 100644 index 325be5a6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3534 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3541 b/docker/dify/volumes/db/data/pgdata/base/16384/3541 deleted file mode 100644 index caa12951..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3541 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3541_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/3541_fsm deleted file mode 100644 index 941cacdd..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3541_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3541_vm b/docker/dify/volumes/db/data/pgdata/base/16384/3541_vm deleted file mode 100644 index 1ed7a978..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3541_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3542 b/docker/dify/volumes/db/data/pgdata/base/16384/3542 deleted file mode 100644 index 6b801da0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3542 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3574 b/docker/dify/volumes/db/data/pgdata/base/16384/3574 deleted file mode 100644 index 032e87c4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3574 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3575 b/docker/dify/volumes/db/data/pgdata/base/16384/3575 deleted file mode 100644 index 4e4cbda5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3575 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3576 b/docker/dify/volumes/db/data/pgdata/base/16384/3576 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3596 b/docker/dify/volumes/db/data/pgdata/base/16384/3596 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3597 b/docker/dify/volumes/db/data/pgdata/base/16384/3597 deleted file mode 100644 index aa6981eb..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3597 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3598 b/docker/dify/volumes/db/data/pgdata/base/16384/3598 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3599 b/docker/dify/volumes/db/data/pgdata/base/16384/3599 deleted file mode 100644 index 44e977ff..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3599 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3600 b/docker/dify/volumes/db/data/pgdata/base/16384/3600 deleted file mode 100644 index f0cbdf48..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3600 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3600_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/3600_fsm deleted file mode 100644 index d1328e3f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3600_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3600_vm b/docker/dify/volumes/db/data/pgdata/base/16384/3600_vm deleted file mode 100644 index df898a0a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3600_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3601 b/docker/dify/volumes/db/data/pgdata/base/16384/3601 deleted file mode 100644 index b5384986..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3601 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3601_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/3601_fsm deleted file mode 100644 index 59ded720..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3601_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3601_vm b/docker/dify/volumes/db/data/pgdata/base/16384/3601_vm deleted file mode 100644 index 06a00128..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3601_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3602 b/docker/dify/volumes/db/data/pgdata/base/16384/3602 deleted file mode 100644 index d3dfdb2b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3602 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3602_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/3602_fsm deleted file mode 100644 index fd059abb..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3602_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3602_vm b/docker/dify/volumes/db/data/pgdata/base/16384/3602_vm deleted file mode 100644 index 223c1fb3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3602_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3603 b/docker/dify/volumes/db/data/pgdata/base/16384/3603 deleted file mode 100644 index b0b2feac..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3603 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3603_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/3603_fsm deleted file mode 100644 index e820d2fc..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3603_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3603_vm b/docker/dify/volumes/db/data/pgdata/base/16384/3603_vm deleted file mode 100644 index e13280cc..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3603_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3604 b/docker/dify/volumes/db/data/pgdata/base/16384/3604 deleted file mode 100644 index 6f9c46bf..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3604 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3605 b/docker/dify/volumes/db/data/pgdata/base/16384/3605 deleted file mode 100644 index f2a3b6ff..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3605 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3606 b/docker/dify/volumes/db/data/pgdata/base/16384/3606 deleted file mode 100644 index 3e9ff85d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3606 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3607 b/docker/dify/volumes/db/data/pgdata/base/16384/3607 deleted file mode 100644 index 00bc412f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3607 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3608 b/docker/dify/volumes/db/data/pgdata/base/16384/3608 deleted file mode 100644 index fb706be7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3608 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3609 b/docker/dify/volumes/db/data/pgdata/base/16384/3609 deleted file mode 100644 index 7aa6370e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3609 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3712 b/docker/dify/volumes/db/data/pgdata/base/16384/3712 deleted file mode 100644 index e9cbf57d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3712 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3764 b/docker/dify/volumes/db/data/pgdata/base/16384/3764 deleted file mode 100644 index c1667c54..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3764 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3764_fsm b/docker/dify/volumes/db/data/pgdata/base/16384/3764_fsm deleted file mode 100644 index bce5e4cd..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3764_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3764_vm b/docker/dify/volumes/db/data/pgdata/base/16384/3764_vm deleted file mode 100644 index 241fa775..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3764_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3766 b/docker/dify/volumes/db/data/pgdata/base/16384/3766 deleted file mode 100644 index dbce457e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3766 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3767 b/docker/dify/volumes/db/data/pgdata/base/16384/3767 deleted file mode 100644 index 319a9d01..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3767 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/3997 b/docker/dify/volumes/db/data/pgdata/base/16384/3997 deleted file mode 100644 index 458be463..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/3997 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/4143 b/docker/dify/volumes/db/data/pgdata/base/16384/4143 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/4144 b/docker/dify/volumes/db/data/pgdata/base/16384/4144 deleted file mode 100644 index bd85cca1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/4144 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/4145 b/docker/dify/volumes/db/data/pgdata/base/16384/4145 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/4146 b/docker/dify/volumes/db/data/pgdata/base/16384/4146 deleted file mode 100644 index 44e57381..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/4146 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/4147 b/docker/dify/volumes/db/data/pgdata/base/16384/4147 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/4148 b/docker/dify/volumes/db/data/pgdata/base/16384/4148 deleted file mode 100644 index 8e15add9..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/4148 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/4149 b/docker/dify/volumes/db/data/pgdata/base/16384/4149 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/4150 b/docker/dify/volumes/db/data/pgdata/base/16384/4150 deleted file mode 100644 index c7589170..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/4150 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/4151 b/docker/dify/volumes/db/data/pgdata/base/16384/4151 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/4152 b/docker/dify/volumes/db/data/pgdata/base/16384/4152 deleted file mode 100644 index 57e0595b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/4152 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/4153 b/docker/dify/volumes/db/data/pgdata/base/16384/4153 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/4154 b/docker/dify/volumes/db/data/pgdata/base/16384/4154 deleted file mode 100644 index 60c0bcff..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/4154 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/4155 b/docker/dify/volumes/db/data/pgdata/base/16384/4155 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/4156 b/docker/dify/volumes/db/data/pgdata/base/16384/4156 deleted file mode 100644 index 16ac74b6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/4156 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/4157 b/docker/dify/volumes/db/data/pgdata/base/16384/4157 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/4158 b/docker/dify/volumes/db/data/pgdata/base/16384/4158 deleted file mode 100644 index 70a4b4d1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/4158 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/4159 b/docker/dify/volumes/db/data/pgdata/base/16384/4159 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/4160 b/docker/dify/volumes/db/data/pgdata/base/16384/4160 deleted file mode 100644 index b51e8bcd..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/4160 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/4163 b/docker/dify/volumes/db/data/pgdata/base/16384/4163 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/4164 b/docker/dify/volumes/db/data/pgdata/base/16384/4164 deleted file mode 100644 index 05fa717a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/4164 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/4165 b/docker/dify/volumes/db/data/pgdata/base/16384/4165 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/4166 b/docker/dify/volumes/db/data/pgdata/base/16384/4166 deleted file mode 100644 index 860cf21a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/4166 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/4167 b/docker/dify/volumes/db/data/pgdata/base/16384/4167 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/4168 b/docker/dify/volumes/db/data/pgdata/base/16384/4168 deleted file mode 100644 index 6a8f3616..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/4168 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/4169 b/docker/dify/volumes/db/data/pgdata/base/16384/4169 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/4170 b/docker/dify/volumes/db/data/pgdata/base/16384/4170 deleted file mode 100644 index a40aaadd..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/4170 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/4171 b/docker/dify/volumes/db/data/pgdata/base/16384/4171 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/4172 b/docker/dify/volumes/db/data/pgdata/base/16384/4172 deleted file mode 100644 index 9d14d953..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/4172 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/4173 b/docker/dify/volumes/db/data/pgdata/base/16384/4173 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/4174 b/docker/dify/volumes/db/data/pgdata/base/16384/4174 deleted file mode 100644 index 6dee130b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/4174 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/5002 b/docker/dify/volumes/db/data/pgdata/base/16384/5002 deleted file mode 100644 index 788d8b9f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/5002 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/548 b/docker/dify/volumes/db/data/pgdata/base/16384/548 deleted file mode 100644 index 6c120eb3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/548 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/549 b/docker/dify/volumes/db/data/pgdata/base/16384/549 deleted file mode 100644 index b6011ef4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/549 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/6102 b/docker/dify/volumes/db/data/pgdata/base/16384/6102 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/6104 b/docker/dify/volumes/db/data/pgdata/base/16384/6104 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/6106 b/docker/dify/volumes/db/data/pgdata/base/16384/6106 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/6110 b/docker/dify/volumes/db/data/pgdata/base/16384/6110 deleted file mode 100644 index ce8dfca4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/6110 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/6111 b/docker/dify/volumes/db/data/pgdata/base/16384/6111 deleted file mode 100644 index 8cd6f667..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/6111 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/6112 b/docker/dify/volumes/db/data/pgdata/base/16384/6112 deleted file mode 100644 index 18b93e14..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/6112 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/6113 b/docker/dify/volumes/db/data/pgdata/base/16384/6113 deleted file mode 100644 index fef3c619..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/6113 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/6116 b/docker/dify/volumes/db/data/pgdata/base/16384/6116 deleted file mode 100644 index 252b5530..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/6116 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/6117 b/docker/dify/volumes/db/data/pgdata/base/16384/6117 deleted file mode 100644 index f6ba84a6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/6117 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/6175 b/docker/dify/volumes/db/data/pgdata/base/16384/6175 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/6176 b/docker/dify/volumes/db/data/pgdata/base/16384/6176 deleted file mode 100644 index 36355e3c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/6176 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/6228 b/docker/dify/volumes/db/data/pgdata/base/16384/6228 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/6229 b/docker/dify/volumes/db/data/pgdata/base/16384/6229 deleted file mode 100644 index 392d4a77..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/6229 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/6237 b/docker/dify/volumes/db/data/pgdata/base/16384/6237 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/6238 b/docker/dify/volumes/db/data/pgdata/base/16384/6238 deleted file mode 100644 index 991d61d0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/6238 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/6239 b/docker/dify/volumes/db/data/pgdata/base/16384/6239 deleted file mode 100644 index ae700d15..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/6239 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/826 b/docker/dify/volumes/db/data/pgdata/base/16384/826 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/827 b/docker/dify/volumes/db/data/pgdata/base/16384/827 deleted file mode 100644 index 26b2b802..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/827 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/828 b/docker/dify/volumes/db/data/pgdata/base/16384/828 deleted file mode 100644 index 84f39f8d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/828 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/PG_VERSION b/docker/dify/volumes/db/data/pgdata/base/16384/PG_VERSION deleted file mode 100644 index 60d3b2f4..00000000 --- a/docker/dify/volumes/db/data/pgdata/base/16384/PG_VERSION +++ /dev/null @@ -1 +0,0 @@ -15 diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/pg_filenode.map b/docker/dify/volumes/db/data/pgdata/base/16384/pg_filenode.map deleted file mode 100644 index 193d78f3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/pg_filenode.map and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/16384/pg_internal.init b/docker/dify/volumes/db/data/pgdata/base/16384/pg_internal.init deleted file mode 100644 index 15304a6c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/16384/pg_internal.init and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/112 b/docker/dify/volumes/db/data/pgdata/base/17887/112 deleted file mode 100644 index 522d8826..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/112 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/113 b/docker/dify/volumes/db/data/pgdata/base/17887/113 deleted file mode 100644 index 8dd6cee3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/113 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/1247 b/docker/dify/volumes/db/data/pgdata/base/17887/1247 deleted file mode 100644 index efd7a320..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/1247 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/1247_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/1247_fsm deleted file mode 100644 index 91755ad3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/1247_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/1247_vm b/docker/dify/volumes/db/data/pgdata/base/17887/1247_vm deleted file mode 100644 index 0146ca78..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/1247_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/1249 b/docker/dify/volumes/db/data/pgdata/base/17887/1249 deleted file mode 100644 index db0ed316..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/1249 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/1249_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/1249_fsm deleted file mode 100644 index d2e12c97..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/1249_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/1249_vm b/docker/dify/volumes/db/data/pgdata/base/17887/1249_vm deleted file mode 100644 index 32cd3bcb..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/1249_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/1255 b/docker/dify/volumes/db/data/pgdata/base/17887/1255 deleted file mode 100644 index bc08233a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/1255 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/1255_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/1255_fsm deleted file mode 100644 index 879fc55e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/1255_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/1255_vm b/docker/dify/volumes/db/data/pgdata/base/17887/1255_vm deleted file mode 100644 index 41adb46b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/1255_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/1259 b/docker/dify/volumes/db/data/pgdata/base/17887/1259 deleted file mode 100644 index ba11141e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/1259 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/1259_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/1259_fsm deleted file mode 100644 index 94bc691d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/1259_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/1259_vm b/docker/dify/volumes/db/data/pgdata/base/17887/1259_vm deleted file mode 100644 index 085b6632..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/1259_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/13454 b/docker/dify/volumes/db/data/pgdata/base/17887/13454 deleted file mode 100644 index 8515f261..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/13454 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/13454_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/13454_fsm deleted file mode 100644 index f96ccf26..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/13454_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/13454_vm b/docker/dify/volumes/db/data/pgdata/base/17887/13454_vm deleted file mode 100644 index a63448d4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/13454_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/13457 b/docker/dify/volumes/db/data/pgdata/base/17887/13457 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/13458 b/docker/dify/volumes/db/data/pgdata/base/17887/13458 deleted file mode 100644 index a9ec671a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/13458 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/13459 b/docker/dify/volumes/db/data/pgdata/base/17887/13459 deleted file mode 100644 index 195da83b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/13459 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/13459_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/13459_fsm deleted file mode 100644 index e4817059..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/13459_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/13459_vm b/docker/dify/volumes/db/data/pgdata/base/17887/13459_vm deleted file mode 100644 index 53b36c6a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/13459_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/13462 b/docker/dify/volumes/db/data/pgdata/base/17887/13462 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/13463 b/docker/dify/volumes/db/data/pgdata/base/17887/13463 deleted file mode 100644 index 7930959e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/13463 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/13464 b/docker/dify/volumes/db/data/pgdata/base/17887/13464 deleted file mode 100644 index 454fcaca..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/13464 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/13464_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/13464_fsm deleted file mode 100644 index 86d8918c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/13464_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/13464_vm b/docker/dify/volumes/db/data/pgdata/base/17887/13464_vm deleted file mode 100644 index 61ef4a51..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/13464_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/13467 b/docker/dify/volumes/db/data/pgdata/base/17887/13467 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/13468 b/docker/dify/volumes/db/data/pgdata/base/17887/13468 deleted file mode 100644 index 00037083..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/13468 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/13469 b/docker/dify/volumes/db/data/pgdata/base/17887/13469 deleted file mode 100644 index eea05d40..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/13469 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/13469_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/13469_fsm deleted file mode 100644 index 9da055d5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/13469_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/13469_vm b/docker/dify/volumes/db/data/pgdata/base/17887/13469_vm deleted file mode 100644 index 4fac34d4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/13469_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/13472 b/docker/dify/volumes/db/data/pgdata/base/17887/13472 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/13473 b/docker/dify/volumes/db/data/pgdata/base/17887/13473 deleted file mode 100644 index d1865910..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/13473 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/1417 b/docker/dify/volumes/db/data/pgdata/base/17887/1417 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/1418 b/docker/dify/volumes/db/data/pgdata/base/17887/1418 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/174 b/docker/dify/volumes/db/data/pgdata/base/17887/174 deleted file mode 100644 index 6dbb118d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/174 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/175 b/docker/dify/volumes/db/data/pgdata/base/17887/175 deleted file mode 100644 index f9b9fce8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/175 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17899 b/docker/dify/volumes/db/data/pgdata/base/17887/17899 deleted file mode 100644 index 3bdb92aa..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17899 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17905 b/docker/dify/volumes/db/data/pgdata/base/17887/17905 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17906 b/docker/dify/volumes/db/data/pgdata/base/17887/17906 deleted file mode 100644 index 36e8bb31..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17906 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17907 b/docker/dify/volumes/db/data/pgdata/base/17887/17907 deleted file mode 100644 index 62a0df26..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17907 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17909 b/docker/dify/volumes/db/data/pgdata/base/17887/17909 deleted file mode 100644 index f9cb28db..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17909 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17910 b/docker/dify/volumes/db/data/pgdata/base/17887/17910 deleted file mode 100644 index 60685ba6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17910 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17911 b/docker/dify/volumes/db/data/pgdata/base/17887/17911 deleted file mode 100644 index cb05f7c9..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17911 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17912 b/docker/dify/volumes/db/data/pgdata/base/17887/17912 deleted file mode 100644 index 5452034a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17912 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17916 b/docker/dify/volumes/db/data/pgdata/base/17887/17916 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17917 b/docker/dify/volumes/db/data/pgdata/base/17887/17917 deleted file mode 100644 index da253b01..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17917 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17918 b/docker/dify/volumes/db/data/pgdata/base/17887/17918 deleted file mode 100644 index 781cdd8c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17918 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17920 b/docker/dify/volumes/db/data/pgdata/base/17887/17920 deleted file mode 100644 index df732207..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17920 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17921 b/docker/dify/volumes/db/data/pgdata/base/17887/17921 deleted file mode 100644 index 4ec4e698..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17921 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17922 b/docker/dify/volumes/db/data/pgdata/base/17887/17922 deleted file mode 100644 index db01353d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17922 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17923 b/docker/dify/volumes/db/data/pgdata/base/17887/17923 deleted file mode 100644 index 1cf59054..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17923 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17924 b/docker/dify/volumes/db/data/pgdata/base/17887/17924 deleted file mode 100644 index d1f915f7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17924 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17928 b/docker/dify/volumes/db/data/pgdata/base/17887/17928 deleted file mode 100644 index 8fa7e376..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17928 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17928_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/17928_fsm deleted file mode 100644 index 6b4fbb37..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17928_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17929 b/docker/dify/volumes/db/data/pgdata/base/17887/17929 deleted file mode 100644 index 53b70add..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17929 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17930 b/docker/dify/volumes/db/data/pgdata/base/17887/17930 deleted file mode 100644 index a23823ca..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17930 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17932 b/docker/dify/volumes/db/data/pgdata/base/17887/17932 deleted file mode 100644 index a786113a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17932 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17934 b/docker/dify/volumes/db/data/pgdata/base/17887/17934 deleted file mode 100644 index faa52954..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17934 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17935 b/docker/dify/volumes/db/data/pgdata/base/17887/17935 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17940 b/docker/dify/volumes/db/data/pgdata/base/17887/17940 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17941 b/docker/dify/volumes/db/data/pgdata/base/17887/17941 deleted file mode 100644 index 76f551ef..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17941 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17942 b/docker/dify/volumes/db/data/pgdata/base/17887/17942 deleted file mode 100644 index 5b75455b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17942 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17944 b/docker/dify/volumes/db/data/pgdata/base/17887/17944 deleted file mode 100644 index 7b9c8edd..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17944 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17946 b/docker/dify/volumes/db/data/pgdata/base/17887/17946 deleted file mode 100644 index d245cb2b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17946 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17947 b/docker/dify/volumes/db/data/pgdata/base/17887/17947 deleted file mode 100644 index 7431cf46..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17947 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17948 b/docker/dify/volumes/db/data/pgdata/base/17887/17948 deleted file mode 100644 index 305c6168..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17948 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17949 b/docker/dify/volumes/db/data/pgdata/base/17887/17949 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17953 b/docker/dify/volumes/db/data/pgdata/base/17887/17953 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17954 b/docker/dify/volumes/db/data/pgdata/base/17887/17954 deleted file mode 100644 index e39033a4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17954 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17955 b/docker/dify/volumes/db/data/pgdata/base/17887/17955 deleted file mode 100644 index 934d0d78..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17955 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17957 b/docker/dify/volumes/db/data/pgdata/base/17887/17957 deleted file mode 100644 index 7e43b7c6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17957 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17959 b/docker/dify/volumes/db/data/pgdata/base/17887/17959 deleted file mode 100644 index 1216cedf..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17959 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17960 b/docker/dify/volumes/db/data/pgdata/base/17887/17960 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17964 b/docker/dify/volumes/db/data/pgdata/base/17887/17964 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17965 b/docker/dify/volumes/db/data/pgdata/base/17887/17965 deleted file mode 100644 index 7e6b6b63..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17965 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17966 b/docker/dify/volumes/db/data/pgdata/base/17887/17966 deleted file mode 100644 index 88cf52ff..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17966 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17968 b/docker/dify/volumes/db/data/pgdata/base/17887/17968 deleted file mode 100644 index e7be75c9..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17968 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17969 b/docker/dify/volumes/db/data/pgdata/base/17887/17969 deleted file mode 100644 index 7a8302c6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17969 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17970 b/docker/dify/volumes/db/data/pgdata/base/17887/17970 deleted file mode 100644 index 04e6be92..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17970 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17971 b/docker/dify/volumes/db/data/pgdata/base/17887/17971 deleted file mode 100644 index acf8b8f6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17971 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17972 b/docker/dify/volumes/db/data/pgdata/base/17887/17972 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17976 b/docker/dify/volumes/db/data/pgdata/base/17887/17976 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17977 b/docker/dify/volumes/db/data/pgdata/base/17887/17977 deleted file mode 100644 index 80e2efed..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17977 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17978 b/docker/dify/volumes/db/data/pgdata/base/17887/17978 deleted file mode 100644 index 93bede11..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17978 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17980 b/docker/dify/volumes/db/data/pgdata/base/17887/17980 deleted file mode 100644 index cb472ca5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17980 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17981 b/docker/dify/volumes/db/data/pgdata/base/17887/17981 deleted file mode 100644 index 608d7c35..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17981 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17982 b/docker/dify/volumes/db/data/pgdata/base/17887/17982 deleted file mode 100644 index 993f13ce..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17982 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17983 b/docker/dify/volumes/db/data/pgdata/base/17887/17983 deleted file mode 100644 index 09d65522..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17983 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17984 b/docker/dify/volumes/db/data/pgdata/base/17887/17984 deleted file mode 100644 index b7720847..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17984 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17988 b/docker/dify/volumes/db/data/pgdata/base/17887/17988 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17989 b/docker/dify/volumes/db/data/pgdata/base/17887/17989 deleted file mode 100644 index 8130300e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17989 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17990 b/docker/dify/volumes/db/data/pgdata/base/17887/17990 deleted file mode 100644 index 69fdceed..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17990 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17992 b/docker/dify/volumes/db/data/pgdata/base/17887/17992 deleted file mode 100644 index 97f80ed7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17992 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17993 b/docker/dify/volumes/db/data/pgdata/base/17887/17993 deleted file mode 100644 index ac30f058..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17993 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17994 b/docker/dify/volumes/db/data/pgdata/base/17887/17994 deleted file mode 100644 index 7ada40bb..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17994 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17995 b/docker/dify/volumes/db/data/pgdata/base/17887/17995 deleted file mode 100644 index e465c81a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17995 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/17996 b/docker/dify/volumes/db/data/pgdata/base/17887/17996 deleted file mode 100644 index 524a8183..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/17996 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/18000 b/docker/dify/volumes/db/data/pgdata/base/17887/18000 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/18001 b/docker/dify/volumes/db/data/pgdata/base/17887/18001 deleted file mode 100644 index 0979d063..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/18001 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/18002 b/docker/dify/volumes/db/data/pgdata/base/17887/18002 deleted file mode 100644 index c72a0495..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/18002 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/18004 b/docker/dify/volumes/db/data/pgdata/base/17887/18004 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/18008 b/docker/dify/volumes/db/data/pgdata/base/17887/18008 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/18009 b/docker/dify/volumes/db/data/pgdata/base/17887/18009 deleted file mode 100644 index b5e184d8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/18009 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/18010 b/docker/dify/volumes/db/data/pgdata/base/17887/18010 deleted file mode 100644 index 39833e25..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/18010 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/18012 b/docker/dify/volumes/db/data/pgdata/base/17887/18012 deleted file mode 100644 index 58db20af..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/18012 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/18013 b/docker/dify/volumes/db/data/pgdata/base/17887/18013 deleted file mode 100644 index 3b5480a7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/18013 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/18014 b/docker/dify/volumes/db/data/pgdata/base/17887/18014 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/18018 b/docker/dify/volumes/db/data/pgdata/base/17887/18018 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/18019 b/docker/dify/volumes/db/data/pgdata/base/17887/18019 deleted file mode 100644 index 1854a623..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/18019 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/18020 b/docker/dify/volumes/db/data/pgdata/base/17887/18020 deleted file mode 100644 index b19c3a87..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/18020 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/18022 b/docker/dify/volumes/db/data/pgdata/base/17887/18022 deleted file mode 100644 index 0644842b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/18022 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/18023 b/docker/dify/volumes/db/data/pgdata/base/17887/18023 deleted file mode 100644 index 890309b6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/18023 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/18024 b/docker/dify/volumes/db/data/pgdata/base/17887/18024 deleted file mode 100644 index c9b815fa..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/18024 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/18025 b/docker/dify/volumes/db/data/pgdata/base/17887/18025 deleted file mode 100644 index a71b3847..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/18025 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/18026 b/docker/dify/volumes/db/data/pgdata/base/17887/18026 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/18030 b/docker/dify/volumes/db/data/pgdata/base/17887/18030 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/18031 b/docker/dify/volumes/db/data/pgdata/base/17887/18031 deleted file mode 100644 index 81e9b92c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/18031 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/18032 b/docker/dify/volumes/db/data/pgdata/base/17887/18032 deleted file mode 100644 index d8cdaca8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/18032 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/18034 b/docker/dify/volumes/db/data/pgdata/base/17887/18034 deleted file mode 100644 index edb5b099..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/18034 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/18035 b/docker/dify/volumes/db/data/pgdata/base/17887/18035 deleted file mode 100644 index 9185586e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/18035 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/18036 b/docker/dify/volumes/db/data/pgdata/base/17887/18036 deleted file mode 100644 index 7b526739..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/18036 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/18037 b/docker/dify/volumes/db/data/pgdata/base/17887/18037 deleted file mode 100644 index 27929208..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/18037 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/18038 b/docker/dify/volumes/db/data/pgdata/base/17887/18038 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/18042 b/docker/dify/volumes/db/data/pgdata/base/17887/18042 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/18043 b/docker/dify/volumes/db/data/pgdata/base/17887/18043 deleted file mode 100644 index 919641d9..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/18043 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/18044 b/docker/dify/volumes/db/data/pgdata/base/17887/18044 deleted file mode 100644 index f8df30df..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/18044 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/18046 b/docker/dify/volumes/db/data/pgdata/base/17887/18046 deleted file mode 100644 index 38a75b45..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/18046 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/18047 b/docker/dify/volumes/db/data/pgdata/base/17887/18047 deleted file mode 100644 index 39f5fe41..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/18047 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2187 b/docker/dify/volumes/db/data/pgdata/base/17887/2187 deleted file mode 100644 index dfaedac4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2187 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2224 b/docker/dify/volumes/db/data/pgdata/base/17887/2224 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2228 b/docker/dify/volumes/db/data/pgdata/base/17887/2228 deleted file mode 100644 index 95a63c26..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2228 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2328 b/docker/dify/volumes/db/data/pgdata/base/17887/2328 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2336 b/docker/dify/volumes/db/data/pgdata/base/17887/2336 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2337 b/docker/dify/volumes/db/data/pgdata/base/17887/2337 deleted file mode 100644 index a513dba1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2337 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2579 b/docker/dify/volumes/db/data/pgdata/base/17887/2579 deleted file mode 100644 index 42bd82ff..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2579 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2600 b/docker/dify/volumes/db/data/pgdata/base/17887/2600 deleted file mode 100644 index 367e506c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2600 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2600_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/2600_fsm deleted file mode 100644 index a2a2cd99..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2600_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2600_vm b/docker/dify/volumes/db/data/pgdata/base/17887/2600_vm deleted file mode 100644 index a5993e9a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2600_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2601 b/docker/dify/volumes/db/data/pgdata/base/17887/2601 deleted file mode 100644 index 51a35a26..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2601 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2601_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/2601_fsm deleted file mode 100644 index 6f44e411..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2601_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2601_vm b/docker/dify/volumes/db/data/pgdata/base/17887/2601_vm deleted file mode 100644 index 9a5acdb8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2601_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2602 b/docker/dify/volumes/db/data/pgdata/base/17887/2602 deleted file mode 100644 index 205fb800..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2602 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2602_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/2602_fsm deleted file mode 100644 index ba4afb15..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2602_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2602_vm b/docker/dify/volumes/db/data/pgdata/base/17887/2602_vm deleted file mode 100644 index 7027c415..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2602_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2603 b/docker/dify/volumes/db/data/pgdata/base/17887/2603 deleted file mode 100644 index b2076d18..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2603 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2603_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/2603_fsm deleted file mode 100644 index beb1e471..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2603_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2603_vm b/docker/dify/volumes/db/data/pgdata/base/17887/2603_vm deleted file mode 100644 index fd1d2919..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2603_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2604 b/docker/dify/volumes/db/data/pgdata/base/17887/2604 deleted file mode 100644 index 8bf263a7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2604 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2605 b/docker/dify/volumes/db/data/pgdata/base/17887/2605 deleted file mode 100644 index e2f7f6a5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2605 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2605_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/2605_fsm deleted file mode 100644 index 66082851..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2605_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2605_vm b/docker/dify/volumes/db/data/pgdata/base/17887/2605_vm deleted file mode 100644 index 8ede9b12..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2605_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2606 b/docker/dify/volumes/db/data/pgdata/base/17887/2606 deleted file mode 100644 index 81846ada..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2606 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2606_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/2606_fsm deleted file mode 100644 index 721aaa32..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2606_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2606_vm b/docker/dify/volumes/db/data/pgdata/base/17887/2606_vm deleted file mode 100644 index 73fccfe5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2606_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2607 b/docker/dify/volumes/db/data/pgdata/base/17887/2607 deleted file mode 100644 index c1b1c203..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2607 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2607_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/2607_fsm deleted file mode 100644 index 5c81d2ba..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2607_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2607_vm b/docker/dify/volumes/db/data/pgdata/base/17887/2607_vm deleted file mode 100644 index b0c5b4bc..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2607_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2608 b/docker/dify/volumes/db/data/pgdata/base/17887/2608 deleted file mode 100644 index e8474646..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2608 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2608_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/2608_fsm deleted file mode 100644 index 8d8471c9..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2608_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2608_vm b/docker/dify/volumes/db/data/pgdata/base/17887/2608_vm deleted file mode 100644 index 3462b872..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2608_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2609 b/docker/dify/volumes/db/data/pgdata/base/17887/2609 deleted file mode 100644 index 5f0c878b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2609 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2609_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/2609_fsm deleted file mode 100644 index 3df9ab0c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2609_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2609_vm b/docker/dify/volumes/db/data/pgdata/base/17887/2609_vm deleted file mode 100644 index 5ad22f28..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2609_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2610 b/docker/dify/volumes/db/data/pgdata/base/17887/2610 deleted file mode 100644 index acecb575..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2610 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2610_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/2610_fsm deleted file mode 100644 index ce667417..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2610_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2610_vm b/docker/dify/volumes/db/data/pgdata/base/17887/2610_vm deleted file mode 100644 index c37906b5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2610_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2611 b/docker/dify/volumes/db/data/pgdata/base/17887/2611 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2612 b/docker/dify/volumes/db/data/pgdata/base/17887/2612 deleted file mode 100644 index 3ab1cd14..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2612 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2612_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/2612_fsm deleted file mode 100644 index 9111496e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2612_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2612_vm b/docker/dify/volumes/db/data/pgdata/base/17887/2612_vm deleted file mode 100644 index 84b8f167..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2612_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2613 b/docker/dify/volumes/db/data/pgdata/base/17887/2613 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2615 b/docker/dify/volumes/db/data/pgdata/base/17887/2615 deleted file mode 100644 index c5ffbeaf..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2615 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2615_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/2615_fsm deleted file mode 100644 index b70304f4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2615_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2615_vm b/docker/dify/volumes/db/data/pgdata/base/17887/2615_vm deleted file mode 100644 index cafb997b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2615_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2616 b/docker/dify/volumes/db/data/pgdata/base/17887/2616 deleted file mode 100644 index 215ba517..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2616 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2616_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/2616_fsm deleted file mode 100644 index 2f0b7715..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2616_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2616_vm b/docker/dify/volumes/db/data/pgdata/base/17887/2616_vm deleted file mode 100644 index c918a577..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2616_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2617 b/docker/dify/volumes/db/data/pgdata/base/17887/2617 deleted file mode 100644 index 7d0b7a9b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2617 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2617_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/2617_fsm deleted file mode 100644 index f7546bbf..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2617_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2617_vm b/docker/dify/volumes/db/data/pgdata/base/17887/2617_vm deleted file mode 100644 index 2232b930..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2617_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2618 b/docker/dify/volumes/db/data/pgdata/base/17887/2618 deleted file mode 100644 index b24bb1b1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2618 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2618_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/2618_fsm deleted file mode 100644 index f4ca10a0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2618_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2618_vm b/docker/dify/volumes/db/data/pgdata/base/17887/2618_vm deleted file mode 100644 index cdae6a63..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2618_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2619 b/docker/dify/volumes/db/data/pgdata/base/17887/2619 deleted file mode 100644 index 14d313ff..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2619 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2619_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/2619_fsm deleted file mode 100644 index b6683aa2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2619_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2619_vm b/docker/dify/volumes/db/data/pgdata/base/17887/2619_vm deleted file mode 100644 index 00dacef6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2619_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2620 b/docker/dify/volumes/db/data/pgdata/base/17887/2620 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2650 b/docker/dify/volumes/db/data/pgdata/base/17887/2650 deleted file mode 100644 index 4adc5db5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2650 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2651 b/docker/dify/volumes/db/data/pgdata/base/17887/2651 deleted file mode 100644 index e91d55db..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2651 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2652 b/docker/dify/volumes/db/data/pgdata/base/17887/2652 deleted file mode 100644 index d4076e60..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2652 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2653 b/docker/dify/volumes/db/data/pgdata/base/17887/2653 deleted file mode 100644 index 0b2b54c4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2653 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2654 b/docker/dify/volumes/db/data/pgdata/base/17887/2654 deleted file mode 100644 index 05e7dc69..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2654 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2655 b/docker/dify/volumes/db/data/pgdata/base/17887/2655 deleted file mode 100644 index a1152c3a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2655 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2656 b/docker/dify/volumes/db/data/pgdata/base/17887/2656 deleted file mode 100644 index 82cb4989..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2656 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2657 b/docker/dify/volumes/db/data/pgdata/base/17887/2657 deleted file mode 100644 index ba87ef15..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2657 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2658 b/docker/dify/volumes/db/data/pgdata/base/17887/2658 deleted file mode 100644 index f283ad37..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2658 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2659 b/docker/dify/volumes/db/data/pgdata/base/17887/2659 deleted file mode 100644 index 0d4ce348..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2659 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2660 b/docker/dify/volumes/db/data/pgdata/base/17887/2660 deleted file mode 100644 index 05fec3c8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2660 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2661 b/docker/dify/volumes/db/data/pgdata/base/17887/2661 deleted file mode 100644 index b45fb8e9..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2661 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2662 b/docker/dify/volumes/db/data/pgdata/base/17887/2662 deleted file mode 100644 index f6108a04..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2662 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2663 b/docker/dify/volumes/db/data/pgdata/base/17887/2663 deleted file mode 100644 index f59f1768..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2663 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2664 b/docker/dify/volumes/db/data/pgdata/base/17887/2664 deleted file mode 100644 index 0d1fc124..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2664 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2665 b/docker/dify/volumes/db/data/pgdata/base/17887/2665 deleted file mode 100644 index fa689234..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2665 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2666 b/docker/dify/volumes/db/data/pgdata/base/17887/2666 deleted file mode 100644 index e93cb4bc..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2666 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2667 b/docker/dify/volumes/db/data/pgdata/base/17887/2667 deleted file mode 100644 index 37ab1255..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2667 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2668 b/docker/dify/volumes/db/data/pgdata/base/17887/2668 deleted file mode 100644 index 467eeee7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2668 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2669 b/docker/dify/volumes/db/data/pgdata/base/17887/2669 deleted file mode 100644 index 4aaaccf5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2669 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2670 b/docker/dify/volumes/db/data/pgdata/base/17887/2670 deleted file mode 100644 index c1fb94d3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2670 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2673 b/docker/dify/volumes/db/data/pgdata/base/17887/2673 deleted file mode 100644 index 2715c188..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2673 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2674 b/docker/dify/volumes/db/data/pgdata/base/17887/2674 deleted file mode 100644 index d9721a47..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2674 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2675 b/docker/dify/volumes/db/data/pgdata/base/17887/2675 deleted file mode 100644 index afc49202..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2675 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2678 b/docker/dify/volumes/db/data/pgdata/base/17887/2678 deleted file mode 100644 index fc7598ea..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2678 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2679 b/docker/dify/volumes/db/data/pgdata/base/17887/2679 deleted file mode 100644 index 6f3d1157..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2679 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2680 b/docker/dify/volumes/db/data/pgdata/base/17887/2680 deleted file mode 100644 index 645c507c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2680 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2681 b/docker/dify/volumes/db/data/pgdata/base/17887/2681 deleted file mode 100644 index fa402717..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2681 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2682 b/docker/dify/volumes/db/data/pgdata/base/17887/2682 deleted file mode 100644 index 8e3bb103..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2682 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2683 b/docker/dify/volumes/db/data/pgdata/base/17887/2683 deleted file mode 100644 index 511f0447..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2683 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2684 b/docker/dify/volumes/db/data/pgdata/base/17887/2684 deleted file mode 100644 index 1d11f32a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2684 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2685 b/docker/dify/volumes/db/data/pgdata/base/17887/2685 deleted file mode 100644 index 6a646c56..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2685 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2686 b/docker/dify/volumes/db/data/pgdata/base/17887/2686 deleted file mode 100644 index 738eb1e3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2686 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2687 b/docker/dify/volumes/db/data/pgdata/base/17887/2687 deleted file mode 100644 index 14548be1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2687 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2688 b/docker/dify/volumes/db/data/pgdata/base/17887/2688 deleted file mode 100644 index c79ba3c9..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2688 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2689 b/docker/dify/volumes/db/data/pgdata/base/17887/2689 deleted file mode 100644 index d2572726..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2689 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2690 b/docker/dify/volumes/db/data/pgdata/base/17887/2690 deleted file mode 100644 index 37759a11..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2690 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2691 b/docker/dify/volumes/db/data/pgdata/base/17887/2691 deleted file mode 100644 index f4a79219..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2691 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2692 b/docker/dify/volumes/db/data/pgdata/base/17887/2692 deleted file mode 100644 index bf487e6a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2692 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2693 b/docker/dify/volumes/db/data/pgdata/base/17887/2693 deleted file mode 100644 index 4fa597d6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2693 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2696 b/docker/dify/volumes/db/data/pgdata/base/17887/2696 deleted file mode 100644 index d1f4851f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2696 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2699 b/docker/dify/volumes/db/data/pgdata/base/17887/2699 deleted file mode 100644 index 338a3bf6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2699 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2701 b/docker/dify/volumes/db/data/pgdata/base/17887/2701 deleted file mode 100644 index c4f681a3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2701 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2702 b/docker/dify/volumes/db/data/pgdata/base/17887/2702 deleted file mode 100644 index 6b384bdf..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2702 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2703 b/docker/dify/volumes/db/data/pgdata/base/17887/2703 deleted file mode 100644 index 58c93067..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2703 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2704 b/docker/dify/volumes/db/data/pgdata/base/17887/2704 deleted file mode 100644 index 82919c80..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2704 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2753 b/docker/dify/volumes/db/data/pgdata/base/17887/2753 deleted file mode 100644 index 8dd78b19..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2753 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2753_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/2753_fsm deleted file mode 100644 index 97721a73..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2753_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2753_vm b/docker/dify/volumes/db/data/pgdata/base/17887/2753_vm deleted file mode 100644 index 3fb4596a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2753_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2754 b/docker/dify/volumes/db/data/pgdata/base/17887/2754 deleted file mode 100644 index bcded6f6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2754 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2755 b/docker/dify/volumes/db/data/pgdata/base/17887/2755 deleted file mode 100644 index 023b78db..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2755 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2756 b/docker/dify/volumes/db/data/pgdata/base/17887/2756 deleted file mode 100644 index 8051799f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2756 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2757 b/docker/dify/volumes/db/data/pgdata/base/17887/2757 deleted file mode 100644 index 53d7d027..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2757 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2830 b/docker/dify/volumes/db/data/pgdata/base/17887/2830 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2831 b/docker/dify/volumes/db/data/pgdata/base/17887/2831 deleted file mode 100644 index ff558b67..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2831 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2832 b/docker/dify/volumes/db/data/pgdata/base/17887/2832 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2833 b/docker/dify/volumes/db/data/pgdata/base/17887/2833 deleted file mode 100644 index 804b7958..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2833 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2834 b/docker/dify/volumes/db/data/pgdata/base/17887/2834 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2835 b/docker/dify/volumes/db/data/pgdata/base/17887/2835 deleted file mode 100644 index 4041d513..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2835 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2836 b/docker/dify/volumes/db/data/pgdata/base/17887/2836 deleted file mode 100644 index d3e2adac..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2836 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2836_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/2836_fsm deleted file mode 100644 index 74a867cd..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2836_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2836_vm b/docker/dify/volumes/db/data/pgdata/base/17887/2836_vm deleted file mode 100644 index f033ccd6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2836_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2837 b/docker/dify/volumes/db/data/pgdata/base/17887/2837 deleted file mode 100644 index a93803a6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2837 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2838 b/docker/dify/volumes/db/data/pgdata/base/17887/2838 deleted file mode 100644 index 65f644d1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2838 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2838_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/2838_fsm deleted file mode 100644 index 5323b24f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2838_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2838_vm b/docker/dify/volumes/db/data/pgdata/base/17887/2838_vm deleted file mode 100644 index 7b0fe35f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2838_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2839 b/docker/dify/volumes/db/data/pgdata/base/17887/2839 deleted file mode 100644 index aa37f5c8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2839 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2840 b/docker/dify/volumes/db/data/pgdata/base/17887/2840 deleted file mode 100644 index 656b808d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2840 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2840_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/2840_fsm deleted file mode 100644 index 23af5dd3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2840_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2840_vm b/docker/dify/volumes/db/data/pgdata/base/17887/2840_vm deleted file mode 100644 index 5782eccf..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2840_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2841 b/docker/dify/volumes/db/data/pgdata/base/17887/2841 deleted file mode 100644 index f470b975..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2841 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2995 b/docker/dify/volumes/db/data/pgdata/base/17887/2995 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/2996 b/docker/dify/volumes/db/data/pgdata/base/17887/2996 deleted file mode 100644 index 82a5075d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/2996 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3079 b/docker/dify/volumes/db/data/pgdata/base/17887/3079 deleted file mode 100644 index 1de19ccb..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3079 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3079_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/3079_fsm deleted file mode 100644 index 97b7b65a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3079_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3079_vm b/docker/dify/volumes/db/data/pgdata/base/17887/3079_vm deleted file mode 100644 index 49683c19..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3079_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3080 b/docker/dify/volumes/db/data/pgdata/base/17887/3080 deleted file mode 100644 index d9d904f9..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3080 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3081 b/docker/dify/volumes/db/data/pgdata/base/17887/3081 deleted file mode 100644 index 5b4f81e0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3081 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3085 b/docker/dify/volumes/db/data/pgdata/base/17887/3085 deleted file mode 100644 index 33a1d984..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3085 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3118 b/docker/dify/volumes/db/data/pgdata/base/17887/3118 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3119 b/docker/dify/volumes/db/data/pgdata/base/17887/3119 deleted file mode 100644 index ed829e0b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3119 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3164 b/docker/dify/volumes/db/data/pgdata/base/17887/3164 deleted file mode 100644 index ea25dbd6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3164 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3256 b/docker/dify/volumes/db/data/pgdata/base/17887/3256 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3257 b/docker/dify/volumes/db/data/pgdata/base/17887/3257 deleted file mode 100644 index 49bdf4c5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3257 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3258 b/docker/dify/volumes/db/data/pgdata/base/17887/3258 deleted file mode 100644 index 7e889eba..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3258 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3350 b/docker/dify/volumes/db/data/pgdata/base/17887/3350 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3351 b/docker/dify/volumes/db/data/pgdata/base/17887/3351 deleted file mode 100644 index a0125cbc..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3351 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3379 b/docker/dify/volumes/db/data/pgdata/base/17887/3379 deleted file mode 100644 index 4e34d588..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3379 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3380 b/docker/dify/volumes/db/data/pgdata/base/17887/3380 deleted file mode 100644 index 4634a5fd..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3380 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3381 b/docker/dify/volumes/db/data/pgdata/base/17887/3381 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3394 b/docker/dify/volumes/db/data/pgdata/base/17887/3394 deleted file mode 100644 index 924421ba..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3394 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3394_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/3394_fsm deleted file mode 100644 index ed78bf20..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3394_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3394_vm b/docker/dify/volumes/db/data/pgdata/base/17887/3394_vm deleted file mode 100644 index d10e17e2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3394_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3395 b/docker/dify/volumes/db/data/pgdata/base/17887/3395 deleted file mode 100644 index 90be1310..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3395 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3429 b/docker/dify/volumes/db/data/pgdata/base/17887/3429 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3430 b/docker/dify/volumes/db/data/pgdata/base/17887/3430 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3431 b/docker/dify/volumes/db/data/pgdata/base/17887/3431 deleted file mode 100644 index e7ec30ef..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3431 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3433 b/docker/dify/volumes/db/data/pgdata/base/17887/3433 deleted file mode 100644 index 87e0b01c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3433 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3439 b/docker/dify/volumes/db/data/pgdata/base/17887/3439 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3440 b/docker/dify/volumes/db/data/pgdata/base/17887/3440 deleted file mode 100644 index 8522b59e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3440 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3455 b/docker/dify/volumes/db/data/pgdata/base/17887/3455 deleted file mode 100644 index 173b2f0d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3455 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3456 b/docker/dify/volumes/db/data/pgdata/base/17887/3456 deleted file mode 100644 index 2ec25ea7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3456 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3456_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/3456_fsm deleted file mode 100644 index 8a6aa483..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3456_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3456_vm b/docker/dify/volumes/db/data/pgdata/base/17887/3456_vm deleted file mode 100644 index f4633a95..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3456_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3466 b/docker/dify/volumes/db/data/pgdata/base/17887/3466 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3467 b/docker/dify/volumes/db/data/pgdata/base/17887/3467 deleted file mode 100644 index 06aa619e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3467 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3468 b/docker/dify/volumes/db/data/pgdata/base/17887/3468 deleted file mode 100644 index 01747924..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3468 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3501 b/docker/dify/volumes/db/data/pgdata/base/17887/3501 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3502 b/docker/dify/volumes/db/data/pgdata/base/17887/3502 deleted file mode 100644 index d9f247c5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3502 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3503 b/docker/dify/volumes/db/data/pgdata/base/17887/3503 deleted file mode 100644 index 008a6fa4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3503 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3534 b/docker/dify/volumes/db/data/pgdata/base/17887/3534 deleted file mode 100644 index 2435cf8b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3534 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3541 b/docker/dify/volumes/db/data/pgdata/base/17887/3541 deleted file mode 100644 index a8b0dde7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3541 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3541_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/3541_fsm deleted file mode 100644 index 71024117..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3541_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3541_vm b/docker/dify/volumes/db/data/pgdata/base/17887/3541_vm deleted file mode 100644 index 63a9f943..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3541_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3542 b/docker/dify/volumes/db/data/pgdata/base/17887/3542 deleted file mode 100644 index 4687c38e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3542 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3574 b/docker/dify/volumes/db/data/pgdata/base/17887/3574 deleted file mode 100644 index f06e4ed5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3574 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3575 b/docker/dify/volumes/db/data/pgdata/base/17887/3575 deleted file mode 100644 index 452d8669..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3575 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3576 b/docker/dify/volumes/db/data/pgdata/base/17887/3576 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3596 b/docker/dify/volumes/db/data/pgdata/base/17887/3596 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3597 b/docker/dify/volumes/db/data/pgdata/base/17887/3597 deleted file mode 100644 index 948af535..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3597 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3598 b/docker/dify/volumes/db/data/pgdata/base/17887/3598 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3599 b/docker/dify/volumes/db/data/pgdata/base/17887/3599 deleted file mode 100644 index 33ee6046..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3599 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3600 b/docker/dify/volumes/db/data/pgdata/base/17887/3600 deleted file mode 100644 index 8c3470eb..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3600 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3600_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/3600_fsm deleted file mode 100644 index 7fa1f9ec..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3600_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3600_vm b/docker/dify/volumes/db/data/pgdata/base/17887/3600_vm deleted file mode 100644 index 403f2957..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3600_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3601 b/docker/dify/volumes/db/data/pgdata/base/17887/3601 deleted file mode 100644 index 1fc14f7c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3601 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3601_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/3601_fsm deleted file mode 100644 index 6d62a331..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3601_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3601_vm b/docker/dify/volumes/db/data/pgdata/base/17887/3601_vm deleted file mode 100644 index 98f366ba..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3601_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3602 b/docker/dify/volumes/db/data/pgdata/base/17887/3602 deleted file mode 100644 index 6baffc1d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3602 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3602_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/3602_fsm deleted file mode 100644 index b23c299d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3602_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3602_vm b/docker/dify/volumes/db/data/pgdata/base/17887/3602_vm deleted file mode 100644 index 737cb371..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3602_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3603 b/docker/dify/volumes/db/data/pgdata/base/17887/3603 deleted file mode 100644 index e5e2d4a0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3603 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3603_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/3603_fsm deleted file mode 100644 index 88029cd7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3603_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3603_vm b/docker/dify/volumes/db/data/pgdata/base/17887/3603_vm deleted file mode 100644 index 949a9859..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3603_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3604 b/docker/dify/volumes/db/data/pgdata/base/17887/3604 deleted file mode 100644 index d96b4d2a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3604 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3605 b/docker/dify/volumes/db/data/pgdata/base/17887/3605 deleted file mode 100644 index 4d082a73..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3605 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3606 b/docker/dify/volumes/db/data/pgdata/base/17887/3606 deleted file mode 100644 index d40f51b4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3606 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3607 b/docker/dify/volumes/db/data/pgdata/base/17887/3607 deleted file mode 100644 index 81003c59..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3607 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3608 b/docker/dify/volumes/db/data/pgdata/base/17887/3608 deleted file mode 100644 index 92ea1614..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3608 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3609 b/docker/dify/volumes/db/data/pgdata/base/17887/3609 deleted file mode 100644 index 44996a6f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3609 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3712 b/docker/dify/volumes/db/data/pgdata/base/17887/3712 deleted file mode 100644 index 2f2759a7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3712 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3764 b/docker/dify/volumes/db/data/pgdata/base/17887/3764 deleted file mode 100644 index 16ab9b03..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3764 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3764_fsm b/docker/dify/volumes/db/data/pgdata/base/17887/3764_fsm deleted file mode 100644 index 2e95fdd3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3764_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3764_vm b/docker/dify/volumes/db/data/pgdata/base/17887/3764_vm deleted file mode 100644 index b067bb21..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3764_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3766 b/docker/dify/volumes/db/data/pgdata/base/17887/3766 deleted file mode 100644 index 2f0f9e5a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3766 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3767 b/docker/dify/volumes/db/data/pgdata/base/17887/3767 deleted file mode 100644 index c20d0323..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3767 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/3997 b/docker/dify/volumes/db/data/pgdata/base/17887/3997 deleted file mode 100644 index 2d64d5ae..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/3997 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/4143 b/docker/dify/volumes/db/data/pgdata/base/17887/4143 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/4144 b/docker/dify/volumes/db/data/pgdata/base/17887/4144 deleted file mode 100644 index 78137fd7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/4144 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/4145 b/docker/dify/volumes/db/data/pgdata/base/17887/4145 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/4146 b/docker/dify/volumes/db/data/pgdata/base/17887/4146 deleted file mode 100644 index 73e7e761..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/4146 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/4147 b/docker/dify/volumes/db/data/pgdata/base/17887/4147 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/4148 b/docker/dify/volumes/db/data/pgdata/base/17887/4148 deleted file mode 100644 index af717a99..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/4148 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/4149 b/docker/dify/volumes/db/data/pgdata/base/17887/4149 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/4150 b/docker/dify/volumes/db/data/pgdata/base/17887/4150 deleted file mode 100644 index 7f8879dd..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/4150 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/4151 b/docker/dify/volumes/db/data/pgdata/base/17887/4151 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/4152 b/docker/dify/volumes/db/data/pgdata/base/17887/4152 deleted file mode 100644 index 819df746..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/4152 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/4153 b/docker/dify/volumes/db/data/pgdata/base/17887/4153 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/4154 b/docker/dify/volumes/db/data/pgdata/base/17887/4154 deleted file mode 100644 index ca6e060f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/4154 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/4155 b/docker/dify/volumes/db/data/pgdata/base/17887/4155 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/4156 b/docker/dify/volumes/db/data/pgdata/base/17887/4156 deleted file mode 100644 index b311c0fa..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/4156 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/4157 b/docker/dify/volumes/db/data/pgdata/base/17887/4157 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/4158 b/docker/dify/volumes/db/data/pgdata/base/17887/4158 deleted file mode 100644 index a03d361c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/4158 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/4159 b/docker/dify/volumes/db/data/pgdata/base/17887/4159 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/4160 b/docker/dify/volumes/db/data/pgdata/base/17887/4160 deleted file mode 100644 index f6513559..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/4160 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/4163 b/docker/dify/volumes/db/data/pgdata/base/17887/4163 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/4164 b/docker/dify/volumes/db/data/pgdata/base/17887/4164 deleted file mode 100644 index e9da0b6a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/4164 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/4165 b/docker/dify/volumes/db/data/pgdata/base/17887/4165 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/4166 b/docker/dify/volumes/db/data/pgdata/base/17887/4166 deleted file mode 100644 index c68f5be0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/4166 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/4167 b/docker/dify/volumes/db/data/pgdata/base/17887/4167 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/4168 b/docker/dify/volumes/db/data/pgdata/base/17887/4168 deleted file mode 100644 index 12acb4e2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/4168 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/4169 b/docker/dify/volumes/db/data/pgdata/base/17887/4169 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/4170 b/docker/dify/volumes/db/data/pgdata/base/17887/4170 deleted file mode 100644 index 1784a5f4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/4170 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/4171 b/docker/dify/volumes/db/data/pgdata/base/17887/4171 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/4172 b/docker/dify/volumes/db/data/pgdata/base/17887/4172 deleted file mode 100644 index a3968f05..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/4172 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/4173 b/docker/dify/volumes/db/data/pgdata/base/17887/4173 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/4174 b/docker/dify/volumes/db/data/pgdata/base/17887/4174 deleted file mode 100644 index e6d22493..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/4174 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/5002 b/docker/dify/volumes/db/data/pgdata/base/17887/5002 deleted file mode 100644 index 58ed3a09..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/5002 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/548 b/docker/dify/volumes/db/data/pgdata/base/17887/548 deleted file mode 100644 index 988b60cd..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/548 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/549 b/docker/dify/volumes/db/data/pgdata/base/17887/549 deleted file mode 100644 index cc9694b1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/549 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/6102 b/docker/dify/volumes/db/data/pgdata/base/17887/6102 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/6104 b/docker/dify/volumes/db/data/pgdata/base/17887/6104 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/6106 b/docker/dify/volumes/db/data/pgdata/base/17887/6106 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/6110 b/docker/dify/volumes/db/data/pgdata/base/17887/6110 deleted file mode 100644 index 03227f9d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/6110 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/6111 b/docker/dify/volumes/db/data/pgdata/base/17887/6111 deleted file mode 100644 index ae45212c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/6111 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/6112 b/docker/dify/volumes/db/data/pgdata/base/17887/6112 deleted file mode 100644 index 41e276b0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/6112 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/6113 b/docker/dify/volumes/db/data/pgdata/base/17887/6113 deleted file mode 100644 index bda7ed86..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/6113 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/6116 b/docker/dify/volumes/db/data/pgdata/base/17887/6116 deleted file mode 100644 index 06f4b579..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/6116 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/6117 b/docker/dify/volumes/db/data/pgdata/base/17887/6117 deleted file mode 100644 index 093ff062..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/6117 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/6175 b/docker/dify/volumes/db/data/pgdata/base/17887/6175 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/6176 b/docker/dify/volumes/db/data/pgdata/base/17887/6176 deleted file mode 100644 index c32f29b6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/6176 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/6228 b/docker/dify/volumes/db/data/pgdata/base/17887/6228 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/6229 b/docker/dify/volumes/db/data/pgdata/base/17887/6229 deleted file mode 100644 index dd4d1aca..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/6229 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/6237 b/docker/dify/volumes/db/data/pgdata/base/17887/6237 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/6238 b/docker/dify/volumes/db/data/pgdata/base/17887/6238 deleted file mode 100644 index 3dd1ad94..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/6238 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/6239 b/docker/dify/volumes/db/data/pgdata/base/17887/6239 deleted file mode 100644 index ae5d2509..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/6239 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/826 b/docker/dify/volumes/db/data/pgdata/base/17887/826 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/827 b/docker/dify/volumes/db/data/pgdata/base/17887/827 deleted file mode 100644 index 93fcf9e4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/827 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/828 b/docker/dify/volumes/db/data/pgdata/base/17887/828 deleted file mode 100644 index b5795ef0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/828 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/PG_VERSION b/docker/dify/volumes/db/data/pgdata/base/17887/PG_VERSION deleted file mode 100644 index 60d3b2f4..00000000 --- a/docker/dify/volumes/db/data/pgdata/base/17887/PG_VERSION +++ /dev/null @@ -1 +0,0 @@ -15 diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/pg_filenode.map b/docker/dify/volumes/db/data/pgdata/base/17887/pg_filenode.map deleted file mode 100644 index 193d78f3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/pg_filenode.map and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/17887/pg_internal.init b/docker/dify/volumes/db/data/pgdata/base/17887/pg_internal.init deleted file mode 100644 index b94e5c7e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/17887/pg_internal.init and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/112 b/docker/dify/volumes/db/data/pgdata/base/4/112 deleted file mode 100644 index 784a4c13..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/112 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/113 b/docker/dify/volumes/db/data/pgdata/base/4/113 deleted file mode 100644 index cc2c412b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/113 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/1247 b/docker/dify/volumes/db/data/pgdata/base/4/1247 deleted file mode 100644 index a628646c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/1247 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/1247_fsm b/docker/dify/volumes/db/data/pgdata/base/4/1247_fsm deleted file mode 100644 index d9ff302c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/1247_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/1247_vm b/docker/dify/volumes/db/data/pgdata/base/4/1247_vm deleted file mode 100644 index cb141f85..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/1247_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/1249 b/docker/dify/volumes/db/data/pgdata/base/4/1249 deleted file mode 100644 index 40021b04..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/1249 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/1249_fsm b/docker/dify/volumes/db/data/pgdata/base/4/1249_fsm deleted file mode 100644 index 87def576..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/1249_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/1249_vm b/docker/dify/volumes/db/data/pgdata/base/4/1249_vm deleted file mode 100644 index e7c32f42..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/1249_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/1255 b/docker/dify/volumes/db/data/pgdata/base/4/1255 deleted file mode 100644 index 549acf0e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/1255 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/1255_fsm b/docker/dify/volumes/db/data/pgdata/base/4/1255_fsm deleted file mode 100644 index 5abeaaf2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/1255_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/1255_vm b/docker/dify/volumes/db/data/pgdata/base/4/1255_vm deleted file mode 100644 index 7229f841..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/1255_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/1259 b/docker/dify/volumes/db/data/pgdata/base/4/1259 deleted file mode 100644 index ad9e2e84..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/1259 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/1259_fsm b/docker/dify/volumes/db/data/pgdata/base/4/1259_fsm deleted file mode 100644 index bb60b307..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/1259_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/1259_vm b/docker/dify/volumes/db/data/pgdata/base/4/1259_vm deleted file mode 100644 index a3f14f7f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/1259_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/13454 b/docker/dify/volumes/db/data/pgdata/base/4/13454 deleted file mode 100644 index d655791d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/13454 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/13454_fsm b/docker/dify/volumes/db/data/pgdata/base/4/13454_fsm deleted file mode 100644 index dff96115..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/13454_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/13454_vm b/docker/dify/volumes/db/data/pgdata/base/4/13454_vm deleted file mode 100644 index 4a8125b5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/13454_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/13457 b/docker/dify/volumes/db/data/pgdata/base/4/13457 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/13458 b/docker/dify/volumes/db/data/pgdata/base/4/13458 deleted file mode 100644 index 3a40f331..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/13458 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/13459 b/docker/dify/volumes/db/data/pgdata/base/4/13459 deleted file mode 100644 index 8199ae15..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/13459 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/13459_fsm b/docker/dify/volumes/db/data/pgdata/base/4/13459_fsm deleted file mode 100644 index 70d16ce4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/13459_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/13459_vm b/docker/dify/volumes/db/data/pgdata/base/4/13459_vm deleted file mode 100644 index b0ecc4c0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/13459_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/13462 b/docker/dify/volumes/db/data/pgdata/base/4/13462 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/13463 b/docker/dify/volumes/db/data/pgdata/base/4/13463 deleted file mode 100644 index fd105eb4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/13463 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/13464 b/docker/dify/volumes/db/data/pgdata/base/4/13464 deleted file mode 100644 index 8c69968b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/13464 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/13464_fsm b/docker/dify/volumes/db/data/pgdata/base/4/13464_fsm deleted file mode 100644 index d388044f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/13464_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/13464_vm b/docker/dify/volumes/db/data/pgdata/base/4/13464_vm deleted file mode 100644 index ea66334c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/13464_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/13467 b/docker/dify/volumes/db/data/pgdata/base/4/13467 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/13468 b/docker/dify/volumes/db/data/pgdata/base/4/13468 deleted file mode 100644 index 3207e9e0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/13468 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/13469 b/docker/dify/volumes/db/data/pgdata/base/4/13469 deleted file mode 100644 index baf18ff8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/13469 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/13469_fsm b/docker/dify/volumes/db/data/pgdata/base/4/13469_fsm deleted file mode 100644 index a836ddf7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/13469_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/13469_vm b/docker/dify/volumes/db/data/pgdata/base/4/13469_vm deleted file mode 100644 index c5da2a3c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/13469_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/13472 b/docker/dify/volumes/db/data/pgdata/base/4/13472 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/13473 b/docker/dify/volumes/db/data/pgdata/base/4/13473 deleted file mode 100644 index 32f23576..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/13473 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/1417 b/docker/dify/volumes/db/data/pgdata/base/4/1417 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/1418 b/docker/dify/volumes/db/data/pgdata/base/4/1418 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/174 b/docker/dify/volumes/db/data/pgdata/base/4/174 deleted file mode 100644 index 2e4cc9f3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/174 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/175 b/docker/dify/volumes/db/data/pgdata/base/4/175 deleted file mode 100644 index 15d51ddc..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/175 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2187 b/docker/dify/volumes/db/data/pgdata/base/4/2187 deleted file mode 100644 index cf6377d2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2187 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2224 b/docker/dify/volumes/db/data/pgdata/base/4/2224 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2228 b/docker/dify/volumes/db/data/pgdata/base/4/2228 deleted file mode 100644 index 738f259a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2228 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2328 b/docker/dify/volumes/db/data/pgdata/base/4/2328 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2336 b/docker/dify/volumes/db/data/pgdata/base/4/2336 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2337 b/docker/dify/volumes/db/data/pgdata/base/4/2337 deleted file mode 100644 index 105af49c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2337 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2579 b/docker/dify/volumes/db/data/pgdata/base/4/2579 deleted file mode 100644 index ae0d53ad..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2579 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2600 b/docker/dify/volumes/db/data/pgdata/base/4/2600 deleted file mode 100644 index a1305d7a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2600 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2600_fsm b/docker/dify/volumes/db/data/pgdata/base/4/2600_fsm deleted file mode 100644 index b8490844..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2600_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2600_vm b/docker/dify/volumes/db/data/pgdata/base/4/2600_vm deleted file mode 100644 index 7fac2cbe..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2600_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2601 b/docker/dify/volumes/db/data/pgdata/base/4/2601 deleted file mode 100644 index d8001c8c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2601 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2601_fsm b/docker/dify/volumes/db/data/pgdata/base/4/2601_fsm deleted file mode 100644 index d388044f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2601_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2601_vm b/docker/dify/volumes/db/data/pgdata/base/4/2601_vm deleted file mode 100644 index eb2d0155..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2601_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2602 b/docker/dify/volumes/db/data/pgdata/base/4/2602 deleted file mode 100644 index 4a27b0a3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2602 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2602_fsm b/docker/dify/volumes/db/data/pgdata/base/4/2602_fsm deleted file mode 100644 index 23170d85..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2602_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2602_vm b/docker/dify/volumes/db/data/pgdata/base/4/2602_vm deleted file mode 100644 index b7e83c3c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2602_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2603 b/docker/dify/volumes/db/data/pgdata/base/4/2603 deleted file mode 100644 index d511af56..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2603 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2603_fsm b/docker/dify/volumes/db/data/pgdata/base/4/2603_fsm deleted file mode 100644 index 949bd18f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2603_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2603_vm b/docker/dify/volumes/db/data/pgdata/base/4/2603_vm deleted file mode 100644 index f073a603..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2603_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2604 b/docker/dify/volumes/db/data/pgdata/base/4/2604 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2605 b/docker/dify/volumes/db/data/pgdata/base/4/2605 deleted file mode 100644 index eeaa7eaa..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2605 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2605_fsm b/docker/dify/volumes/db/data/pgdata/base/4/2605_fsm deleted file mode 100644 index f3b92bf7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2605_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2605_vm b/docker/dify/volumes/db/data/pgdata/base/4/2605_vm deleted file mode 100644 index 85d1e841..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2605_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2606 b/docker/dify/volumes/db/data/pgdata/base/4/2606 deleted file mode 100644 index 4737fa77..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2606 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2606_fsm b/docker/dify/volumes/db/data/pgdata/base/4/2606_fsm deleted file mode 100644 index 286dd813..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2606_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2606_vm b/docker/dify/volumes/db/data/pgdata/base/4/2606_vm deleted file mode 100644 index 86bc6bf5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2606_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2607 b/docker/dify/volumes/db/data/pgdata/base/4/2607 deleted file mode 100644 index bfad49ae..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2607 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2607_fsm b/docker/dify/volumes/db/data/pgdata/base/4/2607_fsm deleted file mode 100644 index 80ac8b14..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2607_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2607_vm b/docker/dify/volumes/db/data/pgdata/base/4/2607_vm deleted file mode 100644 index c0a22c62..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2607_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2608 b/docker/dify/volumes/db/data/pgdata/base/4/2608 deleted file mode 100644 index e75c37b5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2608 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2608_fsm b/docker/dify/volumes/db/data/pgdata/base/4/2608_fsm deleted file mode 100644 index 6ba89a46..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2608_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2608_vm b/docker/dify/volumes/db/data/pgdata/base/4/2608_vm deleted file mode 100644 index 9a21eb75..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2608_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2609 b/docker/dify/volumes/db/data/pgdata/base/4/2609 deleted file mode 100644 index 2983f4db..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2609 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2609_fsm b/docker/dify/volumes/db/data/pgdata/base/4/2609_fsm deleted file mode 100644 index 11f989b1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2609_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2609_vm b/docker/dify/volumes/db/data/pgdata/base/4/2609_vm deleted file mode 100644 index 61b91943..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2609_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2610 b/docker/dify/volumes/db/data/pgdata/base/4/2610 deleted file mode 100644 index 8251aeb8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2610 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2610_fsm b/docker/dify/volumes/db/data/pgdata/base/4/2610_fsm deleted file mode 100644 index dbd22e1f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2610_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2610_vm b/docker/dify/volumes/db/data/pgdata/base/4/2610_vm deleted file mode 100644 index 25f58e1c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2610_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2611 b/docker/dify/volumes/db/data/pgdata/base/4/2611 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2612 b/docker/dify/volumes/db/data/pgdata/base/4/2612 deleted file mode 100644 index c39ab4d5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2612 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2612_fsm b/docker/dify/volumes/db/data/pgdata/base/4/2612_fsm deleted file mode 100644 index 877976ac..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2612_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2612_vm b/docker/dify/volumes/db/data/pgdata/base/4/2612_vm deleted file mode 100644 index ef0dbfff..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2612_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2613 b/docker/dify/volumes/db/data/pgdata/base/4/2613 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2615 b/docker/dify/volumes/db/data/pgdata/base/4/2615 deleted file mode 100644 index db72cea7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2615 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2615_fsm b/docker/dify/volumes/db/data/pgdata/base/4/2615_fsm deleted file mode 100644 index d041693e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2615_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2615_vm b/docker/dify/volumes/db/data/pgdata/base/4/2615_vm deleted file mode 100644 index 233f9690..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2615_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2616 b/docker/dify/volumes/db/data/pgdata/base/4/2616 deleted file mode 100644 index 0d60d797..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2616 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2616_fsm b/docker/dify/volumes/db/data/pgdata/base/4/2616_fsm deleted file mode 100644 index cb924c95..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2616_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2616_vm b/docker/dify/volumes/db/data/pgdata/base/4/2616_vm deleted file mode 100644 index e704cec7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2616_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2617 b/docker/dify/volumes/db/data/pgdata/base/4/2617 deleted file mode 100644 index bcdfc183..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2617 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2617_fsm b/docker/dify/volumes/db/data/pgdata/base/4/2617_fsm deleted file mode 100644 index 29d60666..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2617_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2617_vm b/docker/dify/volumes/db/data/pgdata/base/4/2617_vm deleted file mode 100644 index 6db4a14c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2617_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2618 b/docker/dify/volumes/db/data/pgdata/base/4/2618 deleted file mode 100644 index 230b6370..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2618 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2618_fsm b/docker/dify/volumes/db/data/pgdata/base/4/2618_fsm deleted file mode 100644 index e162e372..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2618_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2618_vm b/docker/dify/volumes/db/data/pgdata/base/4/2618_vm deleted file mode 100644 index 7ad7e690..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2618_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2619 b/docker/dify/volumes/db/data/pgdata/base/4/2619 deleted file mode 100644 index 9c1962ec..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2619 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2619_fsm b/docker/dify/volumes/db/data/pgdata/base/4/2619_fsm deleted file mode 100644 index e2307747..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2619_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2619_vm b/docker/dify/volumes/db/data/pgdata/base/4/2619_vm deleted file mode 100644 index c3fffd9e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2619_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2620 b/docker/dify/volumes/db/data/pgdata/base/4/2620 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2650 b/docker/dify/volumes/db/data/pgdata/base/4/2650 deleted file mode 100644 index 32ff8a16..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2650 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2651 b/docker/dify/volumes/db/data/pgdata/base/4/2651 deleted file mode 100644 index cff86c74..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2651 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2652 b/docker/dify/volumes/db/data/pgdata/base/4/2652 deleted file mode 100644 index ab53706f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2652 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2653 b/docker/dify/volumes/db/data/pgdata/base/4/2653 deleted file mode 100644 index 86b08571..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2653 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2654 b/docker/dify/volumes/db/data/pgdata/base/4/2654 deleted file mode 100644 index 095a4fd5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2654 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2655 b/docker/dify/volumes/db/data/pgdata/base/4/2655 deleted file mode 100644 index 4b4b3cc6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2655 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2656 b/docker/dify/volumes/db/data/pgdata/base/4/2656 deleted file mode 100644 index 2fd9a71f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2656 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2657 b/docker/dify/volumes/db/data/pgdata/base/4/2657 deleted file mode 100644 index d0384dc6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2657 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2658 b/docker/dify/volumes/db/data/pgdata/base/4/2658 deleted file mode 100644 index 2777e797..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2658 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2659 b/docker/dify/volumes/db/data/pgdata/base/4/2659 deleted file mode 100644 index dd90e168..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2659 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2660 b/docker/dify/volumes/db/data/pgdata/base/4/2660 deleted file mode 100644 index fd66d228..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2660 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2661 b/docker/dify/volumes/db/data/pgdata/base/4/2661 deleted file mode 100644 index 3c62a6fd..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2661 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2662 b/docker/dify/volumes/db/data/pgdata/base/4/2662 deleted file mode 100644 index b09801b1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2662 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2663 b/docker/dify/volumes/db/data/pgdata/base/4/2663 deleted file mode 100644 index 1fe3a98d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2663 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2664 b/docker/dify/volumes/db/data/pgdata/base/4/2664 deleted file mode 100644 index a7761ead..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2664 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2665 b/docker/dify/volumes/db/data/pgdata/base/4/2665 deleted file mode 100644 index 024d2917..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2665 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2666 b/docker/dify/volumes/db/data/pgdata/base/4/2666 deleted file mode 100644 index 55842a3c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2666 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2667 b/docker/dify/volumes/db/data/pgdata/base/4/2667 deleted file mode 100644 index 40aa4997..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2667 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2668 b/docker/dify/volumes/db/data/pgdata/base/4/2668 deleted file mode 100644 index 8ca1619c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2668 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2669 b/docker/dify/volumes/db/data/pgdata/base/4/2669 deleted file mode 100644 index b13c3353..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2669 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2670 b/docker/dify/volumes/db/data/pgdata/base/4/2670 deleted file mode 100644 index 936feee6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2670 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2673 b/docker/dify/volumes/db/data/pgdata/base/4/2673 deleted file mode 100644 index e431d106..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2673 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2674 b/docker/dify/volumes/db/data/pgdata/base/4/2674 deleted file mode 100644 index 24e0beb2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2674 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2675 b/docker/dify/volumes/db/data/pgdata/base/4/2675 deleted file mode 100644 index 91709217..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2675 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2678 b/docker/dify/volumes/db/data/pgdata/base/4/2678 deleted file mode 100644 index c718c7a0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2678 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2679 b/docker/dify/volumes/db/data/pgdata/base/4/2679 deleted file mode 100644 index b296d1cb..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2679 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2680 b/docker/dify/volumes/db/data/pgdata/base/4/2680 deleted file mode 100644 index 0d352e91..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2680 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2681 b/docker/dify/volumes/db/data/pgdata/base/4/2681 deleted file mode 100644 index b13b323c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2681 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2682 b/docker/dify/volumes/db/data/pgdata/base/4/2682 deleted file mode 100644 index 3141bcdc..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2682 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2683 b/docker/dify/volumes/db/data/pgdata/base/4/2683 deleted file mode 100644 index 117ee7ae..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2683 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2684 b/docker/dify/volumes/db/data/pgdata/base/4/2684 deleted file mode 100644 index 05092ecb..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2684 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2685 b/docker/dify/volumes/db/data/pgdata/base/4/2685 deleted file mode 100644 index 5bf0c30f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2685 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2686 b/docker/dify/volumes/db/data/pgdata/base/4/2686 deleted file mode 100644 index 3054a565..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2686 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2687 b/docker/dify/volumes/db/data/pgdata/base/4/2687 deleted file mode 100644 index 349490ed..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2687 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2688 b/docker/dify/volumes/db/data/pgdata/base/4/2688 deleted file mode 100644 index f00cec25..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2688 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2689 b/docker/dify/volumes/db/data/pgdata/base/4/2689 deleted file mode 100644 index 8329829d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2689 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2690 b/docker/dify/volumes/db/data/pgdata/base/4/2690 deleted file mode 100644 index 09176d40..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2690 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2691 b/docker/dify/volumes/db/data/pgdata/base/4/2691 deleted file mode 100644 index 6e60d7f1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2691 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2692 b/docker/dify/volumes/db/data/pgdata/base/4/2692 deleted file mode 100644 index c7e275c1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2692 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2693 b/docker/dify/volumes/db/data/pgdata/base/4/2693 deleted file mode 100644 index f6aef2f5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2693 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2696 b/docker/dify/volumes/db/data/pgdata/base/4/2696 deleted file mode 100644 index 08f217f3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2696 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2699 b/docker/dify/volumes/db/data/pgdata/base/4/2699 deleted file mode 100644 index 4a755207..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2699 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2701 b/docker/dify/volumes/db/data/pgdata/base/4/2701 deleted file mode 100644 index 82f5cd0e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2701 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2702 b/docker/dify/volumes/db/data/pgdata/base/4/2702 deleted file mode 100644 index 2d6a98c2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2702 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2703 b/docker/dify/volumes/db/data/pgdata/base/4/2703 deleted file mode 100644 index 01c87ae8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2703 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2704 b/docker/dify/volumes/db/data/pgdata/base/4/2704 deleted file mode 100644 index c3f65000..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2704 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2753 b/docker/dify/volumes/db/data/pgdata/base/4/2753 deleted file mode 100644 index 3c16dff6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2753 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2753_fsm b/docker/dify/volumes/db/data/pgdata/base/4/2753_fsm deleted file mode 100644 index 642bce3b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2753_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2753_vm b/docker/dify/volumes/db/data/pgdata/base/4/2753_vm deleted file mode 100644 index 72c3e6de..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2753_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2754 b/docker/dify/volumes/db/data/pgdata/base/4/2754 deleted file mode 100644 index bdd4d527..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2754 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2755 b/docker/dify/volumes/db/data/pgdata/base/4/2755 deleted file mode 100644 index fd5d56a2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2755 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2756 b/docker/dify/volumes/db/data/pgdata/base/4/2756 deleted file mode 100644 index 6a044745..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2756 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2757 b/docker/dify/volumes/db/data/pgdata/base/4/2757 deleted file mode 100644 index 8f9ccdf0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2757 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2830 b/docker/dify/volumes/db/data/pgdata/base/4/2830 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2831 b/docker/dify/volumes/db/data/pgdata/base/4/2831 deleted file mode 100644 index c0a407a0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2831 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2832 b/docker/dify/volumes/db/data/pgdata/base/4/2832 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2833 b/docker/dify/volumes/db/data/pgdata/base/4/2833 deleted file mode 100644 index eea5df63..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2833 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2834 b/docker/dify/volumes/db/data/pgdata/base/4/2834 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2835 b/docker/dify/volumes/db/data/pgdata/base/4/2835 deleted file mode 100644 index 8aad1359..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2835 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2836 b/docker/dify/volumes/db/data/pgdata/base/4/2836 deleted file mode 100644 index 5c9f07f8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2836 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2836_fsm b/docker/dify/volumes/db/data/pgdata/base/4/2836_fsm deleted file mode 100644 index 6e81497f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2836_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2836_vm b/docker/dify/volumes/db/data/pgdata/base/4/2836_vm deleted file mode 100644 index 5e43ad13..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2836_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2837 b/docker/dify/volumes/db/data/pgdata/base/4/2837 deleted file mode 100644 index 888d3af3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2837 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2838 b/docker/dify/volumes/db/data/pgdata/base/4/2838 deleted file mode 100644 index e59ce108..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2838 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2838_fsm b/docker/dify/volumes/db/data/pgdata/base/4/2838_fsm deleted file mode 100644 index a9b1e030..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2838_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2838_vm b/docker/dify/volumes/db/data/pgdata/base/4/2838_vm deleted file mode 100644 index cf7d8c70..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2838_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2839 b/docker/dify/volumes/db/data/pgdata/base/4/2839 deleted file mode 100644 index 1e07360f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2839 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2840 b/docker/dify/volumes/db/data/pgdata/base/4/2840 deleted file mode 100644 index 9d275557..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2840 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2840_fsm b/docker/dify/volumes/db/data/pgdata/base/4/2840_fsm deleted file mode 100644 index 36ee51aa..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2840_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2840_vm b/docker/dify/volumes/db/data/pgdata/base/4/2840_vm deleted file mode 100644 index 4857429b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2840_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2841 b/docker/dify/volumes/db/data/pgdata/base/4/2841 deleted file mode 100644 index f524a491..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2841 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2995 b/docker/dify/volumes/db/data/pgdata/base/4/2995 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/2996 b/docker/dify/volumes/db/data/pgdata/base/4/2996 deleted file mode 100644 index 170333a4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/2996 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3079 b/docker/dify/volumes/db/data/pgdata/base/4/3079 deleted file mode 100644 index 06243ba7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3079 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3079_fsm b/docker/dify/volumes/db/data/pgdata/base/4/3079_fsm deleted file mode 100644 index 7732d22b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3079_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3079_vm b/docker/dify/volumes/db/data/pgdata/base/4/3079_vm deleted file mode 100644 index f6c15836..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3079_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3080 b/docker/dify/volumes/db/data/pgdata/base/4/3080 deleted file mode 100644 index e6b1f43e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3080 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3081 b/docker/dify/volumes/db/data/pgdata/base/4/3081 deleted file mode 100644 index b9fb15c0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3081 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3085 b/docker/dify/volumes/db/data/pgdata/base/4/3085 deleted file mode 100644 index e640c6e8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3085 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3118 b/docker/dify/volumes/db/data/pgdata/base/4/3118 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3119 b/docker/dify/volumes/db/data/pgdata/base/4/3119 deleted file mode 100644 index db2bde09..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3119 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3164 b/docker/dify/volumes/db/data/pgdata/base/4/3164 deleted file mode 100644 index f493af70..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3164 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3256 b/docker/dify/volumes/db/data/pgdata/base/4/3256 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3257 b/docker/dify/volumes/db/data/pgdata/base/4/3257 deleted file mode 100644 index 64787da2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3257 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3258 b/docker/dify/volumes/db/data/pgdata/base/4/3258 deleted file mode 100644 index 09abe9b9..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3258 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3350 b/docker/dify/volumes/db/data/pgdata/base/4/3350 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3351 b/docker/dify/volumes/db/data/pgdata/base/4/3351 deleted file mode 100644 index 2bfef7fb..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3351 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3379 b/docker/dify/volumes/db/data/pgdata/base/4/3379 deleted file mode 100644 index caced87c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3379 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3380 b/docker/dify/volumes/db/data/pgdata/base/4/3380 deleted file mode 100644 index 55d6862d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3380 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3381 b/docker/dify/volumes/db/data/pgdata/base/4/3381 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3394 b/docker/dify/volumes/db/data/pgdata/base/4/3394 deleted file mode 100644 index 71374fc7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3394 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3394_fsm b/docker/dify/volumes/db/data/pgdata/base/4/3394_fsm deleted file mode 100644 index 9622a2f0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3394_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3394_vm b/docker/dify/volumes/db/data/pgdata/base/4/3394_vm deleted file mode 100644 index d6dbec86..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3394_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3395 b/docker/dify/volumes/db/data/pgdata/base/4/3395 deleted file mode 100644 index c31f4b0b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3395 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3429 b/docker/dify/volumes/db/data/pgdata/base/4/3429 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3430 b/docker/dify/volumes/db/data/pgdata/base/4/3430 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3431 b/docker/dify/volumes/db/data/pgdata/base/4/3431 deleted file mode 100644 index ce872ee1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3431 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3433 b/docker/dify/volumes/db/data/pgdata/base/4/3433 deleted file mode 100644 index 68ea223e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3433 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3439 b/docker/dify/volumes/db/data/pgdata/base/4/3439 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3440 b/docker/dify/volumes/db/data/pgdata/base/4/3440 deleted file mode 100644 index 0545e4bb..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3440 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3455 b/docker/dify/volumes/db/data/pgdata/base/4/3455 deleted file mode 100644 index 0767e59f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3455 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3456 b/docker/dify/volumes/db/data/pgdata/base/4/3456 deleted file mode 100644 index 1f4db93b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3456 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3456_fsm b/docker/dify/volumes/db/data/pgdata/base/4/3456_fsm deleted file mode 100644 index 8f765c68..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3456_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3456_vm b/docker/dify/volumes/db/data/pgdata/base/4/3456_vm deleted file mode 100644 index c0a04f4d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3456_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3466 b/docker/dify/volumes/db/data/pgdata/base/4/3466 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3467 b/docker/dify/volumes/db/data/pgdata/base/4/3467 deleted file mode 100644 index c7016e10..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3467 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3468 b/docker/dify/volumes/db/data/pgdata/base/4/3468 deleted file mode 100644 index fab333bd..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3468 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3501 b/docker/dify/volumes/db/data/pgdata/base/4/3501 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3502 b/docker/dify/volumes/db/data/pgdata/base/4/3502 deleted file mode 100644 index ece495c9..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3502 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3503 b/docker/dify/volumes/db/data/pgdata/base/4/3503 deleted file mode 100644 index 53f9b69e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3503 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3534 b/docker/dify/volumes/db/data/pgdata/base/4/3534 deleted file mode 100644 index 11fad3bb..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3534 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3541 b/docker/dify/volumes/db/data/pgdata/base/4/3541 deleted file mode 100644 index 40869ad3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3541 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3541_fsm b/docker/dify/volumes/db/data/pgdata/base/4/3541_fsm deleted file mode 100644 index a3a2de4d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3541_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3541_vm b/docker/dify/volumes/db/data/pgdata/base/4/3541_vm deleted file mode 100644 index 51f0e82e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3541_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3542 b/docker/dify/volumes/db/data/pgdata/base/4/3542 deleted file mode 100644 index ced00669..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3542 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3574 b/docker/dify/volumes/db/data/pgdata/base/4/3574 deleted file mode 100644 index b026df10..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3574 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3575 b/docker/dify/volumes/db/data/pgdata/base/4/3575 deleted file mode 100644 index bdec5326..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3575 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3576 b/docker/dify/volumes/db/data/pgdata/base/4/3576 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3596 b/docker/dify/volumes/db/data/pgdata/base/4/3596 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3597 b/docker/dify/volumes/db/data/pgdata/base/4/3597 deleted file mode 100644 index 08855a4d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3597 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3598 b/docker/dify/volumes/db/data/pgdata/base/4/3598 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3599 b/docker/dify/volumes/db/data/pgdata/base/4/3599 deleted file mode 100644 index aaf38926..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3599 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3600 b/docker/dify/volumes/db/data/pgdata/base/4/3600 deleted file mode 100644 index a125931a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3600 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3600_fsm b/docker/dify/volumes/db/data/pgdata/base/4/3600_fsm deleted file mode 100644 index cebec199..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3600_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3600_vm b/docker/dify/volumes/db/data/pgdata/base/4/3600_vm deleted file mode 100644 index b9fcd6a9..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3600_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3601 b/docker/dify/volumes/db/data/pgdata/base/4/3601 deleted file mode 100644 index 04c846ec..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3601 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3601_fsm b/docker/dify/volumes/db/data/pgdata/base/4/3601_fsm deleted file mode 100644 index 7732d22b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3601_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3601_vm b/docker/dify/volumes/db/data/pgdata/base/4/3601_vm deleted file mode 100644 index 3db367e2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3601_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3602 b/docker/dify/volumes/db/data/pgdata/base/4/3602 deleted file mode 100644 index 265567f1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3602 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3602_fsm b/docker/dify/volumes/db/data/pgdata/base/4/3602_fsm deleted file mode 100644 index d7897de2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3602_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3602_vm b/docker/dify/volumes/db/data/pgdata/base/4/3602_vm deleted file mode 100644 index 9b4d7923..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3602_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3603 b/docker/dify/volumes/db/data/pgdata/base/4/3603 deleted file mode 100644 index 1b0d6cf3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3603 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3603_fsm b/docker/dify/volumes/db/data/pgdata/base/4/3603_fsm deleted file mode 100644 index c28dd4fa..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3603_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3603_vm b/docker/dify/volumes/db/data/pgdata/base/4/3603_vm deleted file mode 100644 index 102cff1b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3603_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3604 b/docker/dify/volumes/db/data/pgdata/base/4/3604 deleted file mode 100644 index 5aad5993..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3604 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3605 b/docker/dify/volumes/db/data/pgdata/base/4/3605 deleted file mode 100644 index 9f8d1fe7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3605 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3606 b/docker/dify/volumes/db/data/pgdata/base/4/3606 deleted file mode 100644 index abe7a1cf..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3606 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3607 b/docker/dify/volumes/db/data/pgdata/base/4/3607 deleted file mode 100644 index e3a3bbc6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3607 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3608 b/docker/dify/volumes/db/data/pgdata/base/4/3608 deleted file mode 100644 index 88266dac..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3608 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3609 b/docker/dify/volumes/db/data/pgdata/base/4/3609 deleted file mode 100644 index 5ff24567..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3609 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3712 b/docker/dify/volumes/db/data/pgdata/base/4/3712 deleted file mode 100644 index aa23ee97..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3712 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3764 b/docker/dify/volumes/db/data/pgdata/base/4/3764 deleted file mode 100644 index 1c794036..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3764 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3764_fsm b/docker/dify/volumes/db/data/pgdata/base/4/3764_fsm deleted file mode 100644 index f64db4df..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3764_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3764_vm b/docker/dify/volumes/db/data/pgdata/base/4/3764_vm deleted file mode 100644 index d7118cad..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3764_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3766 b/docker/dify/volumes/db/data/pgdata/base/4/3766 deleted file mode 100644 index c4134620..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3766 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3767 b/docker/dify/volumes/db/data/pgdata/base/4/3767 deleted file mode 100644 index 6cbae02d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3767 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/3997 b/docker/dify/volumes/db/data/pgdata/base/4/3997 deleted file mode 100644 index 8969d818..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/3997 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/4143 b/docker/dify/volumes/db/data/pgdata/base/4/4143 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/4144 b/docker/dify/volumes/db/data/pgdata/base/4/4144 deleted file mode 100644 index 5188a14b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/4144 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/4145 b/docker/dify/volumes/db/data/pgdata/base/4/4145 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/4146 b/docker/dify/volumes/db/data/pgdata/base/4/4146 deleted file mode 100644 index 957732fc..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/4146 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/4147 b/docker/dify/volumes/db/data/pgdata/base/4/4147 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/4148 b/docker/dify/volumes/db/data/pgdata/base/4/4148 deleted file mode 100644 index 9c7057c3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/4148 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/4149 b/docker/dify/volumes/db/data/pgdata/base/4/4149 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/4150 b/docker/dify/volumes/db/data/pgdata/base/4/4150 deleted file mode 100644 index 390d428a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/4150 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/4151 b/docker/dify/volumes/db/data/pgdata/base/4/4151 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/4152 b/docker/dify/volumes/db/data/pgdata/base/4/4152 deleted file mode 100644 index 1a289fd8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/4152 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/4153 b/docker/dify/volumes/db/data/pgdata/base/4/4153 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/4154 b/docker/dify/volumes/db/data/pgdata/base/4/4154 deleted file mode 100644 index d0d1ca59..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/4154 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/4155 b/docker/dify/volumes/db/data/pgdata/base/4/4155 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/4156 b/docker/dify/volumes/db/data/pgdata/base/4/4156 deleted file mode 100644 index 5b4bf370..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/4156 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/4157 b/docker/dify/volumes/db/data/pgdata/base/4/4157 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/4158 b/docker/dify/volumes/db/data/pgdata/base/4/4158 deleted file mode 100644 index 937d3d28..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/4158 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/4159 b/docker/dify/volumes/db/data/pgdata/base/4/4159 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/4160 b/docker/dify/volumes/db/data/pgdata/base/4/4160 deleted file mode 100644 index d10cfd60..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/4160 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/4163 b/docker/dify/volumes/db/data/pgdata/base/4/4163 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/4164 b/docker/dify/volumes/db/data/pgdata/base/4/4164 deleted file mode 100644 index a94c963f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/4164 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/4165 b/docker/dify/volumes/db/data/pgdata/base/4/4165 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/4166 b/docker/dify/volumes/db/data/pgdata/base/4/4166 deleted file mode 100644 index 2229586f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/4166 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/4167 b/docker/dify/volumes/db/data/pgdata/base/4/4167 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/4168 b/docker/dify/volumes/db/data/pgdata/base/4/4168 deleted file mode 100644 index 472740b9..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/4168 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/4169 b/docker/dify/volumes/db/data/pgdata/base/4/4169 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/4170 b/docker/dify/volumes/db/data/pgdata/base/4/4170 deleted file mode 100644 index 88d09b3d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/4170 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/4171 b/docker/dify/volumes/db/data/pgdata/base/4/4171 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/4172 b/docker/dify/volumes/db/data/pgdata/base/4/4172 deleted file mode 100644 index 3eed1ee2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/4172 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/4173 b/docker/dify/volumes/db/data/pgdata/base/4/4173 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/4174 b/docker/dify/volumes/db/data/pgdata/base/4/4174 deleted file mode 100644 index a0819a24..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/4174 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/5002 b/docker/dify/volumes/db/data/pgdata/base/4/5002 deleted file mode 100644 index aefa40dd..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/5002 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/548 b/docker/dify/volumes/db/data/pgdata/base/4/548 deleted file mode 100644 index 7c6567d5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/548 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/549 b/docker/dify/volumes/db/data/pgdata/base/4/549 deleted file mode 100644 index 26a3887d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/549 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/6102 b/docker/dify/volumes/db/data/pgdata/base/4/6102 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/6104 b/docker/dify/volumes/db/data/pgdata/base/4/6104 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/6106 b/docker/dify/volumes/db/data/pgdata/base/4/6106 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/6110 b/docker/dify/volumes/db/data/pgdata/base/4/6110 deleted file mode 100644 index 42e19200..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/6110 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/6111 b/docker/dify/volumes/db/data/pgdata/base/4/6111 deleted file mode 100644 index d012727d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/6111 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/6112 b/docker/dify/volumes/db/data/pgdata/base/4/6112 deleted file mode 100644 index 293367c2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/6112 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/6113 b/docker/dify/volumes/db/data/pgdata/base/4/6113 deleted file mode 100644 index 542f8faa..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/6113 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/6116 b/docker/dify/volumes/db/data/pgdata/base/4/6116 deleted file mode 100644 index 787d5d18..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/6116 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/6117 b/docker/dify/volumes/db/data/pgdata/base/4/6117 deleted file mode 100644 index 2b5656b2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/6117 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/6175 b/docker/dify/volumes/db/data/pgdata/base/4/6175 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/6176 b/docker/dify/volumes/db/data/pgdata/base/4/6176 deleted file mode 100644 index bfd14df5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/6176 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/6228 b/docker/dify/volumes/db/data/pgdata/base/4/6228 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/6229 b/docker/dify/volumes/db/data/pgdata/base/4/6229 deleted file mode 100644 index 5d03213f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/6229 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/6237 b/docker/dify/volumes/db/data/pgdata/base/4/6237 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/6238 b/docker/dify/volumes/db/data/pgdata/base/4/6238 deleted file mode 100644 index e7c0e8c3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/6238 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/6239 b/docker/dify/volumes/db/data/pgdata/base/4/6239 deleted file mode 100644 index 6c60b507..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/6239 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/826 b/docker/dify/volumes/db/data/pgdata/base/4/826 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/827 b/docker/dify/volumes/db/data/pgdata/base/4/827 deleted file mode 100644 index 94a900ec..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/827 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/828 b/docker/dify/volumes/db/data/pgdata/base/4/828 deleted file mode 100644 index ca304614..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/828 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/4/PG_VERSION b/docker/dify/volumes/db/data/pgdata/base/4/PG_VERSION deleted file mode 100644 index 60d3b2f4..00000000 --- a/docker/dify/volumes/db/data/pgdata/base/4/PG_VERSION +++ /dev/null @@ -1 +0,0 @@ -15 diff --git a/docker/dify/volumes/db/data/pgdata/base/4/pg_filenode.map b/docker/dify/volumes/db/data/pgdata/base/4/pg_filenode.map deleted file mode 100644 index 193d78f3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/4/pg_filenode.map and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/112 b/docker/dify/volumes/db/data/pgdata/base/5/112 deleted file mode 100644 index 784a4c13..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/112 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/113 b/docker/dify/volumes/db/data/pgdata/base/5/113 deleted file mode 100644 index cc2c412b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/113 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/1247 b/docker/dify/volumes/db/data/pgdata/base/5/1247 deleted file mode 100644 index a628646c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/1247 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/1247_fsm b/docker/dify/volumes/db/data/pgdata/base/5/1247_fsm deleted file mode 100644 index d9ff302c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/1247_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/1247_vm b/docker/dify/volumes/db/data/pgdata/base/5/1247_vm deleted file mode 100644 index cb141f85..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/1247_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/1249 b/docker/dify/volumes/db/data/pgdata/base/5/1249 deleted file mode 100644 index 40021b04..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/1249 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/1249_fsm b/docker/dify/volumes/db/data/pgdata/base/5/1249_fsm deleted file mode 100644 index 87def576..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/1249_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/1249_vm b/docker/dify/volumes/db/data/pgdata/base/5/1249_vm deleted file mode 100644 index e7c32f42..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/1249_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/1255 b/docker/dify/volumes/db/data/pgdata/base/5/1255 deleted file mode 100644 index 549acf0e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/1255 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/1255_fsm b/docker/dify/volumes/db/data/pgdata/base/5/1255_fsm deleted file mode 100644 index 5abeaaf2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/1255_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/1255_vm b/docker/dify/volumes/db/data/pgdata/base/5/1255_vm deleted file mode 100644 index 7229f841..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/1255_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/1259 b/docker/dify/volumes/db/data/pgdata/base/5/1259 deleted file mode 100644 index e1e60120..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/1259 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/1259_fsm b/docker/dify/volumes/db/data/pgdata/base/5/1259_fsm deleted file mode 100644 index bb60b307..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/1259_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/1259_vm b/docker/dify/volumes/db/data/pgdata/base/5/1259_vm deleted file mode 100644 index a3f14f7f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/1259_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/13454 b/docker/dify/volumes/db/data/pgdata/base/5/13454 deleted file mode 100644 index d655791d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/13454 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/13454_fsm b/docker/dify/volumes/db/data/pgdata/base/5/13454_fsm deleted file mode 100644 index dff96115..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/13454_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/13454_vm b/docker/dify/volumes/db/data/pgdata/base/5/13454_vm deleted file mode 100644 index 4a8125b5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/13454_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/13457 b/docker/dify/volumes/db/data/pgdata/base/5/13457 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/13458 b/docker/dify/volumes/db/data/pgdata/base/5/13458 deleted file mode 100644 index 3a40f331..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/13458 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/13459 b/docker/dify/volumes/db/data/pgdata/base/5/13459 deleted file mode 100644 index 8199ae15..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/13459 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/13459_fsm b/docker/dify/volumes/db/data/pgdata/base/5/13459_fsm deleted file mode 100644 index 70d16ce4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/13459_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/13459_vm b/docker/dify/volumes/db/data/pgdata/base/5/13459_vm deleted file mode 100644 index b0ecc4c0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/13459_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/13462 b/docker/dify/volumes/db/data/pgdata/base/5/13462 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/13463 b/docker/dify/volumes/db/data/pgdata/base/5/13463 deleted file mode 100644 index fd105eb4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/13463 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/13464 b/docker/dify/volumes/db/data/pgdata/base/5/13464 deleted file mode 100644 index 8c69968b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/13464 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/13464_fsm b/docker/dify/volumes/db/data/pgdata/base/5/13464_fsm deleted file mode 100644 index d388044f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/13464_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/13464_vm b/docker/dify/volumes/db/data/pgdata/base/5/13464_vm deleted file mode 100644 index ea66334c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/13464_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/13467 b/docker/dify/volumes/db/data/pgdata/base/5/13467 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/13468 b/docker/dify/volumes/db/data/pgdata/base/5/13468 deleted file mode 100644 index 3207e9e0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/13468 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/13469 b/docker/dify/volumes/db/data/pgdata/base/5/13469 deleted file mode 100644 index baf18ff8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/13469 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/13469_fsm b/docker/dify/volumes/db/data/pgdata/base/5/13469_fsm deleted file mode 100644 index a836ddf7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/13469_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/13469_vm b/docker/dify/volumes/db/data/pgdata/base/5/13469_vm deleted file mode 100644 index c5da2a3c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/13469_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/13472 b/docker/dify/volumes/db/data/pgdata/base/5/13472 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/13473 b/docker/dify/volumes/db/data/pgdata/base/5/13473 deleted file mode 100644 index 32f23576..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/13473 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/1417 b/docker/dify/volumes/db/data/pgdata/base/5/1417 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/1418 b/docker/dify/volumes/db/data/pgdata/base/5/1418 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/174 b/docker/dify/volumes/db/data/pgdata/base/5/174 deleted file mode 100644 index 2e4cc9f3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/174 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/175 b/docker/dify/volumes/db/data/pgdata/base/5/175 deleted file mode 100644 index 15d51ddc..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/175 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2187 b/docker/dify/volumes/db/data/pgdata/base/5/2187 deleted file mode 100644 index cf6377d2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2187 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2224 b/docker/dify/volumes/db/data/pgdata/base/5/2224 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2228 b/docker/dify/volumes/db/data/pgdata/base/5/2228 deleted file mode 100644 index 738f259a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2228 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2328 b/docker/dify/volumes/db/data/pgdata/base/5/2328 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2336 b/docker/dify/volumes/db/data/pgdata/base/5/2336 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2337 b/docker/dify/volumes/db/data/pgdata/base/5/2337 deleted file mode 100644 index 105af49c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2337 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2579 b/docker/dify/volumes/db/data/pgdata/base/5/2579 deleted file mode 100644 index ae0d53ad..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2579 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2600 b/docker/dify/volumes/db/data/pgdata/base/5/2600 deleted file mode 100644 index a1305d7a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2600 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2600_fsm b/docker/dify/volumes/db/data/pgdata/base/5/2600_fsm deleted file mode 100644 index b8490844..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2600_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2600_vm b/docker/dify/volumes/db/data/pgdata/base/5/2600_vm deleted file mode 100644 index 7fac2cbe..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2600_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2601 b/docker/dify/volumes/db/data/pgdata/base/5/2601 deleted file mode 100644 index d8001c8c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2601 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2601_fsm b/docker/dify/volumes/db/data/pgdata/base/5/2601_fsm deleted file mode 100644 index d388044f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2601_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2601_vm b/docker/dify/volumes/db/data/pgdata/base/5/2601_vm deleted file mode 100644 index eb2d0155..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2601_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2602 b/docker/dify/volumes/db/data/pgdata/base/5/2602 deleted file mode 100644 index 4a27b0a3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2602 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2602_fsm b/docker/dify/volumes/db/data/pgdata/base/5/2602_fsm deleted file mode 100644 index 23170d85..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2602_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2602_vm b/docker/dify/volumes/db/data/pgdata/base/5/2602_vm deleted file mode 100644 index b7e83c3c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2602_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2603 b/docker/dify/volumes/db/data/pgdata/base/5/2603 deleted file mode 100644 index d511af56..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2603 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2603_fsm b/docker/dify/volumes/db/data/pgdata/base/5/2603_fsm deleted file mode 100644 index 949bd18f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2603_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2603_vm b/docker/dify/volumes/db/data/pgdata/base/5/2603_vm deleted file mode 100644 index f073a603..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2603_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2604 b/docker/dify/volumes/db/data/pgdata/base/5/2604 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2605 b/docker/dify/volumes/db/data/pgdata/base/5/2605 deleted file mode 100644 index eeaa7eaa..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2605 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2605_fsm b/docker/dify/volumes/db/data/pgdata/base/5/2605_fsm deleted file mode 100644 index f3b92bf7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2605_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2605_vm b/docker/dify/volumes/db/data/pgdata/base/5/2605_vm deleted file mode 100644 index 85d1e841..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2605_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2606 b/docker/dify/volumes/db/data/pgdata/base/5/2606 deleted file mode 100644 index 4737fa77..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2606 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2606_fsm b/docker/dify/volumes/db/data/pgdata/base/5/2606_fsm deleted file mode 100644 index 286dd813..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2606_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2606_vm b/docker/dify/volumes/db/data/pgdata/base/5/2606_vm deleted file mode 100644 index 86bc6bf5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2606_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2607 b/docker/dify/volumes/db/data/pgdata/base/5/2607 deleted file mode 100644 index bfad49ae..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2607 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2607_fsm b/docker/dify/volumes/db/data/pgdata/base/5/2607_fsm deleted file mode 100644 index 80ac8b14..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2607_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2607_vm b/docker/dify/volumes/db/data/pgdata/base/5/2607_vm deleted file mode 100644 index c0a22c62..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2607_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2608 b/docker/dify/volumes/db/data/pgdata/base/5/2608 deleted file mode 100644 index e75c37b5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2608 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2608_fsm b/docker/dify/volumes/db/data/pgdata/base/5/2608_fsm deleted file mode 100644 index 6ba89a46..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2608_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2608_vm b/docker/dify/volumes/db/data/pgdata/base/5/2608_vm deleted file mode 100644 index 9a21eb75..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2608_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2609 b/docker/dify/volumes/db/data/pgdata/base/5/2609 deleted file mode 100644 index 2983f4db..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2609 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2609_fsm b/docker/dify/volumes/db/data/pgdata/base/5/2609_fsm deleted file mode 100644 index 11f989b1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2609_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2609_vm b/docker/dify/volumes/db/data/pgdata/base/5/2609_vm deleted file mode 100644 index 61b91943..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2609_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2610 b/docker/dify/volumes/db/data/pgdata/base/5/2610 deleted file mode 100644 index 8251aeb8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2610 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2610_fsm b/docker/dify/volumes/db/data/pgdata/base/5/2610_fsm deleted file mode 100644 index dbd22e1f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2610_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2610_vm b/docker/dify/volumes/db/data/pgdata/base/5/2610_vm deleted file mode 100644 index 25f58e1c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2610_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2611 b/docker/dify/volumes/db/data/pgdata/base/5/2611 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2612 b/docker/dify/volumes/db/data/pgdata/base/5/2612 deleted file mode 100644 index c39ab4d5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2612 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2612_fsm b/docker/dify/volumes/db/data/pgdata/base/5/2612_fsm deleted file mode 100644 index 877976ac..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2612_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2612_vm b/docker/dify/volumes/db/data/pgdata/base/5/2612_vm deleted file mode 100644 index ef0dbfff..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2612_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2613 b/docker/dify/volumes/db/data/pgdata/base/5/2613 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2615 b/docker/dify/volumes/db/data/pgdata/base/5/2615 deleted file mode 100644 index db72cea7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2615 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2615_fsm b/docker/dify/volumes/db/data/pgdata/base/5/2615_fsm deleted file mode 100644 index d041693e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2615_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2615_vm b/docker/dify/volumes/db/data/pgdata/base/5/2615_vm deleted file mode 100644 index 233f9690..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2615_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2616 b/docker/dify/volumes/db/data/pgdata/base/5/2616 deleted file mode 100644 index 0d60d797..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2616 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2616_fsm b/docker/dify/volumes/db/data/pgdata/base/5/2616_fsm deleted file mode 100644 index cb924c95..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2616_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2616_vm b/docker/dify/volumes/db/data/pgdata/base/5/2616_vm deleted file mode 100644 index e704cec7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2616_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2617 b/docker/dify/volumes/db/data/pgdata/base/5/2617 deleted file mode 100644 index bcdfc183..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2617 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2617_fsm b/docker/dify/volumes/db/data/pgdata/base/5/2617_fsm deleted file mode 100644 index 29d60666..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2617_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2617_vm b/docker/dify/volumes/db/data/pgdata/base/5/2617_vm deleted file mode 100644 index 6db4a14c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2617_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2618 b/docker/dify/volumes/db/data/pgdata/base/5/2618 deleted file mode 100644 index 230b6370..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2618 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2618_fsm b/docker/dify/volumes/db/data/pgdata/base/5/2618_fsm deleted file mode 100644 index e162e372..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2618_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2618_vm b/docker/dify/volumes/db/data/pgdata/base/5/2618_vm deleted file mode 100644 index 7ad7e690..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2618_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2619 b/docker/dify/volumes/db/data/pgdata/base/5/2619 deleted file mode 100644 index 9c1962ec..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2619 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2619_fsm b/docker/dify/volumes/db/data/pgdata/base/5/2619_fsm deleted file mode 100644 index e2307747..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2619_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2619_vm b/docker/dify/volumes/db/data/pgdata/base/5/2619_vm deleted file mode 100644 index c3fffd9e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2619_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2620 b/docker/dify/volumes/db/data/pgdata/base/5/2620 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2650 b/docker/dify/volumes/db/data/pgdata/base/5/2650 deleted file mode 100644 index 32ff8a16..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2650 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2651 b/docker/dify/volumes/db/data/pgdata/base/5/2651 deleted file mode 100644 index cff86c74..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2651 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2652 b/docker/dify/volumes/db/data/pgdata/base/5/2652 deleted file mode 100644 index ab53706f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2652 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2653 b/docker/dify/volumes/db/data/pgdata/base/5/2653 deleted file mode 100644 index 86b08571..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2653 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2654 b/docker/dify/volumes/db/data/pgdata/base/5/2654 deleted file mode 100644 index 095a4fd5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2654 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2655 b/docker/dify/volumes/db/data/pgdata/base/5/2655 deleted file mode 100644 index 4b4b3cc6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2655 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2656 b/docker/dify/volumes/db/data/pgdata/base/5/2656 deleted file mode 100644 index 2fd9a71f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2656 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2657 b/docker/dify/volumes/db/data/pgdata/base/5/2657 deleted file mode 100644 index d0384dc6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2657 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2658 b/docker/dify/volumes/db/data/pgdata/base/5/2658 deleted file mode 100644 index 2777e797..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2658 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2659 b/docker/dify/volumes/db/data/pgdata/base/5/2659 deleted file mode 100644 index dd90e168..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2659 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2660 b/docker/dify/volumes/db/data/pgdata/base/5/2660 deleted file mode 100644 index fd66d228..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2660 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2661 b/docker/dify/volumes/db/data/pgdata/base/5/2661 deleted file mode 100644 index 3c62a6fd..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2661 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2662 b/docker/dify/volumes/db/data/pgdata/base/5/2662 deleted file mode 100644 index b09801b1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2662 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2663 b/docker/dify/volumes/db/data/pgdata/base/5/2663 deleted file mode 100644 index 1fe3a98d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2663 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2664 b/docker/dify/volumes/db/data/pgdata/base/5/2664 deleted file mode 100644 index a7761ead..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2664 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2665 b/docker/dify/volumes/db/data/pgdata/base/5/2665 deleted file mode 100644 index 024d2917..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2665 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2666 b/docker/dify/volumes/db/data/pgdata/base/5/2666 deleted file mode 100644 index 55842a3c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2666 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2667 b/docker/dify/volumes/db/data/pgdata/base/5/2667 deleted file mode 100644 index 40aa4997..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2667 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2668 b/docker/dify/volumes/db/data/pgdata/base/5/2668 deleted file mode 100644 index 8ca1619c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2668 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2669 b/docker/dify/volumes/db/data/pgdata/base/5/2669 deleted file mode 100644 index b13c3353..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2669 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2670 b/docker/dify/volumes/db/data/pgdata/base/5/2670 deleted file mode 100644 index 936feee6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2670 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2673 b/docker/dify/volumes/db/data/pgdata/base/5/2673 deleted file mode 100644 index e431d106..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2673 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2674 b/docker/dify/volumes/db/data/pgdata/base/5/2674 deleted file mode 100644 index 24e0beb2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2674 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2675 b/docker/dify/volumes/db/data/pgdata/base/5/2675 deleted file mode 100644 index 91709217..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2675 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2678 b/docker/dify/volumes/db/data/pgdata/base/5/2678 deleted file mode 100644 index c718c7a0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2678 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2679 b/docker/dify/volumes/db/data/pgdata/base/5/2679 deleted file mode 100644 index b296d1cb..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2679 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2680 b/docker/dify/volumes/db/data/pgdata/base/5/2680 deleted file mode 100644 index 0d352e91..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2680 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2681 b/docker/dify/volumes/db/data/pgdata/base/5/2681 deleted file mode 100644 index b13b323c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2681 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2682 b/docker/dify/volumes/db/data/pgdata/base/5/2682 deleted file mode 100644 index 3141bcdc..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2682 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2683 b/docker/dify/volumes/db/data/pgdata/base/5/2683 deleted file mode 100644 index 117ee7ae..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2683 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2684 b/docker/dify/volumes/db/data/pgdata/base/5/2684 deleted file mode 100644 index 05092ecb..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2684 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2685 b/docker/dify/volumes/db/data/pgdata/base/5/2685 deleted file mode 100644 index 5bf0c30f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2685 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2686 b/docker/dify/volumes/db/data/pgdata/base/5/2686 deleted file mode 100644 index 3054a565..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2686 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2687 b/docker/dify/volumes/db/data/pgdata/base/5/2687 deleted file mode 100644 index 349490ed..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2687 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2688 b/docker/dify/volumes/db/data/pgdata/base/5/2688 deleted file mode 100644 index f00cec25..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2688 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2689 b/docker/dify/volumes/db/data/pgdata/base/5/2689 deleted file mode 100644 index 8329829d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2689 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2690 b/docker/dify/volumes/db/data/pgdata/base/5/2690 deleted file mode 100644 index 09176d40..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2690 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2691 b/docker/dify/volumes/db/data/pgdata/base/5/2691 deleted file mode 100644 index 6e60d7f1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2691 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2692 b/docker/dify/volumes/db/data/pgdata/base/5/2692 deleted file mode 100644 index c7e275c1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2692 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2693 b/docker/dify/volumes/db/data/pgdata/base/5/2693 deleted file mode 100644 index f6aef2f5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2693 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2696 b/docker/dify/volumes/db/data/pgdata/base/5/2696 deleted file mode 100644 index 08f217f3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2696 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2699 b/docker/dify/volumes/db/data/pgdata/base/5/2699 deleted file mode 100644 index 4a755207..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2699 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2701 b/docker/dify/volumes/db/data/pgdata/base/5/2701 deleted file mode 100644 index 82f5cd0e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2701 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2702 b/docker/dify/volumes/db/data/pgdata/base/5/2702 deleted file mode 100644 index 2d6a98c2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2702 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2703 b/docker/dify/volumes/db/data/pgdata/base/5/2703 deleted file mode 100644 index 01c87ae8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2703 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2704 b/docker/dify/volumes/db/data/pgdata/base/5/2704 deleted file mode 100644 index c3f65000..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2704 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2753 b/docker/dify/volumes/db/data/pgdata/base/5/2753 deleted file mode 100644 index 3c16dff6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2753 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2753_fsm b/docker/dify/volumes/db/data/pgdata/base/5/2753_fsm deleted file mode 100644 index 642bce3b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2753_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2753_vm b/docker/dify/volumes/db/data/pgdata/base/5/2753_vm deleted file mode 100644 index 72c3e6de..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2753_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2754 b/docker/dify/volumes/db/data/pgdata/base/5/2754 deleted file mode 100644 index bdd4d527..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2754 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2755 b/docker/dify/volumes/db/data/pgdata/base/5/2755 deleted file mode 100644 index fd5d56a2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2755 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2756 b/docker/dify/volumes/db/data/pgdata/base/5/2756 deleted file mode 100644 index 6a044745..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2756 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2757 b/docker/dify/volumes/db/data/pgdata/base/5/2757 deleted file mode 100644 index 8f9ccdf0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2757 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2830 b/docker/dify/volumes/db/data/pgdata/base/5/2830 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2831 b/docker/dify/volumes/db/data/pgdata/base/5/2831 deleted file mode 100644 index c0a407a0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2831 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2832 b/docker/dify/volumes/db/data/pgdata/base/5/2832 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2833 b/docker/dify/volumes/db/data/pgdata/base/5/2833 deleted file mode 100644 index eea5df63..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2833 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2834 b/docker/dify/volumes/db/data/pgdata/base/5/2834 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2835 b/docker/dify/volumes/db/data/pgdata/base/5/2835 deleted file mode 100644 index 8aad1359..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2835 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2836 b/docker/dify/volumes/db/data/pgdata/base/5/2836 deleted file mode 100644 index 5c9f07f8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2836 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2836_fsm b/docker/dify/volumes/db/data/pgdata/base/5/2836_fsm deleted file mode 100644 index 6e81497f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2836_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2836_vm b/docker/dify/volumes/db/data/pgdata/base/5/2836_vm deleted file mode 100644 index 5e43ad13..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2836_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2837 b/docker/dify/volumes/db/data/pgdata/base/5/2837 deleted file mode 100644 index 888d3af3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2837 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2838 b/docker/dify/volumes/db/data/pgdata/base/5/2838 deleted file mode 100644 index e59ce108..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2838 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2838_fsm b/docker/dify/volumes/db/data/pgdata/base/5/2838_fsm deleted file mode 100644 index a9b1e030..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2838_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2838_vm b/docker/dify/volumes/db/data/pgdata/base/5/2838_vm deleted file mode 100644 index cf7d8c70..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2838_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2839 b/docker/dify/volumes/db/data/pgdata/base/5/2839 deleted file mode 100644 index 1e07360f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2839 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2840 b/docker/dify/volumes/db/data/pgdata/base/5/2840 deleted file mode 100644 index 9d275557..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2840 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2840_fsm b/docker/dify/volumes/db/data/pgdata/base/5/2840_fsm deleted file mode 100644 index 36ee51aa..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2840_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2840_vm b/docker/dify/volumes/db/data/pgdata/base/5/2840_vm deleted file mode 100644 index 4857429b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2840_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2841 b/docker/dify/volumes/db/data/pgdata/base/5/2841 deleted file mode 100644 index f524a491..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2841 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2995 b/docker/dify/volumes/db/data/pgdata/base/5/2995 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/2996 b/docker/dify/volumes/db/data/pgdata/base/5/2996 deleted file mode 100644 index 170333a4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/2996 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3079 b/docker/dify/volumes/db/data/pgdata/base/5/3079 deleted file mode 100644 index 06243ba7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3079 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3079_fsm b/docker/dify/volumes/db/data/pgdata/base/5/3079_fsm deleted file mode 100644 index 7732d22b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3079_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3079_vm b/docker/dify/volumes/db/data/pgdata/base/5/3079_vm deleted file mode 100644 index f6c15836..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3079_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3080 b/docker/dify/volumes/db/data/pgdata/base/5/3080 deleted file mode 100644 index e6b1f43e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3080 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3081 b/docker/dify/volumes/db/data/pgdata/base/5/3081 deleted file mode 100644 index b9fb15c0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3081 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3085 b/docker/dify/volumes/db/data/pgdata/base/5/3085 deleted file mode 100644 index e640c6e8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3085 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3118 b/docker/dify/volumes/db/data/pgdata/base/5/3118 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3119 b/docker/dify/volumes/db/data/pgdata/base/5/3119 deleted file mode 100644 index db2bde09..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3119 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3164 b/docker/dify/volumes/db/data/pgdata/base/5/3164 deleted file mode 100644 index f493af70..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3164 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3256 b/docker/dify/volumes/db/data/pgdata/base/5/3256 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3257 b/docker/dify/volumes/db/data/pgdata/base/5/3257 deleted file mode 100644 index 64787da2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3257 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3258 b/docker/dify/volumes/db/data/pgdata/base/5/3258 deleted file mode 100644 index 09abe9b9..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3258 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3350 b/docker/dify/volumes/db/data/pgdata/base/5/3350 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3351 b/docker/dify/volumes/db/data/pgdata/base/5/3351 deleted file mode 100644 index 2bfef7fb..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3351 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3379 b/docker/dify/volumes/db/data/pgdata/base/5/3379 deleted file mode 100644 index caced87c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3379 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3380 b/docker/dify/volumes/db/data/pgdata/base/5/3380 deleted file mode 100644 index 55d6862d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3380 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3381 b/docker/dify/volumes/db/data/pgdata/base/5/3381 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3394 b/docker/dify/volumes/db/data/pgdata/base/5/3394 deleted file mode 100644 index 71374fc7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3394 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3394_fsm b/docker/dify/volumes/db/data/pgdata/base/5/3394_fsm deleted file mode 100644 index 9622a2f0..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3394_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3394_vm b/docker/dify/volumes/db/data/pgdata/base/5/3394_vm deleted file mode 100644 index d6dbec86..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3394_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3395 b/docker/dify/volumes/db/data/pgdata/base/5/3395 deleted file mode 100644 index c31f4b0b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3395 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3429 b/docker/dify/volumes/db/data/pgdata/base/5/3429 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3430 b/docker/dify/volumes/db/data/pgdata/base/5/3430 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3431 b/docker/dify/volumes/db/data/pgdata/base/5/3431 deleted file mode 100644 index ce872ee1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3431 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3433 b/docker/dify/volumes/db/data/pgdata/base/5/3433 deleted file mode 100644 index 68ea223e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3433 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3439 b/docker/dify/volumes/db/data/pgdata/base/5/3439 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3440 b/docker/dify/volumes/db/data/pgdata/base/5/3440 deleted file mode 100644 index 0545e4bb..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3440 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3455 b/docker/dify/volumes/db/data/pgdata/base/5/3455 deleted file mode 100644 index 0767e59f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3455 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3456 b/docker/dify/volumes/db/data/pgdata/base/5/3456 deleted file mode 100644 index 1f4db93b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3456 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3456_fsm b/docker/dify/volumes/db/data/pgdata/base/5/3456_fsm deleted file mode 100644 index 8f765c68..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3456_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3456_vm b/docker/dify/volumes/db/data/pgdata/base/5/3456_vm deleted file mode 100644 index c0a04f4d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3456_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3466 b/docker/dify/volumes/db/data/pgdata/base/5/3466 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3467 b/docker/dify/volumes/db/data/pgdata/base/5/3467 deleted file mode 100644 index c7016e10..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3467 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3468 b/docker/dify/volumes/db/data/pgdata/base/5/3468 deleted file mode 100644 index fab333bd..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3468 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3501 b/docker/dify/volumes/db/data/pgdata/base/5/3501 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3502 b/docker/dify/volumes/db/data/pgdata/base/5/3502 deleted file mode 100644 index ece495c9..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3502 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3503 b/docker/dify/volumes/db/data/pgdata/base/5/3503 deleted file mode 100644 index 53f9b69e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3503 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3534 b/docker/dify/volumes/db/data/pgdata/base/5/3534 deleted file mode 100644 index 11fad3bb..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3534 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3541 b/docker/dify/volumes/db/data/pgdata/base/5/3541 deleted file mode 100644 index 40869ad3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3541 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3541_fsm b/docker/dify/volumes/db/data/pgdata/base/5/3541_fsm deleted file mode 100644 index a3a2de4d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3541_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3541_vm b/docker/dify/volumes/db/data/pgdata/base/5/3541_vm deleted file mode 100644 index 51f0e82e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3541_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3542 b/docker/dify/volumes/db/data/pgdata/base/5/3542 deleted file mode 100644 index ced00669..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3542 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3574 b/docker/dify/volumes/db/data/pgdata/base/5/3574 deleted file mode 100644 index b026df10..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3574 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3575 b/docker/dify/volumes/db/data/pgdata/base/5/3575 deleted file mode 100644 index bdec5326..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3575 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3576 b/docker/dify/volumes/db/data/pgdata/base/5/3576 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3596 b/docker/dify/volumes/db/data/pgdata/base/5/3596 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3597 b/docker/dify/volumes/db/data/pgdata/base/5/3597 deleted file mode 100644 index 08855a4d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3597 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3598 b/docker/dify/volumes/db/data/pgdata/base/5/3598 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3599 b/docker/dify/volumes/db/data/pgdata/base/5/3599 deleted file mode 100644 index aaf38926..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3599 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3600 b/docker/dify/volumes/db/data/pgdata/base/5/3600 deleted file mode 100644 index a125931a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3600 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3600_fsm b/docker/dify/volumes/db/data/pgdata/base/5/3600_fsm deleted file mode 100644 index cebec199..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3600_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3600_vm b/docker/dify/volumes/db/data/pgdata/base/5/3600_vm deleted file mode 100644 index b9fcd6a9..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3600_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3601 b/docker/dify/volumes/db/data/pgdata/base/5/3601 deleted file mode 100644 index 04c846ec..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3601 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3601_fsm b/docker/dify/volumes/db/data/pgdata/base/5/3601_fsm deleted file mode 100644 index 7732d22b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3601_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3601_vm b/docker/dify/volumes/db/data/pgdata/base/5/3601_vm deleted file mode 100644 index 3db367e2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3601_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3602 b/docker/dify/volumes/db/data/pgdata/base/5/3602 deleted file mode 100644 index 265567f1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3602 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3602_fsm b/docker/dify/volumes/db/data/pgdata/base/5/3602_fsm deleted file mode 100644 index d7897de2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3602_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3602_vm b/docker/dify/volumes/db/data/pgdata/base/5/3602_vm deleted file mode 100644 index 9b4d7923..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3602_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3603 b/docker/dify/volumes/db/data/pgdata/base/5/3603 deleted file mode 100644 index 1b0d6cf3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3603 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3603_fsm b/docker/dify/volumes/db/data/pgdata/base/5/3603_fsm deleted file mode 100644 index c28dd4fa..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3603_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3603_vm b/docker/dify/volumes/db/data/pgdata/base/5/3603_vm deleted file mode 100644 index 102cff1b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3603_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3604 b/docker/dify/volumes/db/data/pgdata/base/5/3604 deleted file mode 100644 index 5aad5993..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3604 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3605 b/docker/dify/volumes/db/data/pgdata/base/5/3605 deleted file mode 100644 index 9f8d1fe7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3605 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3606 b/docker/dify/volumes/db/data/pgdata/base/5/3606 deleted file mode 100644 index abe7a1cf..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3606 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3607 b/docker/dify/volumes/db/data/pgdata/base/5/3607 deleted file mode 100644 index e3a3bbc6..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3607 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3608 b/docker/dify/volumes/db/data/pgdata/base/5/3608 deleted file mode 100644 index 88266dac..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3608 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3609 b/docker/dify/volumes/db/data/pgdata/base/5/3609 deleted file mode 100644 index 5ff24567..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3609 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3712 b/docker/dify/volumes/db/data/pgdata/base/5/3712 deleted file mode 100644 index aa23ee97..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3712 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3764 b/docker/dify/volumes/db/data/pgdata/base/5/3764 deleted file mode 100644 index 1c794036..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3764 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3764_fsm b/docker/dify/volumes/db/data/pgdata/base/5/3764_fsm deleted file mode 100644 index f64db4df..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3764_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3764_vm b/docker/dify/volumes/db/data/pgdata/base/5/3764_vm deleted file mode 100644 index d7118cad..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3764_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3766 b/docker/dify/volumes/db/data/pgdata/base/5/3766 deleted file mode 100644 index c4134620..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3766 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3767 b/docker/dify/volumes/db/data/pgdata/base/5/3767 deleted file mode 100644 index 6cbae02d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3767 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/3997 b/docker/dify/volumes/db/data/pgdata/base/5/3997 deleted file mode 100644 index 8969d818..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/3997 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/4143 b/docker/dify/volumes/db/data/pgdata/base/5/4143 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/4144 b/docker/dify/volumes/db/data/pgdata/base/5/4144 deleted file mode 100644 index 5188a14b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/4144 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/4145 b/docker/dify/volumes/db/data/pgdata/base/5/4145 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/4146 b/docker/dify/volumes/db/data/pgdata/base/5/4146 deleted file mode 100644 index 957732fc..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/4146 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/4147 b/docker/dify/volumes/db/data/pgdata/base/5/4147 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/4148 b/docker/dify/volumes/db/data/pgdata/base/5/4148 deleted file mode 100644 index 9c7057c3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/4148 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/4149 b/docker/dify/volumes/db/data/pgdata/base/5/4149 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/4150 b/docker/dify/volumes/db/data/pgdata/base/5/4150 deleted file mode 100644 index 390d428a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/4150 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/4151 b/docker/dify/volumes/db/data/pgdata/base/5/4151 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/4152 b/docker/dify/volumes/db/data/pgdata/base/5/4152 deleted file mode 100644 index 1a289fd8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/4152 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/4153 b/docker/dify/volumes/db/data/pgdata/base/5/4153 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/4154 b/docker/dify/volumes/db/data/pgdata/base/5/4154 deleted file mode 100644 index d0d1ca59..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/4154 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/4155 b/docker/dify/volumes/db/data/pgdata/base/5/4155 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/4156 b/docker/dify/volumes/db/data/pgdata/base/5/4156 deleted file mode 100644 index 5b4bf370..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/4156 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/4157 b/docker/dify/volumes/db/data/pgdata/base/5/4157 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/4158 b/docker/dify/volumes/db/data/pgdata/base/5/4158 deleted file mode 100644 index 937d3d28..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/4158 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/4159 b/docker/dify/volumes/db/data/pgdata/base/5/4159 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/4160 b/docker/dify/volumes/db/data/pgdata/base/5/4160 deleted file mode 100644 index d10cfd60..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/4160 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/4163 b/docker/dify/volumes/db/data/pgdata/base/5/4163 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/4164 b/docker/dify/volumes/db/data/pgdata/base/5/4164 deleted file mode 100644 index a94c963f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/4164 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/4165 b/docker/dify/volumes/db/data/pgdata/base/5/4165 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/4166 b/docker/dify/volumes/db/data/pgdata/base/5/4166 deleted file mode 100644 index 2229586f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/4166 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/4167 b/docker/dify/volumes/db/data/pgdata/base/5/4167 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/4168 b/docker/dify/volumes/db/data/pgdata/base/5/4168 deleted file mode 100644 index 472740b9..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/4168 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/4169 b/docker/dify/volumes/db/data/pgdata/base/5/4169 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/4170 b/docker/dify/volumes/db/data/pgdata/base/5/4170 deleted file mode 100644 index 88d09b3d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/4170 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/4171 b/docker/dify/volumes/db/data/pgdata/base/5/4171 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/4172 b/docker/dify/volumes/db/data/pgdata/base/5/4172 deleted file mode 100644 index 3eed1ee2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/4172 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/4173 b/docker/dify/volumes/db/data/pgdata/base/5/4173 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/4174 b/docker/dify/volumes/db/data/pgdata/base/5/4174 deleted file mode 100644 index a0819a24..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/4174 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/5002 b/docker/dify/volumes/db/data/pgdata/base/5/5002 deleted file mode 100644 index aefa40dd..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/5002 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/548 b/docker/dify/volumes/db/data/pgdata/base/5/548 deleted file mode 100644 index 7c6567d5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/548 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/549 b/docker/dify/volumes/db/data/pgdata/base/5/549 deleted file mode 100644 index 26a3887d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/549 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/6102 b/docker/dify/volumes/db/data/pgdata/base/5/6102 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/6104 b/docker/dify/volumes/db/data/pgdata/base/5/6104 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/6106 b/docker/dify/volumes/db/data/pgdata/base/5/6106 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/6110 b/docker/dify/volumes/db/data/pgdata/base/5/6110 deleted file mode 100644 index 42e19200..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/6110 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/6111 b/docker/dify/volumes/db/data/pgdata/base/5/6111 deleted file mode 100644 index d012727d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/6111 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/6112 b/docker/dify/volumes/db/data/pgdata/base/5/6112 deleted file mode 100644 index 293367c2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/6112 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/6113 b/docker/dify/volumes/db/data/pgdata/base/5/6113 deleted file mode 100644 index 542f8faa..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/6113 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/6116 b/docker/dify/volumes/db/data/pgdata/base/5/6116 deleted file mode 100644 index 787d5d18..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/6116 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/6117 b/docker/dify/volumes/db/data/pgdata/base/5/6117 deleted file mode 100644 index 2b5656b2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/6117 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/6175 b/docker/dify/volumes/db/data/pgdata/base/5/6175 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/6176 b/docker/dify/volumes/db/data/pgdata/base/5/6176 deleted file mode 100644 index bfd14df5..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/6176 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/6228 b/docker/dify/volumes/db/data/pgdata/base/5/6228 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/6229 b/docker/dify/volumes/db/data/pgdata/base/5/6229 deleted file mode 100644 index 5d03213f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/6229 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/6237 b/docker/dify/volumes/db/data/pgdata/base/5/6237 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/6238 b/docker/dify/volumes/db/data/pgdata/base/5/6238 deleted file mode 100644 index e7c0e8c3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/6238 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/6239 b/docker/dify/volumes/db/data/pgdata/base/5/6239 deleted file mode 100644 index 6c60b507..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/6239 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/826 b/docker/dify/volumes/db/data/pgdata/base/5/826 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/827 b/docker/dify/volumes/db/data/pgdata/base/5/827 deleted file mode 100644 index 94a900ec..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/827 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/828 b/docker/dify/volumes/db/data/pgdata/base/5/828 deleted file mode 100644 index ca304614..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/828 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/base/5/PG_VERSION b/docker/dify/volumes/db/data/pgdata/base/5/PG_VERSION deleted file mode 100644 index 60d3b2f4..00000000 --- a/docker/dify/volumes/db/data/pgdata/base/5/PG_VERSION +++ /dev/null @@ -1 +0,0 @@ -15 diff --git a/docker/dify/volumes/db/data/pgdata/base/5/pg_filenode.map b/docker/dify/volumes/db/data/pgdata/base/5/pg_filenode.map deleted file mode 100644 index 193d78f3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/base/5/pg_filenode.map and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/1213 b/docker/dify/volumes/db/data/pgdata/global/1213 deleted file mode 100644 index eec8dc3a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/1213 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/1213_fsm b/docker/dify/volumes/db/data/pgdata/global/1213_fsm deleted file mode 100644 index 86074bee..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/1213_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/1213_vm b/docker/dify/volumes/db/data/pgdata/global/1213_vm deleted file mode 100644 index 0127b2c2..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/1213_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/1214 b/docker/dify/volumes/db/data/pgdata/global/1214 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/global/1232 b/docker/dify/volumes/db/data/pgdata/global/1232 deleted file mode 100644 index 3e5cf63e..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/1232 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/1233 b/docker/dify/volumes/db/data/pgdata/global/1233 deleted file mode 100644 index 91d2811a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/1233 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/1260 b/docker/dify/volumes/db/data/pgdata/global/1260 deleted file mode 100644 index 7f3852d7..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/1260 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/1260_fsm b/docker/dify/volumes/db/data/pgdata/global/1260_fsm deleted file mode 100644 index 2b8ab958..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/1260_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/1260_vm b/docker/dify/volumes/db/data/pgdata/global/1260_vm deleted file mode 100644 index 04b5c973..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/1260_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/1261 b/docker/dify/volumes/db/data/pgdata/global/1261 deleted file mode 100644 index 74e84dfb..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/1261 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/1261_fsm b/docker/dify/volumes/db/data/pgdata/global/1261_fsm deleted file mode 100644 index 7732d22b..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/1261_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/1261_vm b/docker/dify/volumes/db/data/pgdata/global/1261_vm deleted file mode 100644 index 2cde0c13..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/1261_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/1262 b/docker/dify/volumes/db/data/pgdata/global/1262 deleted file mode 100644 index 0674dd12..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/1262 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/1262_fsm b/docker/dify/volumes/db/data/pgdata/global/1262_fsm deleted file mode 100644 index 479fd945..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/1262_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/1262_vm b/docker/dify/volumes/db/data/pgdata/global/1262_vm deleted file mode 100644 index b21c9c63..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/1262_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/2396 b/docker/dify/volumes/db/data/pgdata/global/2396 deleted file mode 100644 index 124ab82f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/2396 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/2396_fsm b/docker/dify/volumes/db/data/pgdata/global/2396_fsm deleted file mode 100644 index 7a4f24f3..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/2396_fsm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/2396_vm b/docker/dify/volumes/db/data/pgdata/global/2396_vm deleted file mode 100644 index d2a61698..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/2396_vm and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/2397 b/docker/dify/volumes/db/data/pgdata/global/2397 deleted file mode 100644 index c9899db9..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/2397 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/2671 b/docker/dify/volumes/db/data/pgdata/global/2671 deleted file mode 100644 index 85412098..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/2671 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/2672 b/docker/dify/volumes/db/data/pgdata/global/2672 deleted file mode 100644 index a2b19a7a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/2672 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/2676 b/docker/dify/volumes/db/data/pgdata/global/2676 deleted file mode 100644 index 175554fc..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/2676 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/2677 b/docker/dify/volumes/db/data/pgdata/global/2677 deleted file mode 100644 index 8f085eec..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/2677 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/2694 b/docker/dify/volumes/db/data/pgdata/global/2694 deleted file mode 100644 index cae0c8ba..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/2694 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/2695 b/docker/dify/volumes/db/data/pgdata/global/2695 deleted file mode 100644 index 54705ac4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/2695 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/2697 b/docker/dify/volumes/db/data/pgdata/global/2697 deleted file mode 100644 index 1de07c0a..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/2697 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/2698 b/docker/dify/volumes/db/data/pgdata/global/2698 deleted file mode 100644 index a2d3b04c..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/2698 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/2846 b/docker/dify/volumes/db/data/pgdata/global/2846 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/global/2847 b/docker/dify/volumes/db/data/pgdata/global/2847 deleted file mode 100644 index a7e1c4c8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/2847 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/2964 b/docker/dify/volumes/db/data/pgdata/global/2964 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/global/2965 b/docker/dify/volumes/db/data/pgdata/global/2965 deleted file mode 100644 index edfba802..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/2965 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/2966 b/docker/dify/volumes/db/data/pgdata/global/2966 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/global/2967 b/docker/dify/volumes/db/data/pgdata/global/2967 deleted file mode 100644 index 9f233b57..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/2967 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/3592 b/docker/dify/volumes/db/data/pgdata/global/3592 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/global/3593 b/docker/dify/volumes/db/data/pgdata/global/3593 deleted file mode 100644 index 002e585d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/3593 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/4060 b/docker/dify/volumes/db/data/pgdata/global/4060 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/global/4061 b/docker/dify/volumes/db/data/pgdata/global/4061 deleted file mode 100644 index f8d18447..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/4061 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/4175 b/docker/dify/volumes/db/data/pgdata/global/4175 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/global/4176 b/docker/dify/volumes/db/data/pgdata/global/4176 deleted file mode 100644 index a6db5e64..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/4176 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/4177 b/docker/dify/volumes/db/data/pgdata/global/4177 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/global/4178 b/docker/dify/volumes/db/data/pgdata/global/4178 deleted file mode 100644 index 8ab3ab33..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/4178 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/4181 b/docker/dify/volumes/db/data/pgdata/global/4181 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/global/4182 b/docker/dify/volumes/db/data/pgdata/global/4182 deleted file mode 100644 index b619552f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/4182 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/4183 b/docker/dify/volumes/db/data/pgdata/global/4183 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/global/4184 b/docker/dify/volumes/db/data/pgdata/global/4184 deleted file mode 100644 index 37e78b95..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/4184 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/4185 b/docker/dify/volumes/db/data/pgdata/global/4185 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/global/4186 b/docker/dify/volumes/db/data/pgdata/global/4186 deleted file mode 100644 index f988a8f8..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/4186 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/6000 b/docker/dify/volumes/db/data/pgdata/global/6000 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/global/6001 b/docker/dify/volumes/db/data/pgdata/global/6001 deleted file mode 100644 index 06b46290..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/6001 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/6002 b/docker/dify/volumes/db/data/pgdata/global/6002 deleted file mode 100644 index e7ddd6b1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/6002 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/6100 b/docker/dify/volumes/db/data/pgdata/global/6100 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/global/6114 b/docker/dify/volumes/db/data/pgdata/global/6114 deleted file mode 100644 index bf887fa4..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/6114 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/6115 b/docker/dify/volumes/db/data/pgdata/global/6115 deleted file mode 100644 index afafca81..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/6115 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/6243 b/docker/dify/volumes/db/data/pgdata/global/6243 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/global/6244 b/docker/dify/volumes/db/data/pgdata/global/6244 deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/dify/volumes/db/data/pgdata/global/6245 b/docker/dify/volumes/db/data/pgdata/global/6245 deleted file mode 100644 index f1dfb7e9..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/6245 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/6246 b/docker/dify/volumes/db/data/pgdata/global/6246 deleted file mode 100644 index 084bf179..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/6246 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/6247 b/docker/dify/volumes/db/data/pgdata/global/6247 deleted file mode 100644 index 514ffb04..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/6247 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/pg_control b/docker/dify/volumes/db/data/pgdata/global/pg_control deleted file mode 100644 index 9cd61ce1..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/pg_control and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/pg_filenode.map b/docker/dify/volumes/db/data/pgdata/global/pg_filenode.map deleted file mode 100644 index e1002d59..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/pg_filenode.map and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/global/pg_internal.init b/docker/dify/volumes/db/data/pgdata/global/pg_internal.init deleted file mode 100644 index 2f3a5553..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/global/pg_internal.init and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/pg_hba.conf b/docker/dify/volumes/db/data/pgdata/pg_hba.conf deleted file mode 100644 index 4e202d3c..00000000 --- a/docker/dify/volumes/db/data/pgdata/pg_hba.conf +++ /dev/null @@ -1,100 +0,0 @@ -# PostgreSQL Client Authentication Configuration File -# =================================================== -# -# Refer to the "Client Authentication" section in the PostgreSQL -# documentation for a complete description of this file. A short -# synopsis follows. -# -# This file controls: which hosts are allowed to connect, how clients -# are authenticated, which PostgreSQL user names they can use, which -# databases they can access. Records take one of these forms: -# -# local DATABASE USER METHOD [OPTIONS] -# host DATABASE USER ADDRESS METHOD [OPTIONS] -# hostssl DATABASE USER ADDRESS METHOD [OPTIONS] -# hostnossl DATABASE USER ADDRESS METHOD [OPTIONS] -# hostgssenc DATABASE USER ADDRESS METHOD [OPTIONS] -# hostnogssenc DATABASE USER ADDRESS METHOD [OPTIONS] -# -# (The uppercase items must be replaced by actual values.) -# -# The first field is the connection type: -# - "local" is a Unix-domain socket -# - "host" is a TCP/IP socket (encrypted or not) -# - "hostssl" is a TCP/IP socket that is SSL-encrypted -# - "hostnossl" is a TCP/IP socket that is not SSL-encrypted -# - "hostgssenc" is a TCP/IP socket that is GSSAPI-encrypted -# - "hostnogssenc" is a TCP/IP socket that is not GSSAPI-encrypted -# -# DATABASE can be "all", "sameuser", "samerole", "replication", a -# database name, or a comma-separated list thereof. The "all" -# keyword does not match "replication". Access to replication -# must be enabled in a separate record (see example below). -# -# USER can be "all", a user name, a group name prefixed with "+", or a -# comma-separated list thereof. In both the DATABASE and USER fields -# you can also write a file name prefixed with "@" to include names -# from a separate file. -# -# ADDRESS specifies the set of hosts the record matches. It can be a -# host name, or it is made up of an IP address and a CIDR mask that is -# an integer (between 0 and 32 (IPv4) or 128 (IPv6) inclusive) that -# specifies the number of significant bits in the mask. A host name -# that starts with a dot (.) matches a suffix of the actual host name. -# Alternatively, you can write an IP address and netmask in separate -# columns to specify the set of hosts. Instead of a CIDR-address, you -# can write "samehost" to match any of the server's own IP addresses, -# or "samenet" to match any address in any subnet that the server is -# directly connected to. -# -# METHOD can be "trust", "reject", "md5", "password", "scram-sha-256", -# "gss", "sspi", "ident", "peer", "pam", "ldap", "radius" or "cert". -# Note that "password" sends passwords in clear text; "md5" or -# "scram-sha-256" are preferred since they send encrypted passwords. -# -# OPTIONS are a set of options for the authentication in the format -# NAME=VALUE. The available options depend on the different -# authentication methods -- refer to the "Client Authentication" -# section in the documentation for a list of which options are -# available for which authentication methods. -# -# Database and user names containing spaces, commas, quotes and other -# special characters must be quoted. Quoting one of the keywords -# "all", "sameuser", "samerole" or "replication" makes the name lose -# its special character, and just match a database or username with -# that name. -# -# This file is read on server startup and when the server receives a -# SIGHUP signal. If you edit the file on a running system, you have to -# SIGHUP the server for the changes to take effect, run "pg_ctl reload", -# or execute "SELECT pg_reload_conf()". -# -# Put your actual configuration here -# ---------------------------------- -# -# If you want to allow non-local connections, you need to add more -# "host" records. In that case you will also need to make PostgreSQL -# listen on a non-local interface via the listen_addresses -# configuration parameter, or via the -i or -h command line switches. - -# CAUTION: Configuring the system for local "trust" authentication -# allows any local user to connect as any PostgreSQL user, including -# the database superuser. If you do not trust all your local users, -# use another authentication method. - - -# TYPE DATABASE USER ADDRESS METHOD - -# "local" is for Unix domain socket connections only -local all all trust -# IPv4 local connections: -host all all 127.0.0.1/32 trust -# IPv6 local connections: -host all all ::1/128 trust -# Allow replication connections from localhost, by a user with the -# replication privilege. -local replication all trust -host replication all 127.0.0.1/32 trust -host replication all ::1/128 trust - -host all all all scram-sha-256 diff --git a/docker/dify/volumes/db/data/pgdata/pg_ident.conf b/docker/dify/volumes/db/data/pgdata/pg_ident.conf deleted file mode 100644 index a5870e64..00000000 --- a/docker/dify/volumes/db/data/pgdata/pg_ident.conf +++ /dev/null @@ -1,42 +0,0 @@ -# PostgreSQL User Name Maps -# ========================= -# -# Refer to the PostgreSQL documentation, chapter "Client -# Authentication" for a complete description. A short synopsis -# follows. -# -# This file controls PostgreSQL user name mapping. It maps external -# user names to their corresponding PostgreSQL user names. Records -# are of the form: -# -# MAPNAME SYSTEM-USERNAME PG-USERNAME -# -# (The uppercase quantities must be replaced by actual values.) -# -# MAPNAME is the (otherwise freely chosen) map name that was used in -# pg_hba.conf. SYSTEM-USERNAME is the detected user name of the -# client. PG-USERNAME is the requested PostgreSQL user name. The -# existence of a record specifies that SYSTEM-USERNAME may connect as -# PG-USERNAME. -# -# If SYSTEM-USERNAME starts with a slash (/), it will be treated as a -# regular expression. Optionally this can contain a capture (a -# parenthesized subexpression). The substring matching the capture -# will be substituted for \1 (backslash-one) if present in -# PG-USERNAME. -# -# Multiple maps may be specified in this file and used by pg_hba.conf. -# -# No map names are defined in the default configuration. If all -# system user names and PostgreSQL user names are the same, you don't -# need anything in this file. -# -# This file is read on server startup and when the postmaster receives -# a SIGHUP signal. If you edit the file on a running system, you have -# to SIGHUP the postmaster for the changes to take effect. You can -# use "pg_ctl reload" to do that. - -# Put your actual configuration here -# ---------------------------------- - -# MAPNAME SYSTEM-USERNAME PG-USERNAME diff --git a/docker/dify/volumes/db/data/pgdata/pg_logical/replorigin_checkpoint b/docker/dify/volumes/db/data/pgdata/pg_logical/replorigin_checkpoint deleted file mode 100644 index ec451b0f..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/pg_logical/replorigin_checkpoint and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/pg_multixact/members/0000 b/docker/dify/volumes/db/data/pgdata/pg_multixact/members/0000 deleted file mode 100644 index 6d17cf9d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/pg_multixact/members/0000 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/pg_multixact/offsets/0000 b/docker/dify/volumes/db/data/pgdata/pg_multixact/offsets/0000 deleted file mode 100644 index 6d17cf9d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/pg_multixact/offsets/0000 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/pg_subtrans/0000 b/docker/dify/volumes/db/data/pgdata/pg_subtrans/0000 deleted file mode 100644 index 6d17cf9d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/pg_subtrans/0000 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/pg_wal/000000010000000000000002 b/docker/dify/volumes/db/data/pgdata/pg_wal/000000010000000000000002 deleted file mode 100644 index 1e9fca90..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/pg_wal/000000010000000000000002 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/pg_wal/000000010000000000000003 b/docker/dify/volumes/db/data/pgdata/pg_wal/000000010000000000000003 deleted file mode 100644 index d6c56d8d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/pg_wal/000000010000000000000003 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/pg_xact/0000 b/docker/dify/volumes/db/data/pgdata/pg_xact/0000 deleted file mode 100644 index 31e9f41d..00000000 Binary files a/docker/dify/volumes/db/data/pgdata/pg_xact/0000 and /dev/null differ diff --git a/docker/dify/volumes/db/data/pgdata/postgresql.auto.conf b/docker/dify/volumes/db/data/pgdata/postgresql.auto.conf deleted file mode 100644 index af7125e1..00000000 --- a/docker/dify/volumes/db/data/pgdata/postgresql.auto.conf +++ /dev/null @@ -1,2 +0,0 @@ -# Do not edit this file manually! -# It will be overwritten by the ALTER SYSTEM command. diff --git a/docker/dify/volumes/db/data/pgdata/postgresql.conf b/docker/dify/volumes/db/data/pgdata/postgresql.conf deleted file mode 100644 index 0e6341df..00000000 --- a/docker/dify/volumes/db/data/pgdata/postgresql.conf +++ /dev/null @@ -1,813 +0,0 @@ -# ----------------------------- -# PostgreSQL configuration file -# ----------------------------- -# -# This file consists of lines of the form: -# -# name = value -# -# (The "=" is optional.) Whitespace may be used. Comments are introduced with -# "#" anywhere on a line. The complete list of parameter names and allowed -# values can be found in the PostgreSQL documentation. -# -# The commented-out settings shown in this file represent the default values. -# Re-commenting a setting is NOT sufficient to revert it to the default value; -# you need to reload the server. -# -# This file is read on server startup and when the server receives a SIGHUP -# signal. If you edit the file on a running system, you have to SIGHUP the -# server for the changes to take effect, run "pg_ctl reload", or execute -# "SELECT pg_reload_conf()". Some parameters, which are marked below, -# require a server shutdown and restart to take effect. -# -# Any parameter can also be given as a command-line option to the server, e.g., -# "postgres -c log_connections=on". Some parameters can be changed at run time -# with the "SET" SQL command. -# -# Memory units: B = bytes Time units: us = microseconds -# kB = kilobytes ms = milliseconds -# MB = megabytes s = seconds -# GB = gigabytes min = minutes -# TB = terabytes h = hours -# d = days - - -#------------------------------------------------------------------------------ -# FILE LOCATIONS -#------------------------------------------------------------------------------ - -# The default values of these variables are driven from the -D command-line -# option or PGDATA environment variable, represented here as ConfigDir. - -#data_directory = 'ConfigDir' # use data in another directory - # (change requires restart) -#hba_file = 'ConfigDir/pg_hba.conf' # host-based authentication file - # (change requires restart) -#ident_file = 'ConfigDir/pg_ident.conf' # ident configuration file - # (change requires restart) - -# If external_pid_file is not explicitly set, no extra PID file is written. -#external_pid_file = '' # write an extra PID file - # (change requires restart) - - -#------------------------------------------------------------------------------ -# CONNECTIONS AND AUTHENTICATION -#------------------------------------------------------------------------------ - -# - Connection Settings - - -listen_addresses = '*' - # comma-separated list of addresses; - # defaults to 'localhost'; use '*' for all - # (change requires restart) -#port = 5432 # (change requires restart) -max_connections = 100 # (change requires restart) -#superuser_reserved_connections = 3 # (change requires restart) -#unix_socket_directories = '/var/run/postgresql' # comma-separated list of directories - # (change requires restart) -#unix_socket_group = '' # (change requires restart) -#unix_socket_permissions = 0777 # begin with 0 to use octal notation - # (change requires restart) -#bonjour = off # advertise server via Bonjour - # (change requires restart) -#bonjour_name = '' # defaults to the computer name - # (change requires restart) - -# - TCP settings - -# see "man tcp" for details - -#tcp_keepalives_idle = 0 # TCP_KEEPIDLE, in seconds; - # 0 selects the system default -#tcp_keepalives_interval = 0 # TCP_KEEPINTVL, in seconds; - # 0 selects the system default -#tcp_keepalives_count = 0 # TCP_KEEPCNT; - # 0 selects the system default -#tcp_user_timeout = 0 # TCP_USER_TIMEOUT, in milliseconds; - # 0 selects the system default - -#client_connection_check_interval = 0 # time between checks for client - # disconnection while running queries; - # 0 for never - -# - Authentication - - -#authentication_timeout = 1min # 1s-600s -#password_encryption = scram-sha-256 # scram-sha-256 or md5 -#db_user_namespace = off - -# GSSAPI using Kerberos -#krb_server_keyfile = 'FILE:${sysconfdir}/krb5.keytab' -#krb_caseins_users = off - -# - SSL - - -#ssl = off -#ssl_ca_file = '' -#ssl_cert_file = 'server.crt' -#ssl_crl_file = '' -#ssl_crl_dir = '' -#ssl_key_file = 'server.key' -#ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL' # allowed SSL ciphers -#ssl_prefer_server_ciphers = on -#ssl_ecdh_curve = 'prime256v1' -#ssl_min_protocol_version = 'TLSv1.2' -#ssl_max_protocol_version = '' -#ssl_dh_params_file = '' -#ssl_passphrase_command = '' -#ssl_passphrase_command_supports_reload = off - - -#------------------------------------------------------------------------------ -# RESOURCE USAGE (except WAL) -#------------------------------------------------------------------------------ - -# - Memory - - -shared_buffers = 128MB # min 128kB - # (change requires restart) -#huge_pages = try # on, off, or try - # (change requires restart) -#huge_page_size = 0 # zero for system default - # (change requires restart) -#temp_buffers = 8MB # min 800kB -#max_prepared_transactions = 0 # zero disables the feature - # (change requires restart) -# Caution: it is not advisable to set max_prepared_transactions nonzero unless -# you actively intend to use prepared transactions. -#work_mem = 4MB # min 64kB -#hash_mem_multiplier = 2.0 # 1-1000.0 multiplier on hash table work_mem -#maintenance_work_mem = 64MB # min 1MB -#autovacuum_work_mem = -1 # min 1MB, or -1 to use maintenance_work_mem -#logical_decoding_work_mem = 64MB # min 64kB -#max_stack_depth = 2MB # min 100kB -#shared_memory_type = mmap # the default is the first option - # supported by the operating system: - # mmap - # sysv - # windows - # (change requires restart) -dynamic_shared_memory_type = posix # the default is usually the first option - # supported by the operating system: - # posix - # sysv - # windows - # mmap - # (change requires restart) -#min_dynamic_shared_memory = 0MB # (change requires restart) - -# - Disk - - -#temp_file_limit = -1 # limits per-process temp file space - # in kilobytes, or -1 for no limit - -# - Kernel Resources - - -#max_files_per_process = 1000 # min 64 - # (change requires restart) - -# - Cost-Based Vacuum Delay - - -#vacuum_cost_delay = 0 # 0-100 milliseconds (0 disables) -#vacuum_cost_page_hit = 1 # 0-10000 credits -#vacuum_cost_page_miss = 2 # 0-10000 credits -#vacuum_cost_page_dirty = 20 # 0-10000 credits -#vacuum_cost_limit = 200 # 1-10000 credits - -# - Background Writer - - -#bgwriter_delay = 200ms # 10-10000ms between rounds -#bgwriter_lru_maxpages = 100 # max buffers written/round, 0 disables -#bgwriter_lru_multiplier = 2.0 # 0-10.0 multiplier on buffers scanned/round -#bgwriter_flush_after = 512kB # measured in pages, 0 disables - -# - Asynchronous Behavior - - -#backend_flush_after = 0 # measured in pages, 0 disables -#effective_io_concurrency = 1 # 1-1000; 0 disables prefetching -#maintenance_io_concurrency = 10 # 1-1000; 0 disables prefetching -#max_worker_processes = 8 # (change requires restart) -#max_parallel_workers_per_gather = 2 # limited by max_parallel_workers -#max_parallel_maintenance_workers = 2 # limited by max_parallel_workers -#max_parallel_workers = 8 # number of max_worker_processes that - # can be used in parallel operations -#parallel_leader_participation = on -#old_snapshot_threshold = -1 # 1min-60d; -1 disables; 0 is immediate - # (change requires restart) - - -#------------------------------------------------------------------------------ -# WRITE-AHEAD LOG -#------------------------------------------------------------------------------ - -# - Settings - - -#wal_level = replica # minimal, replica, or logical - # (change requires restart) -#fsync = on # flush data to disk for crash safety - # (turning this off can cause - # unrecoverable data corruption) -#synchronous_commit = on # synchronization level; - # off, local, remote_write, remote_apply, or on -#wal_sync_method = fsync # the default is the first option - # supported by the operating system: - # open_datasync - # fdatasync (default on Linux and FreeBSD) - # fsync - # fsync_writethrough - # open_sync -#full_page_writes = on # recover from partial page writes -#wal_log_hints = off # also do full page writes of non-critical updates - # (change requires restart) -#wal_compression = off # enables compression of full-page writes; - # off, pglz, lz4, zstd, or on -#wal_init_zero = on # zero-fill new WAL files -#wal_recycle = on # recycle WAL files -#wal_buffers = -1 # min 32kB, -1 sets based on shared_buffers - # (change requires restart) -#wal_writer_delay = 200ms # 1-10000 milliseconds -#wal_writer_flush_after = 1MB # measured in pages, 0 disables -#wal_skip_threshold = 2MB - -#commit_delay = 0 # range 0-100000, in microseconds -#commit_siblings = 5 # range 1-1000 - -# - Checkpoints - - -#checkpoint_timeout = 5min # range 30s-1d -#checkpoint_completion_target = 0.9 # checkpoint target duration, 0.0 - 1.0 -#checkpoint_flush_after = 256kB # measured in pages, 0 disables -#checkpoint_warning = 30s # 0 disables -max_wal_size = 1GB -min_wal_size = 80MB - -# - Prefetching during recovery - - -#recovery_prefetch = try # prefetch pages referenced in the WAL? -#wal_decode_buffer_size = 512kB # lookahead window used for prefetching - # (change requires restart) - -# - Archiving - - -#archive_mode = off # enables archiving; off, on, or always - # (change requires restart) -#archive_library = '' # library to use to archive a logfile segment - # (empty string indicates archive_command should - # be used) -#archive_command = '' # command to use to archive a logfile segment - # placeholders: %p = path of file to archive - # %f = file name only - # e.g. 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f' -#archive_timeout = 0 # force a logfile segment switch after this - # number of seconds; 0 disables - -# - Archive Recovery - - -# These are only used in recovery mode. - -#restore_command = '' # command to use to restore an archived logfile segment - # placeholders: %p = path of file to restore - # %f = file name only - # e.g. 'cp /mnt/server/archivedir/%f %p' -#archive_cleanup_command = '' # command to execute at every restartpoint -#recovery_end_command = '' # command to execute at completion of recovery - -# - Recovery Target - - -# Set these only when performing a targeted recovery. - -#recovery_target = '' # 'immediate' to end recovery as soon as a - # consistent state is reached - # (change requires restart) -#recovery_target_name = '' # the named restore point to which recovery will proceed - # (change requires restart) -#recovery_target_time = '' # the time stamp up to which recovery will proceed - # (change requires restart) -#recovery_target_xid = '' # the transaction ID up to which recovery will proceed - # (change requires restart) -#recovery_target_lsn = '' # the WAL LSN up to which recovery will proceed - # (change requires restart) -#recovery_target_inclusive = on # Specifies whether to stop: - # just after the specified recovery target (on) - # just before the recovery target (off) - # (change requires restart) -#recovery_target_timeline = 'latest' # 'current', 'latest', or timeline ID - # (change requires restart) -#recovery_target_action = 'pause' # 'pause', 'promote', 'shutdown' - # (change requires restart) - - -#------------------------------------------------------------------------------ -# REPLICATION -#------------------------------------------------------------------------------ - -# - Sending Servers - - -# Set these on the primary and on any standby that will send replication data. - -#max_wal_senders = 10 # max number of walsender processes - # (change requires restart) -#max_replication_slots = 10 # max number of replication slots - # (change requires restart) -#wal_keep_size = 0 # in megabytes; 0 disables -#max_slot_wal_keep_size = -1 # in megabytes; -1 disables -#wal_sender_timeout = 60s # in milliseconds; 0 disables -#track_commit_timestamp = off # collect timestamp of transaction commit - # (change requires restart) - -# - Primary Server - - -# These settings are ignored on a standby server. - -#synchronous_standby_names = '' # standby servers that provide sync rep - # method to choose sync standbys, number of sync standbys, - # and comma-separated list of application_name - # from standby(s); '*' = all -#vacuum_defer_cleanup_age = 0 # number of xacts by which cleanup is delayed - -# - Standby Servers - - -# These settings are ignored on a primary server. - -#primary_conninfo = '' # connection string to sending server -#primary_slot_name = '' # replication slot on sending server -#promote_trigger_file = '' # file name whose presence ends recovery -#hot_standby = on # "off" disallows queries during recovery - # (change requires restart) -#max_standby_archive_delay = 30s # max delay before canceling queries - # when reading WAL from archive; - # -1 allows indefinite delay -#max_standby_streaming_delay = 30s # max delay before canceling queries - # when reading streaming WAL; - # -1 allows indefinite delay -#wal_receiver_create_temp_slot = off # create temp slot if primary_slot_name - # is not set -#wal_receiver_status_interval = 10s # send replies at least this often - # 0 disables -#hot_standby_feedback = off # send info from standby to prevent - # query conflicts -#wal_receiver_timeout = 60s # time that receiver waits for - # communication from primary - # in milliseconds; 0 disables -#wal_retrieve_retry_interval = 5s # time to wait before retrying to - # retrieve WAL after a failed attempt -#recovery_min_apply_delay = 0 # minimum delay for applying changes during recovery - -# - Subscribers - - -# These settings are ignored on a publisher. - -#max_logical_replication_workers = 4 # taken from max_worker_processes - # (change requires restart) -#max_sync_workers_per_subscription = 2 # taken from max_logical_replication_workers - - -#------------------------------------------------------------------------------ -# QUERY TUNING -#------------------------------------------------------------------------------ - -# - Planner Method Configuration - - -#enable_async_append = on -#enable_bitmapscan = on -#enable_gathermerge = on -#enable_hashagg = on -#enable_hashjoin = on -#enable_incremental_sort = on -#enable_indexscan = on -#enable_indexonlyscan = on -#enable_material = on -#enable_memoize = on -#enable_mergejoin = on -#enable_nestloop = on -#enable_parallel_append = on -#enable_parallel_hash = on -#enable_partition_pruning = on -#enable_partitionwise_join = off -#enable_partitionwise_aggregate = off -#enable_seqscan = on -#enable_sort = on -#enable_tidscan = on - -# - Planner Cost Constants - - -#seq_page_cost = 1.0 # measured on an arbitrary scale -#random_page_cost = 4.0 # same scale as above -#cpu_tuple_cost = 0.01 # same scale as above -#cpu_index_tuple_cost = 0.005 # same scale as above -#cpu_operator_cost = 0.0025 # same scale as above -#parallel_setup_cost = 1000.0 # same scale as above -#parallel_tuple_cost = 0.1 # same scale as above -#min_parallel_table_scan_size = 8MB -#min_parallel_index_scan_size = 512kB -#effective_cache_size = 4GB - -#jit_above_cost = 100000 # perform JIT compilation if available - # and query more expensive than this; - # -1 disables -#jit_inline_above_cost = 500000 # inline small functions if query is - # more expensive than this; -1 disables -#jit_optimize_above_cost = 500000 # use expensive JIT optimizations if - # query is more expensive than this; - # -1 disables - -# - Genetic Query Optimizer - - -#geqo = on -#geqo_threshold = 12 -#geqo_effort = 5 # range 1-10 -#geqo_pool_size = 0 # selects default based on effort -#geqo_generations = 0 # selects default based on effort -#geqo_selection_bias = 2.0 # range 1.5-2.0 -#geqo_seed = 0.0 # range 0.0-1.0 - -# - Other Planner Options - - -#default_statistics_target = 100 # range 1-10000 -#constraint_exclusion = partition # on, off, or partition -#cursor_tuple_fraction = 0.1 # range 0.0-1.0 -#from_collapse_limit = 8 -#jit = on # allow JIT compilation -#join_collapse_limit = 8 # 1 disables collapsing of explicit - # JOIN clauses -#plan_cache_mode = auto # auto, force_generic_plan or - # force_custom_plan -#recursive_worktable_factor = 10.0 # range 0.001-1000000 - - -#------------------------------------------------------------------------------ -# REPORTING AND LOGGING -#------------------------------------------------------------------------------ - -# - Where to Log - - -#log_destination = 'stderr' # Valid values are combinations of - # stderr, csvlog, jsonlog, syslog, and - # eventlog, depending on platform. - # csvlog and jsonlog require - # logging_collector to be on. - -# This is used when logging to stderr: -#logging_collector = off # Enable capturing of stderr, jsonlog, - # and csvlog into log files. Required - # to be on for csvlogs and jsonlogs. - # (change requires restart) - -# These are only used if logging_collector is on: -#log_directory = 'log' # directory where log files are written, - # can be absolute or relative to PGDATA -#log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # log file name pattern, - # can include strftime() escapes -#log_file_mode = 0600 # creation mode for log files, - # begin with 0 to use octal notation -#log_rotation_age = 1d # Automatic rotation of logfiles will - # happen after that time. 0 disables. -#log_rotation_size = 10MB # Automatic rotation of logfiles will - # happen after that much log output. - # 0 disables. -#log_truncate_on_rotation = off # If on, an existing log file with the - # same name as the new log file will be - # truncated rather than appended to. - # But such truncation only occurs on - # time-driven rotation, not on restarts - # or size-driven rotation. Default is - # off, meaning append to existing files - # in all cases. - -# These are relevant when logging to syslog: -#syslog_facility = 'LOCAL0' -#syslog_ident = 'postgres' -#syslog_sequence_numbers = on -#syslog_split_messages = on - -# This is only relevant when logging to eventlog (Windows): -# (change requires restart) -#event_source = 'PostgreSQL' - -# - When to Log - - -#log_min_messages = warning # values in order of decreasing detail: - # debug5 - # debug4 - # debug3 - # debug2 - # debug1 - # info - # notice - # warning - # error - # log - # fatal - # panic - -#log_min_error_statement = error # values in order of decreasing detail: - # debug5 - # debug4 - # debug3 - # debug2 - # debug1 - # info - # notice - # warning - # error - # log - # fatal - # panic (effectively off) - -#log_min_duration_statement = -1 # -1 is disabled, 0 logs all statements - # and their durations, > 0 logs only - # statements running at least this number - # of milliseconds - -#log_min_duration_sample = -1 # -1 is disabled, 0 logs a sample of statements - # and their durations, > 0 logs only a sample of - # statements running at least this number - # of milliseconds; - # sample fraction is determined by log_statement_sample_rate - -#log_statement_sample_rate = 1.0 # fraction of logged statements exceeding - # log_min_duration_sample to be logged; - # 1.0 logs all such statements, 0.0 never logs - - -#log_transaction_sample_rate = 0.0 # fraction of transactions whose statements - # are logged regardless of their duration; 1.0 logs all - # statements from all transactions, 0.0 never logs - -#log_startup_progress_interval = 10s # Time between progress updates for - # long-running startup operations. - # 0 disables the feature, > 0 indicates - # the interval in milliseconds. - -# - What to Log - - -#debug_print_parse = off -#debug_print_rewritten = off -#debug_print_plan = off -#debug_pretty_print = on -#log_autovacuum_min_duration = 10min # log autovacuum activity; - # -1 disables, 0 logs all actions and - # their durations, > 0 logs only - # actions running at least this number - # of milliseconds. -#log_checkpoints = on -#log_connections = off -#log_disconnections = off -#log_duration = off -#log_error_verbosity = default # terse, default, or verbose messages -#log_hostname = off -#log_line_prefix = '%m [%p] ' # special values: - # %a = application name - # %u = user name - # %d = database name - # %r = remote host and port - # %h = remote host - # %b = backend type - # %p = process ID - # %P = process ID of parallel group leader - # %t = timestamp without milliseconds - # %m = timestamp with milliseconds - # %n = timestamp with milliseconds (as a Unix epoch) - # %Q = query ID (0 if none or not computed) - # %i = command tag - # %e = SQL state - # %c = session ID - # %l = session line number - # %s = session start timestamp - # %v = virtual transaction ID - # %x = transaction ID (0 if none) - # %q = stop here in non-session - # processes - # %% = '%' - # e.g. '<%u%%%d> ' -#log_lock_waits = off # log lock waits >= deadlock_timeout -#log_recovery_conflict_waits = off # log standby recovery conflict waits - # >= deadlock_timeout -#log_parameter_max_length = -1 # when logging statements, limit logged - # bind-parameter values to N bytes; - # -1 means print in full, 0 disables -#log_parameter_max_length_on_error = 0 # when logging an error, limit logged - # bind-parameter values to N bytes; - # -1 means print in full, 0 disables -#log_statement = 'none' # none, ddl, mod, all -#log_replication_commands = off -#log_temp_files = -1 # log temporary files equal or larger - # than the specified size in kilobytes; - # -1 disables, 0 logs all temp files -log_timezone = 'UTC' - - -#------------------------------------------------------------------------------ -# PROCESS TITLE -#------------------------------------------------------------------------------ - -#cluster_name = '' # added to process titles if nonempty - # (change requires restart) -#update_process_title = on - - -#------------------------------------------------------------------------------ -# STATISTICS -#------------------------------------------------------------------------------ - -# - Cumulative Query and Index Statistics - - -#track_activities = on -#track_activity_query_size = 1024 # (change requires restart) -#track_counts = on -#track_io_timing = off -#track_wal_io_timing = off -#track_functions = none # none, pl, all -#stats_fetch_consistency = cache - - -# - Monitoring - - -#compute_query_id = auto -#log_statement_stats = off -#log_parser_stats = off -#log_planner_stats = off -#log_executor_stats = off - - -#------------------------------------------------------------------------------ -# AUTOVACUUM -#------------------------------------------------------------------------------ - -#autovacuum = on # Enable autovacuum subprocess? 'on' - # requires track_counts to also be on. -#autovacuum_max_workers = 3 # max number of autovacuum subprocesses - # (change requires restart) -#autovacuum_naptime = 1min # time between autovacuum runs -#autovacuum_vacuum_threshold = 50 # min number of row updates before - # vacuum -#autovacuum_vacuum_insert_threshold = 1000 # min number of row inserts - # before vacuum; -1 disables insert - # vacuums -#autovacuum_analyze_threshold = 50 # min number of row updates before - # analyze -#autovacuum_vacuum_scale_factor = 0.2 # fraction of table size before vacuum -#autovacuum_vacuum_insert_scale_factor = 0.2 # fraction of inserts over table - # size before insert vacuum -#autovacuum_analyze_scale_factor = 0.1 # fraction of table size before analyze -#autovacuum_freeze_max_age = 200000000 # maximum XID age before forced vacuum - # (change requires restart) -#autovacuum_multixact_freeze_max_age = 400000000 # maximum multixact age - # before forced vacuum - # (change requires restart) -#autovacuum_vacuum_cost_delay = 2ms # default vacuum cost delay for - # autovacuum, in milliseconds; - # -1 means use vacuum_cost_delay -#autovacuum_vacuum_cost_limit = -1 # default vacuum cost limit for - # autovacuum, -1 means use - # vacuum_cost_limit - - -#------------------------------------------------------------------------------ -# CLIENT CONNECTION DEFAULTS -#------------------------------------------------------------------------------ - -# - Statement Behavior - - -#client_min_messages = notice # values in order of decreasing detail: - # debug5 - # debug4 - # debug3 - # debug2 - # debug1 - # log - # notice - # warning - # error -#search_path = '"$user", public' # schema names -#row_security = on -#default_table_access_method = 'heap' -#default_tablespace = '' # a tablespace name, '' uses the default -#default_toast_compression = 'pglz' # 'pglz' or 'lz4' -#temp_tablespaces = '' # a list of tablespace names, '' uses - # only default tablespace -#check_function_bodies = on -#default_transaction_isolation = 'read committed' -#default_transaction_read_only = off -#default_transaction_deferrable = off -#session_replication_role = 'origin' -#statement_timeout = 0 # in milliseconds, 0 is disabled -#lock_timeout = 0 # in milliseconds, 0 is disabled -#idle_in_transaction_session_timeout = 0 # in milliseconds, 0 is disabled -#idle_session_timeout = 0 # in milliseconds, 0 is disabled -#vacuum_freeze_table_age = 150000000 -#vacuum_freeze_min_age = 50000000 -#vacuum_failsafe_age = 1600000000 -#vacuum_multixact_freeze_table_age = 150000000 -#vacuum_multixact_freeze_min_age = 5000000 -#vacuum_multixact_failsafe_age = 1600000000 -#bytea_output = 'hex' # hex, escape -#xmlbinary = 'base64' -#xmloption = 'content' -#gin_pending_list_limit = 4MB - -# - Locale and Formatting - - -datestyle = 'iso, mdy' -#intervalstyle = 'postgres' -timezone = 'UTC' -#timezone_abbreviations = 'Default' # Select the set of available time zone - # abbreviations. Currently, there are - # Default - # Australia (historical usage) - # India - # You can create your own file in - # share/timezonesets/. -#extra_float_digits = 1 # min -15, max 3; any value >0 actually - # selects precise output mode -#client_encoding = sql_ascii # actually, defaults to database - # encoding - -# These settings are initialized by initdb, but they can be changed. -lc_messages = 'en_US.utf8' # locale for system error message - # strings -lc_monetary = 'en_US.utf8' # locale for monetary formatting -lc_numeric = 'en_US.utf8' # locale for number formatting -lc_time = 'en_US.utf8' # locale for time formatting - -# default configuration for text search -default_text_search_config = 'pg_catalog.english' - -# - Shared Library Preloading - - -#local_preload_libraries = '' -#session_preload_libraries = '' -#shared_preload_libraries = '' # (change requires restart) -#jit_provider = 'llvmjit' # JIT library to use - -# - Other Defaults - - -#dynamic_library_path = '$libdir' -#gin_fuzzy_search_limit = 0 - - -#------------------------------------------------------------------------------ -# LOCK MANAGEMENT -#------------------------------------------------------------------------------ - -#deadlock_timeout = 1s -#max_locks_per_transaction = 64 # min 10 - # (change requires restart) -#max_pred_locks_per_transaction = 64 # min 10 - # (change requires restart) -#max_pred_locks_per_relation = -2 # negative values mean - # (max_pred_locks_per_transaction - # / -max_pred_locks_per_relation) - 1 -#max_pred_locks_per_page = 2 # min 0 - - -#------------------------------------------------------------------------------ -# VERSION AND PLATFORM COMPATIBILITY -#------------------------------------------------------------------------------ - -# - Previous PostgreSQL Versions - - -#array_nulls = on -#backslash_quote = safe_encoding # on, off, or safe_encoding -#escape_string_warning = on -#lo_compat_privileges = off -#quote_all_identifiers = off -#standard_conforming_strings = on -#synchronize_seqscans = on - -# - Other Platforms and Clients - - -#transform_null_equals = off - - -#------------------------------------------------------------------------------ -# ERROR HANDLING -#------------------------------------------------------------------------------ - -#exit_on_error = off # terminate session on any error? -#restart_after_crash = on # reinitialize after backend crash? -#data_sync_retry = off # retry or panic on failure to fsync - # data? - # (change requires restart) -#recovery_init_sync_method = fsync # fsync, syncfs (Linux 5.8+) - - -#------------------------------------------------------------------------------ -# CONFIG FILE INCLUDES -#------------------------------------------------------------------------------ - -# These options allow settings to be loaded from files other than the -# default postgresql.conf. Note that these are directives, not variable -# assignments, so they can usefully be given more than once. - -#include_dir = '...' # include files ending in '.conf' from - # a directory, e.g., 'conf.d' -#include_if_exists = '...' # include file only if it exists -#include = '...' # include file - - -#------------------------------------------------------------------------------ -# CUSTOMIZED OPTIONS -#------------------------------------------------------------------------------ - -# Add settings for extensions here diff --git a/docker/dify/volumes/db/data/pgdata/postmaster.opts b/docker/dify/volumes/db/data/pgdata/postmaster.opts deleted file mode 100644 index 42ef3abb..00000000 --- a/docker/dify/volumes/db/data/pgdata/postmaster.opts +++ /dev/null @@ -1 +0,0 @@ -/usr/local/bin/postgres "-c" "max_connections=100" "-c" "shared_buffers=128MB" "-c" "work_mem=4MB" "-c" "maintenance_work_mem=64MB" "-c" "effective_cache_size=4096MB" "-c" "statement_timeout=0" "-c" "idle_in_transaction_session_timeout=0" diff --git a/docker/dify/volumes/db/data/pgdata/postmaster.pid b/docker/dify/volumes/db/data/pgdata/postmaster.pid deleted file mode 100644 index 9d17f2d9..00000000 --- a/docker/dify/volumes/db/data/pgdata/postmaster.pid +++ /dev/null @@ -1,8 +0,0 @@ -1 -/var/lib/postgresql/data/pgdata -1766893646 -5432 -/var/run/postgresql -* - 1014326 0 -ready diff --git a/docker/dify/volumes/myscale/config/users.d/custom_users_config.xml b/docker/dify/volumes/myscale/config/users.d/custom_users_config.xml deleted file mode 100644 index b46e73a0..00000000 --- a/docker/dify/volumes/myscale/config/users.d/custom_users_config.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - ::1 - 127.0.0.1 - 10.0.0.0/8 - 172.16.0.0/12 - 192.168.0.0/16 - - default - default - 1 - - - diff --git a/docker/dify/volumes/oceanbase/init.d/vec_memory.sql b/docker/dify/volumes/oceanbase/init.d/vec_memory.sql deleted file mode 100644 index 0d859e5f..00000000 --- a/docker/dify/volumes/oceanbase/init.d/vec_memory.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER SYSTEM SET ob_vector_memory_limit_percentage = 30; diff --git a/docker/dify/volumes/opensearch/opensearch_dashboards.yml b/docker/dify/volumes/opensearch/opensearch_dashboards.yml deleted file mode 100644 index f50d63bb..00000000 --- a/docker/dify/volumes/opensearch/opensearch_dashboards.yml +++ /dev/null @@ -1,222 +0,0 @@ ---- -# Copyright OpenSearch Contributors -# SPDX-License-Identifier: Apache-2.0 - -# Description: -# Default configuration for OpenSearch Dashboards - -# OpenSearch Dashboards is served by a back end server. This setting specifies the port to use. -# server.port: 5601 - -# Specifies the address to which the OpenSearch Dashboards server will bind. IP addresses and host names are both valid values. -# The default is 'localhost', which usually means remote machines will not be able to connect. -# To allow connections from remote users, set this parameter to a non-loopback address. -# server.host: "localhost" - -# Enables you to specify a path to mount OpenSearch Dashboards at if you are running behind a proxy. -# Use the `server.rewriteBasePath` setting to tell OpenSearch Dashboards if it should remove the basePath -# from requests it receives, and to prevent a deprecation warning at startup. -# This setting cannot end in a slash. -# server.basePath: "" - -# Specifies whether OpenSearch Dashboards should rewrite requests that are prefixed with -# `server.basePath` or require that they are rewritten by your reverse proxy. -# server.rewriteBasePath: false - -# The maximum payload size in bytes for incoming server requests. -# server.maxPayloadBytes: 1048576 - -# The OpenSearch Dashboards server's name. This is used for display purposes. -# server.name: "your-hostname" - -# The URLs of the OpenSearch instances to use for all your queries. -# opensearch.hosts: ["http://localhost:9200"] - -# OpenSearch Dashboards uses an index in OpenSearch to store saved searches, visualizations and -# dashboards. OpenSearch Dashboards creates a new index if the index doesn't already exist. -# opensearchDashboards.index: ".opensearch_dashboards" - -# The default application to load. -# opensearchDashboards.defaultAppId: "home" - -# Setting for an optimized healthcheck that only uses the local OpenSearch node to do Dashboards healthcheck. -# This settings should be used for large clusters or for clusters with ingest heavy nodes. -# It allows Dashboards to only healthcheck using the local OpenSearch node rather than fan out requests across all nodes. -# -# It requires the user to create an OpenSearch node attribute with the same name as the value used in the setting -# This node attribute should assign all nodes of the same cluster an integer value that increments with each new cluster that is spun up -# e.g. in opensearch.yml file you would set the value to a setting using node.attr.cluster_id: -# Should only be enabled if there is a corresponding node attribute created in your OpenSearch config that matches the value here -# opensearch.optimizedHealthcheckId: "cluster_id" - -# If your OpenSearch is protected with basic authentication, these settings provide -# the username and password that the OpenSearch Dashboards server uses to perform maintenance on the OpenSearch Dashboards -# index at startup. Your OpenSearch Dashboards users still need to authenticate with OpenSearch, which -# is proxied through the OpenSearch Dashboards server. -# opensearch.username: "opensearch_dashboards_system" -# opensearch.password: "pass" - -# Enables SSL and paths to the PEM-format SSL certificate and SSL key files, respectively. -# These settings enable SSL for outgoing requests from the OpenSearch Dashboards server to the browser. -# server.ssl.enabled: false -# server.ssl.certificate: /path/to/your/server.crt -# server.ssl.key: /path/to/your/server.key - -# Optional settings that provide the paths to the PEM-format SSL certificate and key files. -# These files are used to verify the identity of OpenSearch Dashboards to OpenSearch and are required when -# xpack.security.http.ssl.client_authentication in OpenSearch is set to required. -# opensearch.ssl.certificate: /path/to/your/client.crt -# opensearch.ssl.key: /path/to/your/client.key - -# Optional setting that enables you to specify a path to the PEM file for the certificate -# authority for your OpenSearch instance. -# opensearch.ssl.certificateAuthorities: [ "/path/to/your/CA.pem" ] - -# To disregard the validity of SSL certificates, change this setting's value to 'none'. -# opensearch.ssl.verificationMode: full - -# Time in milliseconds to wait for OpenSearch to respond to pings. Defaults to the value of -# the opensearch.requestTimeout setting. -# opensearch.pingTimeout: 1500 - -# Time in milliseconds to wait for responses from the back end or OpenSearch. This value -# must be a positive integer. -# opensearch.requestTimeout: 30000 - -# List of OpenSearch Dashboards client-side headers to send to OpenSearch. To send *no* client-side -# headers, set this value to [] (an empty list). -# opensearch.requestHeadersWhitelist: [ authorization ] - -# Header names and values that are sent to OpenSearch. Any custom headers cannot be overwritten -# by client-side headers, regardless of the opensearch.requestHeadersWhitelist configuration. -# opensearch.customHeaders: {} - -# Time in milliseconds for OpenSearch to wait for responses from shards. Set to 0 to disable. -# opensearch.shardTimeout: 30000 - -# Logs queries sent to OpenSearch. Requires logging.verbose set to true. -# opensearch.logQueries: false - -# Specifies the path where OpenSearch Dashboards creates the process ID file. -# pid.file: /var/run/opensearchDashboards.pid - -# Enables you to specify a file where OpenSearch Dashboards stores log output. -# logging.dest: stdout - -# Set the value of this setting to true to suppress all logging output. -# logging.silent: false - -# Set the value of this setting to true to suppress all logging output other than error messages. -# logging.quiet: false - -# Set the value of this setting to true to log all events, including system usage information -# and all requests. -# logging.verbose: false - -# Set the interval in milliseconds to sample system and process performance -# metrics. Minimum is 100ms. Defaults to 5000. -# ops.interval: 5000 - -# Specifies locale to be used for all localizable strings, dates and number formats. -# Supported languages are the following: English - en , by default , Chinese - zh-CN . -# i18n.locale: "en" - -# Set the allowlist to check input graphite Url. Allowlist is the default check list. -# vis_type_timeline.graphiteAllowedUrls: ['https://www.hostedgraphite.com/UID/ACCESS_KEY/graphite'] - -# Set the blocklist to check input graphite Url. Blocklist is an IP list. -# Below is an example for reference -# vis_type_timeline.graphiteBlockedIPs: [ -# //Loopback -# '127.0.0.0/8', -# '::1/128', -# //Link-local Address for IPv6 -# 'fe80::/10', -# //Private IP address for IPv4 -# '10.0.0.0/8', -# '172.16.0.0/12', -# '192.168.0.0/16', -# //Unique local address (ULA) -# 'fc00::/7', -# //Reserved IP address -# '0.0.0.0/8', -# '100.64.0.0/10', -# '192.0.0.0/24', -# '192.0.2.0/24', -# '198.18.0.0/15', -# '192.88.99.0/24', -# '198.51.100.0/24', -# '203.0.113.0/24', -# '224.0.0.0/4', -# '240.0.0.0/4', -# '255.255.255.255/32', -# '::/128', -# '2001:db8::/32', -# 'ff00::/8', -# ] -# vis_type_timeline.graphiteBlockedIPs: [] - -# opensearchDashboards.branding: -# logo: -# defaultUrl: "" -# darkModeUrl: "" -# mark: -# defaultUrl: "" -# darkModeUrl: "" -# loadingLogo: -# defaultUrl: "" -# darkModeUrl: "" -# faviconUrl: "" -# applicationTitle: "" - -# Set the value of this setting to true to capture region blocked warnings and errors -# for your map rendering services. -# map.showRegionBlockedWarning: false% - -# Set the value of this setting to false to suppress search usage telemetry -# for reducing the load of OpenSearch cluster. -# data.search.usageTelemetry.enabled: false - -# 2.4 renames 'wizard.enabled: false' to 'vis_builder.enabled: false' -# Set the value of this setting to false to disable VisBuilder -# functionality in Visualization. -# vis_builder.enabled: false - -# 2.4 New Experimental Feature -# Set the value of this setting to true to enable the experimental multiple data source -# support feature. Use with caution. -# data_source.enabled: false -# Set the value of these settings to customize crypto materials to encryption saved credentials -# in data sources. -# data_source.encryption.wrappingKeyName: 'changeme' -# data_source.encryption.wrappingKeyNamespace: 'changeme' -# data_source.encryption.wrappingKey: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] - -# 2.6 New ML Commons Dashboards Feature -# Set the value of this setting to true to enable the ml commons dashboards -# ml_commons_dashboards.enabled: false - -# 2.12 New experimental Assistant Dashboards Feature -# Set the value of this setting to true to enable the assistant dashboards -# assistant.chat.enabled: false - -# 2.13 New Query Assistant Feature -# Set the value of this setting to false to disable the query assistant -# observability.query_assist.enabled: false - -# 2.14 Enable Ui Metric Collectors in Usage Collector -# Set the value of this setting to true to enable UI Metric collections -# usageCollection.uiMetric.enabled: false - -opensearch.hosts: [https://localhost:9200] -opensearch.ssl.verificationMode: none -opensearch.username: admin -opensearch.password: 'Qazwsxedc!@#123' -opensearch.requestHeadersWhitelist: [authorization, securitytenant] - -opensearch_security.multitenancy.enabled: true -opensearch_security.multitenancy.tenants.preferred: [Private, Global] -opensearch_security.readonly_mode.roles: [kibana_read_only] -# Use this setting if you are running opensearch-dashboards without https -opensearch_security.cookie.secure: false -server.host: '0.0.0.0' diff --git a/docker/dify/volumes/plugin_daemon/assets/0179a4422f60cc28de38c7b3395b8504c9a7516c050d355849784a46bcea3b91.svg b/docker/dify/volumes/plugin_daemon/assets/0179a4422f60cc28de38c7b3395b8504c9a7516c050d355849784a46bcea3b91.svg deleted file mode 100644 index c6785062..00000000 --- a/docker/dify/volumes/plugin_daemon/assets/0179a4422f60cc28de38c7b3395b8504c9a7516c050d355849784a46bcea3b91.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/docker/dify/volumes/plugin_daemon/assets/8460123b0019ed061306a8d48a5cad5e44f64af4c0d42691b0702433879a963a.svg b/docker/dify/volumes/plugin_daemon/assets/8460123b0019ed061306a8d48a5cad5e44f64af4c0d42691b0702433879a963a.svg deleted file mode 100644 index dddabe5e..00000000 --- a/docker/dify/volumes/plugin_daemon/assets/8460123b0019ed061306a8d48a5cad5e44f64af4c0d42691b0702433879a963a.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml deleted file mode 100644 index 7a9e3e77..00000000 --- a/docker/docker-compose.yml +++ /dev/null @@ -1,59 +0,0 @@ -# ================================================ -# Urban Lifeline - 总控 Docker Compose -# 用于统一管理所有服务的启动 -# ================================================ -# 使用方法: -# 启动所有服务: docker compose --profile all up -d -# 启动基础设施: docker compose --profile infra up -d -# 停止所有服务: docker compose down -# 查看日志: docker compose logs -f [service_name] -# -# All-in-One 模式: -# - urban-lifeline-serv: 所有后端服务 (单容器) -# - urban-lifeline-web: 所有前端应用 (单容器) -# - nginx: 反向代理 -# ================================================ - -name: urban-lifeline - -# 引入子目录的 compose 文件 -include: - # 基础设施 + 业务服务 (All-in-One) - - path: ./infra/docker-compose.yml - -# 共享网络定义 -networks: - urban-lifeline: - driver: bridge - name: urban-lifeline - -# 共享卷定义 -volumes: - # 基础设施 - nacos-data: - driver: local - nacos-logs: - driver: local - minio-data: - driver: local - minio-config: - driver: local - # Jitsi - jitsi-web: - driver: local - jitsi-prosody: - driver: local - jitsi-jicofo: - driver: local - jitsi-jvb: - driver: local - # 后端服务 - serv-logs: - driver: local - serv-config: - driver: local - # 前端服务 - web-logs: - driver: local - web-config: - driver: local diff --git a/docker/jitsi/.env.example b/docker/jitsi/.env.example deleted file mode 100644 index 71509a4e..00000000 --- a/docker/jitsi/.env.example +++ /dev/null @@ -1,62 +0,0 @@ -# ================================================ -# Jitsi Meet - 环境变量配置 -# 复制此文件为 .env 并修改配置 -# ================================================ - -# 时区 -TZ=Asia/Shanghai - -# 数据目录 -DATA_ROOT=../volumes - -# ==================== 镜像版本 ==================== -JITSI_IMAGE_TAG=stable-9584 - -# ==================== 公网访问 ==================== -# Jitsi 公网访问地址 (必须配置) -JITSI_PUBLIC_URL=https://meet.example.com - -# JVB 公网 IP (必须配置,用于 WebRTC 媒体流) -JVB_HOST_ADDRESS=192.168.0.253 - -# ==================== 端口配置 ==================== -# Web 端口 -JITSI_WEB_HTTP_PORT=8280 -JITSI_WEB_HTTPS_PORT=8443 - -# JVB 端口 (UDP 用于媒体流,TCP 用于备用) -JVB_PORT=10000 -JVB_TCP_PORT=4443 - -# ==================== JWT 认证 ==================== -# JWT App ID (与后端服务保持一致) -JWT_APP_ID=urbanLifeline - -# JWT 密钥 (生产环境必须修改!) -JWT_APP_SECRET=your-jwt-secret-key-change-in-production - -# ==================== 功能开关 ==================== -# 是否启用认证 (1=启用, 0=禁用) -JITSI_ENABLE_AUTH=1 - -# 是否允许访客 (1=允许, 0=禁止) -JITSI_ENABLE_GUESTS=0 - -# 是否启用 HTTPS (容器内) -JITSI_ENABLE_HTTPS=0 -JITSI_DISABLE_HTTPS=1 - -# 是否启用录制 -JITSI_ENABLE_RECORDING=0 - -# 日志级别 -JITSI_LOG_LEVEL=info - -# ==================== 组件密码 ==================== -# 内部组件认证密码 (生产环境建议修改) -JICOFO_COMPONENT_SECRET=jicofo-secret -JICOFO_AUTH_PASSWORD=focus-password -JVB_AUTH_PASSWORD=jvb-password - -# ==================== STUN 服务器 ==================== -JVB_STUN_SERVERS=stun.l.google.com:19302,stun1.l.google.com:19302 diff --git a/docker/jitsi/docker-compose.yml b/docker/jitsi/docker-compose.yml deleted file mode 100644 index 2f403d5c..00000000 --- a/docker/jitsi/docker-compose.yml +++ /dev/null @@ -1,198 +0,0 @@ -# ================================================ -# Jitsi Meet 视频会议服务 -# -# 使用方式: -# docker compose up -d -# -# 环境变量配置: -# 复制 .env.example 为 .env 并修改 -# ================================================ - -services: - # ====================== Jitsi Web ====================== - jitsi-web: - image: jitsi/web:${JITSI_IMAGE_TAG:-stable-9584} - container_name: urban-lifeline-jitsi-web - restart: unless-stopped - networks: - - urban-lifeline - ports: - - "${JITSI_WEB_HTTP_PORT:-8280}:80" - - "${JITSI_WEB_HTTPS_PORT:-8443}:443" - environment: - TZ: ${TZ:-Asia/Shanghai} - PUBLIC_URL: ${JITSI_PUBLIC_URL:-https://meet.example.com} - ENABLE_HTTPS: ${JITSI_ENABLE_HTTPS:-0} - ENABLE_HTTP_REDIRECT: 0 - DISABLE_HTTPS: ${JITSI_DISABLE_HTTPS:-1} - # XMPP 配置 - XMPP_DOMAIN: meet.jitsi - XMPP_AUTH_DOMAIN: auth.meet.jitsi - XMPP_BOSH_URL_BASE: http://jitsi-prosody:5280 - XMPP_MUC_DOMAIN: muc.meet.jitsi - XMPP_INTERNAL_MUC_DOMAIN: internal-muc.meet.jitsi - XMPP_GUEST_DOMAIN: guest.meet.jitsi - # 组件认证 - JICOFO_COMPONENT_SECRET: ${JICOFO_COMPONENT_SECRET:-jicofo-secret} - JICOFO_AUTH_USER: focus - JVB_AUTH_USER: jvb - JVB_AUTH_PASSWORD: ${JVB_AUTH_PASSWORD:-jvb-password} - # JWT 认证 - ENABLE_AUTH: ${JITSI_ENABLE_AUTH:-1} - ENABLE_GUESTS: ${JITSI_ENABLE_GUESTS:-0} - AUTH_TYPE: jwt - JWT_APP_ID: ${JWT_APP_ID:-urbanLifeline} - JWT_APP_SECRET: ${JWT_APP_SECRET:-your-jwt-secret-key-change-in-production} - JWT_ACCEPTED_ISSUERS: ${JWT_APP_ID:-urbanLifeline} - JWT_ACCEPTED_AUDIENCES: jitsi - JWT_ALLOW_EMPTY: 0 - JWT_AUTH_TYPE: token - JWT_TOKEN_AUTH_MODULE: token_verification - # 功能开关 - ENABLE_RECORDING: ${JITSI_ENABLE_RECORDING:-0} - ENABLE_TRANSCRIPTIONS: 0 - ENABLE_SUBDOMAINS: 0 - ENABLE_XMPP_WEBSOCKET: 1 - ENABLE_SCTP: 1 - volumes: - - ${DATA_ROOT:-../volumes}/jitsi/web:/config - - ${DATA_ROOT:-../volumes}/jitsi/transcripts:/usr/share/jitsi-meet/transcripts - depends_on: - - jitsi-prosody - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:80/"] - interval: 30s - timeout: 10s - retries: 3 - start_period: 60s - - # ====================== Jitsi Prosody (XMPP) ====================== - jitsi-prosody: - image: jitsi/prosody:${JITSI_IMAGE_TAG:-stable-9584} - container_name: urban-lifeline-jitsi-prosody - restart: unless-stopped - networks: - - urban-lifeline - expose: - - "5222" - - "5347" - - "5280" - environment: - TZ: ${TZ:-Asia/Shanghai} - PUBLIC_URL: ${JITSI_PUBLIC_URL:-https://meet.example.com} - # XMPP 配置 - XMPP_DOMAIN: meet.jitsi - XMPP_AUTH_DOMAIN: auth.meet.jitsi - XMPP_MUC_DOMAIN: muc.meet.jitsi - XMPP_INTERNAL_MUC_DOMAIN: internal-muc.meet.jitsi - XMPP_GUEST_DOMAIN: guest.meet.jitsi - # 组件认证 - JICOFO_COMPONENT_SECRET: ${JICOFO_COMPONENT_SECRET:-jicofo-secret} - JICOFO_AUTH_USER: focus - JICOFO_AUTH_PASSWORD: ${JICOFO_AUTH_PASSWORD:-focus-password} - JVB_AUTH_USER: jvb - JVB_AUTH_PASSWORD: ${JVB_AUTH_PASSWORD:-jvb-password} - # JWT 认证 - ENABLE_AUTH: ${JITSI_ENABLE_AUTH:-1} - ENABLE_GUESTS: ${JITSI_ENABLE_GUESTS:-0} - AUTH_TYPE: jwt - JWT_APP_ID: ${JWT_APP_ID:-urbanLifeline} - JWT_APP_SECRET: ${JWT_APP_SECRET:-your-jwt-secret-key-change-in-production} - JWT_ACCEPTED_ISSUERS: ${JWT_APP_ID:-urbanLifeline} - JWT_ACCEPTED_AUDIENCES: jitsi - JWT_ALLOW_EMPTY: 0 - JWT_AUTH_TYPE: token - JWT_TOKEN_AUTH_MODULE: token_verification - JWT_DISABLE_AUTO_MODERATOR: true - LOG_LEVEL: ${JITSI_LOG_LEVEL:-info} - volumes: - - ${DATA_ROOT:-../volumes}/jitsi/prosody/config:/config - - ${DATA_ROOT:-../volumes}/jitsi/prosody/prosody-plugins-custom:/prosody-plugins-custom - healthcheck: - test: ["CMD", "prosodyctl", "status"] - interval: 30s - timeout: 10s - retries: 3 - start_period: 90s - - # ====================== Jitsi Jicofo (会议焦点) ====================== - jitsi-jicofo: - image: jitsi/jicofo:${JITSI_IMAGE_TAG:-stable-9584} - container_name: urban-lifeline-jitsi-jicofo - restart: unless-stopped - networks: - - urban-lifeline - environment: - TZ: ${TZ:-Asia/Shanghai} - # XMPP 配置 - XMPP_DOMAIN: meet.jitsi - XMPP_AUTH_DOMAIN: auth.meet.jitsi - XMPP_MUC_DOMAIN: muc.meet.jitsi - XMPP_INTERNAL_MUC_DOMAIN: internal-muc.meet.jitsi - XMPP_SERVER: jitsi-prosody - # 组件认证 - JICOFO_COMPONENT_SECRET: ${JICOFO_COMPONENT_SECRET:-jicofo-secret} - JICOFO_AUTH_USER: focus - JICOFO_AUTH_PASSWORD: ${JICOFO_AUTH_PASSWORD:-focus-password} - AUTH_TYPE: jwt - JVB_BREWERY_MUC: jvbbrewery - # 功能配置 - JICOFO_ENABLE_HEALTH_CHECKS: true - JICOFO_ENABLE_AUTO_OWNER: false - JICOFO_ENABLE_AUTO_LOGIN: false - JICOFO_CONFERENCE_INITIAL_OWNER: "" - volumes: - - ${DATA_ROOT:-../volumes}/jitsi/jicofo:/config - depends_on: - - jitsi-prosody - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8888/about/health"] - interval: 30s - timeout: 10s - retries: 3 - start_period: 90s - - # ====================== Jitsi JVB (视频桥接) ====================== - jitsi-jvb: - image: jitsi/jvb:${JITSI_IMAGE_TAG:-stable-9584} - container_name: urban-lifeline-jitsi-jvb - restart: unless-stopped - networks: - - urban-lifeline - ports: - - "${JVB_PORT:-10000}:10000/udp" - - "${JVB_TCP_PORT:-4443}:4443/tcp" - environment: - TZ: ${TZ:-Asia/Shanghai} - # XMPP 配置 - XMPP_DOMAIN: meet.jitsi - XMPP_AUTH_DOMAIN: auth.meet.jitsi - XMPP_INTERNAL_MUC_DOMAIN: internal-muc.meet.jitsi - XMPP_SERVER: jitsi-prosody - # 组件认证 - JVB_AUTH_USER: jvb - JVB_AUTH_PASSWORD: ${JVB_AUTH_PASSWORD:-jvb-password} - JVB_BREWERY_MUC: jvbbrewery - # 网络配置 - JVB_PORT: ${JVB_PORT:-10000} - JVB_STUN_SERVERS: ${JVB_STUN_SERVERS:-stun.l.google.com:19302,stun1.l.google.com:19302} - DOCKER_HOST_ADDRESS: ${JVB_HOST_ADDRESS} - JVB_ADVERTISE_IPS: ${JVB_HOST_ADDRESS} - JVB_ENABLE_APIS: rest,colibri - JVB_TCP_HARVESTER_DISABLED: "false" - JVB_TCP_PORT: ${JVB_TCP_PORT:-4443} - JVB_TCP_MAPPED_PORT: ${JVB_TCP_PORT:-4443} - volumes: - - ${DATA_ROOT:-../volumes}/jitsi/jvb:/config - depends_on: - - jitsi-prosody - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8080/about/health"] - interval: 30s - timeout: 10s - retries: 3 - start_period: 90s - -networks: - urban-lifeline: - name: urban-lifeline diff --git a/docker/kkfileView/.env.example b/docker/kkfileView/.env.example deleted file mode 100644 index 53d879af..00000000 --- a/docker/kkfileView/.env.example +++ /dev/null @@ -1,33 +0,0 @@ -# ================================================ -# KKFileView 配置 -# 复制此文件为 .env 并修改配置 -# ================================================ -# 新增:KKFileView代理后的完整基础URL(HTTPS+域名,无端口、无末尾斜杠) -KKFILEVIEW_BASE_URL=https://org.xyzh.yslg.kkfileview -# ------------------------------ -# 端口配置 -# ------------------------------ -KKFILEVIEW_PORT=8012 - -# ------------------------------ -# 数据目录 -# ------------------------------ -DATA_ROOT=../volumes - -# ------------------------------ -# 存储配置(可选) -# ------------------------------ -# STORAGE_TYPE=local -# STORAGE_PATH=/data - -# ------------------------------ -# 其他配置(可选) -# ------------------------------ -# 预览服务地址(如果需要外部访问) -# KKFILEVIEW_EXTERNAL_URL=http://localhost:8012 - -# 最大文件大小(默认 50M) -# MAX_FILE_SIZE=52428800 - -# 转换超时时间(默认 60s) -# CONVERT_TIMEOUT=60 \ No newline at end of file diff --git a/docker/kkfileView/docker-compose.yml b/docker/kkfileView/docker-compose.yml deleted file mode 100644 index 8a1581bc..00000000 --- a/docker/kkfileView/docker-compose.yml +++ /dev/null @@ -1,43 +0,0 @@ -# ================================================ -# KKFileView 文档预览服务 -# ================================================ -name: urbanlifeline - -services: - -# ====================== KKFileView 文档预览 ====================== - kkfileview: - image: keking/kkfileview:latest - container_name: urban-lifeline-kkfileview - restart: unless-stopped - env_file: - - .env - networks: - - urban-lifeline - ports: - - "${KKFILEVIEW_PORT:-8012}:8012" - environment: - # 基础配置 - KKFILEVIEW_PORT: 8012 - # 新增:核心预览路径(从.env读取,代理后的KKFileView完整域名) - KK_BASE_URL: ${KKFILEVIEW_BASE_URL} - # 新增:允许外部访问(固定值0.0.0.0,无需修改) - SERVER_HOST: 0.0.0.0 - # 存储配置(如果需要) - # STORAGE_TYPE: local - # STORAGE_PATH: /data - TZ: Asia/Shanghai - volumes: - - ${DATA_ROOT:-../volumes}/kkfileview/data:/data - - ${DATA_ROOT:-../volumes}/kkfileview/log:/opt/kkfileview/log - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8012/onlinePreview"] - interval: 30s - timeout: 20s - retries: 3 - start_period: 30s - -networks: - urban-lifeline: - external: true - name: urban-lifeline \ No newline at end of file diff --git a/docker/minio/.env.example b/docker/minio/.env.example deleted file mode 100644 index 3066f4b9..00000000 --- a/docker/minio/.env.example +++ /dev/null @@ -1,36 +0,0 @@ -# ================================================ -# MinIO 配置 -# 复制此文件为 .env 并修改配置 -# ================================================ - -# ------------------------------ -# MinIO 版本 -# ------------------------------ -MINIO_VERSION=latest - -# ------------------------------ -# 端口配置 -# ------------------------------ -# API 端口 -MINIO_API_PORT=9000 -# 控制台端口 -MINIO_CONSOLE_PORT=9001 - -# ------------------------------ -# 认证配置 -# ------------------------------ -MINIO_ROOT_USER=minioadmin -MINIO_ROOT_PASSWORD=minioadmin123 - -# ------------------------------ -# 域名配置(可选,用于反向代理) -# ------------------------------ -# 控制台重定向 URL(通过反向代理访问时设置) -# MINIO_BROWSER_REDIRECT_URL=https://minio-console.example.com -# API 服务 URL(通过反向代理访问时设置) -# MINIO_SERVER_URL=https://minio.example.com - -# ------------------------------ -# 数据目录 -# ------------------------------ -DATA_ROOT=../volumes diff --git a/docker/minio/docker-compose.yml b/docker/minio/docker-compose.yml deleted file mode 100644 index ec206c23..00000000 --- a/docker/minio/docker-compose.yml +++ /dev/null @@ -1,35 +0,0 @@ -services: - -# ====================== MinIO 对象存储 ====================== - minio: - image: minio/minio:${MINIO_VERSION:-latest} - container_name: urban-lifeline-minio - restart: unless-stopped - env_file: - - .env - networks: - - urban-lifeline - ports: - - "${MINIO_API_PORT:-9000}:9000" - - "${MINIO_CONSOLE_PORT:-9001}:9001" - environment: - MINIO_ROOT_USER: ${MINIO_ROOT_USER:-minioadmin} - MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-minioadmin123} - MINIO_CONSOLE_ADDRESS: ":9001" - MINIO_ADDRESS: ":9000" - MINIO_BROWSER_REDIRECT_URL: ${MINIO_BROWSER_REDIRECT_URL:-} - MINIO_SERVER_URL: ${MINIO_SERVER_URL:-} - TZ: Asia/Shanghai - volumes: - - ${DATA_ROOT:-../volumes}/minio/data:/data - - ${DATA_ROOT:-../volumes}/minio/config:/root/.minio - command: server /data --console-address ":9001" - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] - interval: 30s - timeout: 20s - retries: 3 - start_period: 30s -networks: - urban-lifeline: - name: urban-lifeline \ No newline at end of file diff --git a/docker/nacos/.env.example b/docker/nacos/.env.example deleted file mode 100644 index 9bc41369..00000000 --- a/docker/nacos/.env.example +++ /dev/null @@ -1,50 +0,0 @@ -# ================================================ -# Nacos 配置 -# 复制此文件为 .env 并修改配置 -# ================================================ - -# ------------------------------ -# MySQL 配置 -# ------------------------------ -MYSQL_VERSION=8.0 -MYSQL_ROOT_PASSWORD=root123456 -MYSQL_USER=nacos -MYSQL_PASSWORD=nacos123456 -# 暴露到主机的端口(避免与主机 MySQL 冲突) -MYSQL_EXPOSE_PORT=3307 - -# ------------------------------ -# Nacos 版本和模式 -# ------------------------------ -NACOS_VERSION=v3.1.0 -NACOS_MODE=standalone -NACOS_DB_NAME=nacos_config - -# ------------------------------ -# Nacos 端口配置 -# ------------------------------ -NACOS_CONSOLE_PORT=8081 -NACOS_PORT=8848 -NACOS_GRPC_PORT=9848 -NACOS_RAFT_PORT=9849 - -# ------------------------------ -# JVM 配置 -# ------------------------------ -NACOS_JVM_XMS=512m -NACOS_JVM_XMX=512m -NACOS_JVM_XMN=256m - -# ------------------------------ -# 认证配置 -# ------------------------------ -NACOS_AUTH_ENABLE=false -# 生产环境请修改以下密钥 -NACOS_AUTH_TOKEN=ZlRkR2ZxR3BvZ1F0a3JxY2V6RUx2cUh1Rkx6V1ZQbE9kUVd1R1VOcWFFS2t3dG5hS0E9PQ== -NACOS_AUTH_IDENTITY_KEY=serverIdentity -NACOS_AUTH_IDENTITY_VALUE=security - -# ------------------------------ -# 数据目录 -# ------------------------------ -DATA_ROOT=../volumes diff --git a/docker/nacos/docker-compose.yml b/docker/nacos/docker-compose.yml deleted file mode 100644 index 2ce94855..00000000 --- a/docker/nacos/docker-compose.yml +++ /dev/null @@ -1,76 +0,0 @@ -services: -# ====================== MySQL 数据库 ====================== - mysql: - image: mysql:${MYSQL_VERSION:-8.0} - container_name: urban-lifeline-nacos-mysql - restart: unless-stopped - networks: - - urban-lifeline - ports: - - "${MYSQL_EXPOSE_PORT:-3307}:3306" - environment: - MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-root123456} - MYSQL_DATABASE: ${NACOS_DB_NAME:-nacos_config} - MYSQL_USER: ${MYSQL_USER:-nacos} - MYSQL_PASSWORD: ${MYSQL_PASSWORD:-nacos123456} - TZ: Asia/Shanghai - volumes: - - ${DATA_ROOT:-../volumes}/nacos/mysql:/var/lib/mysql - - ./init.sql:/docker-entrypoint-initdb.d/init.sql:ro - command: - - --character-set-server=utf8mb4 - - --collation-server=utf8mb4_unicode_ci - - --default-authentication-plugin=mysql_native_password - healthcheck: - test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${MYSQL_ROOT_PASSWORD:-root123456}"] - interval: 10s - timeout: 5s - retries: 10 - start_period: 30s - -# ====================== Nacos 注册中心 ====================== - nacos: - image: nacos/nacos-server:${NACOS_VERSION:-v3.1.0} - container_name: urban-lifeline-nacos - restart: unless-stopped - env_file: - - .env - networks: - - urban-lifeline - ports: - - "${NACOS_CONSOLE_PORT:-8081}:8081" - - "${NACOS_PORT:-8848}:8848" - - "${NACOS_GRPC_PORT:-9848}:9848" - - "${NACOS_RAFT_PORT:-9849}:9849" - environment: - MODE: ${NACOS_MODE:-standalone} - SPRING_DATASOURCE_PLATFORM: mysql - MYSQL_SERVICE_HOST: mysql - MYSQL_SERVICE_PORT: 3306 - MYSQL_SERVICE_DB_NAME: ${NACOS_DB_NAME:-nacos_config} - MYSQL_SERVICE_USER: ${MYSQL_USER:-nacos} - MYSQL_SERVICE_PASSWORD: ${MYSQL_PASSWORD:-nacos123456} - MYSQL_SERVICE_DB_PARAM: characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true - JVM_XMS: ${NACOS_JVM_XMS:-512m} - JVM_XMX: ${NACOS_JVM_XMX:-512m} - JVM_XMN: ${NACOS_JVM_XMN:-256m} - NACOS_AUTH_ENABLE: ${NACOS_AUTH_ENABLE:-false} - NACOS_AUTH_TOKEN: ${NACOS_AUTH_TOKEN:-ZlRkR2ZxR3BvZ1F0a3JxY2V6RUx2cUh1Rkx6V1ZQbE9kUVd1R1VOcWFFS2t3dG5hS0E9PQ==} - NACOS_AUTH_IDENTITY_KEY: ${NACOS_AUTH_IDENTITY_KEY:-serverIdentity} - NACOS_AUTH_IDENTITY_VALUE: ${NACOS_AUTH_IDENTITY_VALUE:-security} - volumes: - - ${DATA_ROOT:-../volumes}/nacos/data:/home/nacos/data - - ${DATA_ROOT:-../volumes}/nacos/logs:/home/nacos/logs - depends_on: - mysql: - condition: service_healthy - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8848/nacos/"] - interval: 30s - timeout: 10s - retries: 5 - start_period: 60s - -networks: - urban-lifeline: - name: urban-lifeline diff --git a/docker/nacos/init.sql b/docker/nacos/init.sql deleted file mode 100644 index 36098b16..00000000 --- a/docker/nacos/init.sql +++ /dev/null @@ -1,182 +0,0 @@ -/* - * Copyright 1999-2018 Alibaba Group Holding Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -DROP DATABASE IF EXISTS `nacos_config`; -CREATE DATABASE IF NOT EXISTS `nacos_config` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -USE `nacos_config`; - -/******************************************/ -/* 表名称 = config_info */ -/******************************************/ -CREATE TABLE `config_info` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', - `data_id` VARCHAR(255) NOT NULL COMMENT 'data_id', - `group_id` VARCHAR(128) DEFAULT NULL COMMENT 'group_id', - `content` longtext NOT NULL COMMENT 'content', - `md5` VARCHAR(32) DEFAULT NULL COMMENT 'md5', - `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', - `src_user` text COMMENT 'source user', - `src_ip` VARCHAR(50) DEFAULT NULL COMMENT 'source ip', - `app_name` VARCHAR(128) DEFAULT NULL COMMENT 'app_name', - `tenant_id` VARCHAR(128) DEFAULT '' COMMENT '租户字段', - `c_desc` VARCHAR(256) DEFAULT NULL COMMENT 'configuration description', - `c_use` VARCHAR(64) DEFAULT NULL COMMENT 'configuration usage', - `effect` VARCHAR(64) DEFAULT NULL COMMENT '配置生效的描述', - `type` VARCHAR(64) DEFAULT NULL COMMENT '配置的类型', - `c_schema` text COMMENT '配置的模式', - `encrypted_data_key` VARCHAR(1024) NOT NULL DEFAULT '' COMMENT '密钥', - PRIMARY KEY (`id`), - UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info'; - -/******************************************/ -/* 表名称 = config_info since 2.5.0 */ -/******************************************/ -CREATE TABLE `config_info_gray` ( - `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'id', - `data_id` VARCHAR(255) NOT NULL COMMENT 'data_id', - `group_id` VARCHAR(128) NOT NULL COMMENT 'group_id', - `content` longtext NOT NULL COMMENT 'content', - `md5` VARCHAR(32) DEFAULT NULL COMMENT 'md5', - `src_user` text COMMENT 'src_user', - `src_ip` VARCHAR(100) DEFAULT NULL COMMENT 'src_ip', - `gmt_create` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT 'gmt_create', - `gmt_modified` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT 'gmt_modified', - `app_name` VARCHAR(128) DEFAULT NULL COMMENT 'app_name', - `tenant_id` VARCHAR(128) DEFAULT '' COMMENT 'tenant_id', - `gray_name` VARCHAR(128) NOT NULL COMMENT 'gray_name', - `gray_rule` text NOT NULL COMMENT 'gray_rule', - `encrypted_data_key` VARCHAR(256) NOT NULL DEFAULT '' COMMENT 'encrypted_data_key', - PRIMARY KEY (`id`), - UNIQUE KEY `uk_configinfogray_datagrouptenantgray` (`data_id`,`group_id`,`tenant_id`,`gray_name`), - KEY `idx_dataid_gmt_modified` (`data_id`,`gmt_modified`), - KEY `idx_gmt_modified` (`gmt_modified`) -) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='config_info_gray'; - -/******************************************/ -/* 表名称 = config_tags_relation */ -/******************************************/ -CREATE TABLE `config_tags_relation` ( - `id` bigint(20) NOT NULL COMMENT 'id', - `tag_name` VARCHAR(128) NOT NULL COMMENT 'tag_name', - `tag_type` VARCHAR(64) DEFAULT NULL COMMENT 'tag_type', - `data_id` VARCHAR(255) NOT NULL COMMENT 'data_id', - `group_id` VARCHAR(128) NOT NULL COMMENT 'group_id', - `tenant_id` VARCHAR(128) DEFAULT '' COMMENT 'tenant_id', - `nid` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'nid, 自增长标识', - PRIMARY KEY (`nid`), - UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`), - KEY `idx_tenant_id` (`tenant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation'; - -/******************************************/ -/* 表名称 = group_capacity */ -/******************************************/ -CREATE TABLE `group_capacity` ( - `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', - `group_id` VARCHAR(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群', - `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值', - `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量', - `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值', - `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值', - `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值', - `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量', - `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', - PRIMARY KEY (`id`), - UNIQUE KEY `uk_group_id` (`group_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表'; - -/******************************************/ -/* 表名称 = his_config_info */ -/******************************************/ -CREATE TABLE `his_config_info` ( - `id` bigint(20) unsigned NOT NULL COMMENT 'id', - `nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'nid, 自增标识', - `data_id` VARCHAR(255) NOT NULL COMMENT 'data_id', - `group_id` VARCHAR(128) NOT NULL COMMENT 'group_id', - `app_name` VARCHAR(128) DEFAULT NULL COMMENT 'app_name', - `content` longtext NOT NULL COMMENT 'content', - `md5` VARCHAR(32) DEFAULT NULL COMMENT 'md5', - `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', - `src_user` text COMMENT 'source user', - `src_ip` VARCHAR(50) DEFAULT NULL COMMENT 'source ip', - `op_type` char(10) DEFAULT NULL COMMENT 'operation type', - `tenant_id` VARCHAR(128) DEFAULT '' COMMENT '租户字段', - `encrypted_data_key` VARCHAR(1024) NOT NULL DEFAULT '' COMMENT '密钥', - `publish_type` VARCHAR(50) DEFAULT 'formal' COMMENT 'publish type gray or formal', - `gray_name` VARCHAR(50) DEFAULT NULL COMMENT 'gray name', - `ext_info` longtext DEFAULT NULL COMMENT 'ext info', - PRIMARY KEY (`nid`), - KEY `idx_gmt_create` (`gmt_create`), - KEY `idx_gmt_modified` (`gmt_modified`), - KEY `idx_did` (`data_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造'; - - -/******************************************/ -/* 表名称 = tenant_capacity */ -/******************************************/ -CREATE TABLE `tenant_capacity` ( - `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', - `tenant_id` VARCHAR(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID', - `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值', - `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量', - `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值', - `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数', - `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值', - `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量', - `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', - PRIMARY KEY (`id`), - UNIQUE KEY `uk_tenant_id` (`tenant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表'; - - -CREATE TABLE `tenant_info` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', - `kp` VARCHAR(128) NOT NULL COMMENT 'kp', - `tenant_id` VARCHAR(128) default '' COMMENT 'tenant_id', - `tenant_name` VARCHAR(128) default '' COMMENT 'tenant_name', - `tenant_desc` VARCHAR(256) DEFAULT NULL COMMENT 'tenant_desc', - `create_source` VARCHAR(32) DEFAULT NULL COMMENT 'create_source', - `gmt_create` bigint(20) NOT NULL COMMENT '创建时间', - `gmt_modified` bigint(20) NOT NULL COMMENT '修改时间', - PRIMARY KEY (`id`), - UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`), - KEY `idx_tenant_id` (`tenant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info'; - -CREATE TABLE `users` ( - `username` VARCHAR(50) NOT NULL PRIMARY KEY COMMENT 'username', - `password` VARCHAR(500) NOT NULL COMMENT 'password', - `enabled` BOOLEAN NOT NULL COMMENT 'enabled' -); - -CREATE TABLE `roles` ( - `username` VARCHAR(50) NOT NULL COMMENT 'username', - `role` VARCHAR(50) NOT NULL COMMENT 'role', - UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE -); - -CREATE TABLE `permissions` ( - `role` VARCHAR(50) NOT NULL COMMENT 'role', - `resource` VARCHAR(128) NOT NULL COMMENT 'resource', - `action` VARCHAR(8) NOT NULL COMMENT 'action', - UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE -); - diff --git a/docker/start.sh b/docker/start.sh deleted file mode 100644 index f0473580..00000000 --- a/docker/start.sh +++ /dev/null @@ -1,79 +0,0 @@ -#!/bin/bash -############################################## -# Urban Lifeline - 快速启动脚本 -############################################## - -set -e - -SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd) -cd "${SCRIPT_DIR}" - -# 颜色 -GREEN='\033[0;32m' -YELLOW='\033[1;33m' -BLUE='\033[0;34m' -NC='\033[0m' - -show_help() { - echo -e "${BLUE}Urban Lifeline - 快速启动脚本${NC}" - echo "" - echo "用法: ./start.sh [命令]" - echo "" - echo "命令:" - echo " up 启动所有服务" - echo " up-infra 只启动基础设施 (nacos/minio/jitsi)" - echo " up-serv 只启动后端服务" - echo " up-web 只启动前端服务" - echo " down 停止所有服务" - echo " restart 重启所有服务" - echo " status 查看服务状态" - echo " logs 查看所有日志" - echo " logs-f 实时查看日志" - echo "" -} - -case "${1:-help}" in - up) - echo -e "${YELLOW}启动所有服务...${NC}" - docker compose --profile all up -d - echo -e "${GREEN}✓ 所有服务已启动${NC}" - ;; - up-infra) - echo -e "${YELLOW}启动基础设施...${NC}" - docker compose --profile infra up -d - echo -e "${GREEN}✓ 基础设施已启动${NC}" - ;; - up-serv) - echo -e "${YELLOW}启动后端服务...${NC}" - docker compose --profile serv up -d - echo -e "${GREEN}✓ 后端服务已启动${NC}" - ;; - up-web) - echo -e "${YELLOW}启动前端服务...${NC}" - docker compose --profile web up -d - echo -e "${GREEN}✓ 前端服务已启动${NC}" - ;; - down) - echo -e "${YELLOW}停止所有服务...${NC}" - docker compose --profile all down - echo -e "${GREEN}✓ 所有服务已停止${NC}" - ;; - restart) - echo -e "${YELLOW}重启所有服务...${NC}" - docker compose --profile all down - docker compose --profile all up -d - echo -e "${GREEN}✓ 所有服务已重启${NC}" - ;; - status) - docker compose ps - ;; - logs) - docker compose logs - ;; - logs-f) - docker compose logs -f - ;; - help|*) - show_help - ;; -esac diff --git a/docker/stop.sh b/docker/stop.sh deleted file mode 100644 index 97d0cce1..00000000 --- a/docker/stop.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -############################################## -# Urban Lifeline - 停止脚本 -############################################## - -SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd) -cd "${SCRIPT_DIR}" - -echo "停止所有服务..." -docker compose --profile all down - -echo "✓ 所有服务已停止" diff --git a/docker/urbanLifeline/.env.example b/docker/urbanLifeline/.env.example deleted file mode 100644 index fdeb9f22..00000000 --- a/docker/urbanLifeline/.env.example +++ /dev/null @@ -1,46 +0,0 @@ -# ================================================ -# Urban Lifeline - Docker 环境变量配置 -# 复制此文件为 .env 并修改配置 -# ================================================ - -# 镜像版本 -IMAGE_VERSION=latest - -# 数据目录 (日志、配置等) -DATA_ROOT=../volumes - -# ==================== 后端配置 ==================== -# Spring 运行环境 -SPRING_PROFILES_ACTIVE=prod - -# Nacos 配置 -NACOS_SERVER_ADDR=nacos:8848 -NACOS_NAMESPACE= - -# ==================== 前端配置 ==================== -# 前端端口 (可自定义) -SHARED_PORT=8000 -PLATFORM_PORT=8001 -WORKCASE_PORT=8002 -BIDDING_PORT=8003 -WORKCASE_WECHAT_PORT=8004 - -# ==================== 基础设施 ==================== -# MySQL (Nacos 使用) -MYSQL_HOST=host.docker.internal -MYSQL_PORT=3306 -MYSQL_USER=root -MYSQL_PASSWORD=123456 - -# MinIO 配置 -MINIO_ROOT_USER=minioadmin -MINIO_ROOT_PASSWORD=minioadmin123 - -# Dify AI 配置 -DIFY_API_URL=http://dify-api:5001 - -# ==================== Jitsi 视频会议 ==================== -JWT_APP_ID=urbanLifeline -JWT_APP_SECRET=urbanLifeline-jitsi-secret-key-2025-production-safe-hs256 -JVB_HOST_ADDRESS=192.168.0.253 -JITSI_PUBLIC_URL=https://org.xyzh.yslg.jitsi diff --git a/docker/urbanLifeline/Makefile b/docker/urbanLifeline/Makefile deleted file mode 100644 index 760ebc5f..00000000 --- a/docker/urbanLifeline/Makefile +++ /dev/null @@ -1,202 +0,0 @@ -# ================================================ -# Urban Lifeline - Docker 构建与部署 (All-in-One) -# ================================================ - -.PHONY: help build build-pg build-base build-serv build-web up down logs ps status restart -.PHONY: save save-pg save-base save-serv save-web - -# 项目根目录 (相对于此 Makefile) -ROOT_DIR := ../.. - -# 镜像导出目录 -EXPORT_DIR := ./images - -# 时间戳标签 -TIMESTAMP := $(shell date +%Y%m%d_%H%M%S) - -# 默认目标 -help: - @echo "Urban Lifeline Docker 命令 (All-in-One 模式)" - @echo "" - @echo "构建命令:" - @echo " make build - 构建所有镜像 (pg + base + serv + web)" - @echo " make build-pg - 构建 PostgreSQL 镜像" - @echo " make build-base - 构建后端基础镜像" - @echo " make build-serv - 构建后端服务镜像 (依赖 base)" - @echo " make build-web - 构建前端镜像" - @echo "" - @echo "构建并导出 (SAVE=1):" - @echo " make build-pg SAVE=1 - 构建并导出 PostgreSQL 镜像" - @echo " make build-serv SAVE=1 - 构建并导出后端镜像" - @echo " make build-web SAVE=1 - 构建并导出前端镜像" - @echo " make build SAVE=1 - 构建并导出所有镜像" - @echo "" - @echo "导出命令:" - @echo " make save - 导出所有镜像" - @echo " make save-pg - 导出 PostgreSQL 镜像" - @echo " make save-base - 导出后端基础镜像" - @echo " make save-serv - 导出后端服务镜像" - @echo " make save-web - 导出前端镜像" - @echo "" - @echo "启动/停止:" - @echo " make up - 启动所有服务" - @echo " make down - 停止所有服务" - @echo "" - @echo "管理命令:" - @echo " make ps - 查看容器状态" - @echo " make status - 查看服务状态" - @echo " make logs - 查看日志" - @echo " make restart-serv SERVICE=gateway - 重启后端服务" - @echo " make restart-web SITE=platform - 重启前端站点" - @echo "" - @echo "镜像导出目录: $(EXPORT_DIR)" - -# ============================================ -# 构建镜像 -# ============================================ - -# 构建所有镜像 -build: build-pg build-base build-serv build-web -ifdef SAVE - @$(MAKE) save -endif - -# 构建 PostgreSQL 镜像 -build-pg: - @echo "==========================================" - @echo " 构建 PostgreSQL 镜像" - @echo " 标签: $(TIMESTAMP) / latest" - @echo "==========================================" - docker build -t urban-lifeline-pg:$(TIMESTAMP) -f postgres/Dockerfile.pg postgres/ - docker tag urban-lifeline-pg:$(TIMESTAMP) urban-lifeline-pg:latest -ifdef SAVE - @$(MAKE) save-pg -endif - -# 构建后端基础镜像 -build-base: - @echo "==========================================" - @echo " 构建后端基础镜像" - @echo " 标签: $(TIMESTAMP) / latest" - @echo "==========================================" - cd $(ROOT_DIR) && docker build -t urban-lifeline-base-serv:$(TIMESTAMP) -f docker/urbanLifeline/serv/Dockerfile.base . - docker tag urban-lifeline-base-serv:$(TIMESTAMP) urban-lifeline-base-serv:latest -ifdef SAVE - @$(MAKE) save-base -endif - -# 构建后端服务镜像 (依赖 base 镜像) -build-serv: build-base - @echo "==========================================" - @echo " 构建后端服务镜像" - @echo " 标签: $(TIMESTAMP) / latest" - @echo "==========================================" - cd $(ROOT_DIR) && docker build -t urban-lifeline-serv:$(TIMESTAMP) -f docker/urbanLifeline/serv/Dockerfile.serv . - docker tag urban-lifeline-serv:$(TIMESTAMP) urban-lifeline-serv:latest -ifdef SAVE - @$(MAKE) save-serv -endif - -# 构建前端镜像 -build-web: - @echo "==========================================" - @echo " 构建前端镜像" - @echo " 标签: $(TIMESTAMP) / latest" - @echo "==========================================" - cd $(ROOT_DIR) && docker build -t urban-lifeline-web:$(TIMESTAMP) -f docker/urbanLifeline/web/Dockerfile.web . - docker tag urban-lifeline-web:$(TIMESTAMP) urban-lifeline-web:latest -ifdef SAVE - @$(MAKE) save-web -endif - -# ============================================ -# 导出镜像 -# ============================================ - -# 创建导出目录 -$(EXPORT_DIR): - mkdir -p $(EXPORT_DIR) - -# 导出所有镜像 -save: save-pg save-base save-serv save-web - -# 导出 PostgreSQL 镜像 -save-pg: $(EXPORT_DIR) - @echo "导出 PostgreSQL 镜像..." - docker save urban-lifeline-pg:latest | gzip > $(EXPORT_DIR)/urban-lifeline-pg.tar.gz - @echo "已导出: $(EXPORT_DIR)/urban-lifeline-pg.tar.gz" - -# 导出后端基础镜像 -save-base: $(EXPORT_DIR) - @echo "导出后端基础镜像..." - docker save urban-lifeline-base-serv:latest | gzip > $(EXPORT_DIR)/urban-lifeline-base-serv.tar.gz - @echo "已导出: $(EXPORT_DIR)/urban-lifeline-base-serv.tar.gz" - -# 导出后端服务镜像 -save-serv: $(EXPORT_DIR) - @echo "导出后端服务镜像..." - docker save urban-lifeline-serv:latest | gzip > $(EXPORT_DIR)/urban-lifeline-serv.tar.gz - @echo "已导出: $(EXPORT_DIR)/urban-lifeline-serv.tar.gz" - -# 导出前端镜像 -save-web: $(EXPORT_DIR) - @echo "导出前端镜像..." - docker save urban-lifeline-web:latest | gzip > $(EXPORT_DIR)/urban-lifeline-web.tar.gz - @echo "已导出: $(EXPORT_DIR)/urban-lifeline-web.tar.gz" - -# ============================================ -# 启动/停止 -# ============================================ - -up: - cd .. && docker compose --profile all up -d - -down: - cd .. && docker compose --profile all down - -# ============================================ -# 状态查看 -# ============================================ - -ps: - docker ps --filter "name=urban-lifeline" - -status: - @echo "=== 后端服务状态 ===" - @docker exec urban-lifeline-serv /app/service-manager.sh status 2>/dev/null || echo "后端容器未运行" - @echo "" - @echo "=== 前端服务状态 ===" - @docker exec urban-lifeline-web /app/web-manager.sh status 2>/dev/null || echo "前端容器未运行" - -# ============================================ -# 日志 -# ============================================ - -logs: - cd .. && docker compose logs -f --tail=100 - -logs-serv: - docker logs -f --tail=100 urban-lifeline-serv - -logs-web: - docker logs -f --tail=100 urban-lifeline-web - -# ============================================ -# 重启单个服务 -# ============================================ - -restart-serv: - @if [ -z "$(SERVICE)" ]; then \ - echo "用法: make restart-serv SERVICE=gateway"; \ - echo "可用服务: gateway system auth file log message crontab bidding workcase platform ai"; \ - else \ - docker exec urban-lifeline-serv /app/service-manager.sh restart $(SERVICE); \ - fi - -restart-web: - @if [ -z "$(SITE)" ]; then \ - echo "用法: make restart-web SITE=platform"; \ - echo "可用站点: shared platform workcase bidding workcase_wechat"; \ - else \ - docker exec urban-lifeline-web /app/web-manager.sh restart $(SITE); \ - fi diff --git a/docker/urbanLifeline/README.md b/docker/urbanLifeline/README.md deleted file mode 100644 index 27051785..00000000 --- a/docker/urbanLifeline/README.md +++ /dev/null @@ -1,124 +0,0 @@ -# Urban Lifeline Docker 部署 (All-in-One) - -## 目录结构 - -``` -docker/urbanLifeline/ -├── .env.example # 环境变量示例 -├── Makefile # 快捷命令 -├── README.md # 本文档 -├── serv/ # 后端服务 -│ ├── build.sh # 构建脚本 -│ ├── Dockerfile.base # 基础镜像 -│ ├── Dockerfile.serv # 服务镜像 -│ └── service-manager.sh # 服务管理脚本 -└── web/ # 前端应用 - ├── build.sh # 构建脚本 - ├── Dockerfile.web # 前端镜像 - └── web-manager.sh # 前端管理脚本 -``` - -## 服务端口 - -### 后端服务 (urban-lifeline-serv) -| 服务 | 端口 | 说明 | -|------|------|------| -| gateway | 8080 | API 网关 | -| auth | 8081 | 认证服务 | -| system | 8082 | 系统服务 | -| log | 8083 | 日志服务 | -| file | 8084 | 文件服务 | -| message | 8085 | 消息服务 | -| crontab | 8086 | 定时任务 | -| bidding | 8087 | 招标服务 | -| workcase | 8088 | 工单服务 | -| platform | 8089 | 平台服务 | -| ai | 8090 | AI 服务 | - -### 前端应用 (urban-lifeline-web) -| 应用 | 端口 | 说明 | -|------|------|------| -| shared | 8000 | 公共模块 (Module Federation) | -| platform | 8001 | 管理平台 | -| workcase | 8002 | 工单系统 PC | -| bidding | 8003 | 招标系统 | -| workcase_wechat | 8004 | 工单微信端 | - -## 快速开始 - -### 1. 准备环境变量 -```bash -cd docker/urbanLifeline -cp .env.example .env -# 编辑 .env 配置 -``` - -### 2. 构建镜像 -```bash -# 构建后端 (需先编译 Java) -cd urbanLifelineServ && mvn clean package -DskipTests -cd docker/urbanLifeline && make build-serv - -# 构建前端 (需先构建前端) -cd urbanLifelineWeb && pnpm build -cd docker/urbanLifeline && make build-web -``` - -### 3. 启动服务 -```bash -make up -``` - -### 4. 管理服务 -```bash -# 查看状态 -make status - -# 重启单个后端服务 -make restart-serv SERVICE=gateway - -# 重启单个前端站点 -make restart-web SITE=platform - -# 查看日志 -make logs -``` - -## 配置外挂 - -容器支持配置外挂,可在运行时覆盖默认配置: - -### 后端配置目录结构 -``` -volumes/config/serv/ -├── gateway.yml # gateway 服务配置 -├── system.yml # system 服务配置 -├── auth.yml # auth 服务配置 -├── file.yml # file 服务配置 -├── log.yml # log 服务配置 -├── message.yml # message 服务配置 -├── crontab.yml # crontab 服务配置 -├── ai.yml # ai 服务配置 -├── bidding.yml # bidding 服务配置 -├── platform.yml # platform 服务配置 -└── workcase.yml # workcase 服务配置 -``` - -每个服务的配置文件会通过 `spring.config.additional-location` 加载,覆盖 JAR 包内的默认配置。 - -### 前端配置 -``` -volumes/config/web/ -├── env.js # 运行时环境变量 -└── config.json # 应用配置 -``` - -## 依赖服务 - -确保以下基础设施服务已启动: -- Nacos (服务注册/配置中心) -- PostgreSQL (数据库) -- Redis (缓存) -- MinIO (对象存储) - -通过 `docker compose --profile infra up -d` 启动基础设施。 diff --git a/docker/urbanLifeline/nginx/.env.example b/docker/urbanLifeline/nginx/.env.example deleted file mode 100644 index 25d71062..00000000 --- a/docker/urbanLifeline/nginx/.env.example +++ /dev/null @@ -1,14 +0,0 @@ -# ------------------------------ -# 挂载目录配置 -# ------------------------------ -# 数据目录 -DATA_ROOT=./volumes - -# 配置文件目录 -CONFIG_ROOT=./volumes - -# 配置文件位置 -CONFIG_FILE_ROOT=./volumes - -# SSL证书目录 -SSL_ROOT= \ No newline at end of file diff --git a/docker/urbanLifeline/nginx/docker-compose.yml b/docker/urbanLifeline/nginx/docker-compose.yml deleted file mode 100644 index b808748f..00000000 --- a/docker/urbanLifeline/nginx/docker-compose.yml +++ /dev/null @@ -1,34 +0,0 @@ -# ================================================ -# Level 1: 基础设施服务 -# Nacos, MinIO, Nginx, Jitsi Meet -# ================================================ - -services: - # ====================== Nginx 反向代理 ====================== - nginx: - image: nginx:alpine - container_name: urban-lifeline-nginx - restart: unless-stopped - networks: - - urban-lifeline - ports: - - "80:80" - - "443:443" - environment: - TZ: Asia/Shanghai - volumes: - - ${LOG_ROOT:-./volumes/nginx/logs}:/var/log/nginx - - ${CONFIG_FILE_ROOT:-./volumes/nginx.conf}:/etc/nginx/nginx.conf:ro - - ${CONFIG_ROOT:-./volumes/conf.d}:/etc/nginx/conf.d:ro - # SSL 证书(可选) - - ${SSL_ROOT:-./volumes/cert}:/etc/nginx/ssl:ro - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost/health"] - interval: 30s - timeout: 10s - retries: 3 - start_period: 30s - -networks: - urban-lifeline: - name: urban-lifeline diff --git a/docker/urbanLifeline/nginx/nginx/cert/server.crt b/docker/urbanLifeline/nginx/nginx/cert/server.crt deleted file mode 100644 index 7dfe89eb..00000000 --- a/docker/urbanLifeline/nginx/nginx/cert/server.crt +++ /dev/null @@ -1,25 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIEQjCCAqqgAwIBAgIRAMY7fF5Y4UwBxlADzNMomtswDQYJKoZIhvcNAQELBQAw -gYUxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEtMCsGA1UECwwkREVT -S1RPUC1QUElTVU1WXEZLMDVAREVTS1RPUC1QUElTVU1WMTQwMgYDVQQDDCtta2Nl -cnQgREVTS1RPUC1QUElTVU1WXEZLMDVAREVTS1RPUC1QUElTVU1WMB4XDTI2MDEw -NzA4MzM0MFoXDTI4MDQwNzA4MzM0MFowWDEnMCUGA1UEChMebWtjZXJ0IGRldmVs -b3BtZW50IGNlcnRpZmljYXRlMS0wKwYDVQQLDCRERVNLVE9QLVBQSVNVTVZcRksw -NUBERVNLVE9QLVBQSVNVTVYwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB -AQDSqRj6idrpU7rm4fiJg8s1KTAl5ZxIu/p76XwDRayPV8XAis0cSgzv/4DoPw2h -e4oHTZXeyvIvE+NJFShzbzGkgMNB8QepoZ28ob+uY9YueC6hizHy41zIkiu5flXx -lCEgb3lsZGpZFzqp6Ase8AimOdWy2A6FNE7EBide08J6WxvdblfPfTDgutygT+dy -aT+pWqsutWUO8qmgHmb4zwaMksobxMyfi4W2ZPn2VmXml2xw2SW4ZiMCIABMQiZQ -wZjWfZLo0dMd59POpS3SM4L7FrxpKTEZxq0m/OPZUkuIJ4xGpu5qOq8DAsDgU4v+ -C1JvBr6H/GJ0f5cFShPCXFlrAgMBAAGjWTBXMA4GA1UdDwEB/wQEAwIFoDATBgNV -HSUEDDAKBggrBgEFBQcDATAfBgNVHSMEGDAWgBQTBX2ybplAWySTzNHzceSAS9MH -wDAPBgNVHREECDAGhwTAqIKDMA0GCSqGSIb3DQEBCwUAA4IBgQCMVPuwe9iOJW6A -Cvb2lLTVCkfqn0jXgSOzEfP7j0eV01ayXpsFiNX4z0b6ACX4HNkjUFT7r3h/zVbu -JyYIEbHHwiqZXCaAg5QENqvPqzx34eHNROFEixBH1Y1VgiEEiKP5QOiTxIQLvcls -TSsXMeg58bYNYB0zmQ0wRe+r88nIkNU8R+J4BFbkgSeZch3ScXi15hfyItw81546 -hYK1ncMH3r8ZLzKcOQEnSw4SAJTMUPmePwr7GlqIhpFRnidyvx1cK8jR3FnJnoQn -/871s0dYk8ZuBk+mgFMDXXg6wq5oS2xs79BG3/4RaJciL5jtRg6vB36YfclliPfw -mfr3ypJRKusAipPsfPvdcM37GmemzWLb2EYjN+w0oHo7v1uaV8iyNDVIxKxjvGub -9k8VDkT9Ub+cawrH/oECS+avFqViqKUQy0TyG/eHTRV5chQnlnellDy/HnladS+7 -0rvCWOGvnlpvGSQBiCr/iNPhiJhvs0J5m3jBAfml9C5YmY7/900= ------END CERTIFICATE----- diff --git a/docker/urbanLifeline/nginx/nginx/cert/server.key b/docker/urbanLifeline/nginx/nginx/cert/server.key deleted file mode 100644 index 21dacc3e..00000000 --- a/docker/urbanLifeline/nginx/nginx/cert/server.key +++ /dev/null @@ -1,28 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDSqRj6idrpU7rm -4fiJg8s1KTAl5ZxIu/p76XwDRayPV8XAis0cSgzv/4DoPw2he4oHTZXeyvIvE+NJ -FShzbzGkgMNB8QepoZ28ob+uY9YueC6hizHy41zIkiu5flXxlCEgb3lsZGpZFzqp -6Ase8AimOdWy2A6FNE7EBide08J6WxvdblfPfTDgutygT+dyaT+pWqsutWUO8qmg -Hmb4zwaMksobxMyfi4W2ZPn2VmXml2xw2SW4ZiMCIABMQiZQwZjWfZLo0dMd59PO -pS3SM4L7FrxpKTEZxq0m/OPZUkuIJ4xGpu5qOq8DAsDgU4v+C1JvBr6H/GJ0f5cF -ShPCXFlrAgMBAAECggEAMlwQR5x7A7prfNRaaO1jv8Kn6vdYBB9EAylO5y1Z0i6m -bKAB5phhPWJ0O5EPPiJdXd+TS15yxQRZGlh/ghD76hqKExJ+xXOIVNbKDvN4+UTr -yNyQxULLJHulDkQAYa8KuElN2raqob+m24VIW04Ak1RSHN3/oqJdjgj2knnHDR6Z -b6OwZhF/Axpj45RA3nlD93G6Orb34QEnPxgRig0ma3/xLxU4rpbLd73tDDSk8uDH -z7OAgv/n//TnDTZ8OltRDGY7gUOI1eLqj6Pa/3grwJDPxgO2y4RXO/o6kEMFySPi -8RrvOGElINO60UhgODFe1oPJW05pZnorJz5jjHtAuQKBgQDam2LL18H47DIvARkj -bdOr7LgHvi1NNCLxOCnECTHs6Ns44Q+0xUDIf04iBr8AvcHyvspPg6mLRgTojT4t -HFujQ991RchHAbF2gMqGZQ9wn83bpaDWN9Ig2drYx2fkWwIerwuNuTV/es7gELhb -oWGhyh86syl9PO3Elab/h6jbPQKBgQD2sb5rw+9bw0tvi+XLFM7K+JeQsLZTblyd -4dCUdOvNd8GfImMBJKGq20SVM2yQtq/ATzphK5Al0GKtsnlSGOfGSgfJ4sd/xD3O -6Fe+Q7MgHoXnEuvNyEQ1wlEDGrae3FVih7XHJ60J+6XKaJQv6VdeQmVq2IlrOU8H -ofSiv+RxxwKBgQCxTUnqDopSfC+PlBJxe8gsLwhrr0FK1rhocKbfSp3lik8TaOa2 -NS3/79DNJC+SSFWfrkKkDyNZxGaCvtvo9pEUcB4zHW/8t1DZzkd0jU7ih5oNRd6X -IBsbbdZj8AdBXNbxUAPM5KSRSmezr5v3JYLsF+UQVPOXke0+fio+Iic/+QKBgFuG -yKp88IJwK72//srg9nRR1RHmrk64BH7DODrMQmxiASFEhcz3xU95uLFOefoa/Yvx -GSzSF9IfxWzCacau3NcxwkAB9piNu4zXoS5DOeMxz+ZSm9AmfEAhzyLCt3yrLLa4 -uRWhv86TYgh90nUQMs0S/0OsARgaFBs12GjFn0EjAoGAVz2vvNKi6F6kunm055T/ -vhgB28Qt2EojcOQeQ9ARTH/VuPDMjTmbU6iip0mFRImUmFnSKY4+4+K7HAB9oxHG -w1/sPsymosVrgPKloJ3vU7yJI2JYgbsjZRhscPYE7Ir7mVhlNyuO6wJOHGK7Lex2 -MR2JpfmcOIHRRqrwAa+Gmss= ------END PRIVATE KEY----- diff --git a/docker/urbanLifeline/nginx/nginx/conf.d/default.conf b/docker/urbanLifeline/nginx/nginx/conf.d/default.conf deleted file mode 100644 index 6ea53116..00000000 --- a/docker/urbanLifeline/nginx/nginx/conf.d/default.conf +++ /dev/null @@ -1,151 +0,0 @@ -# ================================================ -# Urban Lifeline - 站点配置 (All-in-One 模式) -# ================================================ - -# 上游服务定义 - 后端 All-in-One 容器 -upstream gateway { - server urban-lifeline-serv:8080; - keepalive 32; -} - -# 上游服务定义 - 前端 All-in-One 容器 -upstream shared { - server urban-lifeline-web:8000; -} - -upstream platform { - server urban-lifeline-web:8001; -} - -upstream workcase-web { - server urban-lifeline-web:8002; -} - -upstream bidding-web { - server urban-lifeline-web:8003; -} - -upstream workcase-wechat { - server urban-lifeline-web:8004; -} - -# HTTP 重定向到 HTTPS -server { - listen 80; - server_name localhost; - return 301 https://$host$request_uri; -} - -# HTTPS 服务 -server { - listen 443 ssl; - server_name localhost; - - # SSL 证书配置 - ssl_certificate /etc/nginx/ssl/server.crt; - ssl_certificate_key /etc/nginx/ssl/server.key; - - # SSL 安全配置 - ssl_protocols TLSv1.2 TLSv1.3; - ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-CHACHA20-POLY1305; - ssl_prefer_server_ciphers on; - ssl_session_cache shared:SSL:10m; - ssl_session_timeout 10m; - - # 健康检查端点 - location /health { - access_log off; - return 200 "healthy\n"; - add_header Content-Type text/plain; - } - - # ====================== 前端应用代理 ====================== - - # Shared 公共模块 (Module Federation 远程模块) - location /shared/ { - proxy_pass http://shared/; - proxy_http_version 1.1; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - - # 允许跨域 (Module Federation 需要) - add_header Access-Control-Allow-Origin *; - add_header Access-Control-Allow-Methods "GET, OPTIONS"; - add_header Access-Control-Allow-Headers "Origin, Content-Type, Accept"; - } - - # Platform 管理平台 - location /platform/ { - proxy_pass http://platform/; - proxy_http_version 1.1; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - } - - # Workcase 工单系统 PC端 - location /workcase/ { - proxy_pass http://workcase-web/; - proxy_http_version 1.1; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - } - - # Bidding 招标系统 - location /bidding/ { - proxy_pass http://bidding-web/; - proxy_http_version 1.1; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - } - - # Workcase 工单系统微信端 - location /workcase-wechat/ { - proxy_pass http://workcase-wechat/; - proxy_http_version 1.1; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - } - - # 默认首页(重定向到 platform) - location = / { - return 302 /platform/; - } - - # ====================== API 代理 ====================== - - # 后端 API 代理 - location /urban-lifeline/ { - proxy_pass http://gateway; - proxy_http_version 1.1; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - - # WebSocket 支持 - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - - # 超时设置 - proxy_connect_timeout 60s; - proxy_send_timeout 60s; - proxy_read_timeout 60s; - } - - # ====================== 错误页面 ====================== - error_page 500 502 503 504 /50x.html; - location = /50x.html { - root /usr/share/nginx/html; - } -} - diff --git a/docker/urbanLifeline/nginx/nginx/nginx.conf b/docker/urbanLifeline/nginx/nginx/nginx.conf deleted file mode 100644 index ed8a2477..00000000 --- a/docker/urbanLifeline/nginx/nginx/nginx.conf +++ /dev/null @@ -1,47 +0,0 @@ -# ================================================ -# Urban Lifeline - Nginx 主配置 -# ================================================ - -user nginx; -worker_processes auto; -error_log /var/log/nginx/error.log warn; -pid /var/run/nginx.pid; - -events { - worker_connections 1024; - use epoll; - multi_accept on; -} - -http { - include /etc/nginx/mime.types; - default_type application/octet-stream; - - # 日志格式 - log_format main '$remote_addr - $remote_user [$time_local] "$request" ' - '$status $body_bytes_sent "$http_referer" ' - '"$http_user_agent" "$http_x_forwarded_for"'; - - access_log /var/log/nginx/access.log main; - - # 性能优化 - sendfile on; - tcp_nopush on; - tcp_nodelay on; - keepalive_timeout 65; - types_hash_max_size 2048; - - # Gzip 压缩 - gzip on; - gzip_vary on; - gzip_proxied any; - gzip_comp_level 6; - gzip_types text/plain text/css text/xml application/json application/javascript - application/xml application/xml+rss text/javascript application/x-javascript; - - # 上传文件大小限制 - client_max_body_size 100M; - - # 引入站点配置 - include /etc/nginx/conf.d/*.conf; -} diff --git a/docker/urbanLifeline/nginx/volumes/cert/server.crt b/docker/urbanLifeline/nginx/volumes/cert/server.crt deleted file mode 100644 index 7dfe89eb..00000000 --- a/docker/urbanLifeline/nginx/volumes/cert/server.crt +++ /dev/null @@ -1,25 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIEQjCCAqqgAwIBAgIRAMY7fF5Y4UwBxlADzNMomtswDQYJKoZIhvcNAQELBQAw -gYUxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEtMCsGA1UECwwkREVT -S1RPUC1QUElTVU1WXEZLMDVAREVTS1RPUC1QUElTVU1WMTQwMgYDVQQDDCtta2Nl -cnQgREVTS1RPUC1QUElTVU1WXEZLMDVAREVTS1RPUC1QUElTVU1WMB4XDTI2MDEw -NzA4MzM0MFoXDTI4MDQwNzA4MzM0MFowWDEnMCUGA1UEChMebWtjZXJ0IGRldmVs -b3BtZW50IGNlcnRpZmljYXRlMS0wKwYDVQQLDCRERVNLVE9QLVBQSVNVTVZcRksw -NUBERVNLVE9QLVBQSVNVTVYwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB -AQDSqRj6idrpU7rm4fiJg8s1KTAl5ZxIu/p76XwDRayPV8XAis0cSgzv/4DoPw2h -e4oHTZXeyvIvE+NJFShzbzGkgMNB8QepoZ28ob+uY9YueC6hizHy41zIkiu5flXx -lCEgb3lsZGpZFzqp6Ase8AimOdWy2A6FNE7EBide08J6WxvdblfPfTDgutygT+dy -aT+pWqsutWUO8qmgHmb4zwaMksobxMyfi4W2ZPn2VmXml2xw2SW4ZiMCIABMQiZQ -wZjWfZLo0dMd59POpS3SM4L7FrxpKTEZxq0m/OPZUkuIJ4xGpu5qOq8DAsDgU4v+ -C1JvBr6H/GJ0f5cFShPCXFlrAgMBAAGjWTBXMA4GA1UdDwEB/wQEAwIFoDATBgNV -HSUEDDAKBggrBgEFBQcDATAfBgNVHSMEGDAWgBQTBX2ybplAWySTzNHzceSAS9MH -wDAPBgNVHREECDAGhwTAqIKDMA0GCSqGSIb3DQEBCwUAA4IBgQCMVPuwe9iOJW6A -Cvb2lLTVCkfqn0jXgSOzEfP7j0eV01ayXpsFiNX4z0b6ACX4HNkjUFT7r3h/zVbu -JyYIEbHHwiqZXCaAg5QENqvPqzx34eHNROFEixBH1Y1VgiEEiKP5QOiTxIQLvcls -TSsXMeg58bYNYB0zmQ0wRe+r88nIkNU8R+J4BFbkgSeZch3ScXi15hfyItw81546 -hYK1ncMH3r8ZLzKcOQEnSw4SAJTMUPmePwr7GlqIhpFRnidyvx1cK8jR3FnJnoQn -/871s0dYk8ZuBk+mgFMDXXg6wq5oS2xs79BG3/4RaJciL5jtRg6vB36YfclliPfw -mfr3ypJRKusAipPsfPvdcM37GmemzWLb2EYjN+w0oHo7v1uaV8iyNDVIxKxjvGub -9k8VDkT9Ub+cawrH/oECS+avFqViqKUQy0TyG/eHTRV5chQnlnellDy/HnladS+7 -0rvCWOGvnlpvGSQBiCr/iNPhiJhvs0J5m3jBAfml9C5YmY7/900= ------END CERTIFICATE----- diff --git a/docker/urbanLifeline/nginx/volumes/cert/server.key b/docker/urbanLifeline/nginx/volumes/cert/server.key deleted file mode 100644 index 21dacc3e..00000000 --- a/docker/urbanLifeline/nginx/volumes/cert/server.key +++ /dev/null @@ -1,28 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDSqRj6idrpU7rm -4fiJg8s1KTAl5ZxIu/p76XwDRayPV8XAis0cSgzv/4DoPw2he4oHTZXeyvIvE+NJ -FShzbzGkgMNB8QepoZ28ob+uY9YueC6hizHy41zIkiu5flXxlCEgb3lsZGpZFzqp -6Ase8AimOdWy2A6FNE7EBide08J6WxvdblfPfTDgutygT+dyaT+pWqsutWUO8qmg -Hmb4zwaMksobxMyfi4W2ZPn2VmXml2xw2SW4ZiMCIABMQiZQwZjWfZLo0dMd59PO -pS3SM4L7FrxpKTEZxq0m/OPZUkuIJ4xGpu5qOq8DAsDgU4v+C1JvBr6H/GJ0f5cF -ShPCXFlrAgMBAAECggEAMlwQR5x7A7prfNRaaO1jv8Kn6vdYBB9EAylO5y1Z0i6m -bKAB5phhPWJ0O5EPPiJdXd+TS15yxQRZGlh/ghD76hqKExJ+xXOIVNbKDvN4+UTr -yNyQxULLJHulDkQAYa8KuElN2raqob+m24VIW04Ak1RSHN3/oqJdjgj2knnHDR6Z -b6OwZhF/Axpj45RA3nlD93G6Orb34QEnPxgRig0ma3/xLxU4rpbLd73tDDSk8uDH -z7OAgv/n//TnDTZ8OltRDGY7gUOI1eLqj6Pa/3grwJDPxgO2y4RXO/o6kEMFySPi -8RrvOGElINO60UhgODFe1oPJW05pZnorJz5jjHtAuQKBgQDam2LL18H47DIvARkj -bdOr7LgHvi1NNCLxOCnECTHs6Ns44Q+0xUDIf04iBr8AvcHyvspPg6mLRgTojT4t -HFujQ991RchHAbF2gMqGZQ9wn83bpaDWN9Ig2drYx2fkWwIerwuNuTV/es7gELhb -oWGhyh86syl9PO3Elab/h6jbPQKBgQD2sb5rw+9bw0tvi+XLFM7K+JeQsLZTblyd -4dCUdOvNd8GfImMBJKGq20SVM2yQtq/ATzphK5Al0GKtsnlSGOfGSgfJ4sd/xD3O -6Fe+Q7MgHoXnEuvNyEQ1wlEDGrae3FVih7XHJ60J+6XKaJQv6VdeQmVq2IlrOU8H -ofSiv+RxxwKBgQCxTUnqDopSfC+PlBJxe8gsLwhrr0FK1rhocKbfSp3lik8TaOa2 -NS3/79DNJC+SSFWfrkKkDyNZxGaCvtvo9pEUcB4zHW/8t1DZzkd0jU7ih5oNRd6X -IBsbbdZj8AdBXNbxUAPM5KSRSmezr5v3JYLsF+UQVPOXke0+fio+Iic/+QKBgFuG -yKp88IJwK72//srg9nRR1RHmrk64BH7DODrMQmxiASFEhcz3xU95uLFOefoa/Yvx -GSzSF9IfxWzCacau3NcxwkAB9piNu4zXoS5DOeMxz+ZSm9AmfEAhzyLCt3yrLLa4 -uRWhv86TYgh90nUQMs0S/0OsARgaFBs12GjFn0EjAoGAVz2vvNKi6F6kunm055T/ -vhgB28Qt2EojcOQeQ9ARTH/VuPDMjTmbU6iip0mFRImUmFnSKY4+4+K7HAB9oxHG -w1/sPsymosVrgPKloJ3vU7yJI2JYgbsjZRhscPYE7Ir7mVhlNyuO6wJOHGK7Lex2 -MR2JpfmcOIHRRqrwAa+Gmss= ------END PRIVATE KEY----- diff --git a/docker/urbanLifeline/nginx/volumes/conf.d/default.conf b/docker/urbanLifeline/nginx/volumes/conf.d/default.conf deleted file mode 100644 index 64994879..00000000 --- a/docker/urbanLifeline/nginx/volumes/conf.d/default.conf +++ /dev/null @@ -1,181 +0,0 @@ -# ================================================ -# Urban Lifeline - 站点配置 (All-in-One 模式) -# ================================================ - -# 上游服务定义 - 后端 All-in-One 容器 -upstream gateway { - server urban-lifeline-serv:8080; - keepalive 32; -} - -# 上游服务定义 - 前端 All-in-One 容器 -upstream shared { - server urban-lifeline-web:8000; -} - -upstream platform { - server urban-lifeline-web:8001; -} - -upstream workcase-web { - server urban-lifeline-web:8002; -} - -upstream bidding-web { - server urban-lifeline-web:8003; -} - -upstream workcase-wechat { - server urban-lifeline-web:8004; -} - -# HTTP 重定向到 HTTPS -server { - listen 80; - server_name localhost; - return 301 https://$host$request_uri; -} - -# HTTPS 服务 -server { - listen 443 ssl; - server_name localhost; - - # SSL 证书配置 - ssl_certificate /etc/nginx/ssl/server.crt; - ssl_certificate_key /etc/nginx/ssl/server.key; - - # SSL 安全配置 - ssl_protocols TLSv1.2 TLSv1.3; - ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-CHACHA20-POLY1305; - ssl_prefer_server_ciphers on; - ssl_session_cache shared:SSL:10m; - ssl_session_timeout 10m; - - # 健康检查端点 - location /health { - access_log off; - return 200 "healthy\n"; - add_header Content-Type text/plain; - } - - # ====================== 前端应用代理 ====================== - - # Shared 公共模块 (Module Federation 远程模块) - location /shared/ { - proxy_pass http://shared/; - proxy_http_version 1.1; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - - # 允许跨域 (Module Federation 需要) - add_header Access-Control-Allow-Origin *; - add_header Access-Control-Allow-Methods "GET, OPTIONS"; - add_header Access-Control-Allow-Headers "Origin, Content-Type, Accept"; - } - - # Platform 管理平台 - location /platform/ { - # 优先尝试文件,如果不存在则返回 index.html(SPA history 模式) - proxy_pass http://platform/; - proxy_http_version 1.1; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - - # SPA fallback - 404时返回index.html让Vue Router处理 - proxy_intercept_errors on; - error_page 404 = @platform_fallback; - } - - location @platform_fallback { - # 重写为根路径的 index.html,保留原始 URI 让前端路由处理 - rewrite ^/platform/(.*)$ /platform/index.html break; - proxy_pass http://platform; - proxy_http_version 1.1; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - } - - # Workcase 工单系统 PC端 - location /workcase/ { - proxy_pass http://workcase-web/; - proxy_http_version 1.1; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - - # SPA fallback - 404时返回index.html让Vue Router处理 - proxy_intercept_errors on; - error_page 404 = @workcase_fallback; - } - - location @workcase_fallback { - # 重写为根路径的 index.html,保留原始 URI 让前端路由处理 - rewrite ^/workcase/(.*)$ /workcase/index.html break; - proxy_pass http://workcase-web; - proxy_http_version 1.1; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - } - - # Bidding 招标系统 - location /bidding/ { - proxy_pass http://bidding-web/; - proxy_http_version 1.1; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - } - - # Workcase 工单系统微信端 - location /workcase-wechat/ { - proxy_pass http://workcase-wechat/; - proxy_http_version 1.1; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - } - - # 默认首页(重定向到 platform) - location = / { - return 302 /platform/; - } - - # ====================== API 代理 ====================== - - # 后端 API 代理 - location /urban-lifeline/ { - proxy_pass http://gateway/; - proxy_http_version 1.1; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - - # WebSocket 支持 - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - - # 超时设置 - proxy_connect_timeout 60s; - proxy_send_timeout 60s; - proxy_read_timeout 60s; - } - - # ====================== 错误页面 ====================== - error_page 500 502 503 504 /50x.html; - location = /50x.html { - root /usr/share/nginx/html; - } -} diff --git a/docker/urbanLifeline/nginx/volumes/nginx.conf b/docker/urbanLifeline/nginx/volumes/nginx.conf deleted file mode 100644 index ed8a2477..00000000 --- a/docker/urbanLifeline/nginx/volumes/nginx.conf +++ /dev/null @@ -1,47 +0,0 @@ -# ================================================ -# Urban Lifeline - Nginx 主配置 -# ================================================ - -user nginx; -worker_processes auto; -error_log /var/log/nginx/error.log warn; -pid /var/run/nginx.pid; - -events { - worker_connections 1024; - use epoll; - multi_accept on; -} - -http { - include /etc/nginx/mime.types; - default_type application/octet-stream; - - # 日志格式 - log_format main '$remote_addr - $remote_user [$time_local] "$request" ' - '$status $body_bytes_sent "$http_referer" ' - '"$http_user_agent" "$http_x_forwarded_for"'; - - access_log /var/log/nginx/access.log main; - - # 性能优化 - sendfile on; - tcp_nopush on; - tcp_nodelay on; - keepalive_timeout 65; - types_hash_max_size 2048; - - # Gzip 压缩 - gzip on; - gzip_vary on; - gzip_proxied any; - gzip_comp_level 6; - gzip_types text/plain text/css text/xml application/json application/javascript - application/xml application/xml+rss text/javascript application/x-javascript; - - # 上传文件大小限制 - client_max_body_size 100M; - - # 引入站点配置 - include /etc/nginx/conf.d/*.conf; -} diff --git a/docker/urbanLifeline/postgres/.env.example b/docker/urbanLifeline/postgres/.env.example deleted file mode 100644 index 256f99f7..00000000 --- a/docker/urbanLifeline/postgres/.env.example +++ /dev/null @@ -1,33 +0,0 @@ -# ================================================ -# PostgreSQL 配置 -# 复制此文件为 .env 并修改配置 -# ================================================ - -# ------------------------------ -# PostgreSQL 版本 -# ------------------------------ -POSTGRES_VERSION=latest - -# ------------------------------ -# 端口配置 -# ------------------------------ -POSTGRES_PORT=5432 - -# ------------------------------ -# 数据库配置 -# ------------------------------ -POSTGRES_USER=postgres -POSTGRES_PASSWORD=postgres123456 -POSTGRES_DB=urban_lifeline - -# ------------------------------ -# 挂载目录配置 -# ------------------------------ -# 数据目录 -DATA_ROOT=./volumes - -# 日志目录 -LOG_ROOT=./volumes - -# 配置文件目录 -CONFIG_ROOT=./volumes diff --git a/docker/urbanLifeline/postgres/Dockerfile.pg b/docker/urbanLifeline/postgres/Dockerfile.pg deleted file mode 100644 index 9418c6ad..00000000 --- a/docker/urbanLifeline/postgres/Dockerfile.pg +++ /dev/null @@ -1,106 +0,0 @@ -# ================================================ -# Urban Lifeline - PostgreSQL 数据库镜像 -# 支持初始化脚本和自定义配置 -# ================================================ - -FROM postgres:16-alpine - -# 设置环境变量 -ENV LANG=C.UTF-8 \ - TZ=Asia/Shanghai \ - PGCLIENTENCODING=UTF8 - -# 安装时区数据(contrib 扩展已包含在官方 postgres 镜像中) -RUN apk add --no-cache tzdata \ - && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ - && echo "Asia/Shanghai" > /etc/timezone - -# 创建初始化目录 -RUN mkdir -p /docker-entrypoint-initdb.d /opt/sql - -# 复制初始化脚本和 SQL 文件 -COPY init/sql/ /opt/sql/ -COPY init/bin.sh /opt/bin.sh - -# 创建 Docker 初始化入口脚本 -RUN cat > /docker-entrypoint-initdb.d/01-init-database.sh <<'EOF' -#!/bin/bash -set -e - -echo "==========================================" -echo "Urban Lifeline - PostgreSQL 数据库初始化" -echo "==========================================" - -# 设置环境变量 -export PGCLIENTENCODING=UTF8 - -# 检查数据库是否已初始化(通过检查初始化状态表) -check_initialized() { - # 先检查数据库是否存在 - if ! psql -U "$POSTGRES_USER" -d "postgres" -tAc "SELECT 1 FROM pg_database WHERE datname = '$POSTGRES_DB'" | grep -q 1; then - return 1 # 数据库不存在,需要初始化 - fi - - # 检查初始化状态表是否存在且标记为成功 - if psql -U "$POSTGRES_USER" -d "$POSTGRES_DB" -tAc "SELECT 1 FROM _db_init_status WHERE script_name = '01-init-database.sh' AND status = 'success'" 2>/dev/null | grep -q 1; then - return 0 # 已初始化 - fi - - return 1 # 未初始化 -} - -# 检查是否已经初始化 -if check_initialized; then - echo "==========================================" - echo "✅ 数据库已初始化,跳过初始化步骤" - echo "==========================================" - exit 0 -fi - -echo "首次启动,开始初始化数据库..." - -cd /opt/sql - -# 执行 initAll.sql(包含创建数据库、表结构和初始数据) -echo "执行数据库初始化脚本..." -psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "postgres" -f initAll.sql - -if [ $? -ne 0 ]; then - echo "==========================================" - echo "❌ 数据库初始化失败!" - echo "==========================================" - exit 1 -fi - -# 创建初始化状态表并标记完成 -echo "标记初始化状态..." -psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL - -- 创建初始化状态表 - CREATE TABLE IF NOT EXISTS _db_init_status ( - id SERIAL PRIMARY KEY, - script_name VARCHAR(255) NOT NULL UNIQUE, - executed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - status VARCHAR(50) DEFAULT 'init' - ); - - -- 标记初始化完成 - INSERT INTO _db_init_status (script_name, status) - VALUES ('01-init-database.sh', 'success') - ON CONFLICT (script_name) DO UPDATE SET status = 'success', executed_at = CURRENT_TIMESTAMP; -EOSQL - -echo "==========================================" -echo "✅ 数据库初始化完成!" -echo "==========================================" -EOF - -# 设置执行权限 -RUN chmod +x /docker-entrypoint-initdb.d/01-init-database.sh \ - && chmod +x /opt/bin.sh - -# 暴露端口 -EXPOSE 5432 - -# 健康检查 -HEALTHCHECK --interval=10s --timeout=5s --retries=5 --start-period=60s \ - CMD pg_isready -U ${POSTGRES_USER:-postgres} -d ${POSTGRES_DB:-urban_lifeline} || exit 1 diff --git a/docker/urbanLifeline/postgres/docker-compose.yml b/docker/urbanLifeline/postgres/docker-compose.yml deleted file mode 100644 index 2f500ebe..00000000 --- a/docker/urbanLifeline/postgres/docker-compose.yml +++ /dev/null @@ -1,65 +0,0 @@ -# ================================================ -# Urban Lifeline - PostgreSQL 数据库 -# ================================================ - -services: - postgres: - image: urban-lifeline-pg:${POSTGRES_VERSION:-latest} - container_name: urban-lifeline-pg - restart: unless-stopped - env_file: - - .env - networks: - - urban-lifeline - ports: - - "${POSTGRES_PORT:-5432}:5432" - environment: - POSTGRES_USER: ${POSTGRES_USER:-postgres} - POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres123456} - POSTGRES_DB: ${POSTGRES_DB:-urban_lifeline} - TZ: Asia/Shanghai - PGTZ: Asia/Shanghai - PGCLIENTENCODING: UTF8 - volumes: - # 数据目录 - - ${DATA_ROOT:-./volumes}/data:/var/lib/postgresql/data - # 日志目录 - - ${LOG_ROOT:-./volumes}/logs:/var/log/postgresql - # 配置文件目录(可选,用于自定义 postgresql.conf) - - ${CONFIG_ROOT:-./volumes}/config:/etc/postgresql/conf.d:ro - command: - - "postgres" - - "-c" - - "max_connections=200" - - "-c" - - "shared_buffers=256MB" - - "-c" - - "effective_cache_size=768MB" - - "-c" - - "maintenance_work_mem=64MB" - - "-c" - - "checkpoint_completion_target=0.9" - - "-c" - - "wal_buffers=16MB" - - "-c" - - "default_statistics_target=100" - - "-c" - - "random_page_cost=1.1" - - "-c" - - "effective_io_concurrency=200" - - "-c" - - "log_timezone=Asia/Shanghai" - - "-c" - - "timezone=Asia/Shanghai" - - "-c" - - "client_encoding=UTF8" - healthcheck: - test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-postgres} -d ${POSTGRES_DB:-urban_lifeline}"] - interval: 10s - timeout: 5s - retries: 5 - start_period: 60s - -networks: - urban-lifeline: - name: urban-lifeline diff --git a/docker/urbanLifeline/postgres/init/bin.sh b/docker/urbanLifeline/postgres/init/bin.sh deleted file mode 100644 index 672ba116..00000000 --- a/docker/urbanLifeline/postgres/init/bin.sh +++ /dev/null @@ -1,290 +0,0 @@ - -#!/bin/bash - -# 定义颜色输出 -RED='\033[0;31m' -GREEN='\033[0;32m' -YELLOW='\033[1;33m' -BLUE='\033[0;34m' -NC='\033[0m' # No Color - -# 设置脚本所在目录为工作目录 -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -SQL_DIR="${SCRIPT_DIR}/sql" - -# 打印带时间戳的日志 -log() { - local level=$1 - local message=$2 - local color=$NC - - case $level in - "INFO") color=$BLUE;; - "SUCCESS") color=$GREEN;; - "WARN") color=$YELLOW;; - "ERROR") color=$RED;; - esac - - echo -e "[$(date '+%Y-%m-%d %H:%M:%S')] ${color}${level}${NC}: ${message}" -} - -# 数据库连接信息(可通过环境变量覆盖) -DB_HOST=${POSTGRES_HOST:-"localhost"} -DB_PORT=${POSTGRES_PORT:-"5432"} -DB_NAME=${POSTGRES_DB:-"urban_lifeline"} -DB_USER=${POSTGRES_USER:-"postgres"} -DB_PASSWORD=${POSTGRES_PASSWORD:-"postgres"} - -# 设置 PSQL 环境变量以支持中文 -export PGCLIENTENCODING=UTF8 - -# 检查psql命令是否可用 -check_psql() { - if ! command -v psql &> /dev/null; then - echo -e "${RED}Error: psql command not found. Please install PostgreSQL client.${NC}" - exit 1 - fi -} - -# 检查并创建数据库用户 -check_and_create_user() { - local new_user=$1 - local new_password=$2 - - # 使用 postgres 用户执行 - if sudo -u postgres psql -c "SELECT 1 FROM pg_roles WHERE rolname = '$new_user'" | grep -q 1; then - echo -e "${GREEN}User $new_user already exists${NC}" - else - echo -e "${YELLOW}Creating user $new_user...${NC}" - sudo -u postgres psql -c "CREATE USER $new_user WITH PASSWORD '$new_password' CREATEDB;" - if [ $? -eq 0 ]; then - echo -e "${GREEN}User $new_user created successfully${NC}" - else - echo -e "${RED}Failed to create user $new_user${NC}" - exit 1 - fi - fi -} - -# 检查数据库连接 -check_db_connection() { - # 首先尝试以当前用户身份连接 - if ! psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "postgres" -c '\q' &> /dev/null; then - echo -e "${YELLOW}Could not connect with current settings, attempting to create user...${NC}" - # 创建用户并设置权限 - check_and_create_user "$DB_USER" "$DB_PASSWORD" - - # 再次检查连接 - if ! psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "postgres" -c '\q' &> /dev/null; then - echo -e "${RED}Error: Could not connect to PostgreSQL server.${NC}" - echo "Please check your connection settings:" - echo "Host: $DB_HOST" - echo "Port: $DB_PORT" - echo "User: $DB_USER" - exit 1 - fi - fi -} - -# 执行SQL文件 -execute_sql_file() { - local sql_file=$1 - if [ ! -f "$sql_file" ]; then - echo -e "${RED}Error: SQL file not found: $sql_file${NC}" - return 1 - fi - - echo -e "${YELLOW}Executing SQL file: $sql_file${NC}" - PGPASSWORD=$DB_PASSWORD psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -f "$sql_file" - local status=$? - if [ $status -eq 0 ]; then - echo -e "${GREEN}Successfully executed: $sql_file${NC}" - else - echo -e "${RED}Failed to execute: $sql_file${NC}" - return $status - fi -} - -# 初始化数据库 -init() { - echo -e "${YELLOW}Initializing database...${NC}" - - # 执行完整的初始化脚本 - log "INFO" "Executing initialization script..." - # Run from inside the SQL_DIR so relative \i includes in initAll.sql (like createDB.sql) - # resolve relative to the SQL directory. - ( - if [ ! -d "$SQL_DIR" ]; then - echo -e "${RED}Error: SQL directory not found: $SQL_DIR${NC}" - exit 1 - fi - cd "$SQL_DIR" || exit 1 - PGPASSWORD=$DB_PASSWORD psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "postgres" -v ON_ERROR_STOP=1 -f "initAll.sql" - ) - - if [ $? -eq 0 ]; then - log "SUCCESS" "Database initialization completed successfully" - else - log "ERROR" "Database initialization failed" - return 1 - fi - - if [ $? -ne 0 ]; then - echo -e "${RED}Failed to create database.${NC}" - return 1 - fi - - # 2. 创建扩展和设置搜索路径 - echo -e "${YELLOW}Creating extensions...${NC}" - check_extensions_availability() { - # 检查服务器上是否存在需创建的扩展 - local missing=() - local exts=("uuid-ossp" "pg_trgm" "btree_gist") - for ext in "${exts[@]}"; do - # 查询 pg_available_extensions 来判断扩展是否已安装到服务器目录 - if ! PGPASSWORD=$DB_PASSWORD psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -tAc "SELECT 1 FROM pg_available_extensions WHERE name = '$ext';" | grep -q 1; then - missing+=("$ext") - fi - done - - if [ ${#missing[@]} -ne 0 ]; then - echo -e "${RED}Error: The following server-side extensions are not available: ${missing[*]}${NC}" - echo "If you compiled PostgreSQL from source, you need to build and install the contrib modules into the server's installation prefix. Example steps:" - echo " # 在 PostgreSQL 源码目录下运行:" - echo " cd /path/to/postgresql-source/contrib" - echo " make" - echo " sudo make install" - echo "或者只安装缺失的模块(例如 uuid-ossp):" - echo " cd /path/to/postgresql-source/contrib/uuid-ossp" - echo " make" - echo " sudo make install" - echo "安装完成后,重启 PostgreSQL 服务并重新运行此脚本:" - echo " sudo systemctl restart postgresql" - echo "如果你使用的是容器或自定义路径,请确保将编译安装的扩展安装到 PostgreSQL 的 \$(pg_config --sharedir)/extension 目录下。" - return 1 - fi - return 0 - } - - # 检查扩展可用性,若缺失则给出建议并退出 - if ! check_extensions_availability; then - return 1 - fi - - PGPASSWORD=$DB_PASSWORD psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -c " - CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\"; - CREATE EXTENSION IF NOT EXISTS \"pg_trgm\"; - CREATE EXTENSION IF NOT EXISTS \"btree_gist\";" - - if [ $? -ne 0 ]; then - echo -e "${RED}Failed to create extensions.${NC}" - return 1 - fi - - # 3. 逐个执行初始化SQL文件 - echo -e "${YELLOW}Initializing tables...${NC}" - while IFS= read -r line || [[ -n "$line" ]]; do - # 跳过注释和空行 - [[ $line =~ ^--.*$ ]] && continue - [[ -z "${line// }" ]] && continue - - # 从 \i 命令中提取文件名 - if [[ $line =~ \\i[[:space:]]+([^[:space:]]+) ]]; then - sql_file="${SQL_DIR}/${BASH_REMATCH[1]}" - if [[ $sql_file != *"createDB.sql"* ]]; then # 跳过createDB.sql - echo -e "${YELLOW}Executing: $sql_file${NC}" - PGPASSWORD=$DB_PASSWORD psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -f "$sql_file" - if [ $? -ne 0 ]; then - echo -e "${RED}Failed to execute: $sql_file${NC}" - return 1 - fi - fi - fi - done < "${SQL_DIR}/initAll.sql" - - # 4. 设置搜索路径 - echo -e "${YELLOW}Setting search path...${NC}" - PGPASSWORD=$DB_PASSWORD psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -c " - ALTER DATABASE $DB_NAME SET search_path TO sys, public;" - - echo -e "${GREEN}Database initialization completed successfully.${NC}" - return 0 -} - -# 重新初始化数据库 -reinit() { - echo -e "${YELLOW}Reinitializing database...${NC}" - delete - init -} - -# 删除数据库 -delete() { - echo -e "${YELLOW}Deleting database...${NC}" - - # 多次尝试终止连接(因为某些连接可能会立即重连) - for i in {1..3}; do - log "INFO" "Terminating database connections (attempt $i/3)..." - PGPASSWORD=$DB_PASSWORD psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "postgres" -c " - SELECT pg_terminate_backend(pg_stat_activity.pid) - FROM pg_stat_activity - WHERE pg_stat_activity.datname = '$DB_NAME' - AND pid <> pg_backend_pid();" > /dev/null 2>&1 - - # 等待连接完全关闭 - sleep 1 - done - - # 尝试删除数据库,最多重试3次 - for i in {1..3}; do - log "INFO" "Attempting to drop database (attempt $i/3)..." - if PGPASSWORD=$DB_PASSWORD psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "postgres" -c "DROP DATABASE IF EXISTS $DB_NAME;" 2>&1; then - log "SUCCESS" "Database deleted successfully" - return 0 - else - log "WARN" "Failed to drop database, retrying after 2 seconds..." - sleep 2 - fi - done - - log "ERROR" "Failed to delete database after 3 attempts" - log "ERROR" "Please ensure all connections to the database are closed, including:" - log "ERROR" " - Running application servers" - log "ERROR" " - IDE database connections" - log "ERROR" " - pgAdmin or other database tools" - return 1 -} - -# 显示帮助信息 -show_help() { - echo "Usage: $0 {init|reinit|delete}" - echo "Commands:" - echo " init Initialize the database" - echo " reinit Reinitialize the database (delete and create)" - echo " delete Delete the database" -} - -# 主函数 -main() { - check_psql - check_db_connection - - case "$1" in - "init") - init - ;; - "reinit") - reinit - ;; - "delete") - delete - ;; - *) - show_help - exit 1 - ;; - esac -} - -# Call main with all passed arguments so the script runs when invoked -main "$@" \ No newline at end of file diff --git a/docker/urbanLifeline/postgres/init/sql/createDB.sql b/docker/urbanLifeline/postgres/init/sql/createDB.sql deleted file mode 100644 index c5ce72b7..00000000 --- a/docker/urbanLifeline/postgres/init/sql/createDB.sql +++ /dev/null @@ -1,27 +0,0 @@ - --- 删除已存在的数据库(如果存在) -DROP DATABASE IF EXISTS urban_lifeline; - --- 创建新数据库,使用 UTF8 编码,并设置适合中文的排序规则 --- 使用 template0 确保干净的数据库模板 --- zh_CN.UTF-8 支持中文字符排序和比较 -CREATE DATABASE urban_lifeline - ENCODING 'UTF8' - TEMPLATE template0 - LC_COLLATE 'zh_CN.UTF-8' - LC_CTYPE 'zh_CN.UTF-8'; - --- 连接到新创建的数据库 -\c urban_lifeline; - --- -- 创建扩展(如果需要) -CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; -- UUID 支持 -CREATE EXTENSION IF NOT EXISTS "pg_trgm"; -- 文本搜索支持 -CREATE EXTENSION IF NOT EXISTS "btree_gist"; -- GiST 索引支持 - --- 设置搜索路径(可选,但建议设置) --- ALTER DATABASE urban-lifeline SET search_path TO sys, public; - --- sudo ./configure --prefix=/opt/postgres/postgres-17.6 --- --with-uuid=ossp --with-openssl --with-libxml --with-pam --- && sudo make && sudo make install diff --git a/docker/urbanLifeline/postgres/init/sql/createTableAI.sql b/docker/urbanLifeline/postgres/init/sql/createTableAI.sql deleted file mode 100644 index 3752bd0b..00000000 --- a/docker/urbanLifeline/postgres/init/sql/createTableAI.sql +++ /dev/null @@ -1,188 +0,0 @@ -CREATE SCHEMA IF NOT EXISTS ai; - --- AI智能体配置 -DROP TABLE IF EXISTS ai.tb_agent CASCADE; -CREATE TABLE ai.tb_agent( - optsn VARCHAR(50) NOT NULL, -- 流水号 - agent_id VARCHAR(50) NOT NULL, -- 智能体ID - name VARCHAR(50) NOT NULL, -- 智能体名称 - description VARCHAR(500) DEFAULT NULL, -- 智能体描述 - link VARCHAR(500) DEFAULT NULL, -- 智能体url - api_key VARCHAR(500) NOT NULL, -- dify智能体APIKEY - is_outer BOOLEAN DEFAULT false, -- 是否是对外智能体,未登录可用 - introduce VARCHAR(500) NOT NULL, -- 引导词 - prompt_cards JSONB DEFAULT '[]'::jsonb, -- 提示卡片数组 [{file_id:'', prompt:''}] - category VARCHAR(50) NOT NULL, -- 分类 - creator VARCHAR(50) DEFAULT NULL, -- 创建者 - updater VARCHAR(50) DEFAULT NULL, -- 更新者 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间 - delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 - PRIMARY KEY (agent_id), - UNIQUE (optsn), - UNIQUE (api_key) -); - --- AI智能体对话 -DROP TABLE IF EXISTS ai.tb_chat CASCADE; -CREATE TABLE ai.tb_chat( - optsn VARCHAR(50) NOT NULL, -- 流水号 - chat_id VARCHAR(50) NOT NULL, -- 对话ID - agent_id VARCHAR(50) NOT NULL, -- 智能体ID - user_id VARCHAR(50) NOT NULL, -- 用户ID - user_type BOOLEAN NOT NULL DEFAULT true, -- 用户类型 true-系统内部人员 false-系统外部人员 - title VARCHAR(500) NOT NULL, -- 对话标题 - channel VARCHAR(50) DEFAULT 'agent', -- 对话渠道 agent、wechat - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间 - delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 - PRIMARY KEY (chat_id), - UNIQUE (optsn) -); - --- AI智能体对话消息 -DROP TABLE IF EXISTS ai.tb_chat_message CASCADE; -CREATE TABLE ai.tb_chat_message( - optsn VARCHAR(50) NOT NULL, -- 流水号 - message_id VARCHAR(50) NOT NULL, -- 消息ID - dify_message_id VARCHAR(100) DEFAULT NULL, -- Dify消息ID - chat_id VARCHAR(50) NOT NULL, -- 对话ID - role VARCHAR(50) NOT NULL, -- 角色:user-用户/ai-智能体/recipient-来客 - content TEXT NOT NULL, -- 消息内容 - files VARCHAR(50)[] DEFAULT NULL, -- 文件id数组 - comment VARCHAR(50) DEFAULT NULL, -- 评价 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间 - delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 - PRIMARY KEY (message_id), - UNIQUE (optsn) -); - - --- 知识库配置 bidding和workcase2个服务使用 -DROP TABLE IF EXISTS ai.tb_knowledge CASCADE; -CREATE TABLE ai.tb_knowledge( - -- 知识库dify相关配置 - optsn VARCHAR(50) NOT NULL, -- 流水号 - knowledge_id VARCHAR(50) NOT NULL, -- 知识库ID - title VARCHAR(255) NOT NULL, -- 知识库标题 - avatar VARCHAR(255) DEFAULT NULL, -- 知识库头像 - description VARCHAR(500) DEFAULT NULL, -- 知识库描述 - dify_dataset_id VARCHAR(100) DEFAULT NULL, -- Dify知识库ID(Dataset ID) - dify_indexing_technique VARCHAR(50) DEFAULT 'high_quality', -- Dify索引方式(high_quality/economy) - embedding_model VARCHAR(100) DEFAULT NULL, -- 向量模型名称 - embedding_model_provider VARCHAR(100) DEFAULT NULL, -- 向量模型提供商 - rerank_model VARCHAR(100) DEFAULT NULL, -- Rerank模型名称 - rerank_model_provider VARCHAR(100) DEFAULT NULL, -- Rerank模型提供商 - reranking_enable BOOLEAN DEFAULT false, -- 是否启用Rerank - retrieval_top_k INTEGER DEFAULT 2, -- 检索Top K(返回前K个结果) - retrieval_score_threshold DECIMAL(3,2) DEFAULT 0.00, -- 检索分数阈值(0.00-1.00) - document_count INTEGER DEFAULT 0, -- 文档数量 - total_chunks INTEGER DEFAULT 0, -- 总分段数 - -- 下面是服务使用 - service VARCHAR(50) DEFAULT NULL, -- 所属服务 workcase、bidding - project_id VARCHAR(50) DEFAULT NULL, -- bidding所属项目ID - category VARCHAR(50) DEFAULT NULL, -- 所属分类 workcase 内部知识库、外部知识库 - creator VARCHAR(50) NOT NULL, -- 创建者(用户ID) - dept_path VARCHAR(50) DEFAULT NULL, -- 创建者部门路径 - updater VARCHAR(50) DEFAULT NULL, -- 更新者 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间 - delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 - PRIMARY KEY (optsn), - UNIQUE (knowledge_id), - UNIQUE (dify_dataset_id) -); - --- 知识库配置表字段注释 -COMMENT ON TABLE ai.tb_knowledge IS '知识库配置表'; -COMMENT ON COLUMN ai.tb_knowledge.optsn IS '流水号'; -COMMENT ON COLUMN ai.tb_knowledge.knowledge_id IS '知识库ID'; -COMMENT ON COLUMN ai.tb_knowledge.title IS '知识库标题'; -COMMENT ON COLUMN ai.tb_knowledge.avatar IS '知识库头像'; -COMMENT ON COLUMN ai.tb_knowledge.description IS '知识库描述'; -COMMENT ON COLUMN ai.tb_knowledge.dify_dataset_id IS 'Dify知识库ID(Dataset ID)'; -COMMENT ON COLUMN ai.tb_knowledge.dify_indexing_technique IS 'Dify索引方式(high_quality/economy)'; -COMMENT ON COLUMN ai.tb_knowledge.embedding_model IS '向量模型名称'; -COMMENT ON COLUMN ai.tb_knowledge.embedding_model_provider IS '向量模型提供商'; -COMMENT ON COLUMN ai.tb_knowledge.rerank_model IS 'Rerank模型名称'; -COMMENT ON COLUMN ai.tb_knowledge.rerank_model_provider IS 'Rerank模型提供商'; -COMMENT ON COLUMN ai.tb_knowledge.reranking_enable IS '是否启用Rerank'; -COMMENT ON COLUMN ai.tb_knowledge.retrieval_top_k IS '检索Top K(返回前K个结果)'; -COMMENT ON COLUMN ai.tb_knowledge.retrieval_score_threshold IS '检索分数阈值(0.00-1.00)'; -COMMENT ON COLUMN ai.tb_knowledge.document_count IS '文档数量'; -COMMENT ON COLUMN ai.tb_knowledge.total_chunks IS '总分段数'; -COMMENT ON COLUMN ai.tb_knowledge.service IS '所属服务 workcase、bidding'; -COMMENT ON COLUMN ai.tb_knowledge.project_id IS 'bidding所属项目ID'; -COMMENT ON COLUMN ai.tb_knowledge.category IS '所属分类 workcase 内部知识库、外部知识库'; -COMMENT ON COLUMN ai.tb_knowledge.creator IS '创建者(用户ID)'; -COMMENT ON COLUMN ai.tb_knowledge.dept_path IS '创建者部门路径'; -COMMENT ON COLUMN ai.tb_knowledge.updater IS '更新者'; -COMMENT ON COLUMN ai.tb_knowledge.create_time IS '创建时间'; -COMMENT ON COLUMN ai.tb_knowledge.update_time IS '更新时间'; -COMMENT ON COLUMN ai.tb_knowledge.delete_time IS '删除时间'; -COMMENT ON COLUMN ai.tb_knowledge.deleted IS '是否删除'; --- bidding知识库根据project等变化 --- workcase知识库固定8个 --- workcase外部知识库:4个知识库: --- 1. 设备操作指南 --- 2. 常见故障解决方案 --- 3. 三包外服务政策 --- 4. 配件咨询话术 --- workcase内部知识库:4个知识库: --- 1. 技术维修手册 --- 2. 产品参数明细 --- 3. 内部服务流程规范 --- 4. 客户服务话术模板 - --- 知识库文件 文件上传dify知识库,对dify内的文件修改不生成新版本, 只有重新上传才生成新版本 -DROP TABLE IF EXISTS ai.tb_knowledge_file CASCADE; -CREATE TABLE ai.tb_knowledge_file( - optsn VARCHAR(50) NOT NULL, -- 流水号 - knowledge_id VARCHAR(50) NOT NULL, -- 知识库ID - file_root_id VARCHAR(50) NOT NULL, -- 文件根ID - file_id VARCHAR(50) NOT NULL, -- 文件ID - dify_file_id VARCHAR(50) NOT NULL, -- dify文件ID - version INTEGER NOT NULL DEFAULT 1, -- 文件版本 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间 - delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 - PRIMARY KEY (optsn), - UNIQUE (knowledge_id, file_id) -); - --- 知识库文件表字段注释 -COMMENT ON TABLE ai.tb_knowledge_file IS '知识库文件表'; -COMMENT ON COLUMN ai.tb_knowledge_file.optsn IS '流水号'; -COMMENT ON COLUMN ai.tb_knowledge_file.knowledge_id IS '知识库ID'; -COMMENT ON COLUMN ai.tb_knowledge_file.file_root_id IS '文件根ID'; -COMMENT ON COLUMN ai.tb_knowledge_file.file_id IS '文件ID'; -COMMENT ON COLUMN ai.tb_knowledge_file.dify_file_id IS 'dify文件ID'; -COMMENT ON COLUMN ai.tb_knowledge_file.version IS '文件版本'; -COMMENT ON COLUMN ai.tb_knowledge_file.create_time IS '创建时间'; -COMMENT ON COLUMN ai.tb_knowledge_file.update_time IS '更新时间'; -COMMENT ON COLUMN ai.tb_knowledge_file.delete_time IS '删除时间'; -COMMENT ON COLUMN ai.tb_knowledge_file.deleted IS '是否删除'; - -DROP TABLE IF EXISTS ai.tb_knowledge_file_log CASCADE; -CREATE TABLE ai.tb_knowledge_file_log( - optsn VARCHAR(50) NOT NULL, -- 流水号 - log_id VARCHAR(50) NOT NULL, -- 日志ID - knowledge_id VARCHAR(50) NOT NULL, -- 知识库ID - file_root_id VARCHAR(50) NOT NULL, -- 文件根ID - file_id VARCHAR(50) NOT NULL, -- 文件ID - file_name VARCHAR(100) NOT NULL, -- 文件名 - service VARCHAR(50) NOT NULL, -- 所属服务 workcase、bidding - version INTEGER NOT NULL DEFAULT 1, -- 文件版本 - action VARCHAR(50) NOT NULL, -- 操作类型 upload、update、delete - creator VARCHAR(50) NOT NULL, -- 创建者(用户ID) - creator_name VARCHAR(100) NOT NULL, -- 创建者姓名 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - PRIMARY KEY (optsn), - UNIQUE (knowledge_id, file_id) -); diff --git a/docker/urbanLifeline/postgres/init/sql/createTableBidding.sql b/docker/urbanLifeline/postgres/init/sql/createTableBidding.sql deleted file mode 100644 index 4818df60..00000000 --- a/docker/urbanLifeline/postgres/init/sql/createTableBidding.sql +++ /dev/null @@ -1,264 +0,0 @@ --- ============================= --- 招投标智能体业务模块 --- 支持:招标文件管理、投标文件生成、评分分析、流程跟踪 --- ============================= -CREATE SCHEMA IF NOT EXISTS bidding; - --- 招标项目表 -DROP TABLE IF EXISTS bidding.tb_bidding_project CASCADE; -CREATE TABLE bidding.tb_bidding_project ( - optsn VARCHAR(50) NOT NULL, -- 流水号 - project_id VARCHAR(50) NOT NULL, -- 项目ID - project_no VARCHAR(100) NOT NULL, -- 项目编号 - project_name VARCHAR(500) NOT NULL, -- 项目名称 - project_type VARCHAR(50) NOT NULL, -- 项目类型:public-公开招标/invitation-邀请招标/competitive_negotiation-竞争性谈判 - industry VARCHAR(100), -- 所属行业 - source_platform VARCHAR(100), -- 来源平台(如:政府采购网、企业官网等) - source_url VARCHAR(500), -- 来源URL - publish_date TIMESTAMPTZ, -- 发布日期 - deadline TIMESTAMPTZ, -- 投标截止日期 - opening_date TIMESTAMPTZ, -- 开标日期 - budget_amount DECIMAL(18,2), -- 预算金额 - currency VARCHAR(10) DEFAULT 'CNY', -- 货币单位 - project_status VARCHAR(30) NOT NULL DEFAULT 'collecting', -- 项目状态:collecting-收集中/analyzing-分析中/preparing-准备投标/submitted-已提交/opened-已开标/won-中标/lost-未中标/abandoned-放弃 - winning_status VARCHAR(30), -- 中标状态:pending-待定/won-中标/lost-未中标 - winning_amount DECIMAL(18,2), -- 中标金额 - client_name VARCHAR(255), -- 客户名称 - client_contact VARCHAR(100), -- 客户联系方式 - contact_person VARCHAR(100), -- 联系人 - project_location VARCHAR(500), -- 项目地点 - description TEXT, -- 项目描述 - keywords TEXT[], -- 关键词数组 - metadata JSONB DEFAULT NULL, -- 项目元数据 - dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径 - responsible_user VARCHAR(50), -- 负责人 - team_members VARCHAR(50)[], -- 团队成员数组 - creator VARCHAR(50) DEFAULT NULL, -- 创建者 - updater VARCHAR(50) DEFAULT NULL, -- 更新者 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间 - delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 - PRIMARY KEY (project_id), - UNIQUE (optsn), - UNIQUE (project_no) -); - -CREATE INDEX idx_project_status ON bidding.tb_bidding_project(project_status) WHERE deleted = false; -CREATE INDEX idx_project_deadline ON bidding.tb_bidding_project(deadline) WHERE deleted = false; -CREATE INDEX idx_project_dept ON bidding.tb_bidding_project(dept_path) WHERE deleted = false; -CREATE INDEX idx_project_responsible ON bidding.tb_bidding_project(responsible_user) WHERE deleted = false; - -COMMENT ON TABLE bidding.tb_bidding_project IS '招标项目表'; -COMMENT ON COLUMN bidding.tb_bidding_project.project_status IS '项目状态:collecting/analyzing/preparing/submitted/opened/won/lost/abandoned'; - --- 招标文件表 -DROP TABLE IF EXISTS bidding.tb_bidding_document CASCADE; -CREATE TABLE bidding.tb_bidding_document ( - optsn VARCHAR(50) NOT NULL, -- 流水号 - doc_id VARCHAR(50) NOT NULL, -- 文档ID - project_id VARCHAR(50) NOT NULL, -- 所属项目ID - doc_type VARCHAR(50) NOT NULL, -- 文档类型:tender-招标文件/technical-技术标/commercial-商务标/clarification-澄清文件/other-其他 - doc_name VARCHAR(500) NOT NULL, -- 文档名称 - file_id VARCHAR(50), -- 关联文件表ID - file_path VARCHAR(500), -- 文件路径 - file_size BIGINT, -- 文件大小 - mime_type VARCHAR(100), -- MIME类型 - version INTEGER DEFAULT 1, -- 版本号 - language VARCHAR(20) DEFAULT 'zh-CN', -- 语言 - page_count INTEGER, -- 页数 - parse_status VARCHAR(30) DEFAULT 'pending', -- 解析状态:pending-待解析/parsing-解析中/completed-已完成/failed-失败 - parse_result JSONB, -- 解析结果(JSON格式:提取的要素、表格、图纸等) - extraction_data JSONB, -- 提取的结构化数据 - ai_analysis TEXT, -- AI分析结果 - upload_date TIMESTAMPTZ DEFAULT now(), -- 上传日期 - dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径 - creator VARCHAR(50) DEFAULT NULL, -- 创建者 - updater VARCHAR(50) DEFAULT NULL, -- 更新者 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间 - delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 - PRIMARY KEY (doc_id), - UNIQUE (optsn), - FOREIGN KEY (project_id) REFERENCES bidding.tb_bidding_project(project_id) -); - -CREATE INDEX idx_doc_project ON bidding.tb_bidding_document(project_id) WHERE deleted = false; -CREATE INDEX idx_doc_type ON bidding.tb_bidding_document(doc_type) WHERE deleted = false; - -COMMENT ON TABLE bidding.tb_bidding_document IS '招标文件表'; -COMMENT ON COLUMN bidding.tb_bidding_document.parse_status IS '解析状态:pending/parsing/completed/failed'; - --- 招标要素提取表 -DROP TABLE IF EXISTS bidding.tb_bidding_requirement CASCADE; -CREATE TABLE bidding.tb_bidding_requirement ( - optsn VARCHAR(50) NOT NULL, -- 流水号 - req_id VARCHAR(50) NOT NULL, -- 要素ID - project_id VARCHAR(50) NOT NULL, -- 所属项目ID - doc_id VARCHAR(50), -- 来源文档ID - req_category VARCHAR(50) NOT NULL, -- 要素类别:commercial-商务要素/technical-技术参数/veto-否决项/qualification-资质要求/delivery-交付要求/payment-付款条件/scoring-评分标准 - req_name VARCHAR(255) NOT NULL, -- 要素名称 - req_content TEXT NOT NULL, -- 要素内容 - req_value VARCHAR(500), -- 要素值 - is_mandatory BOOLEAN DEFAULT false, -- 是否必填 - is_veto BOOLEAN DEFAULT false, -- 是否为否决项 - priority INTEGER DEFAULT 0, -- 优先级 - extraction_method VARCHAR(30) DEFAULT 'ai', -- 提取方式:ai-AI提取/manual-人工录入 - confidence_score DECIMAL(5,4), -- 置信度分数(0-1) - source_location JSONB, -- 来源位置(页码、段落等) - compliance_status VARCHAR(30), -- 合规状态:compliant-符合/non_compliant-不符合/pending-待确认 - response_content TEXT, -- 响应内容(我方的应答) - notes TEXT, -- 备注 - dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径 - creator VARCHAR(50) DEFAULT NULL, -- 创建者 - updater VARCHAR(50) DEFAULT NULL, -- 更新者 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间 - delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 - PRIMARY KEY (req_id), - UNIQUE (optsn), - FOREIGN KEY (project_id) REFERENCES bidding.tb_bidding_project(project_id) -); - -CREATE INDEX idx_req_project ON bidding.tb_bidding_requirement(project_id) WHERE deleted = false; -CREATE INDEX idx_req_category ON bidding.tb_bidding_requirement(req_category) WHERE deleted = false; -CREATE INDEX idx_req_veto ON bidding.tb_bidding_requirement(is_veto) WHERE deleted = false AND is_veto = true; - -COMMENT ON TABLE bidding.tb_bidding_requirement IS '招标要素提取表'; -COMMENT ON COLUMN bidding.tb_bidding_requirement.req_category IS '要素类别:commercial/technical/veto/qualification/delivery/payment/scoring'; - --- 投标文件生成表 -DROP TABLE IF EXISTS bidding.tb_bid_response CASCADE; -CREATE TABLE bidding.tb_bid_response ( - optsn VARCHAR(50) NOT NULL, -- 流水号 - response_id VARCHAR(50) NOT NULL, -- 响应文件ID - project_id VARCHAR(50) NOT NULL, -- 所属项目ID - response_type VARCHAR(50) NOT NULL, -- 响应类型:technical-技术标/commercial-商务标/comprehensive-综合标 - doc_name VARCHAR(500) NOT NULL, -- 文档名称 - outline TEXT, -- 文档大纲(JSON格式) - content TEXT, -- 文档内容 - generation_method VARCHAR(30) DEFAULT 'ai', -- 生成方式:ai-AI生成/template-模板生成/manual-人工编写 - template_id VARCHAR(50), -- 使用的模板ID - ai_model VARCHAR(100), -- 使用的AI模型 - generation_status VARCHAR(30) DEFAULT 'draft', -- 生成状态:draft-草稿/reviewing-审核中/approved-已批准/rejected-已拒绝/submitted-已提交 - file_id VARCHAR(50), -- 生成的文件ID - file_path VARCHAR(500), -- 文件路径 - version INTEGER DEFAULT 1, -- 版本号 - parent_version_id VARCHAR(50), -- 父版本ID - review_comments TEXT, -- 审核意见 - dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径 - creator VARCHAR(50) DEFAULT NULL, -- 创建者 - updater VARCHAR(50) DEFAULT NULL, -- 更新者 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间 - delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 - PRIMARY KEY (response_id), - UNIQUE (optsn), - FOREIGN KEY (project_id) REFERENCES bidding.tb_bidding_project(project_id) -); - -CREATE INDEX idx_response_project ON bidding.tb_bid_response(project_id) WHERE deleted = false; -CREATE INDEX idx_response_status ON bidding.tb_bid_response(generation_status) WHERE deleted = false; - -COMMENT ON TABLE bidding.tb_bid_response IS '投标文件生成表'; -COMMENT ON COLUMN bidding.tb_bid_response.generation_status IS '生成状态:draft/reviewing/approved/rejected/submitted'; - --- 评分规则表 -DROP TABLE IF EXISTS bidding.tb_bidding_scoring_rule CASCADE; -CREATE TABLE bidding.tb_bidding_scoring_rule ( - optsn VARCHAR(50) NOT NULL, -- 流水号 - rule_id VARCHAR(50) NOT NULL, -- 规则ID - project_id VARCHAR(50) NOT NULL, -- 所属项目ID - rule_category VARCHAR(50) NOT NULL, -- 规则类别:technical-技术分/commercial-商务分/price-价格分/credit-信誉分 - rule_name VARCHAR(255) NOT NULL, -- 规则名称 - rule_description TEXT, -- 规则描述 - max_score DECIMAL(10,2) NOT NULL, -- 最高分值 - weight DECIMAL(5,4), -- 权重(0-1) - scoring_method VARCHAR(50), -- 评分方法:fixed-固定分值/range-区间评分/formula-公式计算 - calculation_formula TEXT, -- 计算公式 - evaluation_criteria TEXT, -- 评分标准 - our_score DECIMAL(10,2), -- 我方得分(预估) - score_analysis TEXT, -- 得分分析 - optimization_advice TEXT, -- 优化建议 - dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径 - creator VARCHAR(50) DEFAULT NULL, -- 创建者 - updater VARCHAR(50) DEFAULT NULL, -- 更新者 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间 - delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 - PRIMARY KEY (rule_id), - UNIQUE (optsn), - FOREIGN KEY (project_id) REFERENCES bidding.tb_bidding_project(project_id) -); - -CREATE INDEX idx_rule_project ON bidding.tb_bidding_scoring_rule(project_id) WHERE deleted = false; - -COMMENT ON TABLE bidding.tb_bidding_scoring_rule IS '评分规则表'; - --- 项目流程节点表 -DROP TABLE IF EXISTS bidding.tb_bidding_process CASCADE; -CREATE TABLE bidding.tb_bidding_process ( - optsn VARCHAR(50) NOT NULL, -- 流水号 - process_id VARCHAR(50) NOT NULL, -- 流程节点ID - project_id VARCHAR(50) NOT NULL, -- 所属项目ID - node_name VARCHAR(255) NOT NULL, -- 节点名称 - node_type VARCHAR(50) NOT NULL, -- 节点类型:collection-文件收集/analysis-需求分析/preparation-文件准备/review-内部审核/submission-投标提交/opening-开标/result-结果通知 - node_order INTEGER NOT NULL, -- 节点顺序 - node_status VARCHAR(30) DEFAULT 'pending', -- 节点状态:pending-待处理/in_progress-进行中/completed-已完成/skipped-已跳过 - planned_start_time TIMESTAMPTZ, -- 计划开始时间 - planned_end_time TIMESTAMPTZ, -- 计划结束时间 - actual_start_time TIMESTAMPTZ, -- 实际开始时间 - actual_end_time TIMESTAMPTZ, -- 实际结束时间 - responsible_user VARCHAR(50), -- 负责人 - participants VARCHAR(50)[], -- 参与人员数组 - notes TEXT, -- 节点备注 - attachments VARCHAR(50)[], -- 附件ID数组 - dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径 - creator VARCHAR(50) DEFAULT NULL, -- 创建者 - updater VARCHAR(50) DEFAULT NULL, -- 更新者 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间 - delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 - PRIMARY KEY (process_id), - UNIQUE (optsn), - FOREIGN KEY (project_id) REFERENCES bidding.tb_bidding_project(project_id) -); - -CREATE INDEX idx_process_project ON bidding.tb_bidding_process(project_id, node_order) WHERE deleted = false; - -COMMENT ON TABLE bidding.tb_bidding_process IS '项目流程节点表'; -COMMENT ON COLUMN bidding.tb_bidding_process.node_type IS '节点类型:collection/analysis/preparation/review/submission/opening/result'; - --- 投标模板表 -DROP TABLE IF EXISTS bidding.tb_bid_template CASCADE; -CREATE TABLE bidding.tb_bid_template ( - optsn VARCHAR(50) NOT NULL, -- 流水号 - template_id VARCHAR(50) NOT NULL, -- 模板ID - template_name VARCHAR(255) NOT NULL, -- 模板名称 - template_type VARCHAR(50) NOT NULL, -- 模板类型:technical-技术标/commercial-商务标/comprehensive-综合标 - industry VARCHAR(100), -- 适用行业 - template_content TEXT, -- 模板内容 - outline_structure JSONB, -- 大纲结构(JSON格式) - file_id VARCHAR(50), -- 模板文件ID - usage_count INTEGER DEFAULT 0, -- 使用次数 - is_default BOOLEAN DEFAULT false, -- 是否默认模板 - dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径 - status VARCHAR(20) DEFAULT 'active', -- 状态:active-激活/inactive-停用 - creator VARCHAR(50) DEFAULT NULL, -- 创建者 - updater VARCHAR(50) DEFAULT NULL, -- 更新者 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间 - delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 - PRIMARY KEY (template_id), - UNIQUE (optsn) -); - -CREATE INDEX idx_template_type ON bidding.tb_bid_template(template_type) WHERE deleted = false; - -COMMENT ON TABLE bidding.tb_bid_template IS '投标模板表'; diff --git a/docker/urbanLifeline/postgres/init/sql/createTableConfig.sql b/docker/urbanLifeline/postgres/init/sql/createTableConfig.sql deleted file mode 100644 index f3bd68d4..00000000 --- a/docker/urbanLifeline/postgres/init/sql/createTableConfig.sql +++ /dev/null @@ -1,51 +0,0 @@ -CREATE SCHEMA IF NOT EXISTS config; -DROP TABLE IF EXISTS config.tb_sys_config CASCADE; -CREATE TABLE config.tb_sys_config ( - optsn VARCHAR(50) NOT NULL, -- 流水号 - config_id VARCHAR(50) NOT NULL, -- 配置ID - key VARCHAR(255) NOT NULL, -- 配置键 - name VARCHAR(255) NOT NULL, -- 配置名称 - value VARCHAR(255) NOT NULL, -- 配置值 - config_type VARCHAR(50) NOT NULL, -- 数据类型(String, INTEGER, BOOLEAN, Float, Double) - render_type VARCHAR(50) NOT NULL, -- 配置渲染类型(select, input, textarea, checkbox, radio, switch) - description VARCHAR(255) NOT NULL, -- 配置描述 - re JSON DEFAULT NULL, -- 正则表达式校验规则 - options JSON DEFAULT NULL, -- 可选项,render_type为select、checkbox、radio时使用 - "group" VARCHAR(255) NOT NULL, -- 配置组 - module_id VARCHAR(255) NOT NULL, -- 模块id - order_num INT NOT NULL, -- 配置顺序 - status INT NOT NULL DEFAULT 0, -- 配置状态 0:启用 1:禁用 - remark VARCHAR(255) NOT NULL, -- 配置备注 - creator VARCHAR(50) DEFAULT NULL, -- 创建者 - dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径,支持like递归(如/1/2/3/) - updater VARCHAR(50) DEFAULT NULL, -- 更新者 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 配置创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 配置更新时间 - delete_time TIMESTAMPTZ DEFAULT NULL, -- 配置删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 - PRIMARY KEY (config_id), - UNIQUE (optsn) -); -COMMENT ON TABLE config.tb_sys_config IS '系统配置表'; -COMMENT ON COLUMN config.tb_sys_config.optsn IS '流水号'; -COMMENT ON COLUMN config.tb_sys_config.config_id IS '配置ID'; -COMMENT ON COLUMN config.tb_sys_config.key IS '配置键'; -COMMENT ON COLUMN config.tb_sys_config.name IS '配置名称'; -COMMENT ON COLUMN config.tb_sys_config.value IS '配置值'; -COMMENT ON COLUMN config.tb_sys_config.config_type IS '数据类型'; -COMMENT ON COLUMN config.tb_sys_config.render_type IS '数据渲染类型'; -COMMENT ON COLUMN config.tb_sys_config.description IS '配置描述'; -COMMENT ON COLUMN config.tb_sys_config.re IS '正则表达式校验规则'; -COMMENT ON COLUMN config.tb_sys_config.options IS '可选项'; -COMMENT ON COLUMN config.tb_sys_config.group IS'配置组名称'; -COMMENT ON COLUMN config.tb_sys_config.module_id IS '模块id'; -COMMENT ON COLUMN config.tb_sys_config.order_num IS '配置顺序'; -COMMENT ON COLUMN config.tb_sys_config.status IS '配置状态'; -COMMENT ON COLUMN config.tb_sys_config.remark IS '配置备注'; -COMMENT ON COLUMN config.tb_sys_config.creator IS '创建者'; -COMMENT ON COLUMN config.tb_sys_config.dept_path IS '部门全路径'; -COMMENT ON COLUMN config.tb_sys_config.updater IS '更新者'; -COMMENT ON COLUMN config.tb_sys_config.create_time IS '配置创建时间'; -COMMENT ON COLUMN config.tb_sys_config.update_time IS '配置更新时间'; -COMMENT ON COLUMN config.tb_sys_config.delete_time IS '配置删除时间'; -COMMENT ON COLUMN config.tb_sys_config.deleted IS '是否删除'; \ No newline at end of file diff --git a/docker/urbanLifeline/postgres/init/sql/createTableCrontab.sql b/docker/urbanLifeline/postgres/init/sql/createTableCrontab.sql deleted file mode 100644 index 1dfc5e72..00000000 --- a/docker/urbanLifeline/postgres/init/sql/createTableCrontab.sql +++ /dev/null @@ -1,153 +0,0 @@ --- ==================================================== --- 定时任务表 --- ==================================================== -CREATE SCHEMA IF NOT EXISTS crontab; -DROP TABLE IF EXISTS crontab.tb_crontab_task CASCADE; -CREATE TABLE crontab.tb_crontab_task ( - id VARCHAR(64) NOT NULL, - task_id VARCHAR(64) NOT NULL, - task_name VARCHAR(100) NOT NULL, - task_group VARCHAR(50) NOT NULL DEFAULT 'DEFAULT', - meta_id VARCHAR(64) NOT NULL, - default_recipient SMALLINT NOT NULL DEFAULT 0, -- 是否使用默认接收人(0:否 1:是) - bean_name VARCHAR(100) NOT NULL, - method_name VARCHAR(100) NOT NULL, - method_params VARCHAR(500) DEFAULT NULL, - cron_expression VARCHAR(100) NOT NULL, - status SMALLINT NOT NULL DEFAULT 0, -- 任务状态(0:暂停 1:运行中) - description VARCHAR(500) DEFAULT NULL, - concurrent SMALLINT NOT NULL DEFAULT 0, -- 是否允许并发执行(0:否 1:是) - misfire_policy SMALLINT NOT NULL DEFAULT 1, -- 错过执行策略(1:立即执行 2:执行一次 3:放弃执行) - creator VARCHAR(64) DEFAULT NULL, - updater VARCHAR(64) DEFAULT NULL, - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), - update_time TIMESTAMPTZ DEFAULT NULL, - delete_time TIMESTAMPTZ DEFAULT NULL, - deleted SMALLINT NOT NULL DEFAULT 0, -- 是否删除(0:否 1:是) - PRIMARY KEY (id) -); - -CREATE INDEX IF NOT EXISTS idx_task_name ON crontab.tb_crontab_task(task_name); -CREATE INDEX IF NOT EXISTS idx_bean_name ON crontab.tb_crontab_task(bean_name); -CREATE INDEX IF NOT EXISTS idx_status ON crontab.tb_crontab_task(status); -CREATE INDEX IF NOT EXISTS idx_deleted ON crontab.tb_crontab_task(deleted); - -COMMENT ON TABLE crontab.tb_crontab_task IS '定时任务配置表'; -COMMENT ON COLUMN crontab.tb_crontab_task.id IS '主键ID'; -COMMENT ON COLUMN crontab.tb_crontab_task.task_id IS '任务ID'; -COMMENT ON COLUMN crontab.tb_crontab_task.task_name IS '任务名称'; -COMMENT ON COLUMN crontab.tb_crontab_task.task_group IS '任务分组'; -COMMENT ON COLUMN crontab.tb_crontab_task.meta_id IS '任务元数据ID'; -COMMENT ON COLUMN crontab.tb_crontab_task.default_recipient IS '是否使用默认接收人(0:否 1:是)'; -COMMENT ON COLUMN crontab.tb_crontab_task.bean_name IS 'Bean名称'; -COMMENT ON COLUMN crontab.tb_crontab_task.method_name IS '方法名称'; -COMMENT ON COLUMN crontab.tb_crontab_task.method_params IS '方法参数'; -COMMENT ON COLUMN crontab.tb_crontab_task.cron_expression IS 'Cron表达式'; -COMMENT ON COLUMN crontab.tb_crontab_task.status IS '任务状态(0:暂停 1:运行中)'; -COMMENT ON COLUMN crontab.tb_crontab_task.description IS '任务描述'; -COMMENT ON COLUMN crontab.tb_crontab_task.concurrent IS '是否允许并发执行(0:否 1:是)'; -COMMENT ON COLUMN crontab.tb_crontab_task.misfire_policy IS '错过执行策略(1:立即执行 2:执行一次 3:放弃执行)'; -COMMENT ON COLUMN crontab.tb_crontab_task.creator IS '创建者'; -COMMENT ON COLUMN crontab.tb_crontab_task.updater IS '更新者'; -COMMENT ON COLUMN crontab.tb_crontab_task.create_time IS '创建时间'; -COMMENT ON COLUMN crontab.tb_crontab_task.update_time IS '更新时间'; -COMMENT ON COLUMN crontab.tb_crontab_task.delete_time IS '删除时间'; -COMMENT ON COLUMN crontab.tb_crontab_task.deleted IS '是否删除(0:否 1:是)'; - --- ==================================================== --- 定时任务执行日志表 --- ==================================================== -DROP TABLE IF EXISTS crontab.tb_crontab_log CASCADE; -CREATE TABLE crontab.tb_crontab_log ( - id VARCHAR(64) NOT NULL, - task_id VARCHAR(64) NOT NULL, - task_name VARCHAR(100) NOT NULL, - task_group VARCHAR(50) NOT NULL DEFAULT 'DEFAULT', - bean_name VARCHAR(100) NOT NULL, - method_name VARCHAR(100) NOT NULL, - method_params VARCHAR(500) DEFAULT NULL, - execute_status SMALLINT NOT NULL, -- 执行状态(0:失败 1:成功) - execute_message TEXT DEFAULT NULL, - exception_info TEXT DEFAULT NULL, - start_time TIMESTAMPTZ NOT NULL, - end_time TIMESTAMPTZ DEFAULT NULL, - execute_duration INT DEFAULT NULL, - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), - update_time TIMESTAMPTZ DEFAULT NULL, - delete_time TIMESTAMPTZ DEFAULT NULL, - deleted SMALLINT NOT NULL DEFAULT 0, -- 是否删除(0:否 1:是) - PRIMARY KEY (id) -); - -CREATE INDEX IF NOT EXISTS idx_task_id ON crontab.tb_crontab_log(task_id); -CREATE INDEX IF NOT EXISTS idx_log_task_name ON crontab.tb_crontab_log(task_name); -CREATE INDEX IF NOT EXISTS idx_execute_status ON crontab.tb_crontab_log(execute_status); -CREATE INDEX IF NOT EXISTS idx_start_time ON crontab.tb_crontab_log(start_time); -CREATE INDEX IF NOT EXISTS idx_log_deleted ON crontab.tb_crontab_log(deleted); - -COMMENT ON TABLE crontab.tb_crontab_log IS '定时任务执行日志表'; -COMMENT ON COLUMN crontab.tb_crontab_log.id IS '主键ID'; -COMMENT ON COLUMN crontab.tb_crontab_log.task_id IS '任务ID'; -COMMENT ON COLUMN crontab.tb_crontab_log.task_name IS '任务名称'; -COMMENT ON COLUMN crontab.tb_crontab_log.task_group IS '任务分组'; -COMMENT ON COLUMN crontab.tb_crontab_log.bean_name IS 'Bean名称'; -COMMENT ON COLUMN crontab.tb_crontab_log.method_name IS '方法名称'; -COMMENT ON COLUMN crontab.tb_crontab_log.method_params IS '方法参数'; -COMMENT ON COLUMN crontab.tb_crontab_log.execute_status IS '执行状态(0:失败 1:成功)'; -COMMENT ON COLUMN crontab.tb_crontab_log.execute_message IS '执行结果信息'; -COMMENT ON COLUMN crontab.tb_crontab_log.exception_info IS '异常信息'; -COMMENT ON COLUMN crontab.tb_crontab_log.start_time IS '开始时间'; -COMMENT ON COLUMN crontab.tb_crontab_log.end_time IS '结束时间'; -COMMENT ON COLUMN crontab.tb_crontab_log.execute_duration IS '执行时长(毫秒)'; -COMMENT ON COLUMN crontab.tb_crontab_log.create_time IS '创建时间'; -COMMENT ON COLUMN crontab.tb_crontab_log.update_time IS '更新时间'; -COMMENT ON COLUMN crontab.tb_crontab_log.delete_time IS '删除时间'; -COMMENT ON COLUMN crontab.tb_crontab_log.deleted IS '是否删除(0:否 1:是)'; - --- ==================================================== --- 定时任务元数据表(存储爬虫任务的元数据配置) --- ==================================================== -DROP TABLE IF EXISTS crontab.tb_crontab_task_meta CASCADE; -CREATE TABLE crontab.tb_crontab_task_meta ( - id VARCHAR(64) NOT NULL, - meta_id VARCHAR(64) NOT NULL, - name VARCHAR(100) NOT NULL, - description VARCHAR(500) DEFAULT NULL, - category VARCHAR(50) NOT NULL, - bean_name VARCHAR(100) NOT NULL, - method_name VARCHAR(100) NOT NULL, - script_path VARCHAR(255) DEFAULT NULL, - param_schema TEXT DEFAULT NULL, - auto_publish SMALLINT NOT NULL DEFAULT 0, -- 是否自动发布 - sort_order INT DEFAULT 0, - creator VARCHAR(64) DEFAULT NULL, - updater VARCHAR(64) DEFAULT NULL, - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), - update_time TIMESTAMPTZ DEFAULT NULL, - delete_time TIMESTAMPTZ DEFAULT NULL, - deleted SMALLINT NOT NULL DEFAULT 0, -- 是否删除(0:否 1:是) - PRIMARY KEY (id), - UNIQUE (meta_id) -); - -CREATE INDEX IF NOT EXISTS idx_category ON crontab.tb_crontab_task_meta(category); -CREATE INDEX IF NOT EXISTS idx_meta_deleted ON crontab.tb_crontab_task_meta(deleted); - -COMMENT ON TABLE crontab.tb_crontab_task_meta IS '定时任务元数据表'; -COMMENT ON COLUMN crontab.tb_crontab_task_meta.id IS '主键ID'; -COMMENT ON COLUMN crontab.tb_crontab_task_meta.meta_id IS '元数据ID'; -COMMENT ON COLUMN crontab.tb_crontab_task_meta.name IS '任务名称'; -COMMENT ON COLUMN crontab.tb_crontab_task_meta.description IS '任务描述'; -COMMENT ON COLUMN crontab.tb_crontab_task_meta.category IS '任务分类(如:人民日报新闻爬取)'; -COMMENT ON COLUMN crontab.tb_crontab_task_meta.bean_name IS 'Bean名称(执行器类名)'; -COMMENT ON COLUMN crontab.tb_crontab_task_meta.method_name IS '执行方法名'; -COMMENT ON COLUMN crontab.tb_crontab_task_meta.script_path IS 'Python脚本路径(相对于basePath)'; -COMMENT ON COLUMN crontab.tb_crontab_task_meta.param_schema IS '参数模板(JSON格式,定义参数名、类型、描述、默认值等)'; -COMMENT ON COLUMN crontab.tb_crontab_task_meta.auto_publish IS '是否自动发布'; -COMMENT ON COLUMN crontab.tb_crontab_task_meta.sort_order IS '排序号'; -COMMENT ON COLUMN crontab.tb_crontab_task_meta.creator IS '创建者'; -COMMENT ON COLUMN crontab.tb_crontab_task_meta.updater IS '更新者'; -COMMENT ON COLUMN crontab.tb_crontab_task_meta.create_time IS '创建时间'; -COMMENT ON COLUMN crontab.tb_crontab_task_meta.update_time IS '更新时间'; -COMMENT ON COLUMN crontab.tb_crontab_task_meta.delete_time IS '删除时间'; -COMMENT ON COLUMN crontab.tb_crontab_task_meta.deleted IS '是否删除(0:否 1:是)'; \ No newline at end of file diff --git a/docker/urbanLifeline/postgres/init/sql/createTableFile.sql b/docker/urbanLifeline/postgres/init/sql/createTableFile.sql deleted file mode 100644 index 06b2f7ac..00000000 --- a/docker/urbanLifeline/postgres/init/sql/createTableFile.sql +++ /dev/null @@ -1,79 +0,0 @@ -CREATE SCHEMA IF NOT EXISTS file; - -DROP TABLE IF EXISTS file.tb_sys_file CASCADE; -CREATE TABLE file.tb_sys_file ( - -- BaseDTO 继承字段 - optsn VARCHAR(50) NOT NULL, -- 操作流水号 - creator VARCHAR(50) DEFAULT NULL, -- 创建人 - updater VARCHAR(50) DEFAULT NULL, -- 更新人 - dept_path VARCHAR(255) DEFAULT NULL, -- 部门路径 - remark TEXT DEFAULT NULL, -- 备注 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间 - delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否已删除(false-未删除,true-已删除) - - -- TbSysFileDTO 特有字段 - file_id VARCHAR(50) NOT NULL, -- 文件ID (主键) - file_root_id VARCHAR(50) DEFAULT NULL, -- 文件根ID - version INTEGER DEFAULT 1, -- 文件版本 - name VARCHAR(255) NOT NULL, -- 文件名 - path VARCHAR(500) NOT NULL, -- 文件路径 - size BIGINT NOT NULL, -- 文件大小(字节) - type VARCHAR(50) DEFAULT NULL, -- 文件类型 - storage_type VARCHAR(50) DEFAULT NULL, -- 存储类型 - mime_type VARCHAR(255) DEFAULT NULL, -- MIME 类型 - url VARCHAR(500) DEFAULT NULL, -- 后端下载接口路径(保留用于扩展,建议使用 /api/file/download/{fileId}) - status VARCHAR(50) DEFAULT NULL, -- 文件状态 - module VARCHAR(100) DEFAULT NULL, -- 所属模块 - business_id VARCHAR(50) DEFAULT NULL, -- 业务ID - uploader VARCHAR(50) DEFAULT NULL, -- 上传者用户ID - object_name VARCHAR(500) DEFAULT NULL, -- MinIO对象名称 - bucket_name VARCHAR(100) DEFAULT NULL, -- MinIO存储桶名称 - md5_hash VARCHAR(32) DEFAULT NULL, -- 文件MD5值 - extension VARCHAR(20) DEFAULT NULL, -- 文件扩展名 - - PRIMARY KEY (file_id), - UNIQUE (optsn) -); - -COMMENT ON TABLE file.tb_sys_file IS '系统文件表'; - --- BaseDTO 继承字段注释 -COMMENT ON COLUMN file.tb_sys_file.optsn IS '操作流水号'; -COMMENT ON COLUMN file.tb_sys_file.creator IS '创建人'; -COMMENT ON COLUMN file.tb_sys_file.updater IS '更新人'; -COMMENT ON COLUMN file.tb_sys_file.dept_path IS '部门路径'; -COMMENT ON COLUMN file.tb_sys_file.remark IS '备注'; -COMMENT ON COLUMN file.tb_sys_file.create_time IS '创建时间'; -COMMENT ON COLUMN file.tb_sys_file.update_time IS '更新时间'; -COMMENT ON COLUMN file.tb_sys_file.delete_time IS '删除时间'; -COMMENT ON COLUMN file.tb_sys_file.deleted IS '是否已删除(false-未删除,true-已删除)'; - --- TbSysFileDTO 特有字段注释 -COMMENT ON COLUMN file.tb_sys_file.file_id IS '文件ID (主键)'; -COMMENT ON COLUMN file.tb_sys_file.file_root_id IS '文件根ID'; -COMMENT ON COLUMN file.tb_sys_file.version IS '文件版本'; -COMMENT ON COLUMN file.tb_sys_file.name IS '文件名'; -COMMENT ON COLUMN file.tb_sys_file.path IS '文件路径'; -COMMENT ON COLUMN file.tb_sys_file.size IS '文件大小(字节)'; -COMMENT ON COLUMN file.tb_sys_file.type IS '文件类型'; -COMMENT ON COLUMN file.tb_sys_file.storage_type IS '存储类型'; -COMMENT ON COLUMN file.tb_sys_file.mime_type IS 'MIME 类型'; -COMMENT ON COLUMN file.tb_sys_file.url IS '后端下载接口路径(保留用于扩展,建议使用 /api/file/download/{fileId})'; -COMMENT ON COLUMN file.tb_sys_file.status IS '文件状态'; -COMMENT ON COLUMN file.tb_sys_file.module IS '所属模块'; -COMMENT ON COLUMN file.tb_sys_file.business_id IS '业务ID'; -COMMENT ON COLUMN file.tb_sys_file.uploader IS '上传者用户ID'; -COMMENT ON COLUMN file.tb_sys_file.object_name IS 'MinIO对象名称'; -COMMENT ON COLUMN file.tb_sys_file.bucket_name IS 'MinIO存储桶名称'; -COMMENT ON COLUMN file.tb_sys_file.md5_hash IS '文件MD5值'; -COMMENT ON COLUMN file.tb_sys_file.extension IS '文件扩展名'; - --- 文件表索引 --- CREATE INDEX idx_file_module_business ON file.tb_sys_file(module, business_id) WHERE deleted = false; --- CREATE INDEX idx_file_uploader ON file.tb_sys_file(uploader) WHERE deleted = false; --- CREATE INDEX idx_file_bucket ON file.tb_sys_file(bucket_name) WHERE deleted = false; --- CREATE INDEX idx_file_status ON file.tb_sys_file(status) WHERE deleted = false; --- CREATE INDEX idx_file_create_time ON file.tb_sys_file(create_time) WHERE deleted = false; --- CREATE INDEX idx_file_md5 ON file.tb_sys_file(md5_hash) WHERE deleted = false; \ No newline at end of file diff --git a/docker/urbanLifeline/postgres/init/sql/createTableLog.sql b/docker/urbanLifeline/postgres/init/sql/createTableLog.sql deleted file mode 100644 index 34f64652..00000000 --- a/docker/urbanLifeline/postgres/init/sql/createTableLog.sql +++ /dev/null @@ -1,42 +0,0 @@ -DROP TABLE IF EXISTS sys.tb_sys_log CASCADE; -CREATE TABLE sys.tb_sys_log ( - optsn VARCHAR(50) NOT NULL, -- 流水号 - log_id VARCHAR(50) NOT NULL, -- 日志ID - type VARCHAR(50) NOT NULL, -- 日志类型 - level VARCHAR(50) NOT NULL, -- 日志级别 - module VARCHAR(50) NOT NULL, -- 日志模块 - ip_address VARCHAR(45), -- IP地址 - ip_source VARCHAR(100), -- IP来源 - browser VARCHAR(100), -- 浏览器 - os VARCHAR(100), -- 操作系统 - message VARCHAR(255) NOT NULL, -- 日志消息 - data JSONB DEFAULT NULL, -- 日志数据 - creator VARCHAR(50) DEFAULT NULL, -- 创建者 - creator_name VARCHAR(200) DEFAULT NULL, -- 创建者姓名 - service VARCHAR(50) NOT NULL, -- 服务类型 - dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径 - updater VARCHAR(50) DEFAULT NULL, -- 更新者 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 日志创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 日志更新时间 - delete_time TIMESTAMPTZ DEFAULT NULL, -- 日志删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 - PRIMARY KEY (log_id), - UNIQUE (optsn) -); -COMMENT ON TABLE sys.tb_sys_log IS '系统日志表'; -COMMENT ON COLUMN sys.tb_sys_log.optsn IS '流水号'; -COMMENT ON COLUMN sys.tb_sys_log.log_id IS '日志ID'; -COMMENT ON COLUMN sys.tb_sys_log.type IS '日志类型'; -COMMENT ON COLUMN sys.tb_sys_log.level IS '日志级别'; -COMMENT ON COLUMN sys.tb_sys_log.module IS '日志模块'; -COMMENT ON COLUMN sys.tb_sys_log.message IS '日志消息'; -COMMENT ON COLUMN sys.tb_sys_log.data IS '日志数据'; -COMMENT ON COLUMN sys.tb_sys_log.creator IS '创建者'; -COMMENT ON COLUMN sys.tb_sys_log.creator_name IS '创建者姓名'; -COMMENT ON COLUMN sys.tb_sys_log.service IS '服务类型'; -COMMENT ON COLUMN sys.tb_sys_log.dept_path IS '部门全路径'; -COMMENT ON COLUMN sys.tb_sys_log.updater IS '更新者'; -COMMENT ON COLUMN sys.tb_sys_log.create_time IS '日志创建时间'; -COMMENT ON COLUMN sys.tb_sys_log.update_time IS '日志更新时间'; -COMMENT ON COLUMN sys.tb_sys_log.delete_time IS '日志删除时间'; -COMMENT ON COLUMN sys.tb_sys_log.deleted IS '是否删除'; \ No newline at end of file diff --git a/docker/urbanLifeline/postgres/init/sql/createTableMessage.sql b/docker/urbanLifeline/postgres/init/sql/createTableMessage.sql deleted file mode 100644 index 43aad8ba..00000000 --- a/docker/urbanLifeline/postgres/init/sql/createTableMessage.sql +++ /dev/null @@ -1,200 +0,0 @@ -CREATE SCHEMA IF NOT EXISTS message; - -DROP TABLE IF EXISTS message.tb_message CASCADE; -CREATE TABLE message.tb_message ( - optsn VARCHAR(50) NOT NULL, -- 流水号 - message_id VARCHAR(50) NOT NULL, -- 消息ID - title VARCHAR(255) NOT NULL, -- 消息标题 - content VARCHAR(255) NOT NULL, -- 消息内容 - type VARCHAR(50) NOT NULL, -- 消息类型 - status VARCHAR(50) NOT NULL, -- 消息状态 - service VARCHAR(50) NOT NULL, -- 服务类型 - dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径(隔离) - creator VARCHAR(50) NOT NULL DEFAULT 'system',-- 创建者 - updater VARCHAR(50) DEFAULT NULL, -- 更新者 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, - delete_time TIMESTAMPTZ DEFAULT NULL, - deleted BOOLEAN NOT NULL DEFAULT false, - PRIMARY KEY (message_id), - UNIQUE (optsn) -); - -COMMENT ON TABLE message.tb_message IS '消息表'; -COMMENT ON COLUMN message.tb_message.optsn IS '流水号'; -COMMENT ON COLUMN message.tb_message.message_id IS '消息ID'; -COMMENT ON COLUMN message.tb_message.title IS '消息标题'; -COMMENT ON COLUMN message.tb_message.content IS '消息内容'; -COMMENT ON COLUMN message.tb_message.type IS '消息类型'; -COMMENT ON COLUMN message.tb_message.status IS '消息状态'; -COMMENT ON COLUMN message.tb_message.service IS '服务类型'; -COMMENT ON COLUMN message.tb_message.dept_path IS '部门全路径'; -COMMENT ON COLUMN message.tb_message.creator IS '创建者'; -COMMENT ON COLUMN message.tb_message.updater IS '更新者'; -COMMENT ON COLUMN message.tb_message.create_time IS '创建时间'; -COMMENT ON COLUMN message.tb_message.update_time IS '更新时间'; -COMMENT ON COLUMN message.tb_message.delete_time IS '删除时间'; -COMMENT ON COLUMN message.tb_message.deleted IS '是否删除'; - - --- 消息发送范围定义表(定义消息要发送给哪些对象,通过什么渠道) -DROP TABLE IF EXISTS message.tb_message_range CASCADE; -CREATE TABLE message.tb_message_range ( - optsn VARCHAR(50) NOT NULL, -- 流水号 - message_id VARCHAR(50) NOT NULL, -- 消息ID - target_type VARCHAR(20) NOT NULL, -- 目标类型:user/dept/role/all - target_id VARCHAR(50) DEFAULT NULL, -- 目标ID(用户、部门、角色ID等,all类型时为空) - channel VARCHAR(20) NOT NULL DEFAULT 'app', -- 发送渠道:app/sms/email/wechat_official_account/wechat_applet等 - dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径,支持like递归(如/1/2/3/) - creator VARCHAR(50) NOT NULL DEFAULT 'system',-- 创建者 - updater VARCHAR(50) DEFAULT NULL, -- 更新者 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间 - delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 - PRIMARY KEY (optsn), - UNIQUE (message_id, target_type, target_id, channel) -); - -COMMENT ON TABLE message.tb_message_range IS '消息发送范围定义表'; -COMMENT ON COLUMN message.tb_message_range.optsn IS '流水号'; -COMMENT ON COLUMN message.tb_message_range.message_id IS '消息ID'; -COMMENT ON COLUMN message.tb_message_range.target_type IS '目标类型:user-指定用户/dept-部门/role-角色/all-全员'; -COMMENT ON COLUMN message.tb_message_range.target_id IS '目标ID(用户、部门、角色ID等,all类型时为空)'; -COMMENT ON COLUMN message.tb_message_range.channel IS '发送渠道:app/sms/email/wechat_official_account/wechat_applet等'; -COMMENT ON COLUMN message.tb_message_range.dept_path IS '部门全路径'; -COMMENT ON COLUMN message.tb_message_range.creator IS '创建者'; -COMMENT ON COLUMN message.tb_message_range.updater IS '更新者'; -COMMENT ON COLUMN message.tb_message_range.create_time IS '创建时间'; -COMMENT ON COLUMN message.tb_message_range.update_time IS '更新时间'; -COMMENT ON COLUMN message.tb_message_range.delete_time IS '删除时间'; -COMMENT ON COLUMN message.tb_message_range.deleted IS '是否删除'; - - --- 用户消息接收记录表(记录每个用户实际收到的消息及处理状态) -DROP TABLE IF EXISTS message.tb_message_receiver CASCADE; -CREATE TABLE message.tb_message_receiver ( - optsn VARCHAR(50) NOT NULL, -- 流水号 - message_id VARCHAR(50) NOT NULL, -- 消息ID - user_id VARCHAR(50) NOT NULL, -- 用户ID - channel VARCHAR(20) DEFAULT 'app', -- 接收渠道:app/sms/email/wechat等 - status VARCHAR(20) NOT NULL DEFAULT 'unread', -- 消息状态:unread-未读/read-已读/handled-已处理/deleted-已删除 - read_time TIMESTAMPTZ DEFAULT NULL, -- 阅读时间 - handle_time TIMESTAMPTZ DEFAULT NULL, -- 处理时间 - dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径(数据隔离) - creator VARCHAR(50) NOT NULL DEFAULT 'system',-- 创建者 - updater VARCHAR(50) DEFAULT NULL, -- 更新者 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间(接收时间) - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间 - delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 - PRIMARY KEY (optsn), - UNIQUE (message_id, user_id, channel) -); - --- 创建索引以提高查询效率 -CREATE INDEX idx_message_user_user_status ON message.tb_message_receiver(user_id, status, create_time DESC) WHERE deleted = false; -CREATE INDEX idx_message_user_message ON message.tb_message_receiver(message_id) WHERE deleted = false; - -COMMENT ON TABLE message.tb_message_receiver IS '用户消息接收记录表'; -COMMENT ON COLUMN message.tb_message_receiver.optsn IS '流水号'; -COMMENT ON COLUMN message.tb_message_receiver.message_id IS '消息ID'; -COMMENT ON COLUMN message.tb_message_receiver.user_id IS '用户ID'; -COMMENT ON COLUMN message.tb_message_receiver.channel IS '接收渠道:app/sms/email/wechat等'; -COMMENT ON COLUMN message.tb_message_receiver.status IS '消息状态:unread-未读/read-已读/handled-已处理/deleted-已删除'; -COMMENT ON COLUMN message.tb_message_receiver.read_time IS '阅读时间'; -COMMENT ON COLUMN message.tb_message_receiver.handle_time IS '处理时间'; -COMMENT ON COLUMN message.tb_message_receiver.dept_path IS '部门全路径'; -COMMENT ON COLUMN message.tb_message_receiver.creator IS '创建者'; -COMMENT ON COLUMN message.tb_message_receiver.updater IS '更新者'; -COMMENT ON COLUMN message.tb_message_receiver.create_time IS '创建时间(接收时间)'; -COMMENT ON COLUMN message.tb_message_receiver.update_time IS '更新时间'; -COMMENT ON COLUMN message.tb_message_receiver.delete_time IS '删除时间'; -COMMENT ON COLUMN message.tb_message_receiver.deleted IS '是否删除'; - - --- 消息渠道配置表(管理各种消息发送渠道的配置) -DROP TABLE IF EXISTS message.tb_message_channel CASCADE; -CREATE TABLE message.tb_message_channel ( - optsn VARCHAR(50) NOT NULL, -- 流水号 - channel_id VARCHAR(50) NOT NULL, -- 渠道ID - channel_code VARCHAR(50) NOT NULL, -- 渠道编码:app/sms/email/wechat/dingtalk等 - channel_name VARCHAR(100) NOT NULL, -- 渠道名称 - channel_desc VARCHAR(255) DEFAULT NULL, -- 渠道描述 - config JSON DEFAULT NULL, -- 渠道配置(如API密钥、服务器地址等) - status VARCHAR(20) NOT NULL DEFAULT 'enabled', -- 渠道状态:enabled-启用/disabled-禁用/maintenance-维护中 - priority INTEGER DEFAULT 0, -- 优先级(数字越大优先级越高) - dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径(数据隔离) - creator VARCHAR(50) NOT NULL DEFAULT 'system',-- 创建者 - updater VARCHAR(50) DEFAULT NULL, -- 更新者 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间 - delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 - PRIMARY KEY (channel_id), - UNIQUE (optsn), - UNIQUE (channel_code) -); - -COMMENT ON TABLE message.tb_message_channel IS '消息渠道配置表'; -COMMENT ON COLUMN message.tb_message_channel.optsn IS '流水号'; -COMMENT ON COLUMN message.tb_message_channel.channel_id IS '渠道ID'; -COMMENT ON COLUMN message.tb_message_channel.channel_code IS '渠道编码:app/sms/email/wechat/dingtalk等'; -COMMENT ON COLUMN message.tb_message_channel.channel_name IS '渠道名称'; -COMMENT ON COLUMN message.tb_message_channel.channel_desc IS '渠道描述'; -COMMENT ON COLUMN message.tb_message_channel.config IS '渠道配置(JSON格式)'; -COMMENT ON COLUMN message.tb_message_channel.status IS '渠道状态:enabled-启用/disabled-禁用/maintenance-维护中'; -COMMENT ON COLUMN message.tb_message_channel.priority IS '优先级(数字越大优先级越高)'; -COMMENT ON COLUMN message.tb_message_channel.dept_path IS '部门全路径'; -COMMENT ON COLUMN message.tb_message_channel.creator IS '创建者'; -COMMENT ON COLUMN message.tb_message_channel.updater IS '更新者'; -COMMENT ON COLUMN message.tb_message_channel.create_time IS '创建时间'; -COMMENT ON COLUMN message.tb_message_channel.update_time IS '更新时间'; -COMMENT ON COLUMN message.tb_message_channel.delete_time IS '删除时间'; -COMMENT ON COLUMN message.tb_message_channel.deleted IS '是否删除'; - --- ============================= --- 消息模板表 --- ============================= -DROP TABLE IF EXISTS message.tb_message_template CASCADE; -CREATE TABLE message.tb_message_template ( - optsn VARCHAR(50) NOT NULL, - template_id VARCHAR(50) NOT NULL, - template_code VARCHAR(100) NOT NULL, -- 模板编码 - template_name VARCHAR(255) NOT NULL, -- 模板名称 - template_type VARCHAR(30) NOT NULL, -- 模板类型:system-系统/business-业务 - title_template TEXT, -- 标题模板(支持变量) - content_template TEXT NOT NULL, -- 内容模板(支持变量) - variables JSONB, -- 模板变量定义 - service VARCHAR(50) NOT NULL, -- 服务类型 - dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径 - creator VARCHAR(50) DEFAULT NULL, -- 创建者 - updater VARCHAR(50) DEFAULT NULL, -- 更新者 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间 - delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 - PRIMARY KEY (template_id), - UNIQUE (optsn), - UNIQUE (template_code) -); - -COMMENT ON TABLE message.tb_message_template IS '消息模板表'; -COMMENT ON COLUMN message.tb_message_template.optsn IS '流水号'; -COMMENT ON COLUMN message.tb_message_template.template_id IS '模板ID'; -COMMENT ON COLUMN message.tb_message_template.template_code IS '模板编码'; -COMMENT ON COLUMN message.tb_message_template.template_name IS '模板名称'; -COMMENT ON COLUMN message.tb_message_template.template_type IS '模板类型:system-系统/business-业务'; -COMMENT ON COLUMN message.tb_message_template.title_template IS '标题模板(支持变量)'; -COMMENT ON COLUMN message.tb_message_template.content_template IS '内容模板(支持变量)'; -COMMENT ON COLUMN message.tb_message_template.variables IS '模板变量定义'; -COMMENT ON COLUMN message.tb_message_template.service IS '服务类型'; -COMMENT ON COLUMN message.tb_message_template.dept_path IS '部门全路径'; -COMMENT ON COLUMN message.tb_message_template.creator IS '创建者'; -COMMENT ON COLUMN message.tb_message_template.updater IS '更新者'; -COMMENT ON COLUMN message.tb_message_template.create_time IS '创建时间'; -COMMENT ON COLUMN message.tb_message_template.update_time IS '更新时间'; -COMMENT ON COLUMN message.tb_message_template.delete_time IS '删除时间'; -COMMENT ON COLUMN message.tb_message_template.deleted IS '是否删除'; - -CREATE INDEX idx_template_type ON message.tb_message_template(template_type) WHERE deleted = false; diff --git a/docker/urbanLifeline/postgres/init/sql/createTablePermission.sql b/docker/urbanLifeline/postgres/init/sql/createTablePermission.sql deleted file mode 100644 index dcf5082a..00000000 --- a/docker/urbanLifeline/postgres/init/sql/createTablePermission.sql +++ /dev/null @@ -1,473 +0,0 @@ -CREATE SCHEMA IF NOT EXISTS sys; - --- 通用更新时间触发函数(用于模拟 MySQL 的 ON UPDATE CURRENT_TIMESTAMP) --- CREATE OR REPLACE FUNCTION sys.set_update_time() --- RETURNS trigger AS $$ --- BEGIN --- NEW.update_time := CURRENT_TIMESTAMP; --- RETURN NEW; --- END; --- $$ LANGUAGE plpgsql; - --- 部门表 -DROP TABLE IF EXISTS sys.tb_sys_dept CASCADE; -CREATE TABLE sys.tb_sys_dept ( - optsn VARCHAR(50) NOT NULL, -- 流水号 - dept_id VARCHAR(50) NOT NULL, -- 部门ID - name VARCHAR(100) NOT NULL, -- 部门名称 - parent_id VARCHAR(50) DEFAULT NULL, -- 父部门ID - dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径 - description VARCHAR(255) DEFAULT NULL, -- 部门描述 - creator VARCHAR(50) DEFAULT NULL, -- 创建者 - updater VARCHAR(50) DEFAULT NULL, -- 更新者 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间(由触发器维护) - delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 - PRIMARY KEY (dept_id), - UNIQUE (optsn) -); --- 创建索引 -CREATE INDEX idx_sys_dept_parent ON sys.tb_sys_dept USING btree (parent_id); -COMMENT ON TABLE sys.tb_sys_dept IS '部门表'; -COMMENT ON COLUMN sys.tb_sys_dept.optsn IS '流水号'; -COMMENT ON COLUMN sys.tb_sys_dept.dept_id IS '部门ID'; -COMMENT ON COLUMN sys.tb_sys_dept.name IS '部门名称'; -COMMENT ON COLUMN sys.tb_sys_dept.parent_id IS '父部门ID'; -COMMENT ON COLUMN sys.tb_sys_dept.dept_path IS '部门全路径'; -COMMENT ON COLUMN sys.tb_sys_dept.description IS '部门描述'; -COMMENT ON COLUMN sys.tb_sys_dept.creator IS '创建者'; -COMMENT ON COLUMN sys.tb_sys_dept.updater IS '更新者'; -COMMENT ON COLUMN sys.tb_sys_dept.create_time IS '创建时间'; -COMMENT ON COLUMN sys.tb_sys_dept.update_time IS '更新时间'; -COMMENT ON COLUMN sys.tb_sys_dept.delete_time IS '删除时间'; -COMMENT ON COLUMN sys.tb_sys_dept.deleted IS '是否删除'; - --- 角色表 -DROP TABLE IF EXISTS sys.tb_sys_role CASCADE; -CREATE TABLE sys.tb_sys_role ( - optsn VARCHAR(50) NOT NULL, -- 流水号 - role_id VARCHAR(50) NOT NULL, -- 角色ID - name VARCHAR(100) NOT NULL, - description VARCHAR(200) DEFAULT NULL, -- 角色名称 - scope VARCHAR(20) NOT NULL DEFAULT 'dept', -- 角色作用域:global/dept - owner_dept_id VARCHAR(50) DEFAULT NULL, -- 当scope=dept时,所属部门ID - creator VARCHAR(50) DEFAULT NULL, -- 创建者 - dept_path VARCHAR(255) DEFAULT NULL, - status BOOLEAN NOT NULL DEFAULT false, -- 部门全路径 - updater VARCHAR(50) DEFAULT NULL, -- 更新者 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间(由触发器维护) - delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 - PRIMARY KEY (role_id), - UNIQUE (optsn) -); -COMMENT ON TABLE sys.tb_sys_role IS '角色表'; -COMMENT ON COLUMN sys.tb_sys_role.optsn IS '流水号'; -COMMENT ON COLUMN sys.tb_sys_role.role_id IS '角色ID'; -COMMENT ON COLUMN sys.tb_sys_role.name IS '角色名称'; -COMMENT ON COLUMN sys.tb_sys_role.description IS '角色名称'; -COMMENT ON COLUMN sys.tb_sys_role.scope IS '角色作用域:global=通用,dept=部门私有'; -COMMENT ON COLUMN sys.tb_sys_role.owner_dept_id IS '部门私有角色的所属部门ID(scope=dept 时必填)'; -COMMENT ON COLUMN sys.tb_sys_role.status IS '角色状态'; -COMMENT ON COLUMN sys.tb_sys_role.creator IS '创建者'; -COMMENT ON COLUMN sys.tb_sys_role.dept_path IS '部门全路径'; -COMMENT ON COLUMN sys.tb_sys_role.updater IS '更新者'; -COMMENT ON COLUMN sys.tb_sys_role.create_time IS '创建时间'; -COMMENT ON COLUMN sys.tb_sys_role.update_time IS '更新时间'; -COMMENT ON COLUMN sys.tb_sys_role.delete_time IS '删除时间'; -COMMENT ON COLUMN sys.tb_sys_role.deleted IS '是否删除'; - --- 唯一性: --- 全局角色:name 在未删除且 scope=global 下唯一 --- 部门私有角色:同一部门下 name 唯一(scope=dept) -CREATE UNIQUE INDEX IF NOT EXISTS uq_sys_role_global_name - ON sys.tb_sys_role USING btree (name) - WHERE deleted = false AND scope = 'global'; -CREATE UNIQUE INDEX IF NOT EXISTS uq_sys_role_dept_name - ON sys.tb_sys_role USING btree (owner_dept_id, name) - WHERE deleted = false AND scope = 'dept'; -CREATE INDEX IF NOT EXISTS idx_sys_role_owner_dept ON sys.tb_sys_role USING btree (owner_dept_id) WHERE deleted = false; - --- 部门角色关联表 -DROP TABLE IF EXISTS sys.tb_sys_dept_role CASCADE; -CREATE TABLE sys.tb_sys_dept_role ( - optsn VARCHAR(50) NOT NULL, -- 流水号 - dept_id VARCHAR(50) NOT NULL, -- 部门ID - role_id VARCHAR(50) NOT NULL, -- 角色ID - dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径 - creator VARCHAR(50) DEFAULT NULL, -- 创建者 - updater VARCHAR(50) DEFAULT NULL, -- 更新者 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间(由触发器维护) - delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 - PRIMARY KEY (dept_id, role_id), - UNIQUE (optsn) -); -COMMENT ON TABLE sys.tb_sys_dept_role IS '部门角色关联表'; -COMMENT ON COLUMN sys.tb_sys_dept_role.optsn IS '流水号'; -COMMENT ON COLUMN sys.tb_sys_dept_role.dept_id IS '部门ID'; -COMMENT ON COLUMN sys.tb_sys_dept_role.role_id IS '角色ID'; -COMMENT ON COLUMN sys.tb_sys_dept_role.dept_path IS '部门全路径'; -COMMENT ON COLUMN sys.tb_sys_dept_role.creator IS '创建者'; -COMMENT ON COLUMN sys.tb_sys_dept_role.updater IS '更新者'; -COMMENT ON COLUMN sys.tb_sys_dept_role.create_time IS '创建时间'; -COMMENT ON COLUMN sys.tb_sys_dept_role.update_time IS '更新时间'; -COMMENT ON COLUMN sys.tb_sys_dept_role.delete_time IS '删除时间'; -COMMENT ON COLUMN sys.tb_sys_dept_role.deleted IS '是否删除'; - --- 用户角色关联表 -DROP TABLE IF EXISTS sys.tb_sys_user_role CASCADE; -CREATE TABLE sys.tb_sys_user_role ( - optsn VARCHAR(50) NOT NULL, -- 流水号 - user_id VARCHAR(50) NOT NULL, -- 用户ID - role_id VARCHAR(50) NOT NULL, -- 角色ID - dept_id VARCHAR(50) NOT NULL, -- 部门ID - dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径 - creator VARCHAR(50) DEFAULT NULL, -- 创建者 - updater VARCHAR(50) DEFAULT NULL, -- 更新者 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间(由触发器维护) - delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 - PRIMARY KEY (user_id, role_id), - UNIQUE (optsn) -); -COMMENT ON TABLE sys.tb_sys_user_role IS '用户角色关联表'; -COMMENT ON COLUMN sys.tb_sys_user_role.optsn IS '流水号'; -COMMENT ON COLUMN sys.tb_sys_user_role.user_id IS '用户ID'; -COMMENT ON COLUMN sys.tb_sys_user_role.role_id IS '角色ID'; -COMMENT ON COLUMN sys.tb_sys_user_role.dept_id IS '部门ID'; -COMMENT ON COLUMN sys.tb_sys_user_role.dept_path IS '部门全路径'; -COMMENT ON COLUMN sys.tb_sys_user_role.creator IS '创建者'; -COMMENT ON COLUMN sys.tb_sys_user_role.updater IS '更新者'; -COMMENT ON COLUMN sys.tb_sys_user_role.create_time IS '创建时间'; -COMMENT ON COLUMN sys.tb_sys_user_role.update_time IS '更新时间'; -COMMENT ON COLUMN sys.tb_sys_user_role.delete_time IS '删除时间'; -COMMENT ON COLUMN sys.tb_sys_user_role.deleted IS '是否删除'; - --- 视图表 -DROP TABLE IF EXISTS sys.tb_sys_view CASCADE; -CREATE TABLE sys.tb_sys_view ( - optsn VARCHAR(50) NOT NULL, -- 流水号 - view_id VARCHAR(50) NOT NULL, -- 视图ID - name VARCHAR(100) NOT NULL, -- 视图名称 - parent_id VARCHAR(50) DEFAULT NULL, -- 父视图ID - url VARCHAR(255) DEFAULT NULL, -- 视图URL - component VARCHAR(255) DEFAULT NULL, -- 视图组件 - icon VARCHAR(100) DEFAULT NULL, -- 视图图标 - type INTEGER DEFAULT 0, -- 视图类型:0=导航栏 1=侧边栏 2=按钮,3空白页 - view_type VARCHAR(20) DEFAULT 'route', -- 页面类型:route=路由页面 iframe=嵌入页面 - iframe_url VARCHAR(500) DEFAULT NULL, -- iframe URL(仅当view_type=iframe时有效) - service VARCHAR(20) DEFAULT 'platform', -- 所属服务:platform=平台应用 bidding=招标应用 workcase=客服应用 - layout VARCHAR(100) DEFAULT NULL, -- 布局组件路径名称 - order_num INTEGER DEFAULT 0, -- 视图排序号 - dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径 - description VARCHAR(255) DEFAULT NULL, -- 视图描述 - creator VARCHAR(50) DEFAULT NULL, -- 创建者 - updater VARCHAR(50) DEFAULT NULL, -- 更新者 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间(由触发器维护) - delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 - PRIMARY KEY (view_id), - UNIQUE (optsn) -); --- 创建索引 -CREATE INDEX idx_sys_view_parent ON sys.tb_sys_view USING btree (parent_id) WHERE deleted = false; -CREATE INDEX idx_sys_view_service ON sys.tb_sys_view USING btree (service) WHERE deleted = false; -CREATE INDEX idx_sys_view_type ON sys.tb_sys_view USING btree (view_type) WHERE deleted = false; -COMMENT ON TABLE sys.tb_sys_view IS '视图表(菜单表)'; -COMMENT ON COLUMN sys.tb_sys_view.optsn IS '流水号'; -COMMENT ON COLUMN sys.tb_sys_view.view_id IS '视图ID'; -COMMENT ON COLUMN sys.tb_sys_view.name IS '视图名称'; -COMMENT ON COLUMN sys.tb_sys_view.parent_id IS '父视图ID'; -COMMENT ON COLUMN sys.tb_sys_view.url IS '视图URL'; -COMMENT ON COLUMN sys.tb_sys_view.component IS '视图组件'; -COMMENT ON COLUMN sys.tb_sys_view.icon IS '视图图标'; -COMMENT ON COLUMN sys.tb_sys_view.type IS '视图类型:0=目录 1=菜单页面 2=按钮'; -COMMENT ON COLUMN sys.tb_sys_view.view_type IS '页面类型:route=路由页面 iframe=嵌入页面'; -COMMENT ON COLUMN sys.tb_sys_view.iframe_url IS 'iframe URL(仅当view_type=iframe时有效)'; -COMMENT ON COLUMN sys.tb_sys_view.service IS '所属服务:platform=平台应用 bidding=招标应用 workcase=客服应用'; -COMMENT ON COLUMN sys.tb_sys_view.layout IS '布局组件路径名称'; -COMMENT ON COLUMN sys.tb_sys_view.order_num IS '视图排序号'; -COMMENT ON COLUMN sys.tb_sys_view.description IS '视图描述'; -COMMENT ON COLUMN sys.tb_sys_view.dept_path IS '部门全路径'; -COMMENT ON COLUMN sys.tb_sys_view.creator IS '创建者'; -COMMENT ON COLUMN sys.tb_sys_view.updater IS '更新者'; -COMMENT ON COLUMN sys.tb_sys_view.create_time IS '创建时间'; -COMMENT ON COLUMN sys.tb_sys_view.update_time IS '更新时间'; -COMMENT ON COLUMN sys.tb_sys_view.delete_time IS '删除时间'; -COMMENT ON COLUMN sys.tb_sys_view.deleted IS '是否删除'; - - --- 模块表 -DROP TABLE IF EXISTS sys.tb_sys_module CASCADE; -CREATE TABLE sys.tb_sys_module ( - optsn VARCHAR(50) NOT NULL, -- 流水号 - module_id VARCHAR(50) NOT NULL, -- 模块ID - name VARCHAR(100) NOT NULL, -- 模块名称 - description VARCHAR(255) DEFAULT NULL, -- 模块描述 - creator VARCHAR(50) DEFAULT NULL, -- 创建者 - dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径 - updater VARCHAR(50) DEFAULT NULL, -- 更新者 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间(由触发器维护) - delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 - PRIMARY KEY (module_id), - UNIQUE (optsn) -); -COMMENT ON TABLE sys.tb_sys_module IS '模块表'; -COMMENT ON COLUMN sys.tb_sys_module.optsn IS '流水号'; -COMMENT ON COLUMN sys.tb_sys_module.module_id IS '模块ID'; -COMMENT ON COLUMN sys.tb_sys_module.name IS '模块名称'; -COMMENT ON COLUMN sys.tb_sys_module.description IS '模块描述'; -COMMENT ON COLUMN sys.tb_sys_module.creator IS '创建者'; -COMMENT ON COLUMN sys.tb_sys_module.dept_path IS '部门全路径'; -COMMENT ON COLUMN sys.tb_sys_module.updater IS '更新者'; -COMMENT ON COLUMN sys.tb_sys_module.create_time IS '创建时间'; -COMMENT ON COLUMN sys.tb_sys_module.update_time IS '更新时间'; -COMMENT ON COLUMN sys.tb_sys_module.delete_time IS '删除时间'; -COMMENT ON COLUMN sys.tb_sys_module.deleted IS '是否删除'; - --- 权限表 -DROP TABLE IF EXISTS sys.tb_sys_permission CASCADE; -CREATE TABLE sys.tb_sys_permission ( - optsn VARCHAR(50) NOT NULL, -- 流水号 - permission_id VARCHAR(50) NOT NULL, -- 权限ID - name VARCHAR(100) NOT NULL, -- 权限名称 - code VARCHAR(100) NOT NULL, -- 权限代码 - description VARCHAR(255) DEFAULT NULL, -- 权限描述 - module_id VARCHAR(50) DEFAULT NULL, -- 所属模块ID - creator VARCHAR(50) DEFAULT NULL, -- 创建者 - dept_path VARCHAR(255) DEFAULT NULL, - status BOOLEAN NOT NULL DEFAULT false, -- 部门全路径 - updater VARCHAR(50) DEFAULT NULL, -- 更新者 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间(由触发器维护) - delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 - PRIMARY KEY (permission_id), - UNIQUE (optsn) -); -COMMENT ON TABLE sys.tb_sys_permission IS '权限表'; -COMMENT ON COLUMN sys.tb_sys_permission.optsn IS '流水号'; -COMMENT ON COLUMN sys.tb_sys_permission.permission_id IS '权限ID'; -COMMENT ON COLUMN sys.tb_sys_permission.name IS '权限名称'; -COMMENT ON COLUMN sys.tb_sys_permission.code IS '权限代码'; -COMMENT ON COLUMN sys.tb_sys_permission.description IS '权限描述' ; -COMMENT ON COLUMN sys.tb_sys_permission.module_id IS '所属模块ID'; -COMMENT ON COLUMN sys.tb_sys_permission.creator IS '创建者'; -COMMENT ON COLUMN sys.tb_sys_permission.dept_path IS '部门全路径'; -COMMENT ON COLUMN sys.tb_sys_permission.status IS '角色状态'; -COMMENT ON COLUMN sys.tb_sys_permission.updater IS '更新者'; -COMMENT ON COLUMN sys.tb_sys_permission.create_time IS '创建时间'; -COMMENT ON COLUMN sys.tb_sys_permission.update_time IS '更新时间'; -COMMENT ON COLUMN sys.tb_sys_permission.delete_time IS '删除时间'; -COMMENT ON COLUMN sys.tb_sys_permission.deleted IS '是否删除'; - --- 角色权限 -DROP TABLE IF EXISTS sys.tb_sys_role_permission CASCADE; -CREATE TABLE sys.tb_sys_role_permission ( - optsn VARCHAR(50) NOT NULL, -- 流水号 - role_id VARCHAR(50) NOT NULL, -- 角色ID - permission_id VARCHAR(50) NOT NULL, -- 权限ID - creator VARCHAR(50) DEFAULT NULL, -- 创建者 - dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径 - updater VARCHAR(50) DEFAULT NULL, -- 更新者 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间(由触发器维护) - delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 - PRIMARY KEY (role_id, permission_id), - UNIQUE (optsn) -); -COMMENT ON TABLE sys.tb_sys_role_permission IS '角色权限表'; -COMMENT ON COLUMN sys.tb_sys_role_permission.optsn IS '流水号'; -COMMENT ON COLUMN sys.tb_sys_role_permission.role_id IS '角色ID'; -COMMENT ON COLUMN sys.tb_sys_role_permission.permission_id IS '权限ID'; -COMMENT ON COLUMN sys.tb_sys_role_permission.creator IS '创建者'; -COMMENT ON COLUMN sys.tb_sys_role_permission.dept_path IS '部门全路径'; -COMMENT ON COLUMN sys.tb_sys_role_permission.updater IS '更新者'; -COMMENT ON COLUMN sys.tb_sys_role_permission.create_time IS '创建时间'; -COMMENT ON COLUMN sys.tb_sys_role_permission.update_time IS '更新时间'; -COMMENT ON COLUMN sys.tb_sys_role_permission.delete_time IS '删除时间'; -COMMENT ON COLUMN sys.tb_sys_role_permission.deleted IS '是否删除'; - --- 视图权限 -DROP TABLE IF EXISTS sys.tb_sys_view_permission CASCADE; -CREATE TABLE sys.tb_sys_view_permission ( - optsn VARCHAR(50) NOT NULL, -- 流水号 - view_id VARCHAR(50) NOT NULL, -- 视图ID - permission_id VARCHAR(50) NOT NULL, -- 权限ID - creator VARCHAR(50) DEFAULT NULL, -- 创建者 - dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径 - updater VARCHAR(50) DEFAULT NULL, -- 更新者 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间(由触发器维护) - delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 - PRIMARY KEY (view_id, permission_id), - UNIQUE (optsn) -); -COMMENT ON TABLE sys.tb_sys_view_permission IS '视图权限表'; -COMMENT ON COLUMN sys.tb_sys_view_permission.optsn IS '流水号'; -COMMENT ON COLUMN sys.tb_sys_view_permission.view_id IS '视图ID'; -COMMENT ON COLUMN sys.tb_sys_view_permission.permission_id IS '权限ID'; -COMMENT ON COLUMN sys.tb_sys_view_permission.creator IS '创建者'; -COMMENT ON COLUMN sys.tb_sys_view_permission.dept_path IS '部门全路径'; -COMMENT ON COLUMN sys.tb_sys_view_permission.updater IS '更新者'; -COMMENT ON COLUMN sys.tb_sys_view_permission.create_time IS '创建时间'; -COMMENT ON COLUMN sys.tb_sys_view_permission.update_time IS '更新时间'; -COMMENT ON COLUMN sys.tb_sys_view_permission.delete_time IS '删除时间'; -COMMENT ON COLUMN sys.tb_sys_view_permission.deleted IS '是否删除'; - --- 为所有表创建更新时间触发器 --- DROP TRIGGER IF EXISTS trg_tb_sys_dept_update_time ON sys.tb_sys_dept; --- CREATE TRIGGER trg_tb_sys_dept_update_time --- BEFORE UPDATE ON sys.tb_sys_dept --- FOR EACH ROW --- EXECUTE FUNCTION sys.set_update_time(); - --- DROP TRIGGER IF EXISTS trg_tb_sys_role_update_time ON sys.tb_sys_role; --- CREATE TRIGGER trg_tb_sys_role_update_time --- BEFORE UPDATE ON sys.tb_sys_role --- FOR EACH ROW --- EXECUTE FUNCTION sys.set_update_time(); - --- DROP TRIGGER IF EXISTS trg_tb_sys_dept_role_update_time ON sys.tb_sys_dept_role; --- CREATE TRIGGER trg_tb_sys_dept_role_update_time --- BEFORE UPDATE ON sys.tb_sys_dept_role --- FOR EACH ROW --- EXECUTE FUNCTION sys.set_update_time(); - --- DROP TRIGGER IF EXISTS trg_tb_sys_user_role_update_time ON sys.tb_sys_user_role; --- CREATE TRIGGER trg_tb_sys_user_role_update_time --- BEFORE UPDATE ON sys.tb_sys_user_role --- FOR EACH ROW --- EXECUTE FUNCTION sys.set_update_time(); - --- DROP TRIGGER IF EXISTS trg_tb_sys_view_update_time ON sys.tb_sys_view; --- CREATE TRIGGER trg_tb_sys_view_update_time --- BEFORE UPDATE ON sys.tb_sys_view --- FOR EACH ROW --- EXECUTE FUNCTION sys.set_update_time(); - --- DROP TRIGGER IF EXISTS trg_tb_sys_module_update_time ON sys.tb_sys_module; --- CREATE TRIGGER trg_tb_sys_module_update_time --- BEFORE UPDATE ON sys.tb_sys_module --- FOR EACH ROW --- EXECUTE FUNCTION sys.set_update_time(); - --- DROP TRIGGER IF EXISTS trg_tb_sys_permission_update_time ON sys.tb_sys_permission; --- CREATE TRIGGER trg_tb_sys_permission_update_time --- BEFORE UPDATE ON sys.tb_sys_permission --- FOR EACH ROW --- EXECUTE FUNCTION sys.set_update_time(); - --- DROP TRIGGER IF EXISTS trg_tb_sys_role_permission_update_time ON sys.tb_sys_role_permission; --- CREATE TRIGGER trg_tb_sys_role_permission_update_time --- BEFORE UPDATE ON sys.tb_sys_role_permission --- FOR EACH ROW --- EXECUTE FUNCTION sys.set_update_time(); - --- DROP TRIGGER IF EXISTS trg_tb_sys_view_permission_update_time ON sys.tb_sys_view_permission; --- CREATE TRIGGER trg_tb_sys_view_permission_update_time --- BEFORE UPDATE ON sys.tb_sys_view_permission --- FOR EACH ROW --- EXECUTE FUNCTION sys.set_update_time(); - --- ============================= --- 通用对象级权限(ACL) --- 支持对象类型:任意(如 article/file/course/...) --- 支持主体:user/dept/role --- 权限位:1=读(read),2=写(write),4=执行(exec),可相加 --- include_descendants:当主体为 dept/role 时,是否包含其子级(便于“所有子级可查看”场景) --- allow:true=允许;false=显式拒绝(拒绝优先生效) --- dept_path:用于数据范围隔离(与现有规则一致) --- ============================= - -DROP TABLE IF EXISTS sys.tb_sys_acl CASCADE; -CREATE TABLE sys.tb_sys_acl ( - optsn VARCHAR(50) NOT NULL, -- 流水号 - acl_id VARCHAR(50) NOT NULL, -- ACL主键 - object_type VARCHAR(50) NOT NULL, -- 对象类型:article/file/course/... - object_id VARCHAR(50) NOT NULL, -- 对象ID - principal_type VARCHAR(20) NOT NULL, -- 主体类型:user/dept/role - principal_id VARCHAR(50) NOT NULL, -- 主体ID - principal_dept_id VARCHAR(50) DEFAULT NULL, -- 当主体为role且限定到某部门时的部门ID(支持“某部门的某角色”) - permission SMALLINT NOT NULL, -- 权限位:1读 2写 4执行 - allow BOOLEAN NOT NULL DEFAULT true, -- 允许或显式拒绝 - include_descendants BOOLEAN NOT NULL DEFAULT false, -- 是否包含子级(对dept/role生效) - dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径(数据隔离) - creator VARCHAR(50) DEFAULT NULL, -- 创建者 - updater VARCHAR(50) DEFAULT NULL, -- 更新者 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间 - delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 - PRIMARY KEY (acl_id), - UNIQUE (object_type, object_id, principal_type, principal_id, principal_dept_id, deleted), - UNIQUE (optsn) -); - -COMMENT ON TABLE sys.tb_sys_acl IS '通用对象级权限表(ACL)'; -COMMENT ON COLUMN sys.tb_sys_acl.object_type IS '对象类型:article/file/course/...'; -COMMENT ON COLUMN sys.tb_sys_acl.object_id IS '对象ID'; -COMMENT ON COLUMN sys.tb_sys_acl.principal_type IS '主体类型:user/dept/role'; -COMMENT ON COLUMN sys.tb_sys_acl.principal_id IS '主体ID'; -COMMENT ON COLUMN sys.tb_sys_acl.principal_dept_id IS '当主体为角色时,可选的限定部门ID(某部门的某角色)'; -COMMENT ON COLUMN sys.tb_sys_acl.permission IS '权限位:1读 2写 4执行,可相加'; -COMMENT ON COLUMN sys.tb_sys_acl.allow IS '是否允许(false=显式拒绝)'; -COMMENT ON COLUMN sys.tb_sys_acl.include_descendants IS '是否包含子级(dept/role时启用)'; -COMMENT ON COLUMN sys.tb_sys_acl.dept_path IS '部门全路径(用于数据范围隔离)'; - -CREATE INDEX idx_sys_acl_object ON sys.tb_sys_acl USING btree (object_type, object_id) WHERE deleted = false; -CREATE INDEX idx_sys_acl_principal ON sys.tb_sys_acl USING btree (principal_type, principal_id) WHERE deleted = false; -CREATE INDEX idx_sys_acl_dept_path ON sys.tb_sys_acl USING btree (dept_path) WHERE deleted = false; --- 针对“某部门的某角色”的检索优化 -CREATE INDEX idx_sys_acl_role_scoped ON sys.tb_sys_acl USING btree (principal_id, principal_dept_id) - WHERE deleted = false AND principal_type = 'role'; - --- ============================= --- ACL 策略表:定义对象类型的层级可见/可编辑规则 --- 例如: --- - 同级与父级管理员可修改(edit_hierarchy_rule = 'parent_or_same_admin') --- - 子级全部可查看(view_hierarchy_rule = 'children_all') --- - 课程:下级只有指定部门/角色可查看(view_hierarchy_rule = 'children_specified') --- 说明:业务侧需结合“管理员”的判定(通常由角色判定)在应用层实现;本表做规则声明 --- ============================= - -DROP TABLE IF EXISTS sys.tb_sys_acl_policy CASCADE; -CREATE TABLE sys.tb_sys_acl_policy ( - optsn VARCHAR(50) NOT NULL, -- 流水号 - policy_id VARCHAR(50) NOT NULL, -- 策略ID - name VARCHAR(255) NOT NULL, -- 策略名称 - object_type VARCHAR(50) NOT NULL, -- 目标对象类型 - edit_hierarchy_rule VARCHAR(50) DEFAULT NULL, -- 编辑层级规则:parent_only/parent_or_same_admin/owner_only/none - view_hierarchy_rule VARCHAR(50) DEFAULT NULL, -- 查看层级规则:children_all/children_specified/none - default_permission SMALLINT DEFAULT 0, -- 默认权限位(无显式ACL时应用) - default_allow BOOLEAN DEFAULT true, -- 默认是否允许 - apply_to_children BOOLEAN DEFAULT true, -- 是否默认应用到子级 - creator VARCHAR(50) DEFAULT NULL, - updater VARCHAR(50) DEFAULT NULL, - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), - update_time TIMESTAMPTZ DEFAULT NULL, - delete_time TIMESTAMPTZ DEFAULT NULL, - deleted BOOLEAN NOT NULL DEFAULT false, - PRIMARY KEY (policy_id), - UNIQUE (object_type, deleted), - UNIQUE (optsn) -); - -COMMENT ON TABLE sys.tb_sys_acl_policy IS 'ACL对象类型策略表(层级可见/可编辑规则)'; -COMMENT ON COLUMN sys.tb_sys_acl_policy.object_type IS '对象类型:article/file/course/...'; -COMMENT ON COLUMN sys.tb_sys_acl_policy.edit_hierarchy_rule IS '编辑层级规则:parent_only/parent_or_same_admin/owner_only/none'; -COMMENT ON COLUMN sys.tb_sys_acl_policy.view_hierarchy_rule IS '查看层级规则:children_all/children_specified/none'; -COMMENT ON COLUMN sys.tb_sys_acl_policy.default_permission IS '默认权限位(无显式ACL时兜底)'; -COMMENT ON COLUMN sys.tb_sys_acl_policy.apply_to_children IS '默认是否应用到子级'; - -CREATE INDEX idx_sys_acl_policy_object ON sys.tb_sys_acl_policy USING btree (object_type) WHERE deleted = false; \ No newline at end of file diff --git a/docker/urbanLifeline/postgres/init/sql/createTableUser.sql b/docker/urbanLifeline/postgres/init/sql/createTableUser.sql deleted file mode 100644 index 22e0f225..00000000 --- a/docker/urbanLifeline/postgres/init/sql/createTableUser.sql +++ /dev/null @@ -1,124 +0,0 @@ - --- 创建 sys schema(如果不存在) -CREATE SCHEMA IF NOT EXISTS sys; - --- 用户表 -DROP TABLE IF EXISTS sys.tb_sys_user CASCADE; -CREATE TABLE sys.tb_sys_user ( - optsn VARCHAR(50) NOT NULL, -- 流水号 - user_id VARCHAR(50) NOT NULL, -- 用户ID - usercode VARCHAR(100) DEFAULT NULL, -- 用户code。sso同步数据获取 - password VARCHAR(128) NOT NULL, -- 密码(建议存储 bcrypt/argon2 哈希) - email VARCHAR(100), -- 电子邮件 - phone VARCHAR(500), -- 电话号码 - phone_hash VARCHAR(200), -- 电话hash - wechat_id VARCHAR(50), -- 微信ID - creator VARCHAR(50) DEFAULT NULL, -- 创建者 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间(使用带时区时间) - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间(由触发器维护) - delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除(使用 BOOLEAN) - status INTEGER NOT NULL DEFAULT 1, -- 状态 - remark VARCHAR(255) DEFAULT NULL, - PRIMARY KEY (user_id), - UNIQUE (optsn), - UNIQUE (email), - UNIQUE (phone), - UNIQUE (wechat_id), - UNIQUE (usercode) -); -CREATE INDEX idx_tb_sys_user_phone ON sys.tb_sys_user USING btree (phone); - --- 按 email 域名建立表达式索引(对域名小写处理以实现不区分大小写的域名查询) --- 使用 split_part(email, '@', 2) 提取 @ 之后的域名部分,再做 lower() 归一化 --- WHERE email IS NOT NULL 可以避免索引包含大量 NULL -CREATE INDEX idx_tb_sys_user_email_domain ON sys.tb_sys_user USING btree (lower(split_part(email, '@', 2))) - WHERE email IS NOT NULL; -CREATE INDEX idx_tb_sys_user_wechat_id ON sys.tb_sys_user USING btree (wechat_id); - --- 可选:保留列注释(如果你想把 MySQL 的 COMMENT 同步到 Postgres) -COMMENT ON TABLE sys.tb_sys_user IS '用户表'; -COMMENT ON COLUMN sys.tb_sys_user.optsn IS '流水号'; -COMMENT ON COLUMN sys.tb_sys_user.user_id IS '用户ID'; -COMMENT ON COLUMN sys.tb_sys_user.password IS '密码(建议存储 bcrypt/argon2 哈希)'; -COMMENT ON COLUMN sys.tb_sys_user.email IS '电子邮件'; -COMMENT ON COLUMN sys.tb_sys_user.phone IS '电话号码'; -COMMENT ON COLUMN sys.tb_sys_user.wechat_id IS '微信ID'; -COMMENT ON COLUMN sys.tb_sys_user.create_time IS '创建时间'; -COMMENT ON COLUMN sys.tb_sys_user.update_time IS '更新时间'; -COMMENT ON COLUMN sys.tb_sys_user.delete_time IS '删除时间'; -COMMENT ON COLUMN sys.tb_sys_user.deleted IS '是否删除'; -COMMENT ON COLUMN sys.tb_sys_user.status IS '状态'; - --- 用户信息表 -DROP TABLE IF EXISTS sys.tb_sys_user_info CASCADE; -CREATE TABLE sys.tb_sys_user_info ( - optsn VARCHAR(50) NOT NULL, -- 流水号 - user_id VARCHAR(50) NOT NULL, -- 用户ID - avatar VARCHAR(255), -- 头像 - gender INTEGER DEFAULT 0, -- 性别 - username VARCHAR(100) NOT NULL, -- 用户名 - level INTEGER DEFAULT 1, -- 等级 - id_card VARCHAR(50), -- 身份证号 - address VARCHAR(255), -- 地址 - creator VARCHAR(50) DEFAULT NULL, -- 创建者 - remark VARCHAR(500) DEFAULT NULL, -- 备注 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间(触发器维护) - delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 - PRIMARY KEY (user_id), - UNIQUE (optsn) -); -COMMENT ON TABLE sys.tb_sys_user_info IS '用户信息表'; -COMMENT ON COLUMN sys.tb_sys_user_info.optsn IS '流水号'; -COMMENT ON COLUMN sys.tb_sys_user_info.user_id IS '用户ID'; -COMMENT ON COLUMN sys.tb_sys_user_info.avatar IS '头像'; -COMMENT ON COLUMN sys.tb_sys_user_info.gender IS '性别'; -COMMENT ON COLUMN sys.tb_sys_user_info.username IS '用户名'; -COMMENT ON COLUMN sys.tb_sys_user_info.level IS '等级'; -COMMENT ON COLUMN sys.tb_sys_user_info.id_card IS '身份证号'; -COMMENT ON COLUMN sys.tb_sys_user_info.address IS '地址'; -COMMENT ON COLUMN sys.tb_sys_user_info.remark IS '备注'; -COMMENT ON COLUMN sys.tb_sys_user_info.create_time IS '创建时间'; -COMMENT ON COLUMN sys.tb_sys_user_info.update_time IS '更新时间'; -COMMENT ON COLUMN sys.tb_sys_user_info.delete_time IS '删除时间'; -COMMENT ON COLUMN sys.tb_sys_user_info.deleted IS '是否删除'; - --- 登录日志表 -DROP TABLE IF EXISTS sys.tb_sys_login_log CASCADE; -CREATE TABLE sys.tb_sys_login_log ( - optsn VARCHAR(50) NOT NULL, -- 流水号(作为主键) - user_id VARCHAR(50) NOT NULL, -- 用户ID - username VARCHAR(50) NOT NULL, -- 用户名 - ip_address VARCHAR(45), -- IP地址 - ip_source VARCHAR(100), -- IP来源 - browser VARCHAR(100), -- 浏览器 - os VARCHAR(100), -- 操作系统 - password VARCHAR(128), -- 密码(建议存储 bcrypt/argon2 哈希) - login_time TIMESTAMPTZ DEFAULT now(), -- 登录时间 - status INTEGER DEFAULT 1, -- 登录状态(0失败 1成功) - error_count INTEGER DEFAULT 0, -- 错误次数 - message VARCHAR(255), -- 登录消息 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - PRIMARY KEY (optsn) -); --- B-tree 索引(显式指定 USING btree,Postgres 默认即为 btree) -CREATE INDEX idx_tb_sys_login_log_user_id ON sys.tb_sys_login_log USING btree (user_id); -CREATE INDEX idx_tb_sys_login_log_login_time ON sys.tb_sys_login_log USING btree (login_time); - --- 可选:保留列注释 -COMMENT ON TABLE sys.tb_sys_login_log IS '登录日志表'; -COMMENT ON COLUMN sys.tb_sys_login_log.optsn IS '流水号'; -COMMENT ON COLUMN sys.tb_sys_login_log.user_id IS '用户ID'; -COMMENT ON COLUMN sys.tb_sys_login_log.username IS '用户名'; -COMMENT ON COLUMN sys.tb_sys_login_log.ip_address IS 'IP地址'; -COMMENT ON COLUMN sys.tb_sys_login_log.ip_source IS 'IP来源'; -COMMENT ON COLUMN sys.tb_sys_login_log.browser IS '浏览器'; -COMMENT ON COLUMN sys.tb_sys_login_log.os IS '操作系统'; -COMMENT ON COLUMN sys.tb_sys_login_log.password IS '密码(建议存储 bcrypt/argon2 哈希)'; -COMMENT ON COLUMN sys.tb_sys_login_log.login_time IS '登录时间'; -COMMENT ON COLUMN sys.tb_sys_login_log.status IS '登录状态(0失败 1成功)'; -COMMENT ON COLUMN sys.tb_sys_login_log.error_count IS '错误次数'; -COMMENT ON COLUMN sys.tb_sys_login_log.message IS '登录消息'; -COMMENT ON COLUMN sys.tb_sys_login_log.create_time IS '创建时间'; diff --git a/docker/urbanLifeline/postgres/init/sql/createTableWorkcase.sql b/docker/urbanLifeline/postgres/init/sql/createTableWorkcase.sql deleted file mode 100644 index cc2d3d57..00000000 --- a/docker/urbanLifeline/postgres/init/sql/createTableWorkcase.sql +++ /dev/null @@ -1,331 +0,0 @@ -CREATE SCHEMA IF NOT EXISTS workcase; - --- 系统外部人员(来客)管理 用于给系统外人员创建id -DROP TABLE IF EXISTS sys.tb_guest CASCADE; -CREATE TABLE sys.tb_guest( - optsn VARCHAR(50) NOT NULL, -- 流水号 - user_id VARCHAR(50) NOT NULL, -- 来客ID - name VARCHAR(50) NOT NULL, -- 姓名 - phone VARCHAR(50) DEFAULT NULL, -- 电话 - email VARCHAR(50) DEFAULT NULL, -- 邮箱 - wechat_id VARCHAR(50) DEFAULT NULL, -- 微信号 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 创建时间 - delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 - PRIMARY KEY (user_id), - UNIQUE (wechat_id), - UNIQUE (phone), - UNIQUE (email) -); - - --- ========================================== --- IM聊天室 + Jitsi Meet 视频会议 表设计 --- ========================================== - --- 1. 聊天室表(核心表) --- 一个工单对应一个聊天室,来客创建,客服人员可加入 -DROP TABLE IF EXISTS workcase.tb_chat_room CASCADE; -CREATE TABLE workcase.tb_chat_room( - optsn VARCHAR(50) NOT NULL, -- 流水号 - room_id VARCHAR(50) NOT NULL, -- 聊天室ID - workcase_id VARCHAR(50) DEFAULT NULL, -- 关联工单ID - room_name VARCHAR(200) NOT NULL, -- 聊天室名称(如:工单#12345的客服支持) - room_type VARCHAR(20) NOT NULL DEFAULT 'workcase', -- 聊天室类型:workcase-工单客服 - status VARCHAR(20) NOT NULL DEFAULT 'active', -- 状态:active-活跃 closed-已关闭 archived-已归档 - guest_id VARCHAR(50) NOT NULL, -- 来客ID(创建者) - guest_name VARCHAR(100) NOT NULL, -- 来客姓名 - ai_session_id VARCHAR(50) DEFAULT NULL, -- AI对话会话ID(从ai.tb_chat同步) - message_count INTEGER NOT NULL DEFAULT 0, -- 消息总数 - device_code VARCHAR(50) NOT NULL, -- 设备代码 - last_message_time TIMESTAMPTZ DEFAULT NULL, -- 最后消息时间 - last_message TEXT DEFAULT NULL, -- 最后一条消息内容(用于列表展示) - comment_level INTEGER DEFAULT 0, -- 服务评分(1-5) - closed_by VARCHAR(50) DEFAULT NULL, -- 关闭人 - closed_time TIMESTAMPTZ DEFAULT NULL, -- 关闭时间 - creator VARCHAR(50) NOT NULL, -- 创建人(系统自动创建) - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间 - delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 - PRIMARY KEY (room_id), - UNIQUE (workcase_id), - UNIQUE (optsn) -); -CREATE INDEX idx_chat_room_guest ON workcase.tb_chat_room(guest_id, status); -CREATE INDEX idx_chat_room_time ON workcase.tb_chat_room(last_message_time DESC); -COMMENT ON TABLE workcase.tb_chat_room IS 'IM聊天室表,一个工单对应一个聊天室'; - --- 2. 聊天室成员表 --- 记录聊天室内的所有成员(来客+客服人员) -DROP TABLE IF EXISTS workcase.tb_chat_room_member CASCADE; -CREATE TABLE workcase.tb_chat_room_member( - optsn VARCHAR(50) NOT NULL, -- 流水号 - member_id VARCHAR(50) NOT NULL, -- 成员记录ID - room_id VARCHAR(50) NOT NULL, -- 聊天室ID - user_id VARCHAR(50) NOT NULL, -- 用户ID(来客ID或员工ID) - user_type VARCHAR(20) NOT NULL, -- 用户类型:guest-来客 staff-客服 ai-AI助手 - user_name VARCHAR(100) NOT NULL, -- 用户名称 - status VARCHAR(20) NOT NULL DEFAULT 'active', -- 状态:active-活跃 left-已离开 removed-被移除 - unread_count INTEGER NOT NULL DEFAULT 0, -- 该成员的未读消息数 - last_read_time TIMESTAMPTZ DEFAULT NULL, -- 最后阅读时间 - last_read_msg_id VARCHAR(50) DEFAULT NULL, -- 最后阅读的消息ID - join_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 加入时间 - leave_time TIMESTAMPTZ DEFAULT NULL, -- 离开时间 - creator VARCHAR(50) NOT NULL, -- 创建人 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间 - PRIMARY KEY (member_id), - UNIQUE (room_id, user_id) -); -CREATE INDEX idx_chat_member_room ON workcase.tb_chat_room_member(room_id, status); -CREATE INDEX idx_chat_member_user ON workcase.tb_chat_room_member(user_id, user_type, status); -COMMENT ON TABLE workcase.tb_chat_room_member IS '聊天室成员表,记录来客和客服人员'; - --- 3. 聊天室消息表 --- 存储所有聊天消息(AI对话+人工客服对话) -DROP TABLE IF EXISTS workcase.tb_chat_room_message CASCADE; -CREATE TABLE workcase.tb_chat_room_message( - optsn VARCHAR(50) NOT NULL, -- 流水号 - message_id VARCHAR(50) NOT NULL, -- 消息ID - room_id VARCHAR(50) NOT NULL, -- 聊天室ID - sender_id VARCHAR(50) NOT NULL, -- 发送者ID - sender_type VARCHAR(20) NOT NULL, -- 发送者类型:guest-来客 agent-客服 ai-AI助手 system-系统消息 - sender_name VARCHAR(100) NOT NULL, -- 发送者名称 - message_type VARCHAR(20) NOT NULL DEFAULT 'text', -- 消息类型:text-文本 image-图片 file-文件 voice-语音 video-视频 system-系统消息 meeting-会议通知 - content TEXT NOT NULL, -- 消息内容 - files VARCHAR(50)[] DEFAULT '{}', -- 附件文件ID数组(图片、文件、语音、视频等) - content_extra JSONB DEFAULT NULL, -- 扩展内容(会议链接、引用信息等) - reply_to_msg_id VARCHAR(50) DEFAULT NULL, -- 回复的消息ID(引用回复) - is_ai_message BOOLEAN NOT NULL DEFAULT false, -- 是否AI消息(标记从ai.tb_chat同步的消息) - ai_message_id VARCHAR(50) DEFAULT NULL, -- AI原始消息ID(用于追溯) - status VARCHAR(20) NOT NULL DEFAULT 'sent', -- 状态:sending-发送中 sent-已发送 delivered-已送达 read-已读 failed-失败 recalled-已撤回 - read_count INTEGER NOT NULL DEFAULT 0, -- 已读人数 - send_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 发送时间 - creator VARCHAR(50) NOT NULL, -- 创建人 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间 - PRIMARY KEY (message_id) -); -CREATE INDEX idx_chat_msg_room ON workcase.tb_chat_room_message(room_id, send_time DESC); -CREATE INDEX idx_chat_msg_sender ON workcase.tb_chat_room_message(sender_id, sender_type); -CREATE INDEX idx_chat_msg_ai ON workcase.tb_chat_room_message(ai_message_id) WHERE ai_message_id IS NOT NULL; -COMMENT ON TABLE workcase.tb_chat_room_message IS 'IM聊天消息表,包含AI对话和人工客服消息'; - -DROP TABLE IF EXISTS workcase.tb_chat_room_summary CASCADE; -CREATE TABLE workcase.tb_chat_room_summary ( - optsn VARCHAR(50) NOT NULL, -- 流水号 - summary_id VARCHAR(50) NOT NULL, -- 总结ID - room_id VARCHAR(50) NOT NULL, -- 聊天室ID - question TEXT DEFAULT NULL, -- 核心问题 - needs VARCHAR(500)[] DEFAULT '{}', -- 核心诉求数组 - answer TEXT DEFAULT NULL, -- 解决方案 - workcloud VARCHAR(500)[] DEFAULT '{}', -- 词云关键词数组 - message_count INTEGER DEFAULT 0, -- 参与总结的消息数量 - summary_time TIMESTAMPTZ DEFAULT NULL, -- 总结生成时间 - creator VARCHAR(50) NOT NULL, -- 创建人 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间 - delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 - PRIMARY KEY (summary_id), - UNIQUE (optsn) -); -CREATE INDEX idx_chat_room_summary_room ON workcase.tb_chat_room_summary(room_id, summary_time DESC); -CREATE INDEX idx_chat_room_summary_time ON workcase.tb_chat_room_summary(summary_time DESC); -COMMENT ON TABLE workcase.tb_chat_room_summary IS '聊天室总结表,保存AI生成的聊天总结分析'; - - --- 4. 视频会议表(Jitsi Meet) --- 记录聊天室内创建的视频会议 -DROP TABLE IF EXISTS workcase.tb_video_meeting CASCADE; -CREATE TABLE workcase.tb_video_meeting( - optsn VARCHAR(50) NOT NULL, -- 流水号 - meeting_id VARCHAR(50) NOT NULL, -- 会议ID(也是Jitsi房间名) - room_id VARCHAR(50) NOT NULL, -- 关联聊天室ID - workcase_id VARCHAR(50) NOT NULL, -- 关联工单ID - meeting_name VARCHAR(200) NOT NULL, -- 会议名称 - meeting_password VARCHAR(50) DEFAULT NULL, -- 会议密码(可选) - description VARCHAR(500) DEFAULT NULL, -- 会议模式 - jwt_token TEXT DEFAULT NULL, -- JWT Token(用于身份验证) - jitsi_room_name VARCHAR(200) NOT NULL, -- Jitsi房间名(格式:workcase_{workcase_id}_{timestamp}) - jitsi_server_url VARCHAR(500) NOT NULL DEFAULT 'https://meet.jit.si', -- Jitsi服务器地址 - status VARCHAR(20) NOT NULL DEFAULT 'scheduled', -- 状态:scheduled-已安排 ongoing-进行中 ended-已结束 cancelled-已取消 - creator_type VARCHAR(20) NOT NULL, -- 创建者类型:guest-来客 agent-客服 - creator_name VARCHAR(100) NOT NULL, -- 创建者名称 - participant_count INTEGER NOT NULL DEFAULT 0, -- 参与人数 - max_participants INTEGER DEFAULT 10, -- 最大参与人数 - start_time TIMESTAMPTZ NOT NULL, -- 定义会议开始时间 - end_time TIMESTAMPTZ NOT NULL, -- 定义会议结束时间 - advance INTEGER DEFAULT 5, -- 提前入会时间(分钟) - actual_start_time TIMESTAMPTZ DEFAULT NULL, -- 真正会议开始时间 - actual_end_time TIMESTAMPTZ DEFAULT NULL, -- 真正会议结束时间 - duration_seconds INTEGER DEFAULT 0, -- 会议时长(秒) - iframe_url TEXT DEFAULT NULL, -- iframe嵌入URL(生成后存储) - config JSONB DEFAULT NULL, -- Jitsi配置项(自定义配置) - creator VARCHAR(50) NOT NULL, -- 创建人 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间 - delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 - PRIMARY KEY (meeting_id), - UNIQUE (jitsi_room_name) -); -CREATE INDEX idx_meeting_room ON workcase.tb_video_meeting(room_id, status); -CREATE INDEX idx_meeting_workcase ON workcase.tb_video_meeting(workcase_id, status); -CREATE INDEX idx_meeting_time ON workcase.tb_video_meeting(create_time DESC); -COMMENT ON TABLE workcase.tb_video_meeting IS 'Jitsi Meet视频会议表'; - --- 5. 会议参与记录表(可选,用于审计和统计) -DROP TABLE IF EXISTS workcase.tb_meeting_participant CASCADE; -CREATE TABLE workcase.tb_meeting_participant( - optsn VARCHAR(50) NOT NULL, -- 流水号 - participant_id VARCHAR(50) NOT NULL, -- 参与记录ID - meeting_id VARCHAR(50) NOT NULL, -- 会议ID - user_id VARCHAR(50) NOT NULL, -- 用户ID - user_type VARCHAR(20) NOT NULL, -- 用户类型:guest-来客 agent-客服 - user_name VARCHAR(100) NOT NULL, -- 用户名称 - join_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 加入时间 - leave_time TIMESTAMPTZ DEFAULT NULL, -- 离开时间 - duration_seconds INTEGER DEFAULT 0, -- 参与时长(秒) - is_moderator BOOLEAN NOT NULL DEFAULT false, -- 是否主持人 - join_method VARCHAR(20) DEFAULT 'web', -- 加入方式:web-网页 mobile-移动端 desktop-桌面端 - device_info VARCHAR(200) DEFAULT NULL, -- 设备信息 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间 - PRIMARY KEY (participant_id) -); -CREATE INDEX idx_meeting_participant ON workcase.tb_meeting_participant(meeting_id, join_time); -CREATE INDEX idx_participant_user ON workcase.tb_meeting_participant(user_id, user_type); -COMMENT ON TABLE workcase.tb_meeting_participant IS '视频会议参与记录表'; - --- 7. 会议转录记录表(音频转文字) -DROP TABLE IF EXISTS workcase.tb_meeting_transcription CASCADE; -CREATE TABLE workcase.tb_meeting_transcription( - optsn VARCHAR(50) NOT NULL, -- 流水号 - transcription_id VARCHAR(50) NOT NULL, -- 转录记录ID - meeting_id VARCHAR(50) NOT NULL, -- 会议ID - speaker_id VARCHAR(50) NOT NULL, -- 说话人ID - speaker_name VARCHAR(100) NOT NULL, -- 说话人名称 - speaker_type VARCHAR(20) NOT NULL, -- 说话人类型:guest-来客 agent-客服 - content TEXT NOT NULL, -- 转录文本内容 - content_raw TEXT DEFAULT NULL, -- 原始转录结果(含标点前) - language VARCHAR(10) DEFAULT 'zh-CN', -- 语言:zh-CN en-US等 - confidence NUMERIC(3,2) DEFAULT NULL, -- 识别置信度(0-1) - speech_start_time TIMESTAMPTZ NOT NULL, -- 语音开始时间 - speech_end_time TIMESTAMPTZ NOT NULL, -- 语音结束时间 - duration_ms INTEGER NOT NULL, -- 语音时长(毫秒) - audio_url VARCHAR(500) DEFAULT NULL, -- 音频片段URL(可选) - segment_index INTEGER NOT NULL DEFAULT 0, -- 片段序号(按时间排序) - is_final BOOLEAN NOT NULL DEFAULT true, -- 是否最终结果(实时转录会有中间结果) - service_provider VARCHAR(50) DEFAULT 'xunfei', -- 服务提供商:xunfei aliyun tencent google - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - PRIMARY KEY (transcription_id) -); -CREATE INDEX idx_transcription_meeting ON workcase.tb_meeting_transcription(meeting_id, segment_index); -COMMENT ON TABLE workcase.tb_meeting_transcription IS '会议转录记录表,用于保存视频会议的语音转文字内容'; - --- 8. 员工配置表 --- 用于控制哪些人员可以在聊天室里接待来客 -DROP TABLE IF EXISTS workcase.tb_customer_service CASCADE; -CREATE TABLE workcase.tb_customer_service( - optsn VARCHAR(50) NOT NULL, -- 流水号 - user_id VARCHAR(50) NOT NULL, -- 员工ID(关联sys用户ID) - username VARCHAR(100) NOT NULL, -- 员工姓名 - user_code VARCHAR(50) DEFAULT NULL, -- 员工工号 - status VARCHAR(20) NOT NULL DEFAULT 'offline', -- 状态:online-在线 busy-忙碌 offline-离线 - skill_tags VARCHAR(50)[] DEFAULT '{}', -- 技能标签(如:电力、燃气、水务) - max_concurrent INTEGER NOT NULL DEFAULT 5, -- 最大并发接待数 - current_workload INTEGER NOT NULL DEFAULT 0, -- 当前工作量 - total_served INTEGER NOT NULL DEFAULT 0, -- 累计服务次数 - avg_response_time INTEGER DEFAULT NULL, -- 平均响应时间(秒) - satisfaction_score NUMERIC(3,2) DEFAULT NULL, -- 满意度评分(0-5) - creator VARCHAR(50) NOT NULL, -- 创建人 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间 - delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 - PRIMARY KEY (user_id) -); -CREATE INDEX idx_customer_service_status ON workcase.tb_customer_service(status, current_workload); -COMMENT ON TABLE workcase.tb_customer_service IS '员工配置表,用于控制哪些人员可以在聊天室接待来客'; - --- 工单表 -DROP TABLE IF EXISTS workcase.tb_workcase CASCADE; -CREATE TABLE workcase.tb_workcase( - optsn VARCHAR(50) NOT NULL, -- 流水号 - workcase_id VARCHAR(50) NOT NULL, -- 工单ID - room_id VARCHAR(50) NOT NULL, -- 聊天室ID - user_id VARCHAR(50) NOT NULL, -- 来客ID - username VARCHAR(200) NOT NULL, -- 来客姓名 - phone VARCHAR(20) NOT NULL, -- 来客电话 - type VARCHAR(50) NOT NULL, -- 故障类型 - device VARCHAR(50) DEFAULT NULL, -- 设备名称 - device_code VARCHAR(50) DEFAULT NULL, -- 设备代码 - device_name_plate VARCHAR(50) DEFAULT NULL, -- 设备名称牌 - device_name_plate_img VARCHAR(50) NOT NULL, -- 设备名称牌图片 - address VARCHAR(1000) DEFAULT NULL, -- 现场地址 - description VARCHAR(1000) DEFAULT NULL, -- 故障描述 - imgs VARCHAR(50)[] DEFAULT '{}', -- 工单图片id - emergency VARCHAR(50) NOT NULL DEFAULT 'normal', -- 紧急程度 normal-普通 emergency-紧急 - status VARCHAR(50) NOT NULL DEFAULT 'pending', -- 状态 pending-待处理 processing-处理中 done-已完成 - processor VARCHAR(50) DEFAULT NULL, -- 处理人 - creator VARCHAR(50) NOT NULL, -- 创建人 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间 - delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 - deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 - PRIMARY KEY (workcase_id), - UNIQUE (room_id), - UNIQUE (optsn) -); - --- 工单处理过程表(包含工单流转) -DROP TABLE IF EXISTS workcase.tb_workcase_process CASCADE; -CREATE TABLE workcase.tb_workcase_process( - optsn VARCHAR(50) NOT NULL, -- 流水号 - workcase_id VARCHAR(50) NOT NULL, -- 工单ID - process_id VARCHAR(50) NOT NULL, -- 过程id - action VARCHAR(50) NOT NULL, -- 动作 info:记录,assign:指派,redeploy:转派,repeal:撤销,finish:完成 - message VARCHAR(200) DEFAULT NULL, -- 消息 - files VARCHAR(50)[] DEFAULT '{}', -- 携带文件 - processor VARCHAR(50) DEFAULT NULL, -- 处理人(指派、转派专属) - remark VARCHAR(500) DEFAULT NULL, -- 备注 - creator VARCHAR(50) NOT NULL, -- 过程发起人 - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - PRIMARY KEY (process_id) -); - --- 工单设备涉及的文件表 -DROP TABLE IF EXISTS workcase.tb_workcase_device CASCADE; -CREATE TABLE workcase.tb_workcase_device( - optsn VARCHAR(50) NOT NULL, -- 流水号 - workcase_id VARCHAR(50) NOT NULL, -- 工单ID - device VARCHAR(50) NOT NULL, -- 设备名称 - device_code VARCHAR(50) DEFAULT NULL, -- 设备代码 - file_id VARCHAR(50) NOT NULL, -- 文件id - file_name VARCHAR(50) NOT NULL, -- 文件名 - file_root_id VARCHAR(50) DEFAULT NULL, -- 文件根id - PRIMARY KEY(workcase_id, file_id) -); - --- 来客对话、工单过程中生成的词云表 -DROP TABLE IF EXISTS workcase.tb_word_cloud CASCADE; -CREATE TABLE workcase.tb_word_cloud( - optsn VARCHAR(50) NOT NULL, -- 流水号 - word_id VARCHAR(50) NOT NULL, -- 词条ID - word VARCHAR(100) NOT NULL, -- 词语 - frequency INTEGER NOT NULL DEFAULT 1, -- 词频 - source_type VARCHAR(20) NOT NULL, -- 来源类型 chat-聊天 workcase-工单 global-全局 - source_id VARCHAR(50) DEFAULT NULL, -- 来源ID(room_id/workcase_id,NULL表示全局统计) - category VARCHAR(50) DEFAULT NULL, -- 分类(如:fault-故障类型 device-设备 emotion-情绪词等) - stat_date DATE NOT NULL, -- 统计日期(按天聚合) - create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 - update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间 - PRIMARY KEY (word_id), - UNIQUE (word, source_type, source_id, stat_date, category) -- 同一天同一来源同一分类的词唯一 -); -CREATE INDEX idx_word_cloud_source ON workcase.tb_word_cloud(source_type, source_id, stat_date); -CREATE INDEX idx_word_cloud_category ON workcase.tb_word_cloud(category, stat_date); -COMMENT ON TABLE workcase.tb_word_cloud IS '词云统计表,记录聊天和工单中的关键词'; \ No newline at end of file diff --git a/docker/urbanLifeline/postgres/init/sql/initAll.sql b/docker/urbanLifeline/postgres/init/sql/initAll.sql deleted file mode 100644 index 2e8b5549..00000000 --- a/docker/urbanLifeline/postgres/init/sql/initAll.sql +++ /dev/null @@ -1,52 +0,0 @@ --- ============================= --- 城市生命线AI数智化平台 - 数据库初始化脚本 --- 按顺序执行各模块建表SQL及数据初始化 --- ============================= - --- ============================= --- 第一阶段:创建数据库和表结构 --- ============================= -\i createDB.sql - --- 1. 系统基础模块 -\i createTablePermission.sql -\i createTableUser.sql - --- 2. 文件管理模块 -\i createTableFile.sql - --- 3. 消息通知模块 -\i createTableMessage.sql - --- 4. 日志模块 -\i createTableLog.sql - --- 5. 配置管理模块 -\i createTableConfig.sql - --- 6. AI模块 智能体+知识库 -\i createTableAI.sql - --- 7. 招投标业务模块 -\i createTableBidding.sql - --- 8. 智能客服业务模块 -\i createTableWorkcase.sql - --- ============================= --- 第二阶段:初始化基础数据 --- ============================= - --- 1. 初始化权限相关基础数据(部门、角色、权限、视图、模块) -\i initDataPermission.sql - --- 2. 初始化用户数据(管理员账户) -\i initDataUser.sql - --- 3. 初始化消息渠道配置 -\i initDataMessage.sql - --- 4. 初始化系统配置 -\i initDataConfig.sql - --- 注意:文件、日志、知识库、招投标、客服等业务表无需初始化数据 \ No newline at end of file diff --git a/docker/urbanLifeline/postgres/init/sql/initDataConfig.sql b/docker/urbanLifeline/postgres/init/sql/initDataConfig.sql deleted file mode 100644 index b011712b..00000000 --- a/docker/urbanLifeline/postgres/init/sql/initDataConfig.sql +++ /dev/null @@ -1,108 +0,0 @@ --- 初始化系统常用配置(与 config.tb_sys_config 对应) --- 仅插入常用示例,可按需调整 value/remark - -INSERT INTO config.tb_sys_config ( - optsn, config_id, key, name, value, config_type, render_type, description, - re, options, "group", module_id, order_num, status, remark, - creator, dept_path, updater, create_time, update_time, delete_time, deleted -) VALUES - --- 站点与品牌 -('CFG-0001', 'cfg_site_name', 'site.name', '站点名称', 'urban-lifeline 平台', 'String', 'input', '站点名称', NULL, NULL, 'site', 'mod_system', 10, 0, '展示在标题/登录/页脚', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0002', 'cfg_site_logo', 'site.logo', '站点Logo', '/static/logo.png', 'String', 'input', '站点Logo地址', NULL, NULL, 'site', 'mod_system', 20, 0, '相对或绝对URL', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0003', 'cfg_site_icp', 'site.icp', 'ICP备案号', '', 'String', 'input', 'ICP备案号', NULL, NULL, 'site', 'mod_system', 30, 0, '页脚展示', 'system', NULL, NULL, now(), NULL, NULL, false), - --- 国际化与时区 -('CFG-0101', 'cfg_i18n_locale', 'i18n.defaultLocale', '默认语言', 'zh-CN', 'String', 'select', '默认语言', NULL, '["zh-CN", "en-US"]'::json, 'i18n', 'mod_system', 10, 0, '如 zh-CN/en-US', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0102', 'cfg_timezone', 'system.timezone', '系统时区', 'Asia/Shanghai', 'String', 'input', '系统默认时区', NULL, NULL, 'i18n', 'mod_system', 20, 0, 'IANA时区名', 'system', NULL, NULL, now(), NULL, NULL, false), - --- 安全与认证 -('CFG-0201', 'cfg_pwd_policy', 'security.passwordPolicy','密码策略', '{"minLen":8,"upper":1,"lower":1,"digit":1,"special":0}', 'String', 'textarea', '密码策略', NULL, NULL, 'security', 'mod_system', 10, 0, 'JSON结构', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0202', 'cfg_jwt_exp', 'security.jwt.expireSeconds','JWT过期时间', '86400', 'INTEGER', 'input', 'JWT过期秒数', NULL, NULL, 'security', 'mod_system', 20, 0, '默认24小时', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0203', 'cfg_session_timeout', 'security.session.timeoutMinutes','会话超时', '30', 'INTEGER', 'input', '会话超时(分钟)', NULL, NULL, 'security', 'mod_system', 30, 0, '空闲登出', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0204', 'cfg_signup_enabled', 'security.signup.enabled','开放注册', 'false', 'BOOLEAN', 'switch', '是否开放注册', NULL, NULL, 'security', 'mod_system', 40, 0, '生产建议关闭', 'system', NULL, NULL, now(), NULL, NULL, false), - --- 存储与上传 -('CFG-0301', 'cfg_upload_max', 'upload.maxSizeMB', '最大上传大小', '50', 'INTEGER', 'input', '单文件最大上传(MB)', NULL, NULL, 'storage', 'mod_file', 10, 0, '前后端需一致校验', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0302', 'cfg_storage_backend', 'storage.backend', '存储后端', 'minio', 'String', 'select', '存储后端类型', NULL, '["local", "minio", "s3"]'::json, 'storage', 'mod_file', 20, 0, '本地/MinIO/S3等,当前默认MinIO', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0303', 'cfg_storage_base', 'storage.basePath', '存储路径', '/data/urban-lifeline', 'String', 'input', '本地存储基路径', NULL, NULL, 'storage', 'mod_file', 30, 0, '当 backend=local', 'system', NULL, NULL, now(), NULL, NULL, false), - --- MinIO 对象存储配置 -('CFG-0310', 'cfg_minio_endpoint', 'minio.endpoint', 'MinIO服务端点', 'http://localhost:9000', 'String', 'input', 'MinIO服务器地址', NULL, NULL, 'storage', 'mod_file', 40, 0, 'MinIO API服务地址,如 http://localhost:9000', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0311', 'cfg_minio_accesskey', 'minio.accessKey', 'MinIO访问密钥', 'minioadmin', 'String', 'input', 'MinIO AccessKey', NULL, NULL, 'storage', 'mod_file', 50, 0, 'MinIO认证的AccessKey', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0312', 'cfg_minio_secretkey', 'minio.secretKey', 'MinIO私钥', 'minioadmin123', 'String', 'password', 'MinIO SecretKey', NULL, NULL, 'storage', 'mod_file', 60, 0, 'MinIO认证的SecretKey', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0313', 'cfg_minio_bucket', 'minio.bucketName', 'MinIO存储桶', 'urban-lifeline', 'String', 'input', 'MinIO默认存储桶名称', NULL, NULL, 'storage', 'mod_file', 70, 0, '用于存储文件的默认bucket', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0314', 'cfg_minio_publicurl', 'minio.publicUrl', 'MinIO公网地址', 'http://localhost:9000', 'String', 'input', 'MinIO公网访问地址', NULL, NULL, 'storage', 'mod_file', 80, 0, '用于生成文件访问URL,可与endpoint不同', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0315', 'cfg_minio_ssl', 'minio.ssl.enabled', '启用SSL', 'false', 'BOOLEAN', 'switch', '是否启用SSL连接', NULL, NULL, 'storage', 'mod_file', 90, 0, 'HTTPS连接MinIO服务', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0316', 'cfg_minio_region', 'minio.region', 'MinIO区域', 'us-east-1', 'String', 'input', 'MinIO存储区域', NULL, NULL, 'storage', 'mod_file', 100, 0, 'AWS S3兼容的区域配置', 'system', NULL, NULL, now(), NULL, NULL, false), - --- 文件管理配置 -('CFG-0320', 'cfg_file_allowed_exts','file.allowedExtensions', '允许的文件扩展名', 'jpg,jpeg,png,gif,pdf,doc,docx,xls,xlsx,ppt,pptx,txt,zip,rar', 'String', 'textarea', '允许上传的文件扩展名', NULL, NULL, 'storage', 'mod_file', 110, 0, '逗号分隔,如 jpg,png,pdf', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0321', 'cfg_file_forbidden_exts','file.forbiddenExtensions','禁止的文件扩展名', 'exe,bat,sh,php,jsp,asp', 'String', 'textarea', '禁止上传的文件扩展名', NULL, NULL, 'storage', 'mod_file', 120, 0, '逗号分隔,安全考虑', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0322', 'cfg_file_cleanup_days', 'file.tempCleanupDays', '临时文件清理天数', '7', 'INTEGER', 'input', '临时文件自动清理天数', NULL, NULL, 'storage', 'mod_file', 130, 0, '超过天数的临时文件将被清理', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0323', 'cfg_file_duplicate_check','file.duplicateCheck.enabled','启用文件去重', 'true', 'BOOLEAN', 'switch', '是否启用MD5去重检查', NULL, NULL, 'storage', 'mod_file', 140, 0, '基于MD5值检查重复文件', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0324', 'cfg_file_virus_scan', 'file.virusScan.enabled', '启用病毒扫描', 'false', 'BOOLEAN', 'switch', '是否启用文件病毒扫描', NULL, NULL, 'storage', 'mod_file', 150, 0, '需要集成防病毒引擎', 'system', NULL, NULL, now(), NULL, NULL, false), - --- 通知(邮件/SMS) --- 邮件配置 -('CFG-0401', 'cfg_mail_host', 'email.host', 'SMTP服务器地址', 'smtp.qq.com', 'String', 'input', 'SMTP服务器地址', NULL, NULL, 'notify', 'mod_message', 10, 1, '邮件发送服务器地址', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0402', 'cfg_mail_port', 'email.port', 'SMTP端口', '587', 'INTEGER', 'input', 'SMTP服务器端口', NULL, NULL, 'notify', 'mod_message', 20, 1, '常用:25/465/587', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0403', 'cfg_mail_username', 'email.username', '发件人邮箱', '3223905473@qq.com', 'String', 'input', '发件人邮箱地址', NULL, NULL, 'notify', 'mod_message', 30, 1, '用于发送邮件的邮箱账号', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0404', 'cfg_mail_password', 'email.password', '邮箱授权码', 'xmdmxvtjumxocicc', 'String', 'password', '邮箱授权码/密码', NULL, NULL, 'notify', 'mod_message', 40, 1, '邮箱的授权码或密码', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0405', 'cfg_mail_fromname', 'email.fromName', '发件人名称', 'urban-lifeline平台', 'String', 'input', '发件人显示名称', NULL, NULL, 'notify', 'mod_message', 50, 1, '邮件中显示的发件人名称', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0406', 'cfg_mail_ssl', 'email.ssl.enable', '启用SSL', 'true', 'BOOLEAN', 'switch', '是否启用SSL', NULL, NULL, 'notify', 'mod_message', 60, 1, 'SSL加密连接', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0407', 'cfg_mail_timeout', 'email.timeout', '连接超时时间', '30000', 'INTEGER', 'input', '连接超时时间(毫秒)', NULL, NULL, 'notify', 'mod_message', 70, 1, 'SMTP连接超时时间(5000-60000)', 'system', NULL, NULL, now(), NULL, NULL, false), - --- 短信配置 -('CFG-0411', 'cfg_sms_provider', 'sms.provider', '短信服务商', 'aliyun', 'String', 'select', '短信服务提供商', NULL, '["aliyun", "tencent"]'::json, 'notify', 'mod_message', 80, 1, '短信服务提供商类型', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0412', 'cfg_sms_keyid', 'sms.accessKeyId', 'AccessKey ID', 'LTAI5t68do3qVXx5Rufugt3X', 'String', 'input', '短信服务AccessKey ID', NULL, NULL, 'notify', 'mod_message', 90, 1, '云服务商的AccessKey ID', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0413', 'cfg_sms_secret', 'sms.accessKeySecret', 'AccessKey Secret', '2vD9ToIff49Vph4JQXsn0Cy8nXQfzA', 'String', 'password', '短信服务AccessKey Secret', NULL, NULL, 'notify', 'mod_message', 100, 1, '云服务商的AccessKey Secret', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0414', 'cfg_sms_sign', 'sms.signName', '短信签名', 'urban-lifeline', 'String', 'input', '短信签名', NULL, NULL, 'notify', 'mod_message', 110, 1, '发送短信使用的签名', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0415', 'cfg_sms_tpl_login', 'sms.templateCode.login', '登录验证码模板', 'SMS_491985030', 'String', 'input', '登录验证码模板编码', NULL, NULL, 'notify', 'mod_message', 120, 1, '登录验证码短信模板', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0416', 'cfg_sms_tpl_register', 'sms.templateCode.register','注册验证码模板', 'SMS_491985030', 'String', 'input', '注册验证码模板编码', NULL, NULL, 'notify', 'mod_message', 130, 1, '注册验证码短信模板', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0417', 'cfg_sms_timeout', 'sms.timeout', '请求超时时间', '30000', 'INTEGER', 'input', '请求超时时间(毫秒)', NULL, NULL, 'notify', 'mod_message', 140, 1, 'API请求超时时间(5000-60000)', 'system', NULL, NULL, now(), NULL, NULL, false), - --- Dify AI 配置 --- Dify 基础配置 -('CFG-0450', 'cfg_dify_api_base', 'dify.apiBaseUrl', 'Dify API地址', 'http://localhost:8000/v1', 'String', 'input', 'Dify API基础地址', NULL, NULL, 'dify', 'mod_agent', 10, 1, 'Dify服务的API基础地址,如 http://localhost/dify/api', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0452', 'cfg_dify_knowledge_key','dify.knowledgeApiKey', '知识库API密钥', 'dataset-LepcmgOE95n2S7yweNhQzNoB', 'String', 'password', '知识库API密钥', NULL, NULL, 'dify', 'mod_agent', 30, 1, '用于访问Dify知识库的API密钥', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0453', 'cfg_dify_timeout', 'dify.timeout', '请求超时时间', '60', 'INTEGER', 'input', '请求超时时间(秒)', NULL, NULL, 'dify', 'mod_agent', 40, 1, 'API请求的超时时间(10-600秒)', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0454', 'cfg_dify_conn_timeout','dify.connectTimeout', '连接超时时间', '10', 'INTEGER', 'input', '连接超时时间(秒)', NULL, NULL, 'dify', 'mod_agent', 50, 1, 'API连接的超时时间(5-60秒)', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0455', 'cfg_dify_read_timeout','dify.readTimeout', '读取超时时间', '60', 'INTEGER', 'input', '读取超时时间(秒)', NULL, NULL, 'dify', 'mod_agent', 60, 1, 'API读取响应的超时时间(10-600秒)', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0456', 'cfg_dify_stream_timeout','dify.streamTimeout', '流式响应超时时间', '300', 'INTEGER', 'input', '流式响应超时时间(秒)', NULL, NULL, 'dify', 'mod_agent', 70, 1, '流式API响应的超时时间(30-1800秒)', 'system', NULL, NULL, now(), NULL, NULL, false), - --- Dify 上传配置 -('CFG-0460', 'cfg_dify_upload_types','dify.upload.allowedTypes','允许的文件类型', 'pdf,txt,docx,doc,md,html,htm,xlsx,xls,csv', 'String', 'textarea', '上传文件允许的类型', NULL, NULL, 'dify', 'mod_agent', 80, 1, '支持上传的文件类型列表,逗号分隔', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0461', 'cfg_dify_upload_max', 'dify.upload.maxSize', '最大文件大小', '50', 'INTEGER', 'input', '最大文件大小(MB)', NULL, NULL, 'dify', 'mod_agent', 90, 1, '单个文件上传的最大大小限制(1-500MB)', 'system', NULL, NULL, now(), NULL, NULL, false), - --- Dify 知识库配置 -('CFG-0470', 'cfg_dify_index_tech', 'dify.knowledge.indexing.tchnique','默认索引方式', 'high_quality', 'String', 'select', '默认索引方式', NULL, '["high_quality", "economy"]'::json, 'dify', 'mod_agent', 100, 1, '知识库文档的默认索引方式:high_quality(高质量)或 economy(经济)', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0471', 'cfg_dify_embed_model', 'dify.knowledge.embedding.model','默认Embedding模型', 'Qwen/Qwen3-Embedding-8B', 'String', 'input', '默认Embedding模型', NULL, NULL, 'dify', 'mod_agent', 110, 1, '知识库使用的默认Embedding模型名称', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0472', 'cfg_dify_embed_provider', 'dify.knowledge.embedding.model.provider','Embedding模型供应商', 'langgenius/siliconflow/siliconflow', 'String', 'input', 'Embedding模型供应商', NULL, NULL, 'dify', 'mod_agent', 120, 1, 'Embedding模型的供应商标识', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0473', 'cfg_dify_rerank_enable', 'dify.knowledge.reranking.enable','启用Rerank', 'true', 'BOOLEAN', 'switch', '是否启用Rerank重排序', NULL, NULL, 'dify', 'mod_agent', 130, 1, '启用后会对检索结果进行重排序提升相关性', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0474', 'cfg_dify_rerank_model', 'dify.knowledge.rerank.model','Rerank模型', 'Qwen/Qwen3-Reranker-8B', 'String', 'input', 'Rerank重排序模型', NULL, NULL, 'dify', 'mod_agent', 140, 1, '知识库使用的Rerank模型名称', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0475', 'cfg_dify_rerank_provider', 'dify.knowledge.rerank.model.provider','Rerank模型供应商', 'langgenius/siliconflow/siliconflow', 'String', 'input', 'Rerank模型供应商', NULL, NULL, 'dify', 'mod_agent', 150, 1, 'Rerank模型的供应商标识', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0476', 'cfg_dify_retrieval_topk', 'dify.knowledge.retrieval.top.k','检索TopK', '5', 'INTEGER', 'input', '检索返回的最大文档数', NULL, NULL, 'dify', 'mod_agent', 160, 1, '知识库检索时返回的最相关文档数量(1-20)', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0477', 'cfg_dify_retrieval_threshold', 'dify.knowledge.retrieval.score.threshold','相似度阈值', '0.5', 'DOUBLE', 'input', '检索相似度阈值', NULL, NULL, 'dify', 'mod_agent', 170, 1, '低于此阈值的文档将被过滤(0.0-1.0)', 'system', NULL, NULL, now(), NULL, NULL, false), --- Dify workcase相关智能体配置 -('CFG-0478', 'cfg_dify_workcase_chat', 'dify.workcase.agent.chat','泰豪小电AgentApiKey', 'app-CDKy0wYkPnl6dA6G7eu113Vw', 'String', 'input', '泰豪小电AgentApiKey', NULL, NULL, 'dify', 'mod_agent', 160, 1, '泰豪小电AgentApiKey', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0479', 'cfg_dify_workcase_summary', 'dify.workcase.workflow.summary','工单总结AgentApikey', 'app-YMlj2B0m21KpYZPv3YdObi7r', 'String', 'input', '工单总结AgentApikey', NULL, NULL, 'dify', 'mod_agent', 170, 1, '工单总结AgentApikey', 'system', NULL, NULL, now(), NULL, NULL, false), - - --- 日志与审计 -('CFG-0501', 'cfg_log_level', 'log.level', '日志级别', 'INFO', 'String', 'select', '系统日志级别', NULL, '["DEBUG", "INFO", "WARN", "ERROR"]'::json, 'log', 'mod_system', 10, 0, 'DEBUG/INFO/WARN/ERROR', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0502', 'cfg_audit_retention', 'audit.retentionDays', '审计日志保留', '90', 'INTEGER', 'input', '审计日志保留天数', NULL, NULL, 'log', 'mod_system', 20, 0, '合规按需调整', 'system', NULL, NULL, now(), NULL, NULL, false), - --- 平台特性 -('CFG-0601', 'cfg_maintenance', 'platform.maintenance', '维护模式', 'false', 'BOOLEAN', 'switch', '维护模式开关', NULL, NULL, 'platform', 'mod_system', 10, 0, 'true时仅管理员可用', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0602', 'cfg_feature_acl_policy','feature.acl.policy', 'ACL策略', 'enabled', 'String', 'select', 'ACL策略开关', NULL, '["enabled", "disabled"]'::json, 'platform', 'mod_system', 20, 0, 'enabled/disabled', 'system', NULL, NULL, now(), NULL, NULL, false), - --- 微信客服配置 -('CFG-0701', 'cfg_wechat_kefu_corpid', 'wechat.kefu.corpId', '企业ID', '', 'String', 'input', '企业微信的企业ID', NULL, NULL, 'wechat', 'mod_workcase', 10, 1, '企业微信管理后台获取', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0702', 'cfg_wechat_kefu_secret', 'wechat.kefu.secret', '客服应用Secret', '', 'String', 'password', '微信客服应用的Secret', NULL, NULL, 'wechat', 'mod_workcase', 20, 1, '微信客服应用的密钥', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0703', 'cfg_wechat_kefu_token', 'wechat.kefu.token', '回调Token', '', 'String', 'input', '消息回调的Token', NULL, NULL, 'wechat', 'mod_workcase', 30, 1, '用于验证消息回调的Token', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0704', 'cfg_wechat_kefu_aeskey', 'wechat.kefu.encodingAesKey','回调加密密钥', '', 'String', 'password', '消息回调的EncodingAESKey', NULL, NULL, 'wechat', 'mod_workcase', 40, 1, '用于解密消息回调的AES密钥', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0705', 'cfg_wechat_kefu_openkfid', 'wechat.kefu.openKfid', '客服账号ID', '', 'String', 'input', '微信客服账号的open_kfid', NULL, NULL, 'wechat', 'mod_workcase', 50, 1, '用于发送消息的客服账号ID', 'system', NULL, NULL, now(), NULL, NULL, false), -('CFG-0706', 'cfg_wechat_kefu_welcome', 'wechat.kefu.welcomeTemplate','欢迎语模板', '您好,您的工单已创建。\n工单编号:{workcaseId}\n问题类型:{type}\n设备:{device}\n我们将尽快为您处理。', 'String', 'textarea', '客服欢迎语消息模板', NULL, NULL, 'wechat', 'mod_workcase', 60, 1, '支持变量:{workcaseId},{type},{device},{username}', 'system', NULL, NULL, now(), NULL, NULL, false); - - diff --git a/docker/urbanLifeline/postgres/init/sql/initDataMessage.sql b/docker/urbanLifeline/postgres/init/sql/initDataMessage.sql deleted file mode 100644 index cd86f138..00000000 --- a/docker/urbanLifeline/postgres/init/sql/initDataMessage.sql +++ /dev/null @@ -1,118 +0,0 @@ --- 初始化消息渠道配置(与 message schema 对应) --- 配置常用消息发送渠道 - --- ============================= --- 1. 初始化消息渠道 --- ============================= -INSERT INTO message.tb_message_channel ( - optsn, channel_id, channel_code, channel_name, channel_desc, - config, status, priority, creator, create_time, deleted -) VALUES --- 应用内消息(默认渠道,优先级最高) -('CH-0001', 'channel_app', 'app', '应用内消息', '系统内部消息通知', - '{"enabled": true, "realtime": true}'::json, - 'enabled', 100, 'system', now(), false), - --- 短信通知 -('CH-0002', 'channel_sms', 'sms', '短信通知', '短信发送服务', - '{ - "enabled": false, - "provider": "", - "apiKey": "", - "apiSecret": "", - "signName": "", - "templateCode": "" - }'::json, - 'disabled', 80, 'system', now(), false), - --- 邮件通知 -('CH-0003', 'channel_email', 'email', '邮件通知', '电子邮件发送服务', - '{ - "enabled": false, - "smtpHost": "", - "smtpPort": 465, - "username": "", - "password": "", - "fromAddress": "", - "useSsl": true - }'::json, - 'disabled', 70, 'system', now(), false), - --- 微信公众号 -('CH-0004', 'channel_wechat_mp', 'wechat_official_account', '微信公众号', '微信公众号模板消息', - '{ - "enabled": false, - "appId": "", - "appSecret": "", - "templateId": "" - }'::json, - 'disabled', 60, 'system', now(), false), - --- 微信小程序 -('CH-0005', 'channel_wechat_mini', 'wechat_applet', '微信小程序', '微信小程序订阅消息', - '{ - "enabled": false, - "appId": "", - "appSecret": "", - "templateId": "" - }'::json, - 'disabled', 50, 'system', now(), false), - --- 钉钉通知 -('CH-0006', 'channel_dingtalk', 'dingtalk', '钉钉通知', '钉钉工作通知', - '{ - "enabled": false, - "agentId": "", - "appKey": "", - "appSecret": "", - "robotToken": "" - }'::json, - 'disabled', 40, 'system', now(), false); - --- ============================= --- 2. 初始化消息模板(系统通用模板) --- ============================= -INSERT INTO message.tb_message_template ( - optsn, template_id, template_code, template_name, template_type, - title_template, content_template, variables, service, - creator, create_time, deleted -) VALUES --- 用户注册欢迎消息 -('TPL-0001', 'tpl_user_welcome', 'USER_WELCOME', '用户注册欢迎', 'system', - '欢迎加入 {{platformName}}', - '您好,{{username}}!\n\n欢迎加入 {{platformName}} 平台。您的账号已成功创建。\n\n账号信息:\n- 用户名:{{usercode}}\n- 邮箱:{{email}}\n- 注册时间:{{registerTime}}\n\n祝您使用愉快!', - '["platformName", "username", "usercode", "email", "registerTime"]'::jsonb, - 'system', - 'system', now(), false), - --- 密码重置通知 -('TPL-0002', 'tpl_password_reset', 'PASSWORD_RESET', '密码重置通知', 'system', - '密码重置验证码', - '您好,{{username}}!\n\n您正在重置密码,验证码为:{{code}}\n\n验证码有效期为 {{expireMinutes}} 分钟,请尽快完成操作。\n\n如非本人操作,请忽略此消息。', - '["username", "code", "expireMinutes"]'::jsonb, - 'system', - 'system', now(), false), - --- 系统维护通知 -('TPL-0003', 'tpl_system_maintenance', 'SYSTEM_MAINTENANCE', '系统维护通知', 'system', - '系统维护通知', - '尊敬的用户:\n\n系统将于 {{startTime}} 至 {{endTime}} 进行维护升级。\n\n维护内容:{{content}}\n\n维护期间系统将暂停服务,请您提前做好相关安排。\n\n给您带来不便,敬请谅解!', - '["startTime", "endTime", "content"]'::jsonb, - 'system', - 'system', now(), false), - --- 工单创建通知 -('TPL-0101', 'tpl_ticket_created', 'TICKET_CREATED', '工单创建通知', 'business', - '新工单通知', - '您好,{{username}}!\n\n您有一条新的工单需要处理:\n\n工单编号:{{ticketNo}}\n工单标题:{{title}}\n优先级:{{priority}}\n创建时间:{{createTime}}\n\n请及时登录系统查看处理。', - '["username", "ticketNo", "title", "priority", "createTime"]'::jsonb, - 'customer_service', - 'system', now(), false), - --- 招标公告发布通知 -('TPL-0201', 'tpl_bidding_published', 'BIDDING_PUBLISHED', '招标公告发布', 'business', - '招标公告发布通知', - '您好!\n\n新的招标项目已发布:\n\n项目名称:{{projectName}}\n项目编号:{{projectNo}}\n发布时间:{{publishTime}}\n截止时间:{{deadlineTime}}\n\n详情请登录系统查看。', - '["projectName", "projectNo", "publishTime", "deadlineTime"]'::jsonb, - 'bidding', - 'system', now(), false); diff --git a/docker/urbanLifeline/postgres/init/sql/initDataPermission.sql b/docker/urbanLifeline/postgres/init/sql/initDataPermission.sql deleted file mode 100644 index ed27224e..00000000 --- a/docker/urbanLifeline/postgres/init/sql/initDataPermission.sql +++ /dev/null @@ -1,471 +0,0 @@ --- 初始化权限相关基础数据(与 sys schema 对应) --- 包含:部门、角色、模块、权限、视图及其关联关系 - --- ============================= --- 1. 初始化根部门 --- ============================= -INSERT INTO sys.tb_sys_dept ( - optsn, dept_id, name, parent_id, dept_path, description, - creator, create_time, deleted -) VALUES -('DEPT-0001', 'dept_root', '根部门', NULL, '/dept_root/', '系统根部门', - 'system', now(), false); - --- ============================= --- 2. 初始化全局角色 --- ============================= -INSERT INTO sys.tb_sys_role ( - optsn, role_id, name, description, scope, owner_dept_id, - status, creator, dept_path, create_time, deleted -) VALUES --- 超级管理员(全局) -('ROLE-0001', 'role_super_admin', '超级管理员', '拥有系统所有权限的最高管理员', - 'global', NULL, true, 'system', NULL, now(), false), - --- 系统管理员(全局) -('ROLE-0002', 'role_system_admin', '系统管理员', '负责系统配置和用户管理', - 'global', NULL, true, 'system', NULL, now(), false), - --- 普通用户(全局) -('ROLE-0003', 'role_user', '普通用户', '系统普通用户角色', - 'global', NULL, true, 'system', NULL, now(), false), - --- 访客(全局)- 注册用户默认角色,具备客服聊天和工单的所有接口权限 -('ROLE-0004', 'role_guest', '访客', '访客角色,具备客服聊天和工单的所有接口权限', - 'global', NULL, true, 'system', NULL, now(), false); - --- ============================= --- 3. 初始化系统模块 --- ============================= -INSERT INTO sys.tb_sys_module ( - optsn, module_id, name, description, creator, dept_path, create_time, deleted -) VALUES -('MODULE-0001', 'module_system', '系统管理', '用户、角色、权限、部门管理', 'system', NULL, now(), false), -('MODULE-0002', 'module_file', '文件管理', '文件上传、下载、关联管理', 'system', NULL, now(), false), -('MODULE-0003', 'module_message', '消息通知', '消息发送、接收、模板管理', 'system', NULL, now(), false), -('MODULE-0004', 'module_config', '配置管理', '系统配置参数管理', 'system', NULL, now(), false), -('MODULE-0008', 'module_agent', '智能体', '智能体管理', 'system', NULL, now(), false), -('MODULE-0005', 'module_knowledge', '知识库', '知识文档管理', 'system', NULL, now(), false), -('MODULE-0006', 'module_bidding', '招投标', '招投标业务管理', 'system', NULL, now(), false), -('MODULE-0007', 'module_workcase', '智能客服', '客服工单管理', 'system', NULL, now(), false), -('MODULE-0009', 'module_meeting', '视频会议', 'Jitsi Meet视频会议管理', 'system', NULL, now(), false); - --- ============================= --- 4. 初始化系统权限 --- ============================= -INSERT INTO sys.tb_sys_permission ( - optsn, permission_id, name, code, description, module_id, status, creator, dept_path, create_time, deleted -) VALUES --- 系统管理模块权限 -('PERM-0001', 'perm_user_view', '用户查看', 'system:user:view', '查看用户列表和详情', 'module_system', true, 'system', NULL, now(), false), -('PERM-0002', 'perm_user_create', '用户创建', 'system:user:create', '创建新用户', 'module_system', true, 'system', NULL, now(), false), -('PERM-0003', 'perm_user_edit', '用户编辑', 'system:user:edit', '编辑用户信息', 'module_system', true, 'system', NULL, now(), false), -('PERM-0004', 'perm_user_delete', '用户删除', 'system:user:delete', '删除用户', 'module_system', true, 'system', NULL, now(), false), -('PERM-0011', 'perm_role_view', '角色查看', 'system:role:view', '查看角色列表和详情', 'module_system', true, 'system', NULL, now(), false), -('PERM-0012', 'perm_role_create', '角色创建', 'system:role:create', '创建新角色', 'module_system', true, 'system', NULL, now(), false), -('PERM-0013', 'perm_role_edit', '角色编辑', 'system:role:edit', '编辑角色信息', 'module_system', true, 'system', NULL, now(), false), -('PERM-0014', 'perm_role_delete', '角色删除', 'system:role:delete', '删除角色', 'module_system', true, 'system', NULL, now(), false), -('PERM-0021', 'perm_dept_view', '部门查看', 'system:dept:view', '查看部门列表和详情', 'module_system', true, 'system', NULL, now(), false), -('PERM-0022', 'perm_dept_create', '部门创建', 'system:dept:create', '创建新部门', 'module_system', true, 'system', NULL, now(), false), -('PERM-0023', 'perm_dept_edit', '部门编辑', 'system:dept:edit', '编辑部门信息', 'module_system', true, 'system', NULL, now(), false), -('PERM-0024', 'perm_dept_delete', '部门删除', 'system:dept:delete', '删除部门', 'module_system', true, 'system', NULL, now(), false), -('PERM-0031', 'perm_permission_view', '权限查看', 'system:permission:view', '查看权限列表', 'module_system', true, 'system', NULL, now(), false), -('PERM-0032', 'perm_permission_manage', '权限管理', 'system:permission:manage', '管理权限配置', 'module_system', true, 'system', NULL, now(), false), - --- 系统管理模块导出权限 -('PERM-0041', 'perm_user_export', '用户导出', 'system:user:export', '导出用户数据', 'module_system', true, 'system', NULL, now(), false), -('PERM-0042', 'perm_role_export', '角色导出', 'system:role:export', '导出角色数据', 'module_system', true, 'system', NULL, now(), false), -('PERM-0043', 'perm_dept_export', '部门导出', 'system:dept:export', '导出部门数据', 'module_system', true, 'system', NULL, now(), false), - --- 文件管理模块权限 -('PERM-0101', 'perm_file_view', '文件查看', 'file:file:view', '查看文件列表', 'module_file', true, 'system', NULL, now(), false), -('PERM-0102', 'perm_file_upload', '文件上传', 'file:file:upload', '上传文件', 'module_file', true, 'system', NULL, now(), false), -('PERM-0103', 'perm_file_download', '文件下载', 'file:file:download', '下载文件', 'module_file', true, 'system', NULL, now(), false), -('PERM-0104', 'perm_file_delete', '文件删除', 'file:file:delete', '删除文件', 'module_file', true, 'system', NULL, now(), false), -('PERM-0105', 'perm_file_export', '文件导出', 'file:file:export', '导出文件列表数据', 'module_file', true, 'system', NULL, now(), false), --- 智能体权限 -('PERM-0120', 'perm_ai_create', '智能体创建', 'ai:agent:create', '创建智能体', 'module_agent', true, 'system', NULL, now(), false), -('PERM-0121', 'perm_ai_update', '智能体更新', 'ai:agent:update', '更新智能体', 'module_agent', true, 'system', NULL, now(), false), -('PERM-0122', 'perm_ai_delete', '智能体删除', 'ai:agent:delete', '删除智能体', 'module_agent', true, 'system', NULL, now(), false), -('PERM-0123', 'perm_ai_view', '智能体查询', 'ai:agent:view', '查询智能体', 'module_agent', true, 'system', NULL, now(), false), --- 智能体对话权限 没有,因为所有人都可以 --- Dify代理功能权限(知识库分段管理) -('PERM-0130', 'perm_dify_segment_view', '分段查看', 'ai:dify:segment:view', '查看文档分段列表', 'module_knowledge', true, 'system', NULL, now(), false), -('PERM-0131', 'perm_dify_segment_create', '分段创建', 'ai:dify:segment:create', '创建文档分段', 'module_knowledge', true, 'system', NULL, now(), false), -('PERM-0132', 'perm_dify_segment_update', '分段更新', 'ai:dify:segment:update', '更新文档分段', 'module_knowledge', true, 'system', NULL, now(), false), -('PERM-0133', 'perm_dify_segment_delete', '分段删除', 'ai:dify:segment:delete', '删除文档分段', 'module_knowledge', true, 'system', NULL, now(), false), -('PERM-0134', 'perm_dify_document_status', '文档状态管理', 'ai:dify:document:status', '更新文档状态(启用/禁用/归档)', 'module_knowledge', true, 'system', NULL, now(), false), --- 知识库管理权限 -('PERM-0140', 'perm_knowledge_create', '知识库创建', 'ai:knowledge:create', '创建知识库', 'module_knowledge', true, 'system', NULL, now(), false), -('PERM-0141', 'perm_knowledge_update', '知识库更新', 'ai:knowledge:update', '更新知识库', 'module_knowledge', true, 'system', NULL, now(), false), -('PERM-0142', 'perm_knowledge_delete', '知识库删除', 'ai:knowledge:delete', '删除知识库', 'module_knowledge', true, 'system', NULL, now(), false), -('PERM-0143', 'perm_knowledge_view', '知识库查看', 'ai:knowledge:view', '查看知识库列表和详情', 'module_knowledge', true, 'system', NULL, now(), false), --- 知识库文件管理权限 -('PERM-0150', 'perm_knowledge_file_upload', '知识库文件上传', 'ai:knowledge:file:upload', '上传文件到知识库', 'module_knowledge', true, 'system', NULL, now(), false), -('PERM-0151', 'perm_knowledge_file_update', '知识库文件更新', 'ai:knowledge:file:update', '更新知识库文件信息', 'module_knowledge', true, 'system', NULL, now(), false), -('PERM-0152', 'perm_knowledge_file_delete', '知识库文件删除', 'ai:knowledge:file:delete', '删除知识库文件', 'module_knowledge', true, 'system', NULL, now(), false), -('PERM-0153', 'perm_knowledge_file_view', '知识库文件查看', 'ai:knowledge:file:view', '查看知识库文件历史', 'module_knowledge', true, 'system', NULL, now(), false), - --- 消息通知模块权限 -('PERM-0201', 'perm_message_view', '消息查看', 'message:message:view', '查看消息列表', 'module_message', true, 'system', NULL, now(), false), -('PERM-0202', 'perm_message_send', '消息发送', 'message:message:send', '发送消息通知', 'module_message', true, 'system', NULL, now(), false), -('PERM-0203', 'perm_message_manage', '消息管理', 'message:message:manage', '管理消息模板和配置', 'module_message', true, 'system', NULL, now(), false), -('PERM-0204', 'perm_message_export', '消息导出', 'message:message:export', '导出消息数据', 'module_message', true, 'system', NULL, now(), false), --- 配置管理模块权限 -('PERM-0301', 'perm_config_view', '配置查看', 'config:config:view', '查看系统配置', 'module_config', true, 'system', NULL, now(), false), -('PERM-0302', 'perm_config_edit', '配置编辑', 'config:config:edit', '修改系统配置', 'module_config', true, 'system', NULL, now(), false), -('PERM-0303', 'perm_config_export', '配置导出', 'config:config:export', '导出系统配置数据', 'module_config', true, 'system', NULL, now(), false), --- 日志模块权限 -('PERM-0401', 'perm_log_view', '日志查看', 'log:log:view', '查看系统日志', 'module_system', true, 'system', NULL, now(), false), -('PERM-0402', 'perm_log_export', '日志导出', 'log:log:export', '导出系统日志数据', 'module_system', true, 'system', NULL, now(), false), --- 平台基础菜单访问权限(所有登录用户都有) -('PERM-0501', 'perm_platform_home', '工作台访问', 'platform:home:view', '访问平台工作台', 'module_system', true, 'system', NULL, now(), false), -('PERM-0502', 'perm_platform_chat', 'AI助手访问', 'platform:chat:view', '访问AI助手', 'module_system', true, 'system', NULL, now(), false), -('PERM-0503', 'perm_platform_bidding', '招标助手访问', 'platform:bidding:view', '访问招标助手(iframe)', 'module_bidding', true, 'system', NULL, now(), false), -('PERM-0504', 'perm_platform_workcase', '泰豪小电访问', 'platform:workcase:view', '访问泰豪小电客服(iframe)', 'module_workcase', true, 'system', NULL, now(), false), -('PERM-0505', 'perm_platform_workflow', '智能体编排访问', 'platform:workflow:view', '访问智能体编排(iframe)', 'module_system', true, 'system', NULL, now(), false), --- Platform 管理后台功能权限 -('PERM-0601', 'perm_platform_admin', '平台管理后台', 'platform:admin:view', '访问平台管理后台', 'module_system', true, 'system', NULL, now(), false), -('PERM-0602', 'perm_platform_admin_overview', '平台数据概览', 'platform:admin:overview', '访问平台数据概览', 'module_system', true, 'system', NULL, now(), false), -('PERM-0603', 'perm_platform_admin_user', '平台用户管理', 'platform:admin:user', '访问平台用户管理', 'module_system', true, 'system', NULL, now(), false), -('PERM-0604', 'perm_platform_admin_knowledge', '平台知识库', 'platform:admin:knowledge', '访问平台知识库', 'module_knowledge', true, 'system', NULL, now(), false), -('PERM-0605', 'perm_platform_admin_config', '平台系统配置', 'platform:admin:config', '访问平台系统配置', 'module_config', true, 'system', NULL, now(), false), --- Bidding 管理后台功能权限 -('PERM-0611', 'perm_bidding_admin', '招标管理后台', 'bidding:admin:view', '访问招标管理后台', 'module_bidding', true, 'system', NULL, now(), false), --- Workcase 管理后台功能权限 -('PERM-0621', 'perm_workcase_admin', '客服管理后台', 'workcase:admin:view', '访问客服管理后台', 'module_workcase', true, 'system', NULL, now(), false), -('PERM-0622', 'perm_workcase_overview', '数据概览', 'workcase:overview:view', '访问泰豪小电数据概览', 'module_workcase', true, 'system', NULL, now(), false), -('PERM-0623', 'perm_workcase_knowledge', '知识库管理', 'workcase:knowledge:view', '访问知识库管理', 'module_workcase', true, 'system', NULL, now(), false), -('PERM-0624', 'perm_workcase_tickets', '工单管理', 'workcase:tickets:view', '访问工单管理', 'module_workcase', true, 'system', NULL, now(), false), -('PERM-0625', 'perm_workcase_conversation', '对话数据', 'workcase:conversation:view', '访问对话数据管理', 'module_workcase', true, 'system', NULL, now(), false), -('PERM-0626', 'perm_workcase_agent', '智能体管理', 'workcase:agent:view', '访问智能体管理', 'module_workcase', true, 'system', NULL, now(), false), -('PERM-0627', 'perm_workcase_log', '日志管理', 'workcase:log:view', '访问日志管理', 'module_workcase', true, 'system', NULL, now(), false), -('PERM-0628', 'perm_workcase_chatroom', '聊天室控制台', 'workcase:chatroom:view', '访问聊天室控制台', 'module_workcase', true, 'system', NULL, now(), false), - --- Workcase 接口权限(访客用户可用) --- AI对话接口权限 -('PERM-0701', 'perm_workcase_chat_create', 'AI对话创建', 'workcase:chat:create', '创建对话', 'module_workcase', true, 'system', NULL, now(), false), -('PERM-0702', 'perm_workcase_chat_update', 'AI对话更新', 'workcase:chat:update', '更新对话', 'module_workcase', true, 'system', NULL, now(), false), -('PERM-0703', 'perm_workcase_chat_list', 'AI对话查询', 'workcase:chat:list', '查询对话列表', 'module_workcase', true, 'system', NULL, now(), false), -('PERM-0704', 'perm_workcase_chat_message', 'AI对话消息', 'workcase:chat:message', '获取对话消息列表', 'module_workcase', true, 'system', NULL, now(), false), -('PERM-0705', 'perm_workcase_chat_stream', 'AI流式对话', 'workcase:chat:stream', '流式对话接口', 'module_workcase', true, 'system', NULL, now(), false), -('PERM-0706', 'perm_workcase_chat_analyze', 'AI对话分析', 'workcase:chat:analyze', '分析对话生成工单信息', 'module_workcase', true, 'system', NULL, now(), false), --- 聊天室接口权限 -('PERM-0711', 'perm_workcase_room_create', '聊天室创建', 'workcase:room:create', '创建聊天室', 'module_workcase', true, 'system', NULL, now(), false), -('PERM-0712', 'perm_workcase_room_update', '聊天室更新', 'workcase:room:update', '更新聊天室', 'module_workcase', true, 'system', NULL, now(), false), -('PERM-0713', 'perm_workcase_room_close', '聊天室关闭', 'workcase:room:close', '关闭聊天室', 'module_workcase', true, 'system', NULL, now(), false), -('PERM-0714', 'perm_workcase_room_view', '聊天室查看', 'workcase:room:view', '查看聊天室', 'module_workcase', true, 'system', NULL, now(), false), -('PERM-0715', 'perm_workcase_room_member', '聊天室成员', 'workcase:room:member', '管理聊天室成员', 'module_workcase', true, 'system', NULL, now(), false), -('PERM-0716', 'perm_workcase_room_message', '聊天室消息', 'workcase:room:message', '发送和查看聊天室消息', 'module_workcase', true, 'system', NULL, now(), false), --- 工单接口权限 -('PERM-0721', 'perm_workcase_ticket_create', '工单创建', 'workcase:ticket:create', '创建工单', 'module_workcase', true, 'system', NULL, now(), false), -('PERM-0722', 'perm_workcase_ticket_update', '工单更新', 'workcase:ticket:update', '更新工单', 'module_workcase', true, 'system', NULL, now(), false), -('PERM-0723', 'perm_workcase_ticket_view', '工单查看', 'workcase:ticket:view', '查看工单详情和列表', 'module_workcase', true, 'system', NULL, now(), false), -('PERM-0724', 'perm_workcase_ticket_process', '工单处理', 'workcase:ticket:process', '工单处理过程管理', 'module_workcase', true, 'system', NULL, now(), false), -('PERM-0725', 'perm_workcase_ticket_device', '工单设备', 'workcase:ticket:device', '工单设备管理', 'module_workcase', true, 'system', NULL, now(), false), - --- 视频会议模块权限(Jitsi Meet) -('PERM-0730', 'perm_meeting_create', '创建会议', 'meeting:create:own', '创建视频会议', 'module_meeting', true, 'system', NULL, now(), false), -('PERM-0731', 'perm_meeting_join', '加入会议', 'meeting:join:any', '加入视频会议', 'module_meeting', true, 'system', NULL, now(), false), -('PERM-0732', 'perm_meeting_url', '获取会议链接', 'meeting:url:any', '获取会议加入链接', 'module_meeting', true, 'system', NULL, now(), false), -('PERM-0733', 'perm_meeting_token', '获取会议令牌', 'meeting:token:any', '获取会议参与令牌', 'module_meeting', true, 'system', NULL, now(), false); - --- ============================= --- 5. 初始化视图(菜单) --- ============================= -INSERT INTO sys.tb_sys_view ( - optsn, view_id, name, parent_id, url, component, icon, type, - view_type, iframe_url, service, layout, order_num, description, - creator, create_time, deleted -) VALUES --- ========================= --- 平台应用菜单 (platform) --- ========================= --- 一级菜单 (图标使用 lucide-vue-next) -('VIEW-P002', 'view_platform_chat', '泰豪AI助手', NULL, '/aichat', 'public/Chat/AIChatView.vue', 'MessageCircle', 1, - 'route', NULL, 'platform', 'SidebarLayout', 10, '泰豪AI助手-直接智能体对话', 'system', now(), false), -('VIEW-P001', 'view_platform_home', '全部应用', NULL, '/agents', 'public/Agents/AgentPlatformView.vue', 'LayoutGrid', 1, - 'route', NULL, 'platform', 'SidebarLayout', 20, '全部智能体', 'system', now(), false), --- iframe 嵌入菜单 --- url: platform中的路由路径(用于sidebar定位和路由跳转) --- iframe_url: iframe的src地址(实际内容的URL) -('VIEW-P005', 'view_platform_workflow', '智能体编排', NULL, '/app/workflow', NULL, 'Workflow', 1, - 'iframe', 'http://localhost:3000', 'platform', 'SidebarLayout', 30, 'Dify智能体编排(iframe)', 'system', now(), false), -('VIEW-P003', 'view_platform_bidding', '招标助手', NULL, '/app/bidding', NULL, 'FileText', 1, - 'iframe', '/bidding/', 'platform', 'SidebarLayout', 40, '招标应用(iframe)', 'system', now(), false), -('VIEW-P004', 'view_platform_workcase', '泰豪小电', NULL, '/app/workcase', NULL, 'Headphones', 1, - 'iframe', '/workcase/', 'platform', 'SidebarLayout', 50, '客服应用(iframe)', 'system', now(), false), - - --- 平台管理后台内部视图(SubSidebarLayout布局,在platform服务内) -('VIEW-P201', 'view_platform_admin_overview', '数据概览', NULL, '/admin/overview', 'admin/overview/OverviewView.vue', 'BarChart3', 1, - 'route', NULL, 'platform', 'SubSidebarLayout', 210, '平台数据概览', 'system', now(), false), -('VIEW-P202', 'view_platform_admin_user', '用户管理', NULL, '/admin/userManagement', 'admin/userManagement/UserManagementView.vue', 'Users', 1, - 'route', NULL, 'platform', 'SubSidebarLayout', 220, '平台用户管理', 'system', now(), false), -('VIEW-P203', 'view_platform_admin_knowledge', '知识库', NULL, '/admin/knowledge', 'admin/knowledge/KnowledgeView.vue', 'FileText', 1, - 'route', NULL, 'platform', 'SubSidebarLayout', 230, '平台知识库管理', 'system', now(), false), -('VIEW-P204', 'view_platform_admin_config', '系统配置', NULL, '/admin/config', 'admin/config/ConfigView.vue', 'Settings', 1, - 'route', NULL, 'platform', 'SubSidebarLayout', 240, '平台系统配置', 'system', now(), false), - --- -- 系统管理目录 --- ('VIEW-P100', 'view_system', '系统管理', NULL, '/system', NULL, 'Settings', 0, --- 'route', NULL, 'platform', 'SidebarLayout', 100, '系统管理目录', 'system', now(), false), --- --- -- 系统管理子菜单 --- ('VIEW-P101', 'view_user', '用户管理', 'view_system', '/system/user', 'system/UserList', 'Users', 1, --- 'route', NULL, 'platform', 'SidebarLayout', 10, '用户管理页面', 'system', now(), false), --- --- ('VIEW-P102', 'view_role', '角色管理', 'view_system', '/system/role', 'system/RoleList', 'Shield', 1, --- 'route', NULL, 'platform', 'SidebarLayout', 20, '角色管理页面', 'system', now(), false), --- --- ('VIEW-P103', 'view_dept', '部门管理', 'view_system', '/system/dept', 'system/DeptList', 'Building', 1, --- 'route', NULL, 'platform', 'SidebarLayout', 30, '部门管理页面', 'system', now(), false), --- --- ('VIEW-P104', 'view_permission', '权限管理', 'view_system', '/system/permission', 'system/PermissionList', 'Lock', 1, --- 'route', NULL, 'platform', 'SidebarLayout', 40, '权限管理页面', 'system', now(), false), --- --- ('VIEW-P105', 'view_config', '配置管理', 'view_system', '/system/config', 'system/ConfigList', 'Settings', 1, --- 'route', NULL, 'platform', 'SidebarLayout', 50, '配置管理页面', 'system', now(), false), --- --- ('VIEW-P106', 'view_file', '文件管理', 'view_system', '/system/file', 'system/FileList', 'FileText', 1, --- 'route', NULL, 'platform', 'SidebarLayout', 60, '文件管理页面', 'system', now(), false), --- --- ('VIEW-P107', 'view_message', '消息管理', 'view_system', '/system/message', 'system/MessageList', 'Mail', 1, --- 'route', NULL, 'platform', 'SidebarLayout', 70, '消息管理页面', 'system', now(), false), --- --- -- ========================= --- -- 招标应用菜单 (bidding) --- -- ========================= --- ('VIEW-B001', 'view_bidding_home', '首页', NULL, '/home', 'Home', 'House', 1, --- 'route', NULL, 'bidding', 'DefaultLayout', 10, '招标应用首页', 'system', now(), false), --- --- ('VIEW-B002', 'view_bidding_list', '招标列表', NULL, '/bidding/list', 'bidding/List', 'List', 1, --- 'route', NULL, 'bidding', 'DefaultLayout', 20, '招标项目列表', 'system', now(), false), --- --- ('VIEW-B003', 'view_bidding_detail', '招标详情', NULL, '/bidding/detail', 'bidding/Detail', 'Document', 1, --- 'route', NULL, 'bidding', 'DefaultLayout', 30, '招标项目详情', 'system', now(), false), --- --- ('VIEW-B004', 'view_bidding_offer', '投标管理', NULL, '/bidding/offer', 'bidding/Offer', 'Edit', 1, --- 'route', NULL, 'bidding', 'DefaultLayout', 40, '投标管理页面', 'system', now(), false), - --- ========================= --- 客服应用菜单 (workcase) - 图标使用 lucide-vue-next --- ========================= --- 用户端视图 -('VIEW-W001', 'view_workcase_home', '智能客服', NULL, '/aichat', 'public/AIChat/AIChatView.vue', 'Home', 1, - 'route', NULL, 'workcase', 'SubSidebarLayout', 10, '智能客服首页', 'system', now(), false), - -('VIEW-W002', 'view_workcase_chatroom', '聊天室控制台', NULL, '/chatroom', 'public/ChatRoom/ChatRoomView.vue', 'MessageSquare', 1, - 'route', NULL, 'workcase', 'SubSidebarLayout', 20, '实时聊天室控制台', 'system', now(), false), - --- 管理端视图(使用 SubSidebarLayout 布局) -('VIEW-W101', 'view_workcase_admin_overview', '数据概览', NULL, '/admin/overview', 'admin/overview/OverviewView.vue', 'BarChart3', 1, - 'route', NULL, 'workcase', 'SubSidebarLayout', 110, '泰豪小电数据概览', 'system', now(), false), - -('VIEW-W102', 'view_workcase_admin_knowledge', '知识库管理', NULL, '/admin/knowledge', 'admin/knowledge/KnowLedgeView.vue', 'FileText', 1, - 'route', NULL, 'workcase', 'SubSidebarLayout', 120, '知识库文档管理', 'system', now(), false), - -('VIEW-W103', 'view_workcase_admin_tickets', '工单管理', NULL, '/admin/workcase', 'admin/workcase/WorkcaseView.vue', 'Ticket', 1, - 'route', NULL, 'workcase', 'SubSidebarLayout', 130, '客服工单管理', 'system', now(), false), - -('VIEW-W104', 'view_workcase_admin_conversation', '对话数据', NULL, '/admin/customerChat', 'admin/customerChat/CustomerChatView.vue', 'MessageCircle', 1, - 'route', NULL, 'workcase', 'SubSidebarLayout', 140, '客户对话数据管理', 'system', now(), false), - -('VIEW-W105', 'view_workcase_admin_agent', '智能体管理', NULL, '/admin/agent', 'admin/agent/AgentView.vue', 'Bot', 1, - 'route', NULL, 'workcase', 'SubSidebarLayout', 150, '智能体配置管理', 'system', now(), false), - --- 日志管理(带子级的目录) -('VIEW-W106', 'view_workcase_admin_log', '日志管理', NULL, '/admin/log', NULL, 'ScrollText', 1, - 'route', NULL, 'workcase', 'SubSidebarLayout', 160, '日志管理目录', 'system', now(), false), - -('VIEW-W107', 'view_workcase_admin_log_knowledge', '知识库日志', 'view_workcase_admin_log', '/admin/log/knowledge', 'admin/log/knowledgeLog/KnowledgeLogView.vue', 'FileText', 1, - 'route', NULL, 'workcase', NULL, 161, '知识库操作日志', 'system', now(), false), - -('VIEW-W108', 'view_workcase_admin_log_workcase', '工单日志', 'view_workcase_admin_log', '/admin/log/workcase', 'admin/log/workcaseLog/WorkcaseLogView.vue', 'Ticket', 1, - 'route', NULL, 'workcase', NULL, 162, '工单操作日志', 'system', now(), false), - -('VIEW-W109', 'view_workcase_admin_log_system', '系统日志', 'view_workcase_admin_log', '/admin/log/system', 'admin/log/systemLog/SystemLogView.vue', 'Settings', 1, - 'route', NULL, 'workcase', NULL, 163, '系统运行日志', 'system', now(), false); --- ============================= --- 6. 角色权限关联(超级管理员拥有所有权限) --- ============================= -INSERT INTO sys.tb_sys_role_permission ( - optsn, role_id, permission_id, creator, dept_path, create_time, deleted -) -SELECT - 'RP-' || LPAD(ROW_NUMBER() OVER (ORDER BY permission_id)::TEXT, 4, '0'), - 'role_super_admin', - permission_id, - 'system', - NULL, - now(), - false -FROM sys.tb_sys_permission -WHERE deleted = false; - --- 系统管理员权限(除了用户删除外的系统管理权限 + 所有平台基础菜单) -INSERT INTO sys.tb_sys_role_permission ( - optsn, role_id, permission_id, creator, dept_path, create_time, deleted -) -SELECT - 'RP-SA-' || LPAD(ROW_NUMBER() OVER (ORDER BY permission_id)::TEXT, 4, '0'), - 'role_system_admin', - permission_id, - 'system', - NULL, - now(), - false -FROM sys.tb_sys_permission -WHERE deleted = false - AND code NOT IN ('system:user:delete', 'system:role:delete', 'system:dept:delete') - AND ( - module_id IN ('module_system', 'module_file', 'module_message', 'module_config', 'module_bidding', 'module_workcase') - OR code LIKE 'platform:%:view' -- 包含所有平台基础菜单权限 - ); - --- 普通用户权限(基础查看和文件操作 + 平台基础菜单访问) -INSERT INTO sys.tb_sys_role_permission ( - optsn, role_id, permission_id, creator, dept_path, create_time, deleted -) VALUES --- 平台基础菜单访问权限 -('RP-U-0001', 'role_user', 'perm_platform_home', 'system', NULL, now(), false), -('RP-U-0002', 'role_user', 'perm_platform_chat', 'system', NULL, now(), false), -('RP-U-0003', 'role_user', 'perm_platform_bidding', 'system', NULL, now(), false), -('RP-U-0004', 'role_user', 'perm_platform_workcase', 'system', NULL, now(), false), -('RP-U-0005', 'role_user', 'perm_platform_workflow', 'system', NULL, now(), false), --- 系统功能权限 -('RP-U-0011', 'role_user', 'perm_user_view', 'system', NULL, now(), false), -('RP-U-0012', 'role_user', 'perm_file_view', 'system', NULL, now(), false), -('RP-U-0013', 'role_user', 'perm_file_upload', 'system', NULL, now(), false), -('RP-U-0014', 'role_user', 'perm_file_download', 'system', NULL, now(), false), -('RP-U-0015', 'role_user', 'perm_message_view', 'system', NULL, now(), false), -('RP-U-0016', 'role_user', 'perm_config_view', 'system', NULL, now(), false), ---- 视频会议权限 -('RP-U-0050', 'role_user', 'perm_meeting_create', 'system', NULL, now(), false), -('RP-U-0051', 'role_user', 'perm_meeting_join', 'system', NULL, now(), false), -('RP-U-0052', 'role_user', 'perm_meeting_url', 'system', NULL, now(), false), -('RP-U-0053', 'role_user', 'perm_meeting_token', 'system', NULL, now(), false); - --- 访客权限(基础菜单 + workcase聊天和工单全部接口权限) -INSERT INTO sys.tb_sys_role_permission ( - optsn, role_id, permission_id, creator, dept_path, create_time, deleted -) VALUES --- 平台基础菜单访问权限 -('RP-G-0001', 'role_guest', 'perm_platform_home', 'system', NULL, now(), false), -('RP-G-0002', 'role_guest', 'perm_platform_chat', 'system', NULL, now(), false), -('RP-G-0003', 'role_guest', 'perm_platform_workcase', 'system', NULL, now(), false), --- 系统功能权限(仅查看) -('RP-G-0011', 'role_guest', 'perm_user_view', 'system', NULL, now(), false), -('RP-G-0012', 'role_guest', 'perm_file_view', 'system', NULL, now(), false), -('RP-G-0013', 'role_guest', 'perm_message_view', 'system', NULL, now(), false), --- Workcase AI对话接口权限 -('RP-G-0021', 'role_guest', 'perm_workcase_chat_create', 'system', NULL, now(), false), -('RP-G-0022', 'role_guest', 'perm_workcase_chat_update', 'system', NULL, now(), false), -('RP-G-0023', 'role_guest', 'perm_workcase_chat_list', 'system', NULL, now(), false), -('RP-G-0024', 'role_guest', 'perm_workcase_chat_message', 'system', NULL, now(), false), -('RP-G-0025', 'role_guest', 'perm_workcase_chat_stream', 'system', NULL, now(), false), -('RP-G-0026', 'role_guest', 'perm_workcase_chat_analyze', 'system', NULL, now(), false), --- Workcase 聊天室接口权限 -('RP-G-0031', 'role_guest', 'perm_workcase_room_create', 'system', NULL, now(), false), -('RP-G-0032', 'role_guest', 'perm_workcase_room_update', 'system', NULL, now(), false), -('RP-G-0033', 'role_guest', 'perm_workcase_room_close', 'system', NULL, now(), false), -('RP-G-0034', 'role_guest', 'perm_workcase_room_view', 'system', NULL, now(), false), -('RP-G-0035', 'role_guest', 'perm_workcase_room_member', 'system', NULL, now(), false), -('RP-G-0036', 'role_guest', 'perm_workcase_room_message', 'system', NULL, now(), false), -('RP-G-0037', 'role_guest', 'perm_workcase_chatroom', 'system', NULL, now(), false), --- Workcase 工单接口权限 -('RP-G-0041', 'role_guest', 'perm_workcase_ticket_create', 'system', NULL, now(), false), -('RP-G-0042', 'role_guest', 'perm_workcase_ticket_update', 'system', NULL, now(), false), -('RP-G-0043', 'role_guest', 'perm_workcase_ticket_view', 'system', NULL, now(), false), -('RP-G-0044', 'role_guest', 'perm_workcase_ticket_process', 'system', NULL, now(), false), -('RP-G-0045', 'role_guest', 'perm_workcase_ticket_device', 'system', NULL, now(), false), ---- 视频会议权限 -('RP-G-0050', 'role_guest', 'perm_meeting_create', 'system', NULL, now(), false), -('RP-G-0051', 'role_guest', 'perm_meeting_join', 'system', NULL, now(), false), -('RP-G-0052', 'role_guest', 'perm_meeting_url', 'system', NULL, now(), false), -('RP-G-0053', 'role_guest', 'perm_meeting_token', 'system', NULL, now(), false); - --- ============================= --- 7. 视图权限关联 --- ============================= --- 将视图与对应模块的权限关联(使用真正的 view_id,不是 optsn) -INSERT INTO sys.tb_sys_view_permission ( - optsn, view_id, permission_id, creator, dept_path, create_time, deleted -) VALUES --- 平台基础菜单权限关联(所有登录用户都可访问) -('VP-P001', 'view_platform_home', 'perm_platform_home', 'system', NULL, now(), false), -('VP-P002', 'view_platform_chat', 'perm_platform_chat', 'system', NULL, now(), false), -('VP-P003', 'view_platform_bidding', 'perm_platform_bidding', 'system', NULL, now(), false), -('VP-P004', 'view_platform_workcase', 'perm_platform_workcase', 'system', NULL, now(), false), -('VP-P005', 'view_platform_workflow', 'perm_platform_workflow', 'system', NULL, now(), false), - --- 管理后台入口权限关联(iframe入口) -('VP-P101', 'view_platform_admin_entry', 'perm_platform_admin', 'system', NULL, now(), false), -('VP-P102', 'view_bidding_admin_entry', 'perm_bidding_admin', 'system', NULL, now(), false), -('VP-P103', 'view_workcase_admin_entry', 'perm_workcase_admin', 'system', NULL, now(), false), - --- 平台管理后台内部视图权限关联(SubSidebarLayout) -('VP-P201', 'view_platform_admin_overview', 'perm_platform_admin_overview', 'system', NULL, now(), false), -('VP-P202', 'view_platform_admin_user', 'perm_platform_admin_user', 'system', NULL, now(), false), -('VP-P203', 'view_platform_admin_knowledge', 'perm_platform_admin_knowledge', 'system', NULL, now(), false), -('VP-P204', 'view_platform_admin_config', 'perm_platform_admin_config', 'system', NULL, now(), false), - --- Workcase服务用户端视图关联 -('VP-W001', 'view_workcase_home', 'perm_platform_workcase', 'system', NULL, now(), false), -('VP-W002', 'view_workcase_chatroom', 'perm_workcase_chatroom', 'system', NULL, now(), false), - --- Workcase服务管理端视图关联 -('VP-W101', 'view_workcase_admin_overview', 'perm_workcase_overview', 'system', NULL, now(), false), -('VP-W102', 'view_workcase_admin_knowledge', 'perm_workcase_knowledge', 'system', NULL, now(), false), -('VP-W103', 'view_workcase_admin_tickets', 'perm_workcase_tickets', 'system', NULL, now(), false), -('VP-W104', 'view_workcase_admin_conversation', 'perm_workcase_conversation', 'system', NULL, now(), false), -('VP-W105', 'view_workcase_admin_agent', 'perm_workcase_agent', 'system', NULL, now(), false), - --- 日志管理视图关联(包括父级和子级) -('VP-W106', 'view_workcase_admin_log', 'perm_workcase_log', 'system', NULL, now(), false), -('VP-W107', 'view_workcase_admin_log_knowledge', 'perm_workcase_log', 'system', NULL, now(), false), -('VP-W108', 'view_workcase_admin_log_workcase', 'perm_workcase_log', 'system', NULL, now(), false), -('VP-W109', 'view_workcase_admin_log_system', 'perm_workcase_log', 'system', NULL, now(), false); - --- -- 用户管理视图关联用户权限(已注释,因为view_user被注释掉了) --- -- ('VP-0001', 'view_user', 'perm_user_view', 'system', NULL, now(), false), --- -- ('VP-0002', 'view_user', 'perm_user_create', 'system', NULL, now(), false), --- -- ('VP-0003', 'view_user', 'perm_user_edit', 'system', NULL, now(), false), --- -- ('VP-0004', 'view_user', 'perm_user_delete', 'system', NULL, now(), false), --- -- ('VP-0005', 'view_user', 'perm_user_export', 'system', NULL, now(), false), --- -- --- -- -- 角色管理视图关联角色权限 --- -- ('VP-0011', 'view_role', 'perm_role_view', 'system', NULL, now(), false), --- -- ('VP-0012', 'view_role', 'perm_role_create', 'system', NULL, now(), false), --- -- ('VP-0013', 'view_role', 'perm_role_edit', 'system', NULL, now(), false), --- -- ('VP-0014', 'view_role', 'perm_role_delete', 'system', NULL, now(), false), --- -- ('VP-0015', 'view_role', 'perm_role_export', 'system', NULL, now(), false), --- -- --- -- -- 部门管理视图关联部门权限 --- -- ('VP-0021', 'view_dept', 'perm_dept_view', 'system', NULL, now(), false), --- -- ('VP-0022', 'view_dept', 'perm_dept_create', 'system', NULL, now(), false), --- -- ('VP-0023', 'view_dept', 'perm_dept_edit', 'system', NULL, now(), false), --- -- ('VP-0024', 'view_dept', 'perm_dept_delete', 'system', NULL, now(), false), --- -- ('VP-0025', 'view_dept', 'perm_dept_export', 'system', NULL, now(), false), --- -- --- -- -- 权限管理视图关联权限管理权限 --- -- ('VP-0031', 'view_permission', 'perm_permission_view', 'system', NULL, now(), false), --- -- ('VP-0032', 'view_permission', 'perm_permission_manage', 'system', NULL, now(), false), --- -- --- -- -- 配置管理视图关联配置权限 --- -- ('VP-0041', 'view_config', 'perm_config_view', 'system', NULL, now(), false), --- -- ('VP-0042', 'view_config', 'perm_config_edit', 'system', NULL, now(), false), --- -- ('VP-0043', 'view_config', 'perm_config_export', 'system', NULL, now(), false), --- -- --- -- -- 文件管理视图关联文件权限 --- -- ('VP-0051', 'view_file', 'perm_file_view', 'system', NULL, now(), false), --- -- ('VP-0052', 'view_file', 'perm_file_upload', 'system', NULL, now(), false), --- -- ('VP-0053', 'view_file', 'perm_file_download', 'system', NULL, now(), false), --- -- ('VP-0054', 'view_file', 'perm_file_delete', 'system', NULL, now(), false), --- -- ('VP-0055', 'view_file', 'perm_file_export', 'system', NULL, now(), false), --- -- --- -- -- 消息管理视图关联消息权限 --- -- ('VP-0061', 'view_message', 'perm_message_view', 'system', NULL, now(), false), --- -- ('VP-0062', 'view_message', 'perm_message_send', 'system', NULL, now(), false), --- -- ('VP-0063', 'view_message', 'perm_message_manage', 'system', NULL, now(), false), --- -- ('VP-0064', 'view_message', 'perm_message_export', 'system', NULL, now(), false); diff --git a/docker/urbanLifeline/postgres/init/sql/initDataUser.sql b/docker/urbanLifeline/postgres/init/sql/initDataUser.sql deleted file mode 100644 index 507b2ec7..00000000 --- a/docker/urbanLifeline/postgres/init/sql/initDataUser.sql +++ /dev/null @@ -1,64 +0,0 @@ --- 初始化用户数据(与 sys schema 对应) --- 创建系统管理员账户和示例用户 - --- ============================= --- 1. 创建超级管理员用户 --- ============================= --- 注意:密码需要使用 bcrypt 加密,这里使用的是 'admin123' 的 bcrypt hash --- 实际部署时应该修改为安全的密码 -INSERT INTO sys.tb_sys_user ( - optsn, user_id, usercode, password, email, phone, phone_hash, - create_time, status, deleted -) VALUES -('USER-0001', 'user_admin', 'admin', - '$2a$10$XAe0TE2p0ym94bKJ8LJ52el3M4oYyiExVH/kNCh.pWLLGDZWNM9Yu', -- admin123 - 'admin@urbanlifeline.com', 'DAWTIvnCQI/KmtwkBYI5WP2NpnSKTq4kStJpOJKahOeJLNhAQ0s1', '7503bbfc6171077b737cdc4f76e781893a9a474c9ead05b6b946ac936e5a0288', - now(), 0, false); - --- 超级管理员用户信息 -INSERT INTO sys.tb_sys_user_info ( - optsn, user_id, username, avatar, gender, level, remark, - create_time, deleted -) VALUES -('UINFO-0001', 'user_admin', '系统管理员', - '/static/avatar/admin.png', 1, 10, '系统超级管理员账户', - now(), false); - --- ============================= --- 2. 关联超级管理员角色 --- ============================= -INSERT INTO sys.tb_sys_user_role ( - optsn, user_id, role_id, dept_id, dept_path, - creator, create_time, deleted -) VALUES -('UR-0001', 'user_admin', 'role_super_admin', 'dept_root', '/dept_root/', - 'system', now(), false); - --- ============================= --- 3. 创建示例普通用户(可选) --- ============================= -INSERT INTO sys.tb_sys_user ( - optsn, user_id, usercode, password, email, phone, phone_hash, - create_time, status, deleted -) VALUES -('USER-0002', 'user_demo', 'demo', - '$2a$10$XAe0TE2p0ym94bKJ8LJ52el3M4oYyiExVH/kNCh.pWLLGDZWNM9Yu', -- admin123 - 'demo@urbanlifeline.com', 'Y9tsAZOppzsxmKvI7iqqRBMDHzvWym2DE5FX1KgEGVBC5Ii1UG68', '4e98ffd0e02a7f746291bff77c6c497225e8884758d503bde2efad64e45ad44b', - now(), 0, false); - --- 示例用户信息 -INSERT INTO sys.tb_sys_user_info ( - optsn, user_id, username, avatar, gender, level, remark, - create_time, deleted -) VALUES -('UINFO-0002', 'user_demo', '演示用户', - '/static/avatar/demo.png', 0, 1, '系统演示账户', - now(), false); - --- 关联普通用户角色 -INSERT INTO sys.tb_sys_user_role ( - optsn, user_id, role_id, dept_id, dept_path, - creator, create_time, deleted -) VALUES -('UR-0002', 'user_demo', 'role_user', 'dept_root', '/dept_root/', - 'system', now(), false); diff --git a/docker/urbanLifeline/postgres/init/sql/initDataWorkcase.sql b/docker/urbanLifeline/postgres/init/sql/initDataWorkcase.sql deleted file mode 100644 index cf786a91..00000000 --- a/docker/urbanLifeline/postgres/init/sql/initDataWorkcase.sql +++ /dev/null @@ -1,6 +0,0 @@ --- 初始化聊天室人员 --- user_admin -INSERT INTO workcase.tb_chat_room_member( - optsn, member_id, room_id, user_id, user_type, user_name, status, unread_count, last_read_time, last_read_msg_id, join_time, leave_time, creator, create_time, update_time -) VALUES -('MEM-0001', 'member_admin', 'room_0001', 'user_admin', 'staff', '系统管理员', 'active', 0, null, null, now(), null, 'system', now(), null); \ No newline at end of file diff --git a/docker/urbanLifeline/serv/.env.example b/docker/urbanLifeline/serv/.env.example deleted file mode 100644 index 13bb9c1c..00000000 --- a/docker/urbanLifeline/serv/.env.example +++ /dev/null @@ -1,39 +0,0 @@ -# ================================================ -# Urban Lifeline 后端服务配置 -# 复制此文件为 .env 并修改配置 -# ================================================ - -# ------------------------------ -# 镜像版本 -# ------------------------------ -IMAGE_VERSION=latest - -# ------------------------------ -# 端口配置 -# ------------------------------ -GATEWAY_PORT=8080 - -# ------------------------------ -# Spring 配置 -# ------------------------------ -SPRING_PROFILES_ACTIVE=prod -NACOS_SERVER_ADDR=nacos:8848 -NACOS_NAMESPACE= - -# ------------------------------ -# 挂载目录配置 -# ------------------------------ -# 配置文件目录 (存放各服务的 yml 配置) -CONFIG_ROOT=./volumes/config - -# 日志目录 -LOG_ROOT=./volumes/logs - -# 数据目录 (上传文件、临时文件等) -DATA_ROOT=./volumes/data - -# ------------------------------ -# 资源限制 -# ------------------------------ -MEMORY_LIMIT=4G -MEMORY_RESERVATION=2G diff --git a/docker/urbanLifeline/serv/Dockerfile.base b/docker/urbanLifeline/serv/Dockerfile.base deleted file mode 100644 index 00dba3f6..00000000 --- a/docker/urbanLifeline/serv/Dockerfile.base +++ /dev/null @@ -1,35 +0,0 @@ -# ================================================ -# Urban Lifeline - 后端基础镜像 -# 包含 JRE 21 + 常用工具 -# 构建命令: docker build -t urban-lifeline-base-serv:latest -f Dockerfile.base . -# ================================================ -FROM eclipse-temurin:21-jre-alpine - -# 设置环境变量 -ENV LANG=C.UTF-8 \ - LC_ALL=C.UTF-8 \ - TZ=Asia/Shanghai - -# 使用阿里云镜像源(解决网络问题) -RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories - -# 安装基础工具 -RUN apk add --no-cache \ - curl \ - wget \ - bash \ - tzdata \ - && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ - && echo "Asia/Shanghai" > /etc/timezone - -# 创建应用目录 -WORKDIR /app -RUN mkdir -p /app/config /app/logs - -# 镜像元数据 -LABEL maintainer="Urban Lifeline Team" \ - description="Base image for Urban Lifeline backend services" \ - version="1.0" - -# 默认命令 -CMD ["echo", "This is base image, please use specific service image"] diff --git a/docker/urbanLifeline/serv/Dockerfile.serv b/docker/urbanLifeline/serv/Dockerfile.serv deleted file mode 100644 index 3b0910e2..00000000 --- a/docker/urbanLifeline/serv/Dockerfile.serv +++ /dev/null @@ -1,39 +0,0 @@ -# ================================================ -# Urban Lifeline - All-in-One 后端服务镜像 -# 单容器运行所有微服务,通过脚本管理 -# -# 构建: docker build -t urban-lifeline-serv:latest -f Dockerfile.serv . -# ================================================ -FROM urban-lifeline-base-serv:latest - -WORKDIR /app -RUN mkdir -p /app/jars /app/logs /app/pids /app/config - -# 复制管理脚本 -COPY docker/urbanLifeline/serv/service-manager.sh /app/service-manager.sh -RUN chmod +x /app/service-manager.sh - -# 复制所有服务 JAR 包 -COPY urbanLifelineServ/gateway/target/*.jar /app/jars/gateway.jar -COPY urbanLifelineServ/system/target/*.jar /app/jars/system.jar -COPY urbanLifelineServ/auth/target/*.jar /app/jars/auth.jar -COPY urbanLifelineServ/file/target/*.jar /app/jars/file.jar -COPY urbanLifelineServ/ai/target/*.jar /app/jars/ai.jar -COPY urbanLifelineServ/workcase/target/*.jar /app/jars/workcase.jar - -# # COPY urbanLifelineServ/log/target/*.jar /app/jars/log.jar -# COPY urbanLifelineServ/message/target/*.jar /app/jars/message.jar -# COPY urbanLifelineServ/crontab/target/*.jar /app/jars/crontab.jar -# COPY urbanLifelineServ/bidding/target/*.jar /app/jars/bidding.jar -# COPY urbanLifelineServ/platform/target/*.jar /app/jars/platform.jar - -# 配置目录 (可外挂) -VOLUME ["/app/config", "/app/logs"] - -EXPOSE 8080 8081 8082 8083 8084 8085 8086 8087 8088 8089 8090 - -HEALTHCHECK --interval=30s --timeout=10s --start-period=180s --retries=3 \ - CMD curl -f http://localhost:8080/actuator/health || exit 1 - -ENTRYPOINT ["/app/service-manager.sh"] -CMD ["start-all"] diff --git a/docker/urbanLifeline/serv/build.sh b/docker/urbanLifeline/serv/build.sh deleted file mode 100644 index d705c4b6..00000000 --- a/docker/urbanLifeline/serv/build.sh +++ /dev/null @@ -1,84 +0,0 @@ -#!/bin/bash -# ================================================ -# Urban Lifeline - 后端服务镜像构建脚本 -# -# 使用方式: -# ./build.sh # 构建 All-in-One 镜像 (推荐) -# ./build.sh base # 仅构建基础镜像 -# ================================================ - -set -e - -# 项目根目录 (相对于此脚本) -PROJECT_ROOT="$(cd "$(dirname "$0")/../../.." && pwd)" -cd "$PROJECT_ROOT" - -# 镜像版本 -VERSION=${IMAGE_VERSION:-latest} - -# 服务列表 -SERVICES=(gateway system auth file log message crontab bidding workcase platform ai) - -# 构建基础镜像 -build_base() { - echo "==========================================" - echo "构建基础镜像: urban-lifeline-base-serv:${VERSION}" - echo "==========================================" - docker build -t urban-lifeline-base-serv:${VERSION} \ - -f docker/urbanLifeline/serv/Dockerfile.base . - - if [ "$VERSION" != "latest" ]; then - docker tag urban-lifeline-base-serv:${VERSION} urban-lifeline-base-serv:latest - fi -} - -# 构建 All-in-One 镜像 -build() { - echo "==========================================" - echo "构建 All-in-One 镜像: urban-lifeline-serv:${VERSION}" - echo "==========================================" - - # 先构建基础镜像 - build_base - - # 检查所有 JAR 文件 - local missing=0 - for service in "${SERVICES[@]}"; do - if ! ls urbanLifelineServ/${service}/target/*.jar 1> /dev/null 2>&1; then - echo "缺少: urbanLifelineServ/${service}/target/*.jar" - missing=1 - fi - done - - if [ $missing -eq 1 ]; then - echo "" - echo "请先执行 Maven 构建:" - echo " cd urbanLifelineServ && mvn clean package -DskipTests" - exit 1 - fi - - docker build -t urban-lifeline-serv:${VERSION} \ - -f docker/urbanLifeline/serv/Dockerfile.serv . - - if [ "$VERSION" != "latest" ]; then - docker tag urban-lifeline-serv:${VERSION} urban-lifeline-serv:latest - fi - - echo "==========================================" - echo "镜像构建完成!" - echo "" - echo "管理服务:" - echo " docker exec urban-lifeline-serv /app/service-manager.sh status" - echo " docker exec urban-lifeline-serv /app/service-manager.sh restart gateway" - echo "==========================================" -} - -# 主逻辑 -case "${1:-build}" in - base) - build_base - ;; - *) - build - ;; -esac diff --git a/docker/urbanLifeline/serv/config/application-ai.yml b/docker/urbanLifeline/serv/config/application-ai.yml deleted file mode 100644 index b5dd320d..00000000 --- a/docker/urbanLifeline/serv/config/application-ai.yml +++ /dev/null @@ -1,41 +0,0 @@ -# ================== AI 服务配置 (Docker) ================== -server: - port: 8090 - -spring: - application: - name: ai-service - servlet: - multipart: - enabled: true - max-file-size: 500MB - max-request-size: 500MB - -auth: - enabled: true - gateway-mode: true - whitelist: - - /swagger-ui/** - - /swagger-ui.html - - /v3/api-docs/** - - /webjars/** - - /favicon.ico - - /error - - /actuator/health - - /actuator/info - - /ai/chat/** - -springdoc: - group-configs: - - group: 'default' - display-name: 'AI代理服务 API' - paths-to-match: '/**' - -dubbo: - application: - name: urban-lifeline-agent - qos-enable: false - protocol: - payload: 110100480 - scan: - base-packages: org.xyzh.ai.service.impl diff --git a/docker/urbanLifeline/serv/config/application-auth.yml b/docker/urbanLifeline/serv/config/application-auth.yml deleted file mode 100644 index 1eff6324..00000000 --- a/docker/urbanLifeline/serv/config/application-auth.yml +++ /dev/null @@ -1,31 +0,0 @@ -# ================== Auth 认证服务配置 (Docker) ================== -server: - port: 8081 - -spring: - application: - name: auth-service - -auth: - enabled: false - gateway-mode: false - whitelist: - - /** - -springdoc: - group-configs: - - group: 'default' - display-name: '认证服务 API' - paths-to-match: '/**' - -dubbo: - application: - name: urban-lifeline-auth - qos-enable: false - scan: - base-packages: org.xyzh.auth.service.impl - -jwt: - secret: ${JWT_SECRET:urban-lifeline-secret-key-2025-xyzh} - expiration: 86400 - refresh-expiration: 604800 diff --git a/docker/urbanLifeline/serv/config/application-bidding.yml b/docker/urbanLifeline/serv/config/application-bidding.yml deleted file mode 100644 index fa95ad67..00000000 --- a/docker/urbanLifeline/serv/config/application-bidding.yml +++ /dev/null @@ -1,33 +0,0 @@ -# ================== Bidding 招投标服务配置 (Docker) ================== -server: - port: 8087 - -spring: - application: - name: bidding-service - -auth: - enabled: true - gateway-mode: true - whitelist: - - /swagger-ui/** - - /swagger-ui.html - - /v3/api-docs/** - - /webjars/** - - /favicon.ico - - /error - - /actuator/health - - /actuator/info - -springdoc: - group-configs: - - group: 'default' - display-name: '招投标服务 API' - paths-to-match: '/**' - -dubbo: - application: - name: urban-lifeline-bidding - qos-enable: false - scan: - base-packages: org.xyzh.bidding.service.impl diff --git a/docker/urbanLifeline/serv/config/application-crontab.yml b/docker/urbanLifeline/serv/config/application-crontab.yml deleted file mode 100644 index 47671dc6..00000000 --- a/docker/urbanLifeline/serv/config/application-crontab.yml +++ /dev/null @@ -1,32 +0,0 @@ -# ================== Crontab 定时任务服务配置 (Docker) ================== -server: - port: 8086 - -spring: - application: - name: crontab-service - -auth: - enabled: false - whitelist: - - /swagger-ui/** - - /swagger-ui.html - - /v3/api-docs/** - - /webjars/** - - /favicon.ico - - /error - - /actuator/health - - /actuator/info - -springdoc: - group-configs: - - group: 'default' - display-name: '定时任务服务 API' - paths-to-match: '/**' - -dubbo: - application: - name: urban-lifeline-crontab - qos-enable: false - scan: - base-packages: org.xyzh.crontab.service.impl diff --git a/docker/urbanLifeline/serv/config/application-file.yml b/docker/urbanLifeline/serv/config/application-file.yml deleted file mode 100644 index 180e9e39..00000000 --- a/docker/urbanLifeline/serv/config/application-file.yml +++ /dev/null @@ -1,41 +0,0 @@ -# ================== File 文件服务配置 (Docker) ================== -server: - port: 8084 - -spring: - application: - name: file-service - servlet: - multipart: - enabled: true - max-file-size: 500MB - max-request-size: 500MB - -auth: - enabled: true - gateway-mode: true - whitelist: - - /swagger-ui/** - - /swagger-ui.html - - /v3/api-docs/** - - /webjars/** - - /favicon.ico - - /error - - /actuator/health - - /actuator/info - - /file/download/** - -springdoc: - group-configs: - - group: 'default' - display-name: '文件服务 API' - paths-to-match: '/**' - -dubbo: - application: - name: urban-lifeline-file - qos-enable: false - protocol: - payload: 110100480 - scan: - base-packages: org.xyzh.file.service.impl diff --git a/docker/urbanLifeline/serv/config/application-gateway.yml b/docker/urbanLifeline/serv/config/application-gateway.yml deleted file mode 100644 index 7cba3b97..00000000 --- a/docker/urbanLifeline/serv/config/application-gateway.yml +++ /dev/null @@ -1,154 +0,0 @@ -# ================== Gateway 服务配置 (Docker) ================== -server: - port: 8080 - -spring: - application: - name: gateway-service - - main: - web-application-type: reactive - - cloud: - nacos: - config: - enabled: false - - gateway: - discovery: - locator: - enabled: false - - routes: - - id: auth-service - uri: lb://auth-service - predicates: - - Path=/urban-lifeline/auth/** - filters: - - StripPrefix=1 - - name: RequestRateLimiter - args: - redis-rate-limiter.replenishRate: 100 - redis-rate-limiter.burstCapacity: 200 - - - id: system-service - uri: lb://system-service - predicates: - - Path=/urban-lifeline/system/** - filters: - - StripPrefix=1 - - - id: log-service - uri: lb://log-service - predicates: - - Path=/urban-lifeline/log/** - filters: - - StripPrefix=1 - - - id: file-service - uri: lb://file-service - predicates: - - Path=/urban-lifeline/file/** - filters: - - StripPrefix=1 - - - id: message-service - uri: lb://message-service - predicates: - - Path=/urban-lifeline/message/** - filters: - - StripPrefix=1 - - - id: bidding-service - uri: lb://bidding-service - predicates: - - Path=/urban-lifeline/bidding/** - filters: - - StripPrefix=1 - - - id: platform-service - uri: lb://platform-service - predicates: - - Path=/urban-lifeline/platform/** - filters: - - StripPrefix=1 - - - id: workcase-websocket - uri: lb:ws://workcase-service - predicates: - - Path=/urban-lifeline/workcase/ws/** - filters: - - StripPrefix=1 - - - id: workcase-service - uri: lb://workcase-service - predicates: - - Path=/urban-lifeline/workcase/** - filters: - - StripPrefix=1 - - - id: crontab-service - uri: lb://crontab-service - predicates: - - Path=/urban-lifeline/crontab/** - filters: - - StripPrefix=1 - - - id: ai-service - uri: lb://ai-service - predicates: - - Path=/urban-lifeline/ai/** - filters: - - StripPrefix=1 - - globalcors: - cors-configurations: - '[/**]': - allowedOriginPatterns: "*" - allowedMethods: [GET, POST, PUT, DELETE, OPTIONS] - allowedHeaders: "*" - allowCredentials: true - maxAge: 3600 - - data: - redis: - timeout: 5000ms - lettuce: - pool: - max-active: 20 - max-wait: -1ms - max-idle: 10 - min-idle: 5 - -auth: - enabled: true - token-header: Authorization - token-prefix: "Bearer " - login-path: /urban-lifeline/auth/login - logout-path: /urban-lifeline/auth/logout - captcha-path: /urban-lifeline/auth/captcha - refresh-path: /urban-lifeline/auth/refresh - whitelist: - - /actuator/** - - /v3/api-docs/** - - /swagger-ui/** - - /swagger-resources/** - - /webjars/** - - /doc.html - - /favicon.ico - - /error - - /urban-lifeline/*/v3/api-docs/** - - /urban-lifeline/*/swagger-ui/** - - /urban-lifeline/file/download/** - - /urban-lifeline/ai/chat/** - - /urban-lifeline/system/guest/identify - - /urban-lifeline/workcase/meeting/*/entry - -management: - endpoints: - web: - exposure: - include: health,info,gateway - endpoint: - health: - show-details: always diff --git a/docker/urbanLifeline/serv/config/application-message.yml b/docker/urbanLifeline/serv/config/application-message.yml deleted file mode 100644 index 74e92d56..00000000 --- a/docker/urbanLifeline/serv/config/application-message.yml +++ /dev/null @@ -1,33 +0,0 @@ -# ================== Message 消息服务配置 (Docker) ================== -server: - port: 8085 - -spring: - application: - name: message-service - -auth: - enabled: true - gateway-mode: true - whitelist: - - /swagger-ui/** - - /swagger-ui.html - - /v3/api-docs/** - - /webjars/** - - /favicon.ico - - /error - - /actuator/health - - /actuator/info - -springdoc: - group-configs: - - group: 'default' - display-name: '消息服务 API' - paths-to-match: '/**' - -dubbo: - application: - name: urban-lifeline-message - qos-enable: false - scan: - base-packages: org.xyzh.message.service.impl diff --git a/docker/urbanLifeline/serv/config/application-platform.yml b/docker/urbanLifeline/serv/config/application-platform.yml deleted file mode 100644 index ed026a11..00000000 --- a/docker/urbanLifeline/serv/config/application-platform.yml +++ /dev/null @@ -1,33 +0,0 @@ -# ================== Platform 平台服务配置 (Docker) ================== -server: - port: 8089 - -spring: - application: - name: platform-service - -auth: - enabled: true - gateway-mode: true - whitelist: - - /swagger-ui/** - - /swagger-ui.html - - /v3/api-docs/** - - /webjars/** - - /favicon.ico - - /error - - /actuator/health - - /actuator/info - -springdoc: - group-configs: - - group: 'default' - display-name: '平台服务 API' - paths-to-match: '/**' - -dubbo: - application: - name: urban-lifeline-platform - qos-enable: false - scan: - base-packages: org.xyzh.platform.service.impl diff --git a/docker/urbanLifeline/serv/config/application-system.yml b/docker/urbanLifeline/serv/config/application-system.yml deleted file mode 100644 index 7def7a40..00000000 --- a/docker/urbanLifeline/serv/config/application-system.yml +++ /dev/null @@ -1,41 +0,0 @@ -# ================== System 系统服务配置 (Docker) ================== -server: - port: 8082 - -spring: - application: - name: system-service - -auth: - enabled: true - gateway-mode: true - whitelist: - - /swagger-ui/** - - /swagger-ui.html - - /v3/api-docs/** - - /webjars/** - - /favicon.ico - - /error - - /actuator/health - - /actuator/info - - /system/guest/identify - -springdoc: - swagger-ui: - try-it-out-enabled: true - show-common-extensions: true - show-extensions: true - filter: true - tags-sorter: alpha - operations-sorter: alpha - group-configs: - - group: 'default' - display-name: '系统服务 API' - paths-to-match: '/**' - -dubbo: - application: - name: urban-lifeline-system - qos-enable: false - scan: - base-packages: org.xyzh.system.service.impl diff --git a/docker/urbanLifeline/serv/config/application-workcase.yml b/docker/urbanLifeline/serv/config/application-workcase.yml deleted file mode 100644 index 20bb78b0..00000000 --- a/docker/urbanLifeline/serv/config/application-workcase.yml +++ /dev/null @@ -1,51 +0,0 @@ -# ================== Workcase 工单服务配置 (Docker) ================== -server: - port: 8088 - -spring: - application: - name: workcase-service - servlet: - multipart: - enabled: true - max-file-size: 500MB - max-request-size: 500MB - -auth: - enabled: true - gateway-mode: true - whitelist: - - /swagger-ui/** - - /swagger-ui.html - - /v3/api-docs/** - - /webjars/** - - /favicon.ico - - /error - - /actuator/health - - /actuator/info - - /workcase/chat/kefu/callback - - /workcase/receive/crm - -springdoc: - group-configs: - - group: 'default' - display-name: '工单服务 API' - paths-to-match: '/**' - -dubbo: - application: - name: urban-lifeline-workcase - qos-enable: false - protocol: - payload: 110100480 - scan: - base-packages: org.xyzh.workcase.service.impl - -jitsi: - app: - id: ${JITSI_APP_ID:urbanLifeline} - secret: ${JITSI_APP_SECRET:urbanLifeline-jitsi-secret-key-2025-production-safe-hs256} - server: - url: ${JITSI_SERVER_URL:https://meet.example.com} - token: - expiration: 7200000 diff --git a/docker/urbanLifeline/serv/config/bootstrap.yml b/docker/urbanLifeline/serv/config/bootstrap.yml deleted file mode 100644 index 80262f6a..00000000 --- a/docker/urbanLifeline/serv/config/bootstrap.yml +++ /dev/null @@ -1,70 +0,0 @@ -# ================================================ -# Urban Lifeline - 通用 Bootstrap 配置 (Docker) -# 所有微服务共享的基础配置 -# ================================================ - -# ================== Spring Cloud Nacos ================== -spring: - cloud: - nacos: - discovery: - server-addr: ${NACOS_SERVER_ADDR:urban-lifeline-nacos:8848} - namespace: ${NACOS_NAMESPACE:} - group: ${NACOS_GROUP:DEFAULT_GROUP} - - # ================== DataSource ================== - datasource: - url: ${DB_URL:jdbc:postgresql://urban-lifeline-pg:5432/urban_lifeline} - username: ${DB_USERNAME:postgres} - password: ${DB_PASSWORD:postgres123456} - driver-class-name: org.postgresql.Driver - - # ================== Redis ================== - data: - redis: - host: ${REDIS_HOST:urban-lifeline-redis} - port: ${REDIS_PORT:6379} - database: ${REDIS_DATABASE:0} - password: ${REDIS_PASSWORD:} - -management: - endpoints: - web: - exposure: - include: health,info - endpoint: - health: - show-details: always -# ================== Security AES ================== -security: - aes: - secret-key: ${AES_SECRET_KEY:MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=} - -# ================== Dubbo ================== -dubbo: - protocol: - name: dubbo - port: -1 - registry: - address: nacos://${NACOS_SERVER_ADDR:urban-lifeline-nacos:8848} - -# ================== MyBatis-Plus ================== -mybatis-plus: - mapper-locations: classpath:mapper/**/*.xml - type-aliases-package: org.xyzh.common.dto, org.xyzh.api - -# ================== SpringDoc 基础配置 ================== -springdoc: - api-docs: - enabled: true - path: /v3/api-docs - swagger-ui: - enabled: true - path: /swagger-ui.html - -# ================== Logging ================== -logging: - config: classpath:log4j2.xml - charset: - console: UTF-8 - file: UTF-8 diff --git a/docker/urbanLifeline/serv/docker-compose.yml b/docker/urbanLifeline/serv/docker-compose.yml deleted file mode 100644 index 9405a8a2..00000000 --- a/docker/urbanLifeline/serv/docker-compose.yml +++ /dev/null @@ -1,76 +0,0 @@ -# ================================================ -# Urban Lifeline - All-in-One 后端部署 -# 单容器运行所有后端服务 -# ================================================ - -services: - # ====================== Redis 缓存 ====================== - redis: - image: redis:7-alpine - container_name: urban-lifeline-redis - restart: unless-stopped - networks: - - urban-lifeline - expose: - - "6379" - environment: - TZ: Asia/Shanghai - command: redis-server --appendonly yes --requirepass ${REDIS_PASSWORD:-redis123} - volumes: - - ${REDIS_DATA:-./volumes/redis}:/data - deploy: - resources: - limits: - memory: ${REDIS_MEMORY_LIMIT:-512M} - healthcheck: - test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD:-redis123}", "ping"] - interval: 10s - timeout: 5s - retries: 3 - - # ====================== 后端服务 ====================== - urban-lifeline-serv: - image: urban-lifeline-serv:${IMAGE_VERSION:-latest} - container_name: urban-lifeline-serv - restart: unless-stopped - env_file: - - .env - networks: - - urban-lifeline - # 不对外暴露端口,仅通过 nginx 反向代理访问 - expose: - - "8080" - environment: - TZ: Asia/Shanghai - SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE:-prod} - NACOS_SERVER_ADDR: ${NACOS_SERVER_ADDR:-nacos:8848} - NACOS_NAMESPACE: ${NACOS_NAMESPACE:-} - REDIS_HOST: urban-lifeline-redis - REDIS_PORT: 6379 - REDIS_PASSWORD: ${REDIS_PASSWORD:-redis123} - depends_on: - redis: - condition: service_healthy - volumes: - # 配置文件目录 - - ${CONFIG_ROOT:-./volumes/config}:/app/config:ro - # 日志目录 - - ${LOG_ROOT:-./volumes/logs}:/app/logs - # 数据目录 (上传文件等) - - ${DATA_ROOT:-./volumes/data}:/app/data - deploy: - resources: - limits: - memory: ${MEMORY_LIMIT:-4G} - reservations: - memory: ${MEMORY_RESERVATION:-2G} - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8080/actuator/health"] - interval: 30s - timeout: 10s - retries: 3 - start_period: 180s - -networks: - urban-lifeline: - name: urban-lifeline diff --git a/docker/urbanLifeline/serv/service-manager.sh b/docker/urbanLifeline/serv/service-manager.sh deleted file mode 100644 index ca11c6bc..00000000 --- a/docker/urbanLifeline/serv/service-manager.sh +++ /dev/null @@ -1,371 +0,0 @@ -#!/bin/bash -# ================================================ -# Urban Lifeline - 服务管理脚本 -# -# 用法: -# ./service-manager.sh start-all # 启动所有服务 -# ./service-manager.sh start gateway # 启动单个服务 -# ./service-manager.sh stop gateway # 停止单个服务 -# ./service-manager.sh restart gateway # 重启单个服务 -# ./service-manager.sh status # 查看所有服务状态 -# ./service-manager.sh logs gateway # 查看服务日志 -# ================================================ - -set -e - -# 目录配置 -JAR_DIR="/app/jars" -LOG_DIR="/app/logs" -PID_DIR="/app/pids" -CONFIG_DIR="/app/config" - -# 服务配置: 服务名=端口:内存 -declare -A SERVICES=( - ["gateway"]="8080:384m" - ["system"]="8082:384m" - ["auth"]="8081:256m" - ["file"]="8084:256m" - # ["log"]="8083:192m" - # ["message"]="8085:256m" - # ["crontab"]="8086:192m" - ["ai"]="8090:384m" - # ["bidding"]="8087:256m" - # ["platform"]="8089:256m" - ["workcase"]="8088:384m" -) - -# 启动顺序 (有依赖关系) -# BOOT_ORDER=(gateway system auth file log message crontab ai bidding platform workcase) -BOOT_ORDER=(gateway system auth file ai workcase) - -# 颜色输出 -RED='\033[0;31m' -GREEN='\033[0;32m' -YELLOW='\033[1;33m' -NC='\033[0m' - -log_info() { echo -e "${GREEN}[INFO]${NC} $1"; } -log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; } -log_error() { echo -e "${RED}[ERROR]${NC} $1"; } - -# 获取服务端口 -get_port() { - local service=$1 - echo "${SERVICES[$service]}" | cut -d: -f1 -} - -# 获取服务内存配置 -get_memory() { - local service=$1 - echo "${SERVICES[$service]}" | cut -d: -f2 -} - -# 检查服务是否运行 -is_running() { - local service=$1 - local pid_file="${PID_DIR}/${service}.pid" - - if [ -f "$pid_file" ]; then - local pid=$(cat "$pid_file") - if kill -0 "$pid" 2>/dev/null; then - return 0 - fi - fi - return 1 -} - -# 等待服务就绪 -wait_for_service() { - local service=$1 - local port=$(get_port "$service") - local max_wait=60 - local count=0 - - while [ $count -lt $max_wait ]; do - if curl -sf "http://localhost:${port}/actuator/health" > /dev/null 2>&1; then - return 0 - fi - sleep 2 - count=$((count + 2)) - done - return 1 -} - -# 启动单个服务 -start_service() { - local service=$1 - local port=$(get_port "$service") - local memory=$(get_memory "$service") - local jar_file="${JAR_DIR}/${service}.jar" - local log_file="${LOG_DIR}/${service}.log" - local pid_file="${PID_DIR}/${service}.pid" - local bootstrap_file="${CONFIG_DIR}/bootstrap.yml" - local app_config_file="${CONFIG_DIR}/application-${service}.yml" - - if [ ! -f "$jar_file" ]; then - log_error "JAR 文件不存在: $jar_file" - return 1 - fi - - if is_running "$service"; then - log_warn "$service 已在运行 (PID: $(cat $pid_file))" - return 0 - fi - - log_info "启动 $service (端口: $port, 内存: $memory)..." - - # JVM 参数 - local java_opts="-Xms128m -Xmx${memory} -XX:+UseG1GC -XX:MaxGCPauseMillis=100" - java_opts="$java_opts -Djava.security.egd=file:/dev/./urandom" - java_opts="$java_opts -Dspring.profiles.active=${SPRING_PROFILES_ACTIVE:-prod}" - - # Nacos 配置 - if [ -n "$NACOS_SERVER_ADDR" ]; then - java_opts="$java_opts -Dspring.cloud.nacos.discovery.server-addr=$NACOS_SERVER_ADDR" - java_opts="$java_opts -Dspring.cloud.nacos.config.server-addr=$NACOS_SERVER_ADDR" - fi - - if [ -n "$NACOS_NAMESPACE" ]; then - java_opts="$java_opts -Dspring.cloud.nacos.discovery.namespace=$NACOS_NAMESPACE" - java_opts="$java_opts -Dspring.cloud.nacos.config.namespace=$NACOS_NAMESPACE" - fi - - # 外挂配置文件: bootstrap.yml + application-{service}.yml - local config_locations="" - if [ -f "$bootstrap_file" ]; then - config_locations="file:${bootstrap_file}" - log_info " 加载通用配置: ${bootstrap_file}" - fi - if [ -f "$app_config_file" ]; then - if [ -n "$config_locations" ]; then - config_locations="${config_locations},file:${app_config_file}" - else - config_locations="file:${app_config_file}" - fi - log_info " 加载服务配置: ${app_config_file}" - fi - if [ -n "$config_locations" ]; then - java_opts="$java_opts -Dspring.config.additional-location=${config_locations}" - fi - - # 启动服务 - nohup java $java_opts -jar "$jar_file" > "$log_file" 2>&1 & - local pid=$! - echo $pid > "$pid_file" - - log_info "$service 已启动 (PID: $pid)" -} - -# 停止单个服务 -stop_service() { - local service=$1 - local pid_file="${PID_DIR}/${service}.pid" - - if ! is_running "$service"; then - log_warn "$service 未在运行" - return 0 - fi - - local pid=$(cat "$pid_file") - log_info "停止 $service (PID: $pid)..." - - # 优雅关闭 - kill -15 "$pid" 2>/dev/null || true - - # 等待进程退出 - local count=0 - while [ $count -lt 30 ] && kill -0 "$pid" 2>/dev/null; do - sleep 1 - count=$((count + 1)) - done - - # 强制关闭 - if kill -0 "$pid" 2>/dev/null; then - log_warn "强制终止 $service..." - kill -9 "$pid" 2>/dev/null || true - fi - - rm -f "$pid_file" - log_info "$service 已停止" -} - -# 重启单个服务 -restart_service() { - local service=$1 - stop_service "$service" - sleep 2 - start_service "$service" -} - -# 启动所有服务 -start_all() { - log_info "==========================================" - log_info " Urban Lifeline - 启动所有服务" - log_info "==========================================" - - # 等待 Nacos - if [ -n "$NACOS_SERVER_ADDR" ]; then - log_info "等待 Nacos 就绪..." - local nacos_host=$(echo $NACOS_SERVER_ADDR | cut -d: -f1) - local nacos_port=$(echo $NACOS_SERVER_ADDR | cut -d: -f2) - - for i in $(seq 1 30); do - if curl -sf "http://${nacos_host}:${nacos_port}/nacos/" > /dev/null 2>&1; then - log_info "Nacos 已就绪" - break - fi - sleep 2 - done - fi - - # 按顺序启动服务,等待健康检查通过后再启动下一个 - for service in "${BOOT_ORDER[@]}"; do - start_service "$service" - - log_info "等待 $service 健康检查..." - if wait_for_service "$service"; then - log_info "$service 已就绪 ✓" - else - log_warn "$service 健康检查超时,继续启动下一个服务" - fi - done - - log_info "==========================================" - log_info " 所有服务启动完成" - log_info "==========================================" - - show_status - - # 保持容器运行并监控 - monitor_services -} - -# 停止所有服务 -stop_all() { - log_info "停止所有服务..." - - # 逆序停止 - for ((i=${#BOOT_ORDER[@]}-1; i>=0; i--)); do - stop_service "${BOOT_ORDER[$i]}" - done - - log_info "所有服务已停止" -} - -# 查看服务状态 -show_status() { - echo "" - echo "==========================================" - echo " Urban Lifeline 服务状态" - echo "==========================================" - printf "%-12s %-8s %-8s %-10s\n" "服务" "端口" "PID" "状态" - echo "------------------------------------------" - - for service in "${BOOT_ORDER[@]}"; do - local port=$(get_port "$service") - local pid_file="${PID_DIR}/${service}.pid" - local pid="-" - local status="${RED}停止${NC}" - - if [ -f "$pid_file" ]; then - pid=$(cat "$pid_file") - if kill -0 "$pid" 2>/dev/null; then - status="${GREEN}运行中${NC}" - fi - fi - - printf "%-12s %-8s %-8s " "$service" "$port" "$pid" - echo -e "$status" - done - echo "==========================================" -} - -# 查看服务日志 -show_logs() { - local service=$1 - local log_file="${LOG_DIR}/${service}.log" - - if [ ! -f "$log_file" ]; then - log_error "日志文件不存在: $log_file" - return 1 - fi - - tail -f "$log_file" -} - -# 监控服务 (保持容器运行) -monitor_services() { - log_info "进入监控模式..." - - # 捕获退出信号 - trap 'stop_all; exit 0' SIGTERM SIGINT - - while true; do - sleep 30 - - # 检查服务状态,自动重启挂掉的服务 - for service in "${BOOT_ORDER[@]}"; do - if ! is_running "$service"; then - log_warn "$service 已停止,尝试重启..." - start_service "$service" - fi - done - done -} - -# 主入口 -case "${1:-help}" in - start-all) - start_all - ;; - stop-all) - stop_all - ;; - start) - if [ -z "$2" ]; then - log_error "请指定服务名" - exit 1 - fi - start_service "$2" - ;; - stop) - if [ -z "$2" ]; then - log_error "请指定服务名" - exit 1 - fi - stop_service "$2" - ;; - restart) - if [ -z "$2" ]; then - log_error "请指定服务名" - exit 1 - fi - restart_service "$2" - ;; - status) - show_status - ;; - logs) - if [ -z "$2" ]; then - log_error "请指定服务名" - exit 1 - fi - show_logs "$2" - ;; - *) - echo "Urban Lifeline 服务管理" - echo "" - echo "用法: $0 <命令> [服务名]" - echo "" - echo "命令:" - echo " start-all 启动所有服务" - echo " stop-all 停止所有服务" - echo " start <服务> 启动指定服务" - echo " stop <服务> 停止指定服务" - echo " restart <服务> 重启指定服务" - echo " status 查看服务状态" - echo " logs <服务> 查看服务日志" - echo "" - echo "可用服务: ${!SERVICES[*]}" - ;; -esac diff --git a/docker/urbanLifeline/web/.env.example b/docker/urbanLifeline/web/.env.example deleted file mode 100644 index 29ff3ee3..00000000 --- a/docker/urbanLifeline/web/.env.example +++ /dev/null @@ -1,41 +0,0 @@ -# ================================================ -# Urban Lifeline - 前端环境变量配置 -# -# 使用方法: -# 1. 复制此文件为 .env -# 2. 修改配置值 -# 3. docker-compose 会自动加载 -# -# 应用配置: -# 修改 config/app-config-*.js 文件,重启容器生效 -# - config/app-config-platform.js -# - config/app-config-workcase.js -# - config/app-config-bidding.js -# ================================================ - -# ============================================ -# 目录配置 -# ============================================ -CONFIG_ROOT=./config -LOG_ROOT=./volumes/logs -DATA_ROOT=./volumes/data - -# ============================================ -# 镜像版本 -# ============================================ -IMAGE_VERSION=latest - -# ============================================ -# 端口配置 -# ============================================ -SHARED_PORT=8000 -PLATFORM_PORT=8001 -WORKCASE_PORT=8002 -BIDDING_PORT=8003 -WORKCASE_WECHAT_PORT=8004 - -# ============================================ -# 资源限制 -# ============================================ -MEMORY_LIMIT=512M -MEMORY_RESERVATION=128M diff --git a/docker/urbanLifeline/web/Dockerfile.web b/docker/urbanLifeline/web/Dockerfile.web deleted file mode 100644 index fb1f0243..00000000 --- a/docker/urbanLifeline/web/Dockerfile.web +++ /dev/null @@ -1,66 +0,0 @@ -# ================================================ -# Urban Lifeline - All-in-One 前端镜像 -# 使用 Node.js 静态服务器,端口可配置 -# -# 构建: docker build -t urban-lifeline-web:latest -f Dockerfile.web . -# ================================================ -FROM node:20-alpine - -ENV TZ=Asia/Shanghai - -RUN apk add --no-cache tzdata curl bash sed gettext \ - && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ - && echo "Asia/Shanghai" > /etc/timezone - -# 安装静态文件服务器 -RUN npm install -g serve - -WORKDIR /app - -# 复制管理脚本 -COPY docker/urbanLifeline/web/web-manager.sh /app/web-manager.sh -RUN chmod +x /app/web-manager.sh - -# 复制 shared 公共模块 (Module Federation 远程模块,必须最先启动) -COPY urbanLifelineWeb/packages/shared/dist/ /app/sites/shared/ - -# 复制所有前端构建产物 -COPY urbanLifelineWeb/packages/platform/dist/ /app/sites/platform/ -COPY urbanLifelineWeb/packages/workcase/dist/ /app/sites/workcase/ -COPY urbanLifelineWeb/packages/bidding/dist/ /app/sites/bidding/ -# COPY urbanLifelineWeb/packages/workcase_wechat/dist/ /app/sites/workcase_wechat/ - -# ============================================ -# 端口配置 (可通过环境变量覆盖) -# ============================================ -ENV SHARED_PORT=8000 \ - PLATFORM_PORT=8001 \ - WORKCASE_PORT=8002 \ - BIDDING_PORT=8003 - # WORKCASE_WECHAT_PORT=8004 - -# ============================================ -# 应用配置环境变量(可通过 docker-compose 覆盖) -# ============================================ -ENV APP_ENV=production \ - API_BASE_URL=/api \ - PUBLIC_PATH=/ \ - SSO_PLATFORM_URL=/ \ - SSO_WORKCASE_URL=/workcase \ - SSO_BIDDING_URL=/bidding \ - AES_SECRET_KEY=MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI= \ - JITSI_SERVER_URL=https://meet.example.com \ - AI_DEFAULT_AGENT_ID=17664699513920001 \ - FILE_MAX_SIZE=100 \ - ENABLE_DEBUG=false - -# 配置和日志目录 (可外挂) -VOLUME ["/app/config", "/app/logs"] - -EXPOSE 8000 8001 8002 8003 8004 - -HEALTHCHECK --interval=30s --timeout=10s --start-period=30s --retries=3 \ - CMD curl -f http://localhost:${SHARED_PORT}/ || exit 1 - -ENTRYPOINT ["/app/web-manager.sh"] -CMD ["start-all"] diff --git a/docker/urbanLifeline/web/build.sh b/docker/urbanLifeline/web/build.sh deleted file mode 100644 index b004792f..00000000 --- a/docker/urbanLifeline/web/build.sh +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/bash -# ================================================ -# Urban Lifeline - 前端镜像构建脚本 -# -# 使用方式: -# ./build.sh # 构建 All-in-One 镜像 -# ================================================ - -set -e - -# 项目根目录 (相对于此脚本) -PROJECT_ROOT="$(cd "$(dirname "$0")/../../.." && pwd)" -cd "$PROJECT_ROOT" - -# 镜像版本 -VERSION=${IMAGE_VERSION:-latest} - -# 前端站点列表 -SITES=(shared platform workcase bidding workcase_wechat) - -# 构建 All-in-One 镜像 -build() { - echo "==========================================" - echo "构建 All-in-One 前端镜像: urban-lifeline-web:${VERSION}" - echo "==========================================" - - # 检查所有 dist 目录 - local missing=0 - for site in "${SITES[@]}"; do - if [ ! -d "urbanLifelineWeb/packages/${site}/dist" ]; then - echo "缺少: urbanLifelineWeb/packages/${site}/dist" - missing=1 - fi - done - - if [ $missing -eq 1 ]; then - echo "" - echo "请先执行前端构建:" - echo " cd urbanLifelineWeb && pnpm build" - exit 1 - fi - - docker build -t urban-lifeline-web:${VERSION} \ - -f docker/urbanLifeline/web/Dockerfile.web . - - if [ "$VERSION" != "latest" ]; then - docker tag urban-lifeline-web:${VERSION} urban-lifeline-web:latest - fi - - echo "==========================================" - echo "镜像构建完成!" - echo "" - echo "管理服务:" - echo " docker exec urban-lifeline-web /app/web-manager.sh status" - echo " docker exec urban-lifeline-web /app/web-manager.sh restart platform" - echo "==========================================" -} - -build diff --git a/docker/urbanLifeline/web/config/app-config-bidding.js b/docker/urbanLifeline/web/config/app-config-bidding.js deleted file mode 100644 index 38611a42..00000000 --- a/docker/urbanLifeline/web/config/app-config-bidding.js +++ /dev/null @@ -1,62 +0,0 @@ -/** - * @description Bidding 运行时配置 (Docker 部署用) - * - * 域名: https://192.168.130.131 - * 修改此文件后重启容器生效 - */ - -window.APP_RUNTIME_CONFIG = { - // 环境标识 - env: 'production', - - // API 配置 - api: { - baseUrl: '/urban-lifeline', - timeout: 30000 - }, - - // 应用基础路径 - baseUrl: '/bidding/', - - // 文件配置 - file: { - downloadUrl: '/urban-lifeline/file/download/', - uploadUrl: '/urban-lifeline/file/upload', - maxSize: { - image: 5, - video: 100, - document: 10 - }, - acceptTypes: { - image: 'image/*', - video: 'video/*', - document: '.pdf,.doc,.docx,.xls,.xlsx,.ppt,.pptx' - } - }, - - // Token 配置 - token: { - key: 'token', - refreshThreshold: 300000 - }, - - // 公共资源路径 - publicImgPath: '/bidding/img', - publicWebPath: '/bidding', - - // 单点登录配置 - sso: { - platformUrl: 'https://192.168.130.131/platform/', - workcaseUrl: 'https://192.168.130.131/workcase/', - biddingUrl: 'https://192.168.130.131/bidding/' - }, - - // AES 加密密钥 - aesSecretKey: 'MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=', - - // 功能开关 - features: { - enableDebug: false, - enableMockData: false - } -}; diff --git a/docker/urbanLifeline/web/config/app-config-platform.js b/docker/urbanLifeline/web/config/app-config-platform.js deleted file mode 100644 index 2769933a..00000000 --- a/docker/urbanLifeline/web/config/app-config-platform.js +++ /dev/null @@ -1,62 +0,0 @@ -/** - * @description Platform 运行时配置 (Docker 部署用) - * - * 域名: https://192.168.130.131 - * 修改此文件后重启容器生效 - */ - -window.APP_RUNTIME_CONFIG = { - // 环境标识 - env: 'production', - - // API 配置 - api: { - baseUrl: '/urban-lifeline', - timeout: 30000 - }, - - // 应用基础路径 - baseUrl: '/platform/', - - // 文件配置 - file: { - downloadUrl: '/urban-lifeline/file/download/', - uploadUrl: '/urban-lifeline/file/upload', - maxSize: { - image: 5, - video: 100, - document: 10 - }, - acceptTypes: { - image: 'image/*', - video: 'video/*', - document: '.pdf,.doc,.docx,.xls,.xlsx,.ppt,.pptx' - } - }, - - // Token 配置 - token: { - key: 'token', - refreshThreshold: 300000 - }, - - // 公共资源路径 - publicImgPath: '/platform/img', - publicWebPath: '/platform', - - // 单点登录配置 - sso: { - platformUrl: 'https://192.168.130.131/platform/', - workcaseUrl: 'https://192.168.130.131/workcase/', - biddingUrl: 'https://192.168.130.131/bidding/' - }, - - // AES 加密密钥 - aesSecretKey: 'MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=', - - // 功能开关 - features: { - enableDebug: false, - enableMockData: false - } -}; diff --git a/docker/urbanLifeline/web/config/app-config-shared.js b/docker/urbanLifeline/web/config/app-config-shared.js deleted file mode 100644 index 6cd2d15b..00000000 --- a/docker/urbanLifeline/web/config/app-config-shared.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * Shared 运行时配置 (Docker 部署) - * 此文件会被挂载到容器中,覆盖构建时的默认配置 - */ -window.APP_RUNTIME_CONFIG = { - // 环境标识 - env: 'production', - - // API 配置 - api: { - baseUrl: '/urban-lifeline', - timeout: 30000 - }, - - // 应用基础路径 - baseUrl: '/shared/', - - // 文件配置 - file: { - downloadUrl: '/urban-lifeline/file/download/', - uploadUrl: '/urban-lifeline/file/upload', - maxSize: { - image: 5, - video: 100, - document: 10 - }, - acceptTypes: { - image: 'image/*', - video: 'video/*', - document: '.pdf,.doc,.docx,.xls,.xlsx,.ppt,.pptx' - } - }, - - // Token 配置 - token: { - key: 'token', - refreshThreshold: 300000 - }, - - // 公共资源路径 - publicImgPath: '/shared/img', - publicWebPath: '/shared', - - // 单点登录配置 - sso: { - platformUrl: 'https://192.168.130.131/platform/', - workcaseUrl: 'https://192.168.130.131/workcase/', - biddingUrl: 'https://192.168.130.131/bidding/' - }, - - // 功能开关 - features: { - enableDebug: false, - enableMockData: false - } -}; diff --git a/docker/urbanLifeline/web/config/app-config-workcase.js b/docker/urbanLifeline/web/config/app-config-workcase.js deleted file mode 100644 index e8181e9f..00000000 --- a/docker/urbanLifeline/web/config/app-config-workcase.js +++ /dev/null @@ -1,72 +0,0 @@ -/** - * @description Workcase 运行时配置 (Docker 部署用) - * - * 域名: https://192.168.130.131 - * 修改此文件后重启容器生效 - */ - -window.APP_RUNTIME_CONFIG = { - // 环境标识 - env: 'production', - - // API 配置 - api: { - baseUrl: '/urban-lifeline', - timeout: 30000 - }, - - // 应用基础路径 - baseUrl: '/workcase/', - - // 文件配置 - file: { - downloadUrl: '/urban-lifeline/file/download/', - uploadUrl: '/urban-lifeline/file/upload', - maxSize: { - image: 5, - video: 100, - document: 10, - default: 100 * 1024 * 1024 - }, - acceptTypes: { - image: 'image/*', - video: 'video/*', - document: '.pdf,.doc,.docx,.xls,.xlsx,.ppt,.pptx' - } - }, - - // Token 配置 - token: { - key: 'token', - refreshThreshold: 300000 - }, - - // 公共资源路径 - publicImgPath: '/workcase/img', - publicWebPath: '/workcase', - - // 单点登录配置 - sso: { - platformUrl: 'https://192.168.130.131/platform/', - workcaseUrl: 'https://192.168.130.131/workcase/', - biddingUrl: 'https://192.168.130.131/bidding/' - }, - - // AES 加密密钥 - aesSecretKey: 'MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=', - - // Jitsi 视频会议配置 - jitsi: { - serverUrl: 'https://demo-jitsi.tensorgrove.com' - }, - // AI 配置 - ai: { - defaultAgentId: '17678420499370001' // 默认 AI Agent ID - }, - - // 功能开关 - features: { - enableDebug: false, - enableMockData: false - } -}; diff --git a/docker/urbanLifeline/web/docker-compose.yml b/docker/urbanLifeline/web/docker-compose.yml deleted file mode 100644 index e74efb04..00000000 --- a/docker/urbanLifeline/web/docker-compose.yml +++ /dev/null @@ -1,51 +0,0 @@ -# ================================================ -# Urban Lifeline - All-in-One 前端部署 -# 单容器运行所有前端应用 -# ================================================ - -services: - urban-lifeline-web: - image: urban-lifeline-web:${IMAGE_VERSION:-latest} - container_name: urban-lifeline-web - restart: unless-stopped - env_file: - - .env - networks: - - urban-lifeline - # 不对外暴露端口,仅通过 nginx 反向代理访问 - expose: - - "8000" - - "8001" - - "8002" - - "8003" - - "8004" - environment: - TZ: Asia/Shanghai - SHARED_PORT: ${SHARED_PORT:-8000} - PLATFORM_PORT: ${PLATFORM_PORT:-8001} - WORKCASE_PORT: ${WORKCASE_PORT:-8002} - BIDDING_PORT: ${BIDDING_PORT:-8003} - WORKCASE_WECHAT_PORT: ${WORKCASE_WECHAT_PORT:-8004} - volumes: - # 配置文件目录 (app-config-*.js) - - ${CONFIG_ROOT:-./config}:/app/config:ro - # 日志目录 - - ${LOG_ROOT:-./volumes/logs}:/app/logs - # 数据目录 (静态资源等) - - ${DATA_ROOT:-./volumes/data}:/app/data - deploy: - resources: - limits: - memory: ${MEMORY_LIMIT:-512M} - reservations: - memory: ${MEMORY_RESERVATION:-128M} - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8000/"] - interval: 30s - timeout: 10s - retries: 3 - start_period: 30s - -networks: - urban-lifeline: - name: urban-lifeline diff --git a/docker/urbanLifeline/web/web-manager.sh b/docker/urbanLifeline/web/web-manager.sh deleted file mode 100644 index e2cea06c..00000000 --- a/docker/urbanLifeline/web/web-manager.sh +++ /dev/null @@ -1,314 +0,0 @@ -#!/bin/bash -# ================================================ -# Urban Lifeline - 前端服务管理脚本 -# -# 用法: -# ./web-manager.sh start-all # 启动所有前端 -# ./web-manager.sh start platform # 启动单个前端 -# ./web-manager.sh stop platform # 停止单个前端 -# ./web-manager.sh restart platform # 重启单个前端 -# ./web-manager.sh status # 查看状态 -# ================================================ - -set -e - -SITES_DIR="/app/sites" -PID_DIR="/app/pids" -LOG_DIR="/app/logs" -CONFIG_DIR="/app/config" - -mkdir -p "$PID_DIR" "$LOG_DIR" - -# ============================================ -# 配置处理函数 -# ============================================ - -# 同步挂载的配置文件到站点目录 -sync_mounted_config() { - local web=$1 - local mounted_config="${CONFIG_DIR}/app-config-${web}.js" - local site_config="${SITES_DIR}/${web}/app-config.js" - - if [ -f "$mounted_config" ]; then - log_info "同步挂载配置: $mounted_config -> $site_config" - cp "$mounted_config" "$site_config" - return 0 - else - log_warn "$web 没有挂载配置文件,使用构建默认配置" - return 1 - fi -} - -# 处理所有前端配置 -sync_all_configs() { - log_info "==========================================" - log_info " 同步前端配置文件" - log_info "==========================================" - - for web in "${BOOT_ORDER[@]}"; do - sync_mounted_config "$web" - done - - log_info "配置同步完成" -} - -# 前端配置: 名称=端口环境变量名:默认端口 -declare -A WEBS=( - ["shared"]="SHARED_PORT:8000" - ["platform"]="PLATFORM_PORT:8001" - ["workcase"]="WORKCASE_PORT:8002" - # ["bidding"]="BIDDING_PORT:8003" - # ["workcase_wechat"]="WORKCASE_WECHAT_PORT:8004" -) - -# shared 必须最先启动 (其他模块依赖它) -# BOOT_ORDER=(shared platform workcase bidding workcase_wechat) -BOOT_ORDER=(shared platform workcase) - -# 颜色 -RED='\033[0;31m' -GREEN='\033[0;32m' -YELLOW='\033[1;33m' -NC='\033[0m' - -log_info() { echo -e "${GREEN}[INFO]${NC} $1"; } -log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; } -log_error() { echo -e "${RED}[ERROR]${NC} $1"; } - -# 获取端口 -get_port() { - local web=$1 - local config=${WEBS[$web]} - local env_name=$(echo "$config" | cut -d: -f1) - local default_port=$(echo "$config" | cut -d: -f2) - echo "${!env_name:-$default_port}" -} - -# 检查是否运行 -is_running() { - local web=$1 - local pid_file="${PID_DIR}/${web}.pid" - - if [ -f "$pid_file" ]; then - local pid=$(cat "$pid_file") - if kill -0 "$pid" 2>/dev/null; then - return 0 - fi - fi - return 1 -} - -# 等待服务就绪 -wait_for_web() { - local web=$1 - local port=$(get_port "$web") - local max_wait=30 - local count=0 - - while [ $count -lt $max_wait ]; do - if curl -sf "http://localhost:${port}/" > /dev/null 2>&1; then - return 0 - fi - sleep 1 - count=$((count + 1)) - done - return 1 -} - -# 启动单个前端 -start_web() { - local web=$1 - local skip_config=$2 - local port=$(get_port "$web") - local site_dir="${SITES_DIR}/${web}" - local pid_file="${PID_DIR}/${web}.pid" - local log_file="${LOG_DIR}/${web}.log" - - if [ ! -d "$site_dir" ]; then - log_error "站点目录不存在: $site_dir" - return 1 - fi - - if is_running "$web"; then - log_warn "$web 已在运行 (PID: $(cat $pid_file))" - return 0 - fi - - # 同步配置 (除非已经批量同步过) - if [ "$skip_config" != "skip_config" ]; then - sync_mounted_config "$web" - fi - - log_info "启动 $web (端口: $port)..." - - # 使用 serve 启动静态服务,--single 确保SPA路由正确处理 - nohup serve -s "$site_dir" -l "$port" --single > "$log_file" 2>&1 & - local pid=$! - echo $pid > "$pid_file" - - log_info "$web 已启动 (PID: $pid)" -} - -# 停止单个前端 -stop_web() { - local web=$1 - local pid_file="${PID_DIR}/${web}.pid" - - if ! is_running "$web"; then - log_warn "$web 未在运行" - return 0 - fi - - local pid=$(cat "$pid_file") - log_info "停止 $web (PID: $pid)..." - - kill -15 "$pid" 2>/dev/null || true - - local count=0 - while [ $count -lt 10 ] && kill -0 "$pid" 2>/dev/null; do - sleep 1 - count=$((count + 1)) - done - - if kill -0 "$pid" 2>/dev/null; then - kill -9 "$pid" 2>/dev/null || true - fi - - rm -f "$pid_file" - log_info "$web 已停止" -} - -# 重启 -restart_web() { - local web=$1 - stop_web "$web" - sleep 1 - start_web "$web" -} - -# 启动所有 -start_all() { - log_info "==========================================" - log_info " Urban Lifeline - 启动所有前端" - log_info "==========================================" - - # 同步所有挂载的配置文件 - sync_all_configs - - for web in "${BOOT_ORDER[@]}"; do - start_web "$web" "skip_config" - - log_info "等待 $web 就绪..." - if wait_for_web "$web"; then - log_info "$web 已就绪 ✓" - else - log_warn "$web 健康检查超时" - fi - done - - log_info "==========================================" - log_info " 所有前端启动完成" - log_info "==========================================" - - show_status - monitor_webs -} - -# 停止所有 -stop_all() { - log_info "停止所有前端..." - for web in "${BOOT_ORDER[@]}"; do - stop_web "$web" - done -} - -# 状态 -show_status() { - echo "" - echo "==========================================" - echo " Urban Lifeline 前端状态" - echo "==========================================" - printf "%-18s %-8s %-8s %-10s\n" "站点" "端口" "PID" "状态" - echo "------------------------------------------" - - for web in "${BOOT_ORDER[@]}"; do - local port=$(get_port "$web") - local pid_file="${PID_DIR}/${web}.pid" - local pid="-" - local status="${RED}停止${NC}" - - if [ -f "$pid_file" ]; then - pid=$(cat "$pid_file") - if kill -0 "$pid" 2>/dev/null; then - status="${GREEN}运行中${NC}" - fi - fi - - printf "%-18s %-8s %-8s " "$web" "$port" "$pid" - echo -e "$status" - done - echo "==========================================" -} - -# 监控 -monitor_webs() { - log_info "进入监控模式..." - trap 'stop_all; exit 0' SIGTERM SIGINT - - while true; do - sleep 30 - for web in "${BOOT_ORDER[@]}"; do - if ! is_running "$web"; then - log_warn "$web 已停止,尝试重启..." - start_web "$web" - fi - done - done -} - -# 主入口 -case "${1:-help}" in - start-all) - start_all - ;; - stop-all) - stop_all - ;; - start) - [ -z "$2" ] && { log_error "请指定站点名"; exit 1; } - start_web "$2" - ;; - stop) - [ -z "$2" ] && { log_error "请指定站点名"; exit 1; } - stop_web "$2" - ;; - restart) - [ -z "$2" ] && { log_error "请指定站点名"; exit 1; } - restart_web "$2" - ;; - status) - show_status - ;; - *) - echo "Urban Lifeline 前端管理" - echo "" - echo "用法: $0 <命令> [站点名]" - echo "" - echo "命令:" - echo " start-all 启动所有前端" - echo " stop-all 停止所有前端" - echo " start <站点> 启动指定站点" - echo " stop <站点> 停止指定站点" - echo " restart <站点> 重启指定站点" - echo " status 查看状态" - echo "" - echo "可用站点: ${!WEBS[*]}" - echo "" - echo "端口配置 (环境变量):" - echo " SHARED_PORT 默认 8000 (公共模块,必须最先启动)" - echo " PLATFORM_PORT 默认 8001" - echo " WORKCASE_PORT 默认 8002" - echo " BIDDING_PORT 默认 8003" - echo " WORKCASE_WECHAT_PORT 默认 8004" - ;; -esac diff --git a/docker/域名.md b/docker/域名.md deleted file mode 100644 index 4391da1f..00000000 --- a/docker/域名.md +++ /dev/null @@ -1,9 +0,0 @@ -- dify: https://demo-dify.tensorgrove.com - -- minio: https://demo-minio.tensorgrove.com - -- jitsi: https://demo-jitsi.tensorgrove.com - -- nacos: https://demo-nacos.tensorgrove.com - -- urbanLifeline: https://demo-urbanlifeline.tensorgrove.com \ No newline at end of file diff --git a/docs/AI训练资料/2.pdf b/docs/AI训练资料/2.pdf new file mode 100644 index 00000000..eccbb822 Binary files /dev/null and b/docs/AI训练资料/2.pdf differ diff --git a/docs/AI训练资料/MTU机组操作说明.pdf b/docs/AI训练资料/MTU机组操作说明.pdf new file mode 100644 index 00000000..57747a65 Binary files /dev/null and b/docs/AI训练资料/MTU机组操作说明.pdf differ diff --git a/docs/AI训练资料/MTU机组维护计划.pdf b/docs/AI训练资料/MTU机组维护计划.pdf new file mode 100644 index 00000000..4de6fc38 Binary files /dev/null and b/docs/AI训练资料/MTU机组维护计划.pdf differ diff --git a/docs/AI训练资料/THL系列柴油发电机组 使用维护说明书-中文-终稿.pdf b/docs/AI训练资料/THL系列柴油发电机组 使用维护说明书-中文-终稿.pdf new file mode 100644 index 00000000..a818aef6 Binary files /dev/null and b/docs/AI训练资料/THL系列柴油发电机组 使用维护说明书-中文-终稿.pdf differ diff --git a/docs/AI训练资料/丹控控制器/agc-150-generator-mains-btb-designers-handbook-4189341307-cn.pdf b/docs/AI训练资料/丹控控制器/agc-150-generator-mains-btb-designers-handbook-4189341307-cn.pdf new file mode 100644 index 00000000..c1c9ec6c Binary files /dev/null and b/docs/AI训练资料/丹控控制器/agc-150-generator-mains-btb-designers-handbook-4189341307-cn.pdf differ diff --git a/docs/AI训练资料/丹控控制器/agc-150-modbus-tables-4189341212-中文.xlsx b/docs/AI训练资料/丹控控制器/agc-150-modbus-tables-4189341212-中文.xlsx new file mode 100644 index 00000000..d550cd2b Binary files /dev/null and b/docs/AI训练资料/丹控控制器/agc-150-modbus-tables-4189341212-中文.xlsx differ diff --git a/docs/AI训练资料/丹控控制器/agc-4-modbus-tables-4189341215-中文.xlsx b/docs/AI训练资料/丹控控制器/agc-4-modbus-tables-4189341215-中文.xlsx new file mode 100644 index 00000000..aaf7b9c6 Binary files /dev/null and b/docs/AI训练资料/丹控控制器/agc-4-modbus-tables-4189341215-中文.xlsx differ diff --git a/docs/AI训练资料/丹控控制器/agc-4-操作手册-4189340690-中文.pdf b/docs/AI训练资料/丹控控制器/agc-4-操作手册-4189340690-中文.pdf new file mode 100644 index 00000000..9e8ff8a4 Binary files /dev/null and b/docs/AI训练资料/丹控控制器/agc-4-操作手册-4189340690-中文.pdf differ diff --git a/docs/AI训练资料/丹控控制器/sgc_420_421_用户手册_4189341227_-中文.pdf b/docs/AI训练资料/丹控控制器/sgc_420_421_用户手册_4189341227_-中文.pdf new file mode 100644 index 00000000..f49dfa2b Binary files /dev/null and b/docs/AI训练资料/丹控控制器/sgc_420_421_用户手册_4189341227_-中文.pdf differ diff --git a/docs/AI训练资料/丹控控制器/sgc_420通讯协议.pdf b/docs/AI训练资料/丹控控制器/sgc_420通讯协议.pdf new file mode 100644 index 00000000..86fe33fd Binary files /dev/null and b/docs/AI训练资料/丹控控制器/sgc_420通讯协议.pdf differ diff --git a/docs/AI训练资料/众智控制器/HGM6100N_HGM6100CAN_Protocol_cn.pdf b/docs/AI训练资料/众智控制器/HGM6100N_HGM6100CAN_Protocol_cn.pdf new file mode 100644 index 00000000..6aed882b Binary files /dev/null and b/docs/AI训练资料/众智控制器/HGM6100N_HGM6100CAN_Protocol_cn.pdf differ diff --git a/docs/AI训练资料/众智控制器/HGM6110CAN_6120CAN_cn.pdf b/docs/AI训练资料/众智控制器/HGM6110CAN_6120CAN_cn.pdf new file mode 100644 index 00000000..ed6d0ccb Binary files /dev/null and b/docs/AI训练资料/众智控制器/HGM6110CAN_6120CAN_cn.pdf differ diff --git a/docs/AI训练资料/众智控制器/HGM6110N_6120N_6110NC_6120NC_cn.pdf b/docs/AI训练资料/众智控制器/HGM6110N_6120N_6110NC_6120NC_cn.pdf new file mode 100644 index 00000000..66a24b0d Binary files /dev/null and b/docs/AI训练资料/众智控制器/HGM6110N_6120N_6110NC_6120NC_cn.pdf differ diff --git a/docs/AI训练资料/众智控制器/HGM9300MPU(CAN)_Protocol_cn.pdf b/docs/AI训练资料/众智控制器/HGM9300MPU(CAN)_Protocol_cn.pdf new file mode 100644 index 00000000..db5a07e9 Binary files /dev/null and b/docs/AI训练资料/众智控制器/HGM9300MPU(CAN)_Protocol_cn.pdf differ diff --git a/docs/AI训练资料/众智控制器/HGM9310MPU_9320MPU_9310CAN_9320CAN_cn.pdf b/docs/AI训练资料/众智控制器/HGM9310MPU_9320MPU_9310CAN_9320CAN_cn.pdf new file mode 100644 index 00000000..b362994f Binary files /dev/null and b/docs/AI训练资料/众智控制器/HGM9310MPU_9320MPU_9310CAN_9320CAN_cn.pdf differ diff --git a/docs/AI训练资料/众智控制器/HGM9510N_HGM9520N_HGM9530N_Protocol_cn.pdf b/docs/AI训练资料/众智控制器/HGM9510N_HGM9520N_HGM9530N_Protocol_cn.pdf new file mode 100644 index 00000000..5ebfac00 Binary files /dev/null and b/docs/AI训练资料/众智控制器/HGM9510N_HGM9520N_HGM9530N_Protocol_cn.pdf differ diff --git a/docs/AI训练资料/众智控制器/HGM9510N_HGM9530N_cn.pdf b/docs/AI训练资料/众智控制器/HGM9510N_HGM9530N_cn.pdf new file mode 100644 index 00000000..ef576a5a Binary files /dev/null and b/docs/AI训练资料/众智控制器/HGM9510N_HGM9530N_cn.pdf differ diff --git a/docs/AI训练资料/众智控制器/HGM9510_HGM9520_HGM9530_Protocol_cn.pdf b/docs/AI训练资料/众智控制器/HGM9510_HGM9520_HGM9530_Protocol_cn.pdf new file mode 100644 index 00000000..b9cc9c6b Binary files /dev/null and b/docs/AI训练资料/众智控制器/HGM9510_HGM9520_HGM9530_Protocol_cn.pdf differ diff --git a/docs/AI训练资料/众智控制器/HGM9510_cn.pdf b/docs/AI训练资料/众智控制器/HGM9510_cn.pdf new file mode 100644 index 00000000..7f39e232 Binary files /dev/null and b/docs/AI训练资料/众智控制器/HGM9510_cn.pdf differ diff --git a/docs/AI训练资料/利莱森玛电机说明书.pdf b/docs/AI训练资料/利莱森玛电机说明书.pdf new file mode 100644 index 00000000..eccbb822 Binary files /dev/null and b/docs/AI训练资料/利莱森玛电机说明书.pdf differ diff --git a/docs/AI训练资料/深海控制器/DSE7320 MKII Modbus 通讯地址点表~20250326等文件.tar b/docs/AI训练资料/深海控制器/DSE7320 MKII Modbus 通讯地址点表~20250326等文件.tar new file mode 100644 index 00000000..72982878 Binary files /dev/null and b/docs/AI训练资料/深海控制器/DSE7320 MKII Modbus 通讯地址点表~20250326等文件.tar differ diff --git a/docs/AI训练资料/深海控制器/DSE7320 MKII.tar b/docs/AI训练资料/深海控制器/DSE7320 MKII.tar new file mode 100644 index 00000000..66e7260e Binary files /dev/null and b/docs/AI训练资料/深海控制器/DSE7320 MKII.tar differ diff --git a/docs/AI训练资料/深海控制器/DSE8610.tar b/docs/AI训练资料/深海控制器/DSE8610.tar new file mode 100644 index 00000000..0819cf78 Binary files /dev/null and b/docs/AI训练资料/深海控制器/DSE8610.tar differ diff --git a/docs/AI训练资料/深海控制器/常见故障处理.tar b/docs/AI训练资料/深海控制器/常见故障处理.tar new file mode 100644 index 00000000..7b4db0e4 Binary files /dev/null and b/docs/AI训练资料/深海控制器/常见故障处理.tar differ diff --git a/docs/AI训练资料/深海控制器/浮充电器故障指示信息.xlsx b/docs/AI训练资料/深海控制器/浮充电器故障指示信息.xlsx new file mode 100644 index 00000000..59242f0e Binary files /dev/null and b/docs/AI训练资料/深海控制器/浮充电器故障指示信息.xlsx differ diff --git a/docs/AI训练资料/科迈控制/IG200通讯点表.txt b/docs/AI训练资料/科迈控制/IG200通讯点表.txt new file mode 100644 index 00000000..8ed61b6e --- /dev/null +++ b/docs/AI训练资料/科迈控制/IG200通讯点表.txt @@ -0,0 +1,2147 @@ +HEADER +======================================================================================================================================================================================== +Format: 2.3 +LongNamesLength: 64 - Name, Name of State, Name of Value, Bit Name, Group +ShortNamesLength: 10 - Dimension, Type +======================================================================================================================================================================================== +======================================================================================================================================================================================== + Table: Binaries +======================================================================================================================================================================================== + +Allowed MODBUS functions: 01, 02 + +Addresses Source +Modbus Addr. = Value C.O.# Name of Value Bit # Bit Name Group / Subgroup +Prot. Addr. = State State # Name of State Activated by protection(s): +======================================================================================================================================================================================== +00000 Value 8235 开关量输入 1 GCB反馈 控制器I/O口 +00001 Value 8235 开关量输入 2 MCB反馈 控制器I/O口 +00002 Not Used +00003 Value 8235 开关量输入 4 存取锁 控制器I/O口 +00004 Value 8235 开关量输入 5 远程关 控制器I/O口 +00005 Value 8235 开关量输入 6 远程测试 控制器I/O口 +00006 Value 8235 开关量输入 7 禁止停机 控制器I/O口 +00007 Not Used +00008 Value 8239 开关量输出 1 起动马达 控制器I/O口 +00009 Value 8239 开关量输出 2 燃油阀 控制器I/O口 +00010 Value 8239 开关量输出 3 GCB合/分 控制器I/O口 +00011 Value 8239 开关量输出 4 MCB合/分 控制器I/O口 +00012 Value 8239 开关量输出 5 预起动 控制器I/O口 +00013 Value 8239 开关量输出 6 可以加载 控制器I/O口 +00014 Value 8239 开关量输出 7 警告 控制器I/O口 +00015 Not Used +00016 Value 10034 ECU状态 1 ECU黄灯 发动机 +00017 Value 10034 ECU状态 2 ECU红灯 发动机 +00018 Value 10034 ECU状态 3 ECU等待起动中 发动机 +00019 Not Used +00020 Value 9143 Log开关量输出1 2 起动马达 开关量输出日志 +00021 Value 9143 Log开关量输出1 3 燃油阀 开关量输出日志 +00022 Value 9143 Log开关量输出1 4 停机阀 开关量输出日志 +00023 Value 9143 Log开关量输出1 5 停机脉冲 开关量输出日志 +00024 Value 9143 Log开关量输出1 6 点火 开关量输出日志 +00025 Value 9143 Log开关量输出1 7 预起动 开关量输出日志 +00026 Value 9143 Log开关量输出1 8 冷却泵 开关量输出日志 +00027 Value 9143 Log开关量输出1 9 怠速/额定 开关量输出日志 +00028 Value 9143 Log开关量输出1 10 空气阀 开关量输出日志 +00029 Value 9143 Log开关量输出1 11 警告 开关量输出日志 +00030 Value 9143 Log开关量输出1 12 蜂鸣 开关量输出日志 +00031 Value 9143 Log开关量输出1 13 GCB合/分 开关量输出日志 +00032 Value 9143 Log开关量输出1 14 脉冲GCB合 开关量输出日志 +00033 Value 9143 Log开关量输出1 15 脉冲GCB分 开关量输出日志 +00034 Value 9143 Log开关量输出1 16 GCB失压线圈 开关量输出日志 +00035 Value 9144 Log开关量输出2 1 MCB合/分 开关量输出日志 +00036 Value 9144 Log开关量输出2 2 脉冲MCB合 开关量输出日志 +00037 Value 9144 Log开关量输出2 3 脉冲MCB分 开关量输出日志 +00038 Value 9144 Log开关量输出2 4 MCB失压线圈 开关量输出日志 +00039 Value 9144 Log开关量输出2 5 候命中 开关量输出日志 +00040 Value 9144 Log开关量输出2 6 可测市电自启动 开关量输出日志 +00041 Value 9144 Log开关量输出2 7 可以加载 开关量输出日志 +00042 Value 9144 Log开关量输出2 8 不在自动 开关量输出日志 +00043 Value 9144 Log开关量输出2 9 运行中 开关量输出日志 +00044 Value 9144 Log开关量输出2 10 冷却中 开关量输出日志 +00045 Value 9144 Log开关量输出2 11 加载 开关量输出日志 +00046 Value 9144 Log开关量输出2 12 FltRes Button Echo 开关量输出日志 +00047 Value 9144 Log开关量输出2 13 发电正常 开关量输出日志 +00048 Value 9144 Log开关量输出2 14 市电正常 开关量输出日志 +00049 Value 9144 Log开关量输出2 15 动作计时器1 开关量输出日志 +00050 Value 9144 Log开关量输出2 16 动作计时器2 开关量输出日志 +00051 Value 9145 Log开关量输出3 1 预热塞 开关量输出日志 +00052 Value 9145 Log开关量输出3 2 燃油泵 开关量输出日志 +00053 Value 9145 Log开关量输出3 3 温度开关 开关量输出日志 +00054 Value 9145 Log开关量输出3 4 功率开关 开关量输出日志 +00055 Value 9145 Log开关量输出3 5 维护保养1 开关量输出日志 +00056 Value 9145 Log开关量输出3 6 维护保养2 开关量输出日志 +00057 Value 9145 Log开关量输出3 7 维护保养3 开关量输出日志 +00058 Value 9145 Log开关量输出3 8 心跳 开关量输出日志 +00059 Value 9145 Log开关量输出3 9 点火启动 开关量输出日志 +00060 Value 9145 Log开关量输出3 10 手动候命 开关量输出日志 +00061 Value 9145 Log开关量输出3 11 预留 开关量输出日志 +00062 Value 9145 Log开关量输出3 12 关模式 开关量输出日志 +00063 Value 9145 Log开关量输出3 13 手动模式 开关量输出日志 +00064 Value 9145 Log开关量输出3 14 自动模式 开关量输出日志 +00065 Value 9145 Log开关量输出3 15 测试模式 开关量输出日志 +00066 Value 9145 Log开关量输出3 16 D+ 故障 开关量输出日志 +00067 Value 9146 Log开关量输出4 1 发电电压高 开关量输出日志 +00068 Value 9146 Log开关量输出4 2 发电机电压低 开关量输出日志 +00069 Value 9146 Log开关量输出4 3 发电电压警告 开关量输出日志 +00070 Value 9146 Log开关量输出4 4 发电电压 开关量输出日志 +00071 Value 9146 Log开关量输出4 5 发电机频率高 开关量输出日志 +00072 Value 9146 Log开关量输出4 6 发电机频率低 开关量输出日志 +00073 Value 9146 Log开关量输出4 7 发电频率警告 开关量输出日志 +00074 Value 9146 Log开关量输出4 8 发电频率 开关量输出日志 +00075 Value 9146 Log开关量输出4 9 市电失败 开关量输出日志 +00076 Value 9146 Log开关量输出4 10 市电频率 开关量输出日志 +00077 Value 9146 Log开关量输出4 11 市电电压 开关量输出日志 +00078 Value 9146 Log开关量输出4 12 过载分闸冷 开关量输出日志 +00079 Value 9146 Log开关量输出4 13 过载警告 开关量输出日志 +00080 Value 9146 Log开关量输出4 14 停机失败 开关量输出日志 +00081 Value 9146 Log开关量输出4 15 转速高警告 开关量输出日志 +00082 Value 9146 Log开关量输出4 16 转速低警告 开关量输出日志 +00083 Value 9147 Log开关量输出5 1 启动失败 开关量输出日志 +00084 Value 9147 Log开关量输出5 2 过流 开关量输出日志 +00085 Value 9147 Log开关量输出5 3 电池缺电报警 开关量输出日志 +00086 Value 9147 Log开关量输出5 4 AL Battery Charger 开关量输出日志 +00087 Value 9147 Log开关量输出5 5 电池电压报警 开关量输出日志 +00088 Value 9147 Log开关量输出5 6 接地故障 开关量输出日志 +00089 Value 9147 Log开关量输出5 7 公共警告 开关量输出日志 +00090 Value 9147 Log开关量输出5 8 公共报警停机 开关量输出日志 +00091 Value 9147 Log开关量输出5 9 公共报警BOC 开关量输出日志 +00092 Value 9147 Log开关量输出5 10 传感器断线报警 开关量输出日志 +00093 Value 9147 Log开关量输出5 11 预留 开关量输出日志 +00094 Value 9147 Log开关量输出5 12 公共警告慢停 开关量输出日志 +00095 Value 9147 Log开关量输出5 13 预留 开关量输出日志 +00096 Value 9147 Log开关量输出5 14 预留 开关量输出日志 +00097 Value 9147 Log开关量输出5 15 预留 开关量输出日志 +00098 Value 9147 Log开关量输出5 16 预留 开关量输出日志 +00099 Value 9148 Log开关量输出6 1 预留 开关量输出日志 +00100 Value 9148 Log开关量输出6 2 水温低报警 开关量输出日志 +00101 Value 9148 Log开关量输出6 3 ECU供电 开关量输出日志 +00102 Value 9148 Log开关量输出6 4 ECU停止运行 开关量输出日志 +00103 Value 9148 Log开关量输出6 5 预留 开关量输出日志 +00104 Value 9148 Log开关量输出6 6 预留 开关量输出日志 +00105 Value 9148 Log开关量输出6 7 禁止停机 开关量输出日志 +00106 Value 9148 Log开关量输出6 8 静态逻辑0 开关量输出日志 +00107 Value 9148 Log开关量输出6 9 静态逻辑1 开关量输出日志 +00108 Value 9148 Log开关量输出6 10 租赁计时1 开关量输出日志 +00109 Value 9148 Log开关量输出6 11 租赁计时2 开关量输出日志 +00110 Value 9148 Log开关量输出6 12 需要再生regen 开关量输出日志 +00111 Value 9148 Log开关量输出6 13 HEST 灯 开关量输出日志 +00112 Value 9148 Log开关量输出6 14 预留 开关量输出日志 +00113 Value 9148 Log开关量输出6 15 预留 开关量输出日志 +00114 Value 9148 Log开关量输出6 16 预留 开关量输出日志 +00115 Value 9149 Log开关量输出7 1 预留 开关量输出日志 +00116 Value 9149 Log开关量输出7 2 开关量1状态 开关量输出日志 +00117 Value 9149 Log开关量输出7 3 开关量2状态 开关量输出日志 +00118 Value 9149 Log开关量输出7 4 开关量3状态 开关量输出日志 +00119 Value 9149 Log开关量输出7 5 开关量4状态 开关量输出日志 +00120 Value 9149 Log开关量输出7 6 开关量5状态 开关量输出日志 +00121 Value 9149 Log开关量输出7 7 开关量6状态 开关量输出日志 +00122 Value 9149 Log开关量输出7 8 开关量7状态 开关量输出日志 +00123 Value 9149 Log开关量输出7 9 开关量8状态 开关量输出日志 +00124 Value 9149 Log开关量输出7 10 AIN1警告 开关量输出日志 +00125 Value 9149 Log开关量输出7 11 AIN2警告 开关量输出日志 +00126 Value 9149 Log开关量输出7 12 AIN3警告 开关量输出日志 +00127 Value 9149 Log开关量输出7 13 AIN4警告 开关量输出日志 +00128 Value 9149 Log开关量输出7 14 AIN1停机+分闸冷 开关量输出日志 +00129 Value 9149 Log开关量输出7 15 AIN2停机+分闸冷 开关量输出日志 +00130 Value 9149 Log开关量输出7 16 AIN3停机+分闸冷 开关量输出日志 +00131 Value 9150 Log开关量输出8 1 AIN4停机+分闸冷 开关量输出日志 +00132 Value 9150 Log开关量输出8 2 AIN1开关 开关量输出日志 +00133 Value 9150 Log开关量输出8 3 AIN2开关 开关量输出日志 +00134 Value 9150 Log开关量输出8 4 AIN3开关 开关量输出日志 +00135 Value 9150 Log开关量输出8 5 AIN4开关 开关量输出日志 +00136 Value 9150 Log开关量输出8 6 AIN5开关 开关量输出日志 +00137 Value 9150 Log开关量输出8 7 AIN6开关 开关量输出日志 +00138 Value 9150 Log开关量输出8 8 AIN7开关 开关量输出日志 +00139 Value 9150 Log开关量输出8 9 AIN8开关 开关量输出日志 +00140 Value 9150 Log开关量输出8 10 AIN9开关 开关量输出日志 +00141 Value 9150 Log开关量输出8 11 AIN10开关 开关量输出日志 +00142 Value 9150 Log开关量输出8 12 AIN11开关 开关量输出日志 +00143 Value 9150 Log开关量输出8 13 AIN12开关 开关量输出日志 +00144 Value 9150 Log开关量输出8 14 AIN13开关 开关量输出日志 +00145 Value 9150 Log开关量输出8 15 AIN14开关 开关量输出日志 +00146 Value 9150 Log开关量输出8 16 AIN15开关 开关量输出日志 +00147 Value 11896 Log开关量输出 1 AIN16开关 开关量输出日志 +00148 Value 11896 Log开关量输出 2 AIN17开关 开关量输出日志 +00149 Value 11896 Log开关量输出 3 AIN18开关 开关量输出日志 +00150 Value 11896 Log开关量输出 4 AIN19开关 开关量输出日志 +00151 Value 11896 Log开关量输出 5 AIN20开关 开关量输出日志 +00152 Value 11896 Log开关量输出 6 ECU通讯正常 开关量输出日志 +00153 Value 11896 Log开关量输出 7 ECU通讯故障 开关量输出日志 +00154 Value 11896 Log开关量输出 8 ECU红灯 开关量输出日志 +00155 Value 11896 Log开关量输出 9 ECU黄灯 开关量输出日志 +00156 Value 11896 Log开关量输出 10 油压警告 开关量输出日志 +00157 Value 11896 Log开关量输出 11 油压停机 开关量输出日志 +00158 Value 11896 Log开关量输出 12 水温警告 开关量输出日志 +00159 Value 11896 Log开关量输出 13 水温停机 开关量输出日志 +00160 Value 11896 Log开关量输出 14 燃油位警告 开关量输出日志 +00161 Value 11896 Log开关量输出 15 燃油位停机 开关量输出日志 +00162 Value 11896 Log开关量输出 16 围栏1报警 开关量输出日志 +00163 Value 11897 Log开关量输出10 1 围栏2报警 开关量输出日志 +00164 Value 11897 Log开关量输出10 2 预留 开关量输出日志 +00165 Value 11897 Log开关量输出10 3 预留 开关量输出日志 +00166 Value 11897 Log开关量输出10 4 预留 开关量输出日志 +00167 Value 11897 Log开关量输出10 5 预留 开关量输出日志 +00168 Value 11897 Log开关量输出10 6 预留 开关量输出日志 +00169 Value 11897 Log开关量输出10 7 预留 开关量输出日志 +00170 Value 11897 Log开关量输出10 8 速度升 开关量输出日志 +00171 Value 11897 Log开关量输出10 9 速度降 开关量输出日志 +00172 Value 11897 Log开关量输出10 10 AVR升 开关量输出日志 +00173 Value 11897 Log开关量输出10 11 AVR降 开关量输出日志 +00174 Value 11897 Log开关量输出10 12 中线合/分 开关量输出日志 +00175 Value 11897 Log开关量输出10 13 系统储备OK 开关量输出日志 +00176 Value 11898 Log开关量输出11 1 预留 开关量输出日志 +00177 Value 11898 Log开关量输出11 2 调峰激活 开关量输出日志 +00178 Value 11898 Log开关量输出11 3 预留 开关量输出日志 +00179 Value 11898 Log开关量输出11 4 预留 开关量输出日志 +00180 Value 11898 Log开关量输出11 5 预留 开关量输出日志 +00181 Value 11898 Log开关量输出11 6 预留 开关量输出日志 +00182 Value 11898 Log开关量输出11 7 负载分配阶段1 开关量输出日志 +00183 Value 11898 Log开关量输出11 8 负载分配阶段2 开关量输出日志 +00184 Value 11898 Log开关量输出11 9 负载分配阶段3 开关量输出日志 +00185 Value 11898 Log开关量输出11 10 频率选择 开关量输出日志 +00186 State 0 GCB 反馈 Level 1 +00187 State 0 GCB 反馈 Level 2 +00188 State 0 GCB 反馈 Sensor failure +00189 State 1 MCB 反馈 Level 1 +00190 State 1 MCB 反馈 Level 2 +00191 State 1 MCB 反馈 Sensor failure +00192 Not Used +00193 Not Used +00194 Not Used +00195 State 3 存取锁 Level 1 +00196 State 3 存取锁 Level 2 +00197 State 3 存取锁 Sensor failure +00198 State 4 远程关 Level 1 +00199 State 4 远程关 Level 2 +00200 State 4 远程关 Sensor failure +00201 State 5 远程测试 Level 1 +00202 State 5 远程测试 Level 2 +00203 State 5 远程测试 Sensor failure +00204 State 6 停机撤销 Level 1 +00205 State 6 停机撤销 Level 2 +00206 State 6 停机撤销 Sensor failure +00207 Not Used +00208 Not Used +00209 Not Used +00210 State 176 油压 Level 1 +00211 State 176 油压 Level 2 +00212 State 176 油压 Sensor failure +00213 State 177 冷却液温度 Level 1 +00214 State 177 冷却液温度 Level 2 +00215 State 177 冷却液温度 Sensor failure +00216 State 178 燃油油位 Level 1 +00217 State 178 燃油油位 Level 2 +00218 State 178 燃油油位 Sensor failure +00219 Not Used +00220 Not Used +00221 Not Used +00222 State 385 紧急停机 Level 2 +00223 State 479 紧急停机 Level 2 +00224 State 387 停机失败警告 Level 1 +00225 State 388 超速 Level 2 +00226 State 389 低速 Level 2 +00227 State 390 转速测量失败 Level 1 +00228 State 391 电池缺电 Level 2 +00229 State 396 MCB 故障 Level 1 +00230 State 397 GCB故障 Level 2 +00231 State 398 发电电压L1N Level 1 +00232 State 398 发电电压L1N Level 2 +00233 State 399 发电电压L2N Level 1 +00234 State 399 发电电压L2N Level 2 +00235 State 400 发电电压L3N Level 1 +00236 State 400 发电电压L3N Level 2 +00237 State 401 发电电压L12 Level 1 +00238 State 401 发电电压L12 Level 2 +00239 State 402 发电电压L23 Level 1 +00240 State 402 发电电压L23 Level 2 +00241 State 403 发电电压L31 Level 1 +00242 State 403 发电电压L31 Level 2 +00243 State 518 发电频率高 Level 1 +00244 State 518 发电频率高 Level 2 +00245 State 519 发电频率低 Level 1 +00246 State 519 发电频率低 Level 2 +00247 State 409 市/母电压L1N Level 1 +00248 State 409 市/母电压L1N Level 2 +00249 State 410 市/母电压L2N Level 1 +00250 State 410 市/母电压L2N Level 2 +00251 State 411 市/母电压L3N Level 1 +00252 State 411 市/母电压L3N Level 2 +00253 State 412 市/母电压L12 Level 1 +00254 State 412 市/母电压L12 Level 2 +00255 State 413 市/母电压L23 Level 1 +00256 State 413 市/母电压L23 Level 2 +00257 State 414 市/母电压L31 Level 1 +00258 State 414 市/母电压L31 Level 2 +00259 State 415 市电/母排频率 Level 1 +00260 State 415 市电/母排频率 Level 2 +00261 State 521 超载 Level 1 +00262 State 521 超载 Level 2 +00263 State 522 短路 Level 1 +00264 State 522 短路 Level 2 +00265 State 444 接地漏电 Level 1 +00266 State 444 接地漏电 Level 2 +00267 State 446 BOC IDMT过流 Level 1 +00268 State 446 BOC IDMT过流 Level 2 + + +======================================================================================================================================================================================== + Table: Values +======================================================================================================================================================================================== + +Allowed MODBUS functions: 03, 04 + +Register(s) Com.Obj. Name Dimension Type Len Dec Min Max Group / Subgroup +======================================================================================================================================================================================== +01000 10123 转速 RPM Integer 2 0 0 3000 发动机 +01001 10034 ECU状态 - Binary#1 1 0 - - 发动机 +01002 12926 ECU频率选择 Unsigned 2 0 0 65535 发动机 +01003 10153 未用 - Integer 2 0 0 10000 发动机 +01004 10154 未用 - Integer 2 0 0 10000 发动机 +01005 10155 未用 - Integer 2 0 0 10000 发动机 +01006 10156 未用 - Integer 2 0 0 10000 发动机 +01007 10157 未用 - Integer 2 0 0 10000 发动机 +01008 10158 未用 - Integer 2 0 0 10000 发动机 +01009 10159 未用 - Integer 2 0 0 10000 发动机 +01010 10160 未用 - Integer 2 0 0 10000 发动机 +01011 10161 未用 - Integer 2 0 0 10000 发动机 +01012-01013(2) 10173 未用 - Integer 4 0 0 10000 发动机 +01014 15765 DPF1 黑负载 % Integer 2 0 0 250 隐形的 +01015 12483 DPF1 灰负载 % Unsigned 2 0 0 250 隐形的 +01016 14522 尾气排放DEF值 % Integer 2 0 0 100 隐形的 +01017 10137 速度请求 % Integer 2 1 0 1000 速度/负载控制 +01018 10006 所需转速 RPM Unsigned 2 0 0 3000 速度/负载控制 +01019 8202 发电KW kW Integer 2 0 0 32767 发电机 +01020 8524 发电KW L1 kW Integer 2 0 0 32767 发电机 +01021 8525 发电KW L2 kW Integer 2 0 0 32767 发电机 +01022 8526 发电KW L3 kW Integer 2 0 0 32767 发电机 +01023 8203 发电KVAr kVAr Integer 2 0 0 32767 发电机 +01024 8527 发电KVAr L1 kVAr Integer 2 0 0 32767 发电机 +01025 8528 发电KVAr L2 kVAr Integer 2 0 0 32767 发电机 +01026 8529 发电KVAr L3 kVAr Integer 2 0 0 32767 发电机 +01027 8565 发电KVA kVA Integer 2 0 0 32767 发电机 +01028 8530 发电KVA L1 kVA Integer 2 0 0 32767 发电机 +01029 8531 发电KVA L2 kVA Integer 2 0 0 32767 发电机 +01030 8532 发电KVA L3 kVA Integer 2 0 0 32767 发电机 +01031 8204 发电功率因数 Integer 1 2 0 12700 发电机 +01032 8533 发电功率因数L1 Integer 1 2 0 12700 发电机 +01033 8534 发电功率因数L2 Integer 1 2 0 12700 发电机 +01034 8535 发电功率因数L3 Integer 1 2 0 12700 发电机 +01035 8210 发电频率 Hz Unsigned 2 1 0 4000 发电机 +01036 8192 发电电压L1-N V Unsigned 2 0 0 65535 发电机 +01037 8193 发电电压L2-N V Unsigned 2 0 0 65535 发电机 +01038 8194 发电电压L3-N V Unsigned 2 0 0 65535 发电机 +01039 9628 发电电压L1-L2 V Unsigned 2 0 0 65535 发电机 +01040 9629 发电电压L2-L3 V Unsigned 2 0 0 65535 发电机 +01041 9630 发电电压L3-L1 V Unsigned 2 0 0 65535 发电机 +01042 8198 发电电流L1 A Unsigned 2 0 0 32767 发电机 +01043 8199 发电电流L2 A Unsigned 2 0 0 32767 发电机 +01044 8200 发电电流L3 A Unsigned 2 0 0 32767 发电机 +01045 8224 滑差频率 Hz Integer 2 2 0 5000 发电机 +01046 8225 滑差角度 ° Integer 2 1 -1800 1800 发电机 +01047 8211 市电/母排频率 Hz Unsigned 2 1 0 4000 市电/母排 +01048 8195 市/母电压L1-N V Unsigned 2 0 0 65535 市电/母排 +01049 8196 市/母电压L2-N V Unsigned 2 0 0 65535 市电/母排 +01050 8197 市/母电压L3-N V Unsigned 2 0 0 65535 市电/母排 +01051 9631 市/母电压L1-L2 V Unsigned 2 0 0 65535 市电/母排 +01052 9632 市/母电压L2-L3 V Unsigned 2 0 0 65535 市电/母排 +01053 9633 市/母电压L3-L1 V Unsigned 2 0 0 65535 市电/母排 +01054 8208 市电电流L1 A Unsigned 2 0 0 32767 市电/母排 +01055 8703 市电输入功率 kW Integer 2 0 0 32767 市电/母排 +01056 8704 市电输入KVAr kVAr Integer 2 0 0 32767 市电/母排 +01057 8705 市电PF Integer 1 2 0 12700 市电/母排 +01058 8624 发动机优先 Unsigned 1 0 0 32 功率模块 +01059-01060(2) 15805 实际储备 kW Integer 4 0 0 32000 功率模块 +01061-01062(2) 15806 储备起动 kW Integer 4 0 0 32000 功率模块 +01063-01064(2) 15807 储备停机 kW Integer 4 0 0 32000 功率模块 +01065-01066(2) 10657 并网有功功率 kW Integer 4 0 0 200000 功率模块 +01067-01068(2) 10656 并网无功功率 kVAr Integer 4 0 -32768000 32767000 功率模块 +01069-01070(2) 10658 功率管理中额定运行功率 kW Integer 4 0 -32768000 32767000 功率模块 +01071-01072(2) 10999 所有运行额定功率 kW Integer 4 0 0 32000 功率模块 +01073-01074(2) 10998 有效额定功率 kW Integer 4 0 0 32000 功率模块 +01075 10012 最少运行功率 kW Unsigned 2 0 32768 32767 功率模块 +01076 8663 所需有功功率 kW Integer 2 0 0 32767 速度/负载控制 +01077 9052 速度调节输出 V Integer 2 3 -10000 10000 速度/负载控制 +01078 10137 速度请求 % Integer 2 1 0 1000 速度/负载控制 +01079 10006 所需转速 RPM Unsigned 2 0 0 3000 速度/负载控制 +01080 12877 所需无功 kVAr Integer 2 0 -32000 32000 电压/因数控制 +01081 9053 调压输出 V Integer 2 3 -10000 10000 电压/因数控制 +01082 14997 电压请求 % Integer 2 1 0 1000 电压/因数控制 +01083 8213 电池电压 V Integer 2 1 0 360 控制器I/O口 +01084 10603 D+ V Integer 2 1 0 360 控制器I/O口 +01085 9151 油压 Bar Integer 2 1 0 100 控制器I/O口 +01086 9152 水温 °C Integer 2 0 -16 120 控制器I/O口 +01087 9153 燃油位 % Integer 2 0 0 100 控制器I/O口 +01088 9154 未用 Integer 2 0 -32768 32767 控制器I/O口 +01089 8235 开关量输入 Binary#2 2 0 - - 控制器I/O口 +01090 15780 紧急停 Binary#3 1 0 - - 控制器I/O口 +01091 8239 开关量输出 Binary#4 2 0 - - 控制器I/O口 +01092 24302 蜂窝信号 % Unsigned 1 0 0 100 CM-GPRS; CM-4G-GPS +01093 24300 蜂窝错误率 % Unsigned 1 0 0 100 CM-GPRS; CM-4G-GPS +01094 24288 蜂窝诊断代码 Unsigned 1 0 0 255 CM-GPRS; CM-4G-GPS +01095-01102(8) 24290 蜂窝状态 String 16 0 - - CM-GPRS; CM-4G-GPS +01103 24307 最后E-mail结果 Unsigned 1 0 0 65535 CM-GPRS; CM-4G-GPS +01104-01119(16) 24147 操作人员 String 32 0 - - CM-GPRS; CM-4G-GPS +01120-01127(8) 24146 连接类型 String 16 0 - - CM-GPRS; CM-4G-GPS +01128-01135(8) 24268 纬度 String 16 0 - - CM-4G-GPS +01136-01143(8) 24267 经度 String 16 0 - - CM-4G-GPS +01144 24266 高位 m Integer 2 0 -1000 10000 CM-4G-GPS +01145 24265 卫星 Unsigned 1 0 0 15 CM-4G-GPS +01146-01147(2) 11680 距离中心位置 km Unsigned 4 1 0 200000 CM-4G-GPS +01148 24303 蜂窝信号 % Unsigned 1 0 0 100 CM-RS232-485 +01149 24301 蜂窝错误率 % Unsigned 1 0 0 100 CM-RS232-485 +01150 24289 蜂窝诊断代码 Unsigned 1 0 0 255 CM-RS232-485 +01151-01158(8) 24291 蜂窝状态 String 16 0 - - CM-RS232-485 +01159 24308 AirGate 状态 Unsigned 1 0 0 255 CM-GPRS; CM-4G-GPS +01160-01167(8) 24309 AirGate ID String 16 0 - - CM-GPRS; CM-4G-GPS +01168 24344 AirGate 状态 Unsigned 1 0 0 255 CM-Ethernet +01169-01176(8) 24345 AirGate ID String 16 0 - - CM-Ethernet +01177-01192(16) 24333 MAC 地址 String 32 0 - - CM-Ethernet +01193-01200(8) 24184 IP地址 String 16 0 - - CM-Ethernet +01201-01208(8) 24183 当前子网掩码 String 16 0 - - CM-Ethernet +01209-01216(8) 24182 当前网关 String 16 0 - - CM-Ethernet +01217-01224(8) 24181 当前DNS String 16 0 - - CM-Ethernet +01225 24180 以太网界面状态 List#1 1 0 0 4 CM-Ethernet +01226 24332 最后E-mail结果 Unsigned 1 0 0 65535 CM-Ethernet +01227 9018 额定功率 kW Integer 2 0 0 32767 发电机 +01228 9917 额定电压 V Unsigned 2 0 0 65535 发电机 +01229 9978 额定电流 A Unsigned 2 0 0 65535 发电机 +01230-01231(2) 8205 发电KWh KWh Integer 4 0 -32768000 32767000 统计值 +01232-01233(2) 8539 发电KVArh kVArh Integer 4 0 -32768000 32767000 统计值 +01234-01235(2) 11025 市电KWh KWh Integer 4 0 -32768000 32767000 统计值 +01236-01237(2) 11026 市电KVArh kVArh Integer 4 0 -32768000 32767000 统计值 +01238-01239(2) 8206 运行小时 h Integer 4 1 -32768000 32767000 统计值 +01240 8207 起动次数 Unsigned 2 0 0 65535 统计值 +01241 11616 维护保养1 h Integer 2 0 -10000 10000 统计值 +01242 11617 维护保养2 h Integer 2 0 -10000 10000 统计值 +01243 11618 维护保养3 h Integer 2 0 -10000 10000 统计值 +01244-01245(2) 14328 租赁1 h Integer 4 0 0 9000 统计值 +01246-01247(2) 14369 租赁1 日 Integer 4 0 -32768000 32767000 统计值 +01248-01249(2) 11195 急停次数 Unsigned 4 0 0 65535000 统计值 +01250-01251(2) 11196 停机 Unsigned 4 0 0 65535000 统计值 +01252-01253(2) 9040 总燃油消耗 L Unsigned 4 0 0 65535000 统计值 +01254 13772 时间到清空 日 Integer 2 0 0 32000 统计值 +01255 13771 时间到清空 hrs Integer 2 0 0 23 统计值 +01256 13770 时间到清空 min Integer 2 0 0 59 统计值 +01257 9591 负载分配状态 List#2 1 0 0 3 信息 +01258 9244 发动机状态 List#3 1 0 0 17 信息 +01259 9245 断路器状态 List#4 1 0 0 12 信息 +01260 10040 计时文本 List#5 1 0 0 27 信息 +01261 12944 连接类型 List#6 1 0 0 5 信息 +01262 14447 SPI模块A List#7 1 0 0 10 信息 +01263 14448 SPI模块B List#7 1 0 0 10 信息 +01264 8955 计时值 Unsigned 2 0 0 65535 隐形的 +01265-01280(16) 24501 ID 串 String 32 0 - - 信息 +01281-01288(8) 24339 FW版本 String 16 0 - - 信息 +01289 8480 应用 List#8 1 0 0 2 信息 +01290 8707 FW 分支 List#9 1 0 0 1 信息 +01291 Not Used +01292 8546 CAN16 Binary#5 2 0 - - 信息 +01293 8827 CAN32 Binary#6 2 0 - - 信息 +01294 10196 机组已加载16 Binary#7 2 0 - - 信息 +01295 10197 机组已加载32 Binary#8 2 0 - - 信息 +01296 9143 Log开关量输出1 Binary#9 2 0 - - 开关量输出日志 +01297 9144 Log开关量输出2 Binary#10 2 0 - - 开关量输出日志 +01298 9145 Log开关量输出3 Binary#11 2 0 - - 开关量输出日志 +01299 9146 Log开关量输出4 Binary#12 2 0 - - 开关量输出日志 +01300 9147 Log开关量输出5 Binary#13 2 0 - - 开关量输出日志 +01301 9148 Log开关量输出6 Binary#14 2 0 - - 开关量输出日志 +01302 9149 Log开关量输出7 Binary#15 2 0 - - 开关量输出日志 +01303 9150 Log开关量输出8 Binary#16 2 0 - - 开关量输出日志 +01304 11896 Log开关量输出 Binary#17 2 0 - - 开关量输出日志 +01305 11897 Log开关量输出10 Binary#18 2 0 - - 开关量输出日志 +01306 11898 Log开关量输出11 Binary#19 2 0 - - 开关量输出日志 +01307 14291 扩展BIO A Binary#20 2 0 - - 插入式 +01308 14292 扩展BIO B Binary#20 2 0 - - 插入式 +01309 14293 扩展模拟量输入A1 Integer 2 0 -32768 32767 插入IO +01310 14294 扩展模拟量输入A2 Integer 2 0 -32768 32767 插入IO +01311 14295 扩展模拟量输入A3 Integer 2 0 -32768 32767 插入IO +01312 14296 扩展模拟量输入A4 Integer 2 0 -32768 32767 插入IO +01313 14297 扩展模拟量输入A5 Integer 2 0 -32768 32767 插入IO +01314 14298 扩展模拟量输入A6 Integer 2 0 -32768 32767 插入IO +01315 14299 扩展模拟量输入A7 Integer 2 0 -32768 32767 插入IO +01316 14300 扩展模拟量输入A8 Integer 2 0 -32768 32767 插入IO +01317 14301 扩展模拟量输入A9 Integer 2 0 -32768 32767 插入IO +01318 14302 扩展模拟量输入A10 Integer 2 0 -32768 32767 插入IO +01319 14303 扩展模拟量输入A11 Integer 2 0 -32768 32767 插入IO +01320 14304 扩展模拟量输入A12 Integer 2 0 -32768 32767 插入IO +01321 14305 扩展模拟量输入A13 Integer 2 0 -32768 32767 插入IO +01322 14306 扩展模拟量输入A14 Integer 2 0 -32768 32767 插入IO +01323 14307 扩展模拟量输入A15 Integer 2 0 -32768 32767 插入IO +01324 14308 扩展模拟量输入A16 Integer 2 0 -32768 32767 插入IO +01325 14309 扩展模拟量输入B1 Integer 2 0 -32768 32767 插入IO +01326 14310 扩展模拟量输入B2 Integer 2 0 -32768 32767 插入IO +01327 14311 扩展模拟量输入B3 Integer 2 0 -32768 32767 插入IO +01328 14312 扩展模拟量输入B4 Integer 2 0 -32768 32767 插入IO +01329 14313 扩展模拟量输入B5 Integer 2 0 -32768 32767 插入IO +01330 14314 扩展模拟量输入B6 Integer 2 0 -32768 32767 插入IO +01331 14315 扩展模拟量输入B7 Integer 2 0 -32768 32767 插入IO +01332 14316 扩展模拟量输入B8 Integer 2 0 -32768 32767 插入IO +01333 14317 扩展模拟量输入B9 Integer 2 0 -32768 32767 插入IO +01334 14318 扩展模拟量输入B10 Integer 2 0 -32768 32767 插入IO +01335 14319 扩展模拟量输入B11 Integer 2 0 -32768 32767 插入IO +01336 14320 扩展模拟量输入B12 Integer 2 0 -32768 32767 插入IO +01337 14321 扩展模拟量输入B13 Integer 2 0 -32768 32767 插入IO +01338 14322 扩展模拟量输入B14 Integer 2 0 -32768 32767 插入IO +01339 14323 扩展模拟量输入B15 Integer 2 0 -32768 32767 插入IO +01340 14324 扩展模拟量输入B16 Integer 2 0 -32768 32767 插入IO +01341 14325 接地电流 A Integer 2 2 0 500 发电机 +01342 9887 控制模式 List#10 1 0 0 3 隐形的 +01343 10424 PLC模拟输出1 Binary#21 1 0 - - PLC +01344 10425 PLC开关量输出2 Binary#22 1 0 - - PLC +01345 10426 PLC开关量输出3 Binary#23 1 0 - - PLC +01346 10427 PLC开关量输出4 Binary#24 1 0 - - PLC +01347 10428 PLC开关量输出 5 Binary#25 1 0 - - PLC +01348 10429 PLC开关量输出6 Binary#26 1 0 - - PLC +01349 10430 PLC开关量输出7 Binary#27 1 0 - - PLC +01350 10360 PLC模拟输出1 Integer 2 0 -32768 32767 PLC +01351 10361 PLC模拟输出2 Integer 2 0 -32768 32767 PLC +01352 10362 PLC模拟输出3 Integer 2 0 -32768 32767 PLC +01353 10363 PLC模拟输出4 Integer 2 0 -32768 32767 PLC +01354 10364 PLC模拟输出5 Integer 2 0 -32768 32767 PLC +01355 10365 PLC模拟输出6 Integer 2 0 -32768 32767 PLC +01356 10366 PLC模拟输出7 Integer 2 0 -32768 32767 PLC +01357 10367 PLC模拟输出8 Integer 2 0 -32768 32767 PLC +01358 10368 PLC模拟输出9 Integer 2 0 -32768 32767 PLC +01359 10369 PLC模拟输出10 Integer 2 0 -32768 32767 PLC +01360 10370 PLC模拟输出11 Integer 2 0 -32768 32767 PLC +01361 10371 PLC模拟输出12 Integer 2 0 -32768 32767 PLC +01362 10372 PLC模拟输出13 Integer 2 0 -32768 32767 PLC +01363 10373 PLC模拟输出14 Integer 2 0 -32768 32767 PLC +01364 10374 PLC模拟输出15 Integer 2 0 -32768 32767 PLC +01365 10375 PLC模拟输出16 Integer 2 0 -32768 32767 PLC +01366 10376 PLC模拟输出17 Integer 2 0 -32768 32767 PLC +01367 10377 PLC模拟输出18 Integer 2 0 -32768 32767 PLC +01368 10378 PLC模拟输出19 Integer 2 0 -32768 32767 PLC +01369 10379 PLC模拟输出20 Integer 2 0 -32768 32767 PLC +01370 10380 PLC模拟输出21 Integer 2 0 -32768 32767 PLC +01371 10381 PLC模拟输出22 Integer 2 0 -32768 32767 PLC +01372 10382 PLC模拟输出23 Integer 2 0 -32768 32767 PLC +01373 10383 PLC模拟输出24 Integer 2 0 -32768 32767 PLC +01374 10384 PLC模拟输出25 Integer 2 0 -32768 32767 PLC +01375 10385 PLC模拟输出26 Integer 2 0 -32768 32767 PLC +01376 10386 PLC模拟输出27 Integer 2 0 -32768 32767 PLC +01377 10387 PLC模拟输出28 Integer 2 0 -32768 32767 PLC +01378 10388 PLC模拟输出29 Integer 2 0 -32768 32767 PLC +01379 10389 PLC模拟输出30 Integer 2 0 -32768 32767 PLC +01380 10390 PLC模拟输出31 Integer 2 0 -32768 32767 PLC +01381 10391 PLC模拟输出32 Integer 2 0 -32768 32767 PLC +01382 10504 PLC类型1 Unsigned 2 0 0 65535 PLC +01383 10505 PLC类型2 Unsigned 2 0 0 65535 PLC +01384 10506 PLC类型3 Unsigned 2 0 0 65535 PLC +01385 10507 PLC类型4 Unsigned 2 0 0 65535 PLC +01386 10508 PLC类型5 Unsigned 2 0 0 65535 PLC +01387 10509 PLC类型6 Unsigned 2 0 0 65535 PLC +01388 10510 PLC类型7 Unsigned 2 0 0 65535 PLC +01389 10511 PLC类型8 Unsigned 2 0 0 65535 PLC +01390-01391(2) 15378 DPF状态 Binary#28 4 0 - - 隐形的 +01392-01393(2) 10174 未用 - Integer 4 0 0 10000 发动机 + + +======================================================================================================================================================================================== + Table: Setpoints +======================================================================================================================================================================================== + +Allowed MODBUS functions: 03, 04, 06, 16 + +Register(s) Com.Obj. Name Dimension Type Len Dec Min Max Group / Subgroup +======================================================================================================================================================================================== +03000 12157 应用模式选择 List#11 1 0 0 2 过程控制 / 应用选择 +03001 8638 并网负载控制 List#12 1 0 0 1 过程控制 / 负载控制 +03002 10120 并网PF控制 List#13 1 0 0 1 过程控制 / 负载控制 +03003 8774 #系统并网负载控制 List#14 1 0 0 1 过程控制 / 负载控制 +03004 8779 #系统并网PF控制 List#15 1 0 0 1 过程控制 / 负载控制 +03005 8639 基数负载 kW Integer 2 0 0 5000 过程控制 / 负载控制 +03006 8640 基数因数 Integer 2 2 60 120 过程控制 / 负载控制 +03007 8641 输入负载 kW Integer 2 0 -32000 32000 过程控制 / 负载控制 +03008 8642 输入功率因数 Integer 2 2 60 120 过程控制 / 负载控制 +03009 9592 输入/输出限制 List#16 1 0 0 1 过程控制 / 负载控制 +03010 8775 #系统基数负载 kW Unsigned 2 0 0 32000 过程控制 / 负载控制 +03011 8776 #系统基数因数 Integer 2 2 60 120 过程控制 / 负载控制 +03012 9890 #中线接触器控制 List#17 1 0 0 1 过程控制 / 中线断路器 +03013 14962 手动模式断路器控制 List#18 1 0 0 2 过程控制 / 过程限制 +03014 10599 市电输入测量 List#19 1 0 0 2 过程控制 / 市电输入测量 +03015 11601 调峰 List#16 1 0 0 1 过程控制 / 调峰 +03016 8643 调峰起动值 kW Integer 2 0 0 32000 过程控制 / 调峰 +03017 8644 调峰停机值 kW Integer 2 0 0 32000 过程控制 / 调峰 +03018 9989 调峰起/停延时 s Unsigned 2 0 0 600 过程控制 / 调峰 +03019-03026(8) 8637 机组名称 String 16 0 - - 基本设定 / 名称 +03027 8276 额定功率 kW Unsigned 2 0 1 5000 基本设定 / 功率设定 +03028 9977 额定功率分相 kW Unsigned 2 0 1 5000 基本设定 / 功率设定 +03029 8275 额定电流 A Unsigned 2 0 1 10000 基本设定 / 电流设定 +03030 8274 Gen CT Ratio Prim A Unsigned 2 0 1 10000 基本设定 / 电流设定 +03031 8566 Mains CT Ratio Prim A Unsigned 2 0 1 10000 基本设定 / 电流设定 +03032 14995 外部电流CT比 A/5A Unsigned 2 0 1 2000 隐形的 +03033 11628 连接类型 List#20 1 0 0 6 基本设定 / 电压设定 +03034 8277 额定相电压 V Unsigned 2 0 80 20000 基本设定 / 电压设定 +03035 11657 额定线电压 V Unsigned 2 0 80 40000 基本设定 / 电压设定 +03036 9579 发电VT变比 V/V Unsigned 2 1 1 5000 基本设定 / 电压设定 +03037 9580 市电/母排VT比 V/V Unsigned 2 1 1 5000 基本设定 / 电压设定 +03038 8278 额定频率 Hz Unsigned 2 0 45 65 基本设定 / 频率设定 +03039 8252 齿数 Unsigned 2 0 0 500 基本设定 / 频率设定 +03040 8253 额定转速 RPM Unsigned 2 0 100 4000 基本设定 / 频率设定 +03041 8315 控制器模式 List#10 1 0 0 3 基本设定 / 控制设定 +03042 13000 开机模式 List#21 1 0 0 1 基本设定 / 控制设定 +03043 9983 故障复位转手动 List#16 1 0 0 1 基本设定 / 控制设定 +03044 10121 背景光灭时间 min Unsigned 1 0 0 255 基本设定 / 控制设定 +03045 8264 蜂鸣时间 s Unsigned 2 0 0 601 基本设定 / 控制设定 +03046 15122 相位旋转 List#22 1 0 0 1 基本设定 / 相位旋转 +03047 24537 控制器地址 Unsigned 1 0 1 32 通讯设定 / 控制器CAN 地址 +03048 24134 RS485模式 List#23 1 0 0 1 通讯设定 / RS485设定 +03049 24135 RS485通讯速率 List#24 1 0 0 4 通讯设定 / RS485设定 +03050 24141 RS485Modbus 速度 List#24 1 0 0 4 通讯设定 / RS485设定 +03051 13346 Main Screen Line 1 List#25 1 0 0 4 基本设定 / HMI Settings +03052 9100 燃油阀 List#26 1 0 0 1 发动机设定 / 起动中 +03053 8255 盘车次数 Unsigned 1 0 1 10 发动机设定 / 起动中 +03054 8256 最大盘车时间 s Unsigned 1 0 1 255 发动机设定 / 起动中 +03055 8257 盘车失败间隙 s Unsigned 1 0 5 60 发动机设定 / 起动中 +03056 8394 预起动时间 s Unsigned 2 0 0 3600 发动机设定 / 起动中 +03057 8254 起动转速 % Unsigned 1 0 5 50 发动机设定 / 起动中 +03058 9681 起动油压 Bar Integer 2 1 0 100 发动机设定 / 起动中 +03059 9683 D+功能 List#27 1 0 0 2 发动机设定 / D+功能 +03060 14412 预热时间 s Unsigned 2 0 0 3600 发动机设定 / 起动中 +03061 9946 怠速转速 RPM Unsigned 2 0 100 4000 发动机设定 / 起动中 +03062 10525 燃油阀领先 s Integer 2 1 0 250 发动机设定 / 起动定时器 +03063 9097 怠速时间 s Unsigned 2 0 0 600 发动机设定 / 起动定时器 +03064 8259 最短稳定时间 s Unsigned 2 0 1 300 发动机设定 / 起动定时器 +03065 8313 最大稳定时间 s Unsigned 2 0 1 300 发动机设定 / 起动定时器 +03066 10023 拖延保护 s Unsigned 2 1 0 3000 发动机设定 / 起动定时器 +03067 9695 停机通风时间 s Unsigned 2 0 0 60 发动机设定 / 起动定时器 +03068 10046 冷却速度 List#28 1 0 0 1 发动机设定 / 停机中 +03069 8258 冷却时间 s Unsigned 2 0 0 3600 发动机设定 / 停机定时器 +03070 9815 停机时间 s Unsigned 2 0 0 600 发动机设定 / 停机定时器 +03071 8662 后冷却时间 s Unsigned 2 0 0 3600 发动机设定 / 停机定时器 +03072 11658 功率开关开 kW Integer 2 0 0 32000 发动机设定 / 功率开关 +03073 11659 功率开关关 kW Integer 2 0 0 32000 发动机设定 / 功率开关 +03074 8263 超速停机 % Unsigned 2 0 100 200 发动机设定 / 发动机保护 +03075 11033 起动超速停机 % Unsigned 2 0 100 200 发动机设定 / 发动机保护 +03076 14108 起动超速时间 s Unsigned 1 0 0 255 发动机设定 / 发动机保护 +03077 15808 起动超速保护 List#29 1 0 0 1 发动机设定 / 发动机保护 +03078 12895 油压警告 Bar Integer 2 1 0 100 发动机设定 / 发动机保护 +03079 12779 油压停机 Bar Integer 2 1 0 100 发动机设定 / 发动机保护 +03080 14341 油压延时 s Unsigned 2 0 0 900 发动机设定 / 发动机保护 +03081 14426 ECU油压警告 Bar Integer 2 2 0 1000 发动机设定 / 发动机保护 +03082 14425 ECU油压停机 Bar Integer 2 2 0 1000 发动机设定 / 发动机保护 +03083 14427 ECU油压延时 s Unsigned 2 0 0 900 发动机设定 / 发动机保护 +03084 12896 水温警告 °C Integer 2 0 -16 120 发动机设定 / 发动机保护 +03085 12780 水温分闸冷 °C Integer 2 0 -16 120 发动机设定 / 发动机保护 +03086 14342 水温延时 s Unsigned 2 0 0 900 发动机设定 / 发动机保护 +03087 14429 ECU水温警告 °C Integer 2 0 -50 500 发动机设定 / 发动机保护 +03088 14428 ECU水温分闸冷 °C Integer 2 0 -50 500 发动机设定 / 发动机保护 +03089 14430 ECU水温延时 s Unsigned 2 0 0 900 发动机设定 / 发动机保护 +03090 15747 油温警告 °C Integer 2 0 -50 500 发动机设定 / 发动机保护 +03091 15748 油温分闸冷 °C Integer 2 0 -50 500 发动机设定 / 发动机保护 +03092 15749 油温延时 s Unsigned 2 0 0 900 发动机设定 / 发动机保护 +03093 15637 ECU油温警告 °C Integer 2 0 -50 500 发动机设定 / 发动机保护 +03094 15636 ECU油温分闸冷 °C Integer 2 0 -50 500 发动机设定 / 发动机保护 +03095 15638 ECU油温延时 s Unsigned 2 0 0 900 发动机设定 / 发动机保护 +03096 8688 温度开关开 °C Integer 2 0 -16 120 发动机设定 / 发动机保护 +03097 8689 温度开关关 °C Integer 2 0 -16 120 发动机设定 / 发动机保护 +03098 9684 水温低警告 °C Integer 2 0 -16 120 发动机设定 / 发动机保护 +03099 10270 水温低延时 s Unsigned 2 0 0 900 发动机设定 / 发动机保护 +03100 12897 燃油位警告 % Integer 2 0 0 100 发动机设定 / 发动机保护 +03101 12898 燃油位分闸冷 % Integer 2 0 0 100 发动机设定 / 发动机保护 +03102 14343 燃油位延时 s Unsigned 2 0 0 900 发动机设定 / 发动机保护 +03103 14432 ECU燃油位警告 % Integer 2 0 0 100 发动机设定 / 发动机保护 +03104 14431 ECU燃油位分闸冷 % Integer 2 0 0 100 发动机设定 / 发动机保护 +03105 14433 ECU燃油位延时 s Unsigned 2 0 0 900 发动机设定 / 发动机保护 +03106 11103 油箱容量 L Unsigned 2 0 0 10000 发动机设定 / 发动机保护 +03107 12373 最大燃油消耗 %/h Unsigned 1 0 0 50 发动机设定 / 发动机保护 +03108 14683 最大燃油消耗延时 s Unsigned 2 0 0 600 发动机设定 / 发动机保护 +03109 10100 燃油泵开 % Integer 2 0 0 100 发动机设定 / 发动机保护 +03110 10101 燃油泵关 % Integer 2 0 0 100 发动机设定 / 发动机保护 +03111 10685 转换警告延时 s Unsigned 2 0 0 600 发动机设定 / 发动机保护 +03112 8387 电池电压低 V Integer 2 1 80 400 发动机设定 / 电池保护 +03113 9587 电池电压高 V Integer 2 1 80 400 发动机设定 / 电池保护 +03114 8383 电池电压延时 s Unsigned 2 0 0 600 发动机设定 / 电池保护 +03115 11374 电池充电故障延时 min Unsigned 1 0 0 15 发动机设定 / 电池保护 +03116 8280 过载分闸冷 % Unsigned 2 0 0 200 发电机设定 / 过载保护 +03117 9685 过载警告 % Unsigned 2 0 0 200 发电机设定 / 过载保护 +03118 8281 过载延时 s Unsigned 2 1 0 6000 发电机设定 / 过载保护 +03119 9241 并网额定功率 % Unsigned 2 0 0 100 发电机设定 / 低载保护 +03120 8282 短路分闸冷 % Unsigned 2 0 100 500 发电机设定 / 电流保护 +03121 9991 短路分闸冷延时 s Unsigned 2 2 0 1000 发电机设定 / 电流保护 +03122 8283 IDMT过流 s Unsigned 2 1 10 6000 发电机设定 / 电流保护 +03123 8284 电流不平衡 BOC % Unsigned 2 0 1 200 发电机设定 / 电流保护 +03124 8285 电流不平衡 BOC延时 s Unsigned 2 1 0 6000 发电机设定 / 电流保护 +03125 8486 逆功保护值 % Unsigned 1 0 0 50 发电机设定 / 逆功保护 +03126 8552 逆功延时 s Unsigned 2 1 0 6000 发电机设定 / 逆功保护 +03127 12486 励磁丢失值 % Integer 2 0 0 150 发电机设定 / 励磁丢失保护 +03128 12487 励磁丢失延时 s Unsigned 2 1 0 6000 发电机设定 / 励磁丢失保护 +03129 8291 发电电压高停机 % Unsigned 2 0 200 发电机设定 / 电压保护 +03130 9686 发电电压高报警 % Unsigned 2 0 200 发电机设定 / 电压保护 +03131 9687 发电电压低报警 % Unsigned 2 0 0 发电机设定 / 电压保护 +03132 8293 发电电压低分闸冷 % Unsigned 2 0 0 发电机设定 / 电压保护 +03133 9103 发电电压延时 s Unsigned 2 1 0 6000 发电机设定 / 电压保护 +03134 8288 电压不平衡分闸冷 % Unsigned 2 0 1 200 发电机设定 / 电压保护 +03135 8289 电压不平衡延时 s Unsigned 2 1 0 6000 发电机设定 / 电压保护 +03136 8296 发电频率高分闸冷 % Unsigned 2 1 2000 发电机设定 / 频率保护 +03137 9688 发电频率高报警 % Unsigned 2 1 2000 发电机设定 / 频率保护 +03138 9689 发电频率低报警 % Unsigned 2 1 0 发电机设定 / 频率保护 +03139 8298 发电频率低分闸冷 % Unsigned 2 1 0 发电机设定 / 频率保护 +03140 8297 Generator <> Frequency Delay s Unsigned 2 1 0 6000 发电机设定 / 频率保护 +03141 15664 过载保护 List#30 1 0 0 2 保护 / 过载保护 +03142 15666 IDMT 过流保护 List#30 1 0 0 2 保护 / 电流保护 +03143 15667 电流不平衡保护 List#30 1 0 0 2 保护 / 电流保护 +03144 15668 发电电压保护 List#30 1 0 0 2 保护 / 电压保护 +03145 15669 电压不平衡保护 List#30 1 0 0 2 保护 / 电压保护 +03146 10558 Bus Measurement Error Protection List#30 1 0 0 2 保护 / 电压保护 +03147 15670 发电频率保护 List#30 1 0 0 2 保护 / 频率保护 +03148 15671 低速保护 List#30 1 0 0 2 保护 / 速度保护 +03149 13230 逆功保护 List#30 1 0 0 2 保护 / 逆功保护 +03150 13269 励磁丢失保护 List#30 1 0 0 2 保护 / 励磁丢失保护 +03151 8301 紧急启动延时 s Unsigned 2 0 0 6000 市电设定 / AMF计时器 +03152 8302 市电恢复延时 s Unsigned 2 0 1 3600 市电设定 / AMF计时器 +03153 8389 MCB合延时 s Unsigned 2 1 0 6000 市电设定 / AMF计时器 +03154 9238 AMF起动 List#16 1 0 0 1 市电设定 / AMF计时器 +03155 8305 市电电压高 % Unsigned 2 0 50 150 市电设定 / 市电电压范围 +03156 8307 市电电压低 % Unsigned 2 0 50 150 市电设定 / 市电电压范围 +03157 8306 市电电压延时 s Unsigned 2 1 0 6000 市电设定 / 市电电压范围 +03158 8446 市电电压不平衡 % Unsigned 2 0 1 150 市电设定 / 市电电压范围 +03159 8447 市电电压不平衡延时 s Unsigned 2 1 0 6000 市电设定 / 市电电压范围 +03160 8310 市电频率高 % Unsigned 2 1 500 1500 市电设定 / 市电频率范围 +03161 8312 市电频率低 % Unsigned 2 1 500 1500 市电设定 / 市电频率范围 +03162 8311 市电频率延时 s Unsigned 2 1 0 6000 市电设定 / 市电频率范围 +03163 9590 岛运行回来 List#31 1 0 0 1 市电设定 / AMF设定 +03164 8444 MCB逻辑 List#32 1 0 0 1 市电设定 / AMF设定 +03165 9850 MCB分闸当 List#33 1 0 0 1 市电设定 / AMF设定 +03166 10551 矢量位移保护 List#34 1 0 0 2 市电设定 / 市电矢/位保护 +03167 9843 矢量位移限制 ° Unsigned 2 0 1 45 市电设定 / 市电矢/位保护 +03168 9840 ROCOF 保护 List#34 1 0 0 2 市电设定 / 市电矢/位保护 +03169 9990 ROCOF保护值 Unsigned 2 0 3 30 市电设定 / 市电矢/位保护 +03170 9844 ROCOF df/dt Hz/s Unsigned 2 1 1 100 市电设定 / 市电矢/位保护 +03171 10552 矢量保护断路器选择 List#35 1 0 0 1 市电设定 / 市电矢/位保护 +03172 11001 负载分配激活 List#36 1 0 0 3 负载脱开 +03173 8884 负载分配值 % Integer 2 0 0 200 负载脱开 +03174 8887 负载分配延时 s Unsigned 2 1 0 6000 负载脱开 +03175 8890 重新接载值 % Integer 2 0 0 200 负载脱开 +03176 8893 重新接载延时 s Unsigned 2 0 0 600 负载脱开 +03177 9649 自动重接载 List#16 1 0 0 1 负载脱开 +03178 8551 功率管理 List#16 1 0 0 1 功率模块 / 功率管理控制 +03179 12488 功率管理控制延时 s Unsigned 2 0 0 3600 功率模块 / 功率管理控制 +03180 9874 #功率管理模式 List#37 1 0 0 2 功率模块 / 功率管理控制 +03181 8488 优先 Unsigned 1 0 1 32 功率模块 / 功率管理控制 +03182 10593 #优先自动交替 List#38 1 0 0 3 功率模块 / 功率管理控制 +03183 8549 #系统启动延时 s Unsigned 2 0 0 600 功率模块 / 功率管理控制 +03184 8550 #系统停机延时 s Unsigned 2 0 0 600 功率模块 / 功率管理控制 +03185 8489 #负载储备1启动 kW Integer 2 0 0 32000 功率模块 / 负载储备设定1 +03186 8491 #负载储备1停机 kW Integer 2 0 0 32000 功率模块 / 负载储备设定1 +03187 10648 #负载相对储备1启动 % Unsigned 1 0 0 110 功率模块 / 负载储备设定1 +03188 10652 #负载相对储备1停机 % Unsigned 1 0 0 110 功率模块 / 负载储备设定1 +03189 8490 #负载储备2启动 kW Integer 2 0 0 32000 功率模块 / 负载储备设定2 +03190 8633 #负载储备2停机 kW Integer 2 0 0 32000 功率模块 / 负载储备设定2 +03191 10649 #负载相对储备2启动 % Unsigned 1 0 0 110 功率模块 / 负载储备设定2 +03192 10653 #负载相对储备2停机 % Unsigned 1 0 0 110 功率模块 / 负载储备设定2 +03193 9584 #最小运行功率 kW Unsigned 2 0 0 65000 功率模块 / 最少运行功率 +03194 8492 #下一台启动延时 s Unsigned 2 0 0 3600 功率模块 / 起/停 定时 +03195 8494 #下一台停机延时 s Unsigned 2 0 0 3600 功率模块 / 起/停 定时 +03196 8495 #慢停延时 s Unsigned 2 0 0 600 功率模块 / 起/停 定时 +03197 14942 #超载下一台启动保护 List#16 1 0 0 1 功率模块 / 过载下一台起动保护 +03198 14941 #超载下一台起动值 % Unsigned 1 0 0 100 功率模块 / 过载下一台起动保护 +03199 8493 #超载下一台起动延时 s Unsigned 2 0 0 3600 功率模块 / 过载下一台起动保护 +03200-03201(2) 10600 运行小时基数 h Unsigned 4 1 0 2000000 功率模块 / 运行小时均等 +03202 9919 #运行小时最大差 h Unsigned 2 0 0 65000 功率模块 / 运行小时均等 +03203 8896 #功率段切换上升延时 s Unsigned 2 0 0 3600 功率模块 / 高效模式设定 +03204 10795 #功率段切换下降延时 s Unsigned 2 0 0 3600 功率模块 / 高效模式设定 +03205 10589 控制组别 Unsigned 1 0 1 32 功率模块 / 组别设定 +03206 10590 左组别连结 Unsigned 1 0 1 32 功率模块 / 组别设定 +03207 10591 右组别连结 Unsigned 1 0 1 32 功率模块 / 组别设定 +03208 9054 速度调节特性 List#39 1 0 0 1 速度/负载控制 / 速度控制 +03209 8656 电调偏移 V Integer 2 2 -1000 1000 速度/负载控制 / 速度控制 +03210 10115 调速低限位 V Integer 2 2 -1000 1000 速度/负载控制 / 速度控制 +03211 10559 调速高限位 V Integer 2 2 -1000 1000 速度/负载控制 / 速度控制 +03212 10911 调速PWM率 Hz Unsigned 2 0 500 2900 速度/负载控制 / 速度控制 +03213 10784 执行器T特性 s Unsigned 2 1 10 3000 速度/负载控制 / 速度控制 +03214 8715 频率增益 % Integer 2 1 0 2000 速度/负载控制 / 循环调节 +03215 8716 频率积分 % Integer 2 0 0 200 速度/负载控制 / 循环调节 +03216 8718 角度增益 % Integer 2 1 0 2000 速度/负载控制 / 循环调节 +03217 8659 负载增益 % Integer 2 1 0 2000 速度/负载控制 / 循环调节 +03218 8713 负载积分 % Integer 2 0 0 200 速度/负载控制 / 循环调节 +03219 8725 分配增益 % Integer 2 1 0 2000 速度/负载控制 / 循环调节 +03220 9035 分配积分 % Integer 2 0 0 200 速度/负载控制 / 循环调节 +03221 8661 合闸转换最大值 s Unsigned 2 1 1 6000 速度/负载控制 / 负载转移 +03222 8303 转换最短间隙 s Unsigned 2 1 1 6000 速度/负载控制 / 负载转移 +03223 12969 市电转发电 List#40 1 0 0 3 速度/负载控制 / 负载转移 +03224 14688 发电转到市电 List#40 1 0 0 3 速度/负载控制 / 负载转移 +03225 8547 卸载GCB分闸值 % Unsigned 2 0 0 100 速度/负载控制 / 负载转移 +03226 14694 市电卸载MCB分闸 % Unsigned 2 0 0 100 速度/负载控制 / 负载转移 +03227 8658 负载斜坡 s Unsigned 2 0 0 600 速度/负载控制 / 负载转移 +03228 9055 调压特性 List#39 1 0 0 1 电压/因数控制 / 电压控制 +03229 8500 调压偏移 V Integer 2 2 -1000 1000 电压/因数控制 / 电压控制 +03230 14792 调压低限位 V Integer 2 2 -1000 1000 电压/因数控制 / 电压控制 +03231 14793 调压高限位 V Integer 2 2 -1000 1000 电压/因数控制 / 电压控制 +03232 10785 调压T特性 s Unsigned 2 1 10 3000 电压/因数控制 / 电压控制 +03233 8501 电压增益 % Integer 2 1 0 2000 电压/因数控制 / 循环调节 +03234 8720 电压积分 % Integer 2 0 0 200 电压/因数控制 / 循环调节 +03235 8503 PF 增益 % Integer 2 1 0 2000 电压/因数控制 / 循环调节 +03236 8721 PF 积分 % Integer 2 0 0 200 电压/因数控制 / 循环调节 +03237 8777 无功分配增益 % Integer 2 1 0 2000 电压/因数控制 / 循环调节 +03238 9036 无功分配积分 % Integer 2 0 0 200 电压/因数控制 / 循环调节 +03239 14802 同期类型 List#41 1 0 0 1 同步 +03240 8657 同步超时 s Unsigned 2 0 1 1801 同步 +03241 8650 电压差 % Unsigned 2 1 0 1000 同步 +03242 8652 相角差窗口 ° Unsigned 2 0 0 90 同步 +03243 8653 停留时间 s Unsigned 2 1 0 250 同步 +03244 14798 滑差频率 Hz Integer 2 2 -50 50 同步 +03245 14799 滑差频率窗口 Hz Integer 2 2 1 50 同步 +03246 14800 GCB延迟 ms Unsigned 2 0 20 1000 同步 +03247 14801 MCB延迟 ms Unsigned 2 0 20 1000 同步 +03248 13212 负载/无功分配类型 List#42 1 0 0 2 下垂设定 / 下垂设定 +03249 13952 母排故障GCB合 List#16 1 0 0 1 下垂设定 / 下垂设定 +03250 10032 频率下垂斜坡 % Integer 2 1 0 200 下垂设定 / 频率下垂 +03251 13213 频率下垂补偿 % Integer 2 0 0 100 下垂设定 / 频率下垂 +03252 10033 电压下垂斜坡 % Integer 2 1 0 200 下垂设定 / 电压下垂 +03253 13214 电压下垂补偿 % Integer 2 0 0 100 下垂设定 / 电压下垂 +03254 13953 #CAN线上的控制器数量 Unsigned 1 0 1 32 下垂设定 / 紧急下垂设定 +03255 13954 #紧急下垂延时开 s Unsigned 2 1 0 100 下垂设定 / 紧急下垂设定 +03256 13955 #紧急下垂延时关 s Unsigned 2 1 0 100 下垂设定 / 紧急下垂设定 +03257 8979 印记时间 min Unsigned 1 0 0 240 程序员 / 时间&日期 +03258 8727 #夏令时间模式 List#43 1 0 0 4 程序员 / 时间&日期 +03259 15358 计时功能1 List#44 1 0 0 5 程序员 / 计时器1 +03260 15359 计时功能2 List#44 1 0 0 5 程序员 / 计时器2 +03261 14326 租赁计时1 h Unsigned 2 0 0 8760 程序员 / 租赁计时器 +03262 14332 租赁计时1警告 h Unsigned 2 0 0 8760 程序员 / 租赁计时器 +03263 14334 租赁计时分闸冷 h Unsigned 2 0 0 210 程序员 / 租赁计时器 +03264-03265(2) 14606 本地纬度 Integer 4 4 -900000 900000 地理围栏 +03266-03267(2) 14607 本地经度 Integer 4 4 -1800000 1800000 地理围栏 +03268 11677 围栏半径1 km Unsigned 2 1 0 999 地理围栏 +03269 14608 围栏半径2 km Unsigned 2 1 0 999 地理围栏 +03270 11682 围栏1延时 s Unsigned 2 0 0 3600 地理围栏 +03271 14609 围栏2延时 s Unsigned 2 0 0 3600 地理围栏 +03272 11681 地理围栏 List#45 1 0 0 2 地理围栏 +03273 14610 围栏1保护 List#46 1 0 0 3 地理围栏 +03274 14611 围栏2保护 List#46 1 0 0 3 地理围栏 +03275 24280 卡槽A List#16 1 0 0 1 插入模块 +03276 24279 卡槽B List#16 1 0 0 1 插入模块 +03277 24522 COM1模式 List#23 1 0 0 1 CM-RS232-485 +03278 24341 COM1通讯速率 List#24 1 0 0 4 CM-RS232-485 +03279 24477 COM1 MODBUS速率 List#24 1 0 0 4 CM-RS232-485 +03280 24451 COM2模式 List#23 1 0 0 1 CM-RS232-485 +03281 24340 COM2通讯速率 List#24 1 0 0 4 CM-RS232-485 +03282 24420 COM12MODBUS速率 List#24 1 0 0 4 CM-RS232-485 +03283-03298(16) 24363 APN名称 String 32 0 - - CM-GPRS; CM-4G-GPS +03299-03306(8) 24361 APN用户名 String 16 0 - - CM-GPRS; CM-4G-GPS +03307-03314(8) 24360 APN用户密码 String 16 0 - - CM-GPRS; CM-4G-GPS +03315 24299 Message Language List#47 1 0 0 1 CM-GPRS; CM-4G-GPS; CM-Ethernet +03316-03331(16) 24313 SMTP用户名 String 32 0 - - CM-GPRS; CM-4G-GPS +03332-03339(8) 24312 SMTP用户密码 String 16 0 - - CM-GPRS; CM-4G-GPS +03340-03355(16) 24311 SMTP服务器地址 String 32 0 - - CM-GPRS; CM-4G-GPS +03356-03371(16) 24310 SMTP发件人地址 String 32 0 - - CM-GPRS; CM-4G-GPS +03372 24366 时区 List#48 1 0 0 32 CM-GPRS; CM-4G-GPS; CM-Ethernet +03373 10926 事件报告 List#16 1 0 0 1 CM-GPRS; CM-4G-GPS; CM-Ethernet +03374 8482 警告信息 List#16 1 0 0 1 CM-GPRS; CM-4G-GPS; CM-Ethernet +03375 10566 分闸冷消息 List#16 1 0 0 1 CM-GPRS; CM-4G-GPS; CM-Ethernet +03376 8484 停机信息 List#16 1 0 0 1 CM-GPRS; CM-4G-GPS; CM-Ethernet +03377 24273 AirGate 连接 List#16 1 0 0 1 CM-GPRS; CM-4G-GPS +03378 24315 Internet Connection List#16 1 0 0 1 CM-GPRS; CM-4G-GPS +03379 24132 要求连接类型 List#49 1 0 0 3 CM-4G-GPS +03380-03395(16) 24370 SMTP用户名 String 32 0 - - CM-Ethernet +03396-03403(8) 24369 SMTP用户密码 String 16 0 - - CM-Ethernet +03404-03419(16) 24368 SMTP服务器地址 String 32 0 - - CM-Ethernet +03420-03435(16) 24367 SMTP发件人地址 String 32 0 - - CM-Ethernet +03436 24259 IP地址模式 List#50 1 0 0 1 CM-Ethernet +03437 24337 MODBUS 服务器 List#16 1 0 0 1 CM-Ethernet +03438 24336 SNMP代理 List#16 1 0 0 1 CM-Ethernet +03439 24136 SNMP Trap Format List#51 1 0 0 2 CM-Ethernet +03440-03455(16) 24335 SNMP远程字符串 String 32 0 - - CM-Ethernet +03456-03471(16) 24334 SNMP WR字符串 String 32 0 - - CM-Ethernet +03472-03487(16) 24294 SNMP IP地址1 String 32 0 - - CM-Ethernet +03488-03503(16) 24293 SNMP IP地址2 String 32 0 - - CM-Ethernet +03504 24365 AirGate 连接 List#16 1 0 0 1 CM-Ethernet +03505-03520(16) 24364 AirGate 地址 String 32 0 - - CM-GPRS; CM-4G-GPS; CM-Ethernet +03521 24374 ComAp TCP 端口 Unsigned 2 0 0 65535 CM-GPRS; CM-4G-GPS; CM-Ethernet +03522 24110 Web Interface List#16 1 0 0 1 CM-Ethernet +03523 11631 接地电流保护 List#16 1 0 0 1 EM-BIO8-EFCP +03524 11633 接地电流延时 s Unsigned 2 2 3 500 EM-BIO8-EFCP +03525 14340 接地故障CT范围 List#52 1 0 0 1 EM-BIO8-EFCP +03526 14339 接地故障CT变比 /(1或5)A Unsigned 2 0 1 2000 EM-BIO8-EFCP +03527 11632 接地故障停机 A Unsigned 2 2 3 500 EM-BIO8-EFCP +03528-03529(2) 24488 人机界面语言 Unsigned 4 0 0 0 隐形的 +03530 10343 用户模式 Unsigned 1 0 0 1 隐形的 +03531 8431 CU AIN1 校准 Bar Integer 2 1 -10000 10000 模拟量校准 / 模拟量输入1 +03532 8407 CU AIN2 校准 °C Integer 2 0 -1000 1000 模拟量校准 / 模拟量输入2 +03533 8467 CU AIN3 校准 % Integer 2 0 -1000 1000 模拟量校准 / 模拟量输入3 +03534 8793 CU AIN4 校准 Integer 2 0 -1000 1000 模拟量校准 / 模拟量输入4 +03535 9259 AIN1警告 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入1 +03536 9262 AIN2警告 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入2 +03537 9265 AIN3警告 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入3 +03538 9268 AIN4警告 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入4 +03539 9271 AIN5警告 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入5 +03540 9274 AIN6警告 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入6 +03541 9277 AIN7警告 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入7 +03542 9280 AIN8警告 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入8 +03543 9283 AIN9警告 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入9 +03544 9286 AIN10警告 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入10 +03545 9289 AIN11警告 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入11 +03546 9292 AIN12警告 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入12 +03547 9295 AIN13警告 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入13 +03548 9298 AIN14警告 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入14 +03549 9301 AIN15警告 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入15 +03550 9304 AIN16警告 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入16 +03551 9307 AIN17警告 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入17 +03552 9310 AIN18警告 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入18 +03553 9313 AIN19警告 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入19 +03554 9316 AIN20警告 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入20 +03555 9260 AIN1停机 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入1 +03556 9263 AIN2停机 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入2 +03557 9266 AIN3停机 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入3 +03558 9269 AIN4停机 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入4 +03559 9272 AIN5停机 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入5 +03560 9275 AIN6停机 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入6 +03561 9278 AIN7停机 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入7 +03562 9281 AIN8停机 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入8 +03563 9284 AIN9停机 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入9 +03564 9287 AIN10停机 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入10 +03565 9290 AIN11停机 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入11 +03566 9293 AIN12停机 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入12 +03567 9296 AIN13停机 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入13 +03568 9299 AIN14停机 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入14 +03569 9302 AIN15停机 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入15 +03570 9305 AIN16停机 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入16 +03571 9308 AIN17停机 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入17 +03572 9311 AIN18停机 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入18 +03573 9314 AIN19停机 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入19 +03574 9317 AIN20停机 Integer 2 1 0 10000 一般模拟量输入 / 常规模拟量输入20 +03575 9261 AIN1延时 s Unsigned 2 0 0 900 一般模拟量输入 / 常规模拟量输入1 +03576 9264 AIN2延时 s Unsigned 2 0 0 900 一般模拟量输入 / 常规模拟量输入2 +03577 9267 AIN3延时 s Unsigned 2 0 0 900 一般模拟量输入 / 常规模拟量输入3 +03578 9270 AIN4延时 s Unsigned 2 0 0 900 一般模拟量输入 / 常规模拟量输入4 +03579 9273 AIN5延时 s Unsigned 2 0 0 900 一般模拟量输入 / 常规模拟量输入5 +03580 9276 AIN6延时 s Unsigned 2 0 0 900 一般模拟量输入 / 常规模拟量输入6 +03581 9279 AIN7延时 s Unsigned 2 0 0 900 一般模拟量输入 / 常规模拟量输入7 +03582 9282 AIN8延时 s Unsigned 2 0 0 900 一般模拟量输入 / 常规模拟量输入8 +03583 9285 AIN9延时 s Unsigned 2 0 0 900 一般模拟量输入 / 常规模拟量输入9 +03584 9288 AIN10延时 s Unsigned 2 0 0 900 一般模拟量输入 / 常规模拟量输入10 +03585 9291 AIN11延时 s Unsigned 2 0 0 900 一般模拟量输入 / 常规模拟量输入11 +03586 9294 AIN12延时 s Unsigned 2 0 0 900 一般模拟量输入 / 常规模拟量输入12 +03587 9297 AIN13延时 s Unsigned 2 0 0 900 一般模拟量输入 / 常规模拟量输入13 +03588 9300 AIN14延时 s Unsigned 2 0 0 900 一般模拟量输入 / 常规模拟量输入14 +03589 9303 AIN15延时 s Unsigned 2 0 0 900 一般模拟量输入 / 常规模拟量输入15 +03590 9306 AIN16延时 s Unsigned 2 0 0 900 一般模拟量输入 / 常规模拟量输入16 +03591 9309 AIN17延时 s Unsigned 2 0 0 900 一般模拟量输入 / 常规模拟量输入17 +03592 9312 AIN18延时 s Unsigned 2 0 0 900 一般模拟量输入 / 常规模拟量输入18 +03593 9315 AIN19延时 s Unsigned 2 0 0 900 一般模拟量输入 / 常规模拟量输入19 +03594 9318 AIN20延时 s Unsigned 2 0 0 900 一般模拟量输入 / 常规模拟量输入20 +03595 11407 AIN1开 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入1 +03596 11408 AIN2开 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入2 +03597 11409 AIN3开 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入3 +03598 14385 AIN4开 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入4 +03599 14963 AIN5开 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入5 +03600 14964 AIN6开 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入6 +03601 14965 AIN7开 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入7 +03602 14966 AIN8开 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入8 +03603 14967 AIN9开 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入9 +03604 14968 AIN10开 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入10 +03605 14969 AIN11开 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入11 +03606 14970 AIN12开 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入12 +03607 14971 AIN13开 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入13 +03608 14972 AIN14开 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入14 +03609 14973 AIN15开 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入15 +03610 14974 AIN16开 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入16 +03611 14975 AIN17开 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入17 +03612 14976 AIN18开 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入18 +03613 14977 AIN19开 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入19 +03614 14978 AIN20开 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入20 +03615 11410 AIN1关 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入1 +03616 11411 AIN2关 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入2 +03617 11412 AIN3关 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入3 +03618 14386 AIN4关 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入4 +03619 14979 AIN5关 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入5 +03620 14980 AIN6关 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入6 +03621 14981 AIN7关 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入7 +03622 14982 AIN8关 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入8 +03623 14983 AIN9关 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入9 +03624 14984 AIN10关 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入10 +03625 14985 AIN11关 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入11 +03626 14986 AIN12关 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入12 +03627 14987 AIN13关 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入13 +03628 14988 AIN14关 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入14 +03629 14989 AIN15关 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入15 +03630 14990 AIN16关 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入16 +03631 14991 AIN17关 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入17 +03632 14992 AIN18关 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入18 +03633 14993 AIN19关 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入19 +03634 14994 AIN20关 Integer 2 0 0 32000 一般模拟量输入 / 常规模拟量输入20 +03635 12046 额定功率1 kW Unsigned 2 0 1 5000 替换配置 / 配置1 +03636 15771 额定功率分相1 kW Unsigned 2 0 1 5000 替换配置 / 配置1 +03637 9915 额定转速1 RPM Unsigned 2 0 100 4000 替换配置 / 配置1 +03638 9913 额定频率1 Hz Unsigned 2 0 45 65 替换配置 / 配置1 +03639 12052 额定相电压1 V Unsigned 2 0 80 20000 替换配置 / 配置1 +03640 12055 额定线电压1 V Unsigned 2 0 80 40000 替换配置 / 配置1 +03641 12049 额定电流1 A Unsigned 2 0 1 10000 替换配置 / 配置1 +03642 12058 连接类型1 List#20 1 0 0 6 替换配置 / 配置1 +03643 12047 额定功率2 kW Unsigned 2 0 1 5000 替换配置 / 配置2 +03644 15772 额定功率分相2 kW Unsigned 2 0 1 5000 替换配置 / 配置2 +03645 9916 额定转速2 RPM Unsigned 2 0 100 4000 替换配置 / 配置2 +03646 9914 额定频率2 Hz Unsigned 2 0 45 65 替换配置 / 配置2 +03647 12053 额定相电压2 V Unsigned 2 0 80 20000 替换配置 / 配置2 +03648 12056 额定线电压2 V Unsigned 2 0 80 40000 替换配置 / 配置2 +03649 12050 额定电流2 A Unsigned 2 0 1 10000 替换配置 / 配置2 +03650 12059 连接类型2 List#20 1 0 0 6 替换配置 / 配置2 +03651 12048 额定功率3 kW Unsigned 2 0 1 5000 替换配置 / 配置3 +03652 15773 额定功率分相3 kW Unsigned 2 0 1 5000 替换配置 / 配置3 +03653 15196 额定转速3 RPM Unsigned 2 0 100 4000 替换配置 / 配置3 +03654 15197 额定频率3 Hz Unsigned 2 0 45 65 替换配置 / 配置3 +03655 12054 额定相电压3 V Unsigned 2 0 80 20000 替换配置 / 配置3 +03656 12057 额定线电压3 V Unsigned 2 0 80 40000 替换配置 / 配置3 +03657 12051 额定电流3 A Unsigned 2 0 1 10000 替换配置 / 配置3 +03658 12060 连接类型3 List#20 1 0 0 6 替换配置 / 配置3 +03659 10440 PLC设定1 Integer 2 0 -32768 32767 PLC +03660 10441 PLC设定2 Integer 2 0 -32768 32767 PLC +03661 10442 PLC设定3 Integer 2 0 -32768 32767 PLC +03662 10443 PLC设定4 Integer 2 0 -32768 32767 PLC +03663 10444 PLC设定5 Integer 2 0 -32768 32767 PLC +03664 10445 PLC设定6 Integer 2 0 -32768 32767 PLC +03665 10446 PLC设定7 Integer 2 0 -32768 32767 PLC +03666 10447 PLC设定8 Integer 2 0 -32768 32767 PLC +03667 10448 PLC设定9 Integer 2 0 -32768 32767 PLC +03668 10449 PLC设定10 Integer 2 0 -32768 32767 PLC +03669 10450 PLC设定11 Integer 2 0 -32768 32767 PLC +03670 10451 PLC设定12 Integer 2 0 -32768 32767 PLC +03671 10452 PLC设定13 Integer 2 0 -32768 32767 PLC +03672 10453 PLC设定14 Integer 2 0 -32768 32767 PLC +03673 10454 PLC设定15 Integer 2 0 -32768 32767 PLC +03674 10455 PLC设定16 Integer 2 0 -32768 32767 PLC +03675 10456 PLC设定17 Integer 2 0 -32768 32767 PLC +03676 10457 PLC设定18 Integer 2 0 -32768 32767 PLC +03677 10458 PLC设定19 Integer 2 0 -32768 32767 PLC +03678 10459 PLC设定20 Integer 2 0 -32768 32767 PLC +03679 10460 PLC设定21 Integer 2 0 -32768 32767 PLC +03680 10461 PLC设定22 Integer 2 0 -32768 32767 PLC +03681 10462 PLC设定23 Integer 2 0 -32768 32767 PLC +03682 10463 PLC设定24 Integer 2 0 -32768 32767 PLC +03683 10464 PLC设定25 Integer 2 0 -32768 32767 PLC +03684 10465 PLC设定26 Integer 2 0 -32768 32767 PLC +03685 10466 PLC设定27 Integer 2 0 -32768 32767 PLC +03686 10467 PLC设定28 Integer 2 0 -32768 32767 PLC +03687 10468 PLC设定29 Integer 2 0 -32768 32767 PLC +03688 10469 PLC设定30 Integer 2 0 -32768 32767 PLC +03689 10470 PLC设定31 Integer 2 0 -32768 32767 PLC +03690 10471 PLC设定32 Integer 2 0 -32768 32767 PLC +03691 10472 PLC设定33 Integer 2 0 -32768 32767 PLC +03692 10473 PLC设定34 Integer 2 0 -32768 32767 PLC +03693 10474 PLC设定35 Integer 2 0 -32768 32767 PLC +03694 10475 PLC设定36 Integer 2 0 -32768 32767 PLC +03695 10476 PLC设定37 Integer 2 0 -32768 32767 PLC +03696 10477 PLC设定38 Integer 2 0 -32768 32767 PLC +03697 10478 PLC设定39 Integer 2 0 -32768 32767 PLC +03698 10479 PLC设定40 Integer 2 0 -32768 32767 PLC +03699 10480 PLC设定41 Integer 2 0 -32768 32767 PLC +03700 10481 PLC设定42 Integer 2 0 -32768 32767 PLC +03701 10482 PLC设定43 Integer 2 0 -32768 32767 PLC +03702 10483 PLC设定44 Integer 2 0 -32768 32767 PLC +03703 10484 PLC设定45 Integer 2 0 -32768 32767 PLC +03704 10485 PLC设定46 Integer 2 0 -32768 32767 PLC +03705 10486 PLC设定47 Integer 2 0 -32768 32767 PLC +03706 10487 PLC设定48 Integer 2 0 -32768 32767 PLC +03707 10488 PLC设定49 Integer 2 0 -32768 32767 PLC +03708 10489 PLC设定50 Integer 2 0 -32768 32767 PLC +03709 10490 PLC设定51 Integer 2 0 -32768 32767 PLC +03710 10491 PLC设定52 Integer 2 0 -32768 32767 PLC +03711 10492 PLC设定53 Integer 2 0 -32768 32767 PLC +03712 10493 PLC设定54 Integer 2 0 -32768 32767 PLC +03713 10494 PLC设定55 Integer 2 0 -32768 32767 PLC +03714 10495 PLC设定56 Integer 2 0 -32768 32767 PLC +03715 10496 PLC设定57 Integer 2 0 -32768 32767 PLC +03716 10497 PLC设定58 Integer 2 0 -32768 32767 PLC +03717 10498 PLC设定59 Integer 2 0 -32768 32767 PLC +03718 10499 PLC设定60 Integer 2 0 -32768 32767 PLC +03719 10500 PLC设定61 Integer 2 0 -32768 32767 PLC +03720 10501 PLC设定62 Integer 2 0 -32768 32767 PLC +03721 10502 PLC设定63 Integer 2 0 -32768 32767 PLC +03722 10503 PLC设定64 Integer 2 0 -32768 32767 PLC + + +======================================================================================================================================================================================== + List# Types Meaning +======================================================================================================================================================================================== + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#1 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 未知 + 1 已断开 + 2 连接中 + 3 已连接 + 4 失败 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#2 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 未卸载 + 1 重接载1 + 2 重接载2 + 3 重接载3 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#3 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 初始 + 1 候命中 + 2 未预备 + 3 预起动 + 4 盘车中 + 5 间歇 + 6 起动中 + 7 运行中 + 8 已加载 + 9 慢卸载 + 10 冷却中 + 11 停机 + 12 停机 + 13 通风 + 14 应急手动 + 15 慢加载 + 16 等待停机 + 17 停机通风 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#4 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 初始 + 1 断路器分 + 2 岛运行 + 3 市电运行 + 4 并联运行 + 5 反同期 + 6 同步中 + 7 市电故障 + 8 有效的 + 9 市电恢复 + 10 多台岛运 + 11 多台并运 + 12 应急手动 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#5 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 无计时 + 1 预起动 + 2 盘车中 + 3 怠速运行 + 4 冷却中 + 5 停机阀 + 6 后冷却 + 7 间歇 + 8 燃气通风 + 9 最短稳定到 + 10 最大稳定至 + 11 MCB合 + 12 转换延时 + 13 恢复延时 + 14 启动延时 + 15 电压侦测 + 16 GCB延时 + 17 GCB分闸 + 18 同步超时 + 19 GCB合 + 20 MCB分闸 + 21 等待到停机 + 22 系统起动 + 23 系统停机 + 24 下一台起动 + 25 下一台停机 + 26 重接载变换(激活) + 27 重接载变换(无效) + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#6 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 单相 + 1 SplPhL1L2 + 2 SplPhL1L3 + 3 三角接电压 + 4 3相3线 + 5 3相4线 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#7 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 无 + 1 EM-AOUT8 + 2 EM-BIO8 + 3 EM-EFCP + 4 EM-EFCP-8mA + 5 EM-BIO8-EFCP + 6 CM-RS232-485 + 7 CM-RS232 + 8 CM-Ethernet + 9 CM-GPRS + 10 CM-4G-GPS + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#8 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 未用 + 1 未用 + 2 机组控制器 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#9 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 未用 + 1 标准 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#10 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 关 + 1 手动 + 2 自动 + 3 测试 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#11 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 SPTM + 1 MINT + 2 External + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#12 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 基数负载 + 1 输入/输出 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#13 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 基数因数 + 1 PF 输入/输出 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#14 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 基数负载 + 1 负载分配 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#15 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 基数因数 + 1 无功分配 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#16 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 非执行 + 1 执行 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#17 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 每个 + 1 公共 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#18 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 完全控制 + 1 自动切换 + 2 非岛运行 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#19 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 无 + 1 市电CT + 2 模拟量输入 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#20 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 3相4线 + 1 3相3线 + 2 三角接电压 + 3 SplPhL1L3 + 4 SplPhL1L2 + 5 单相 + 6 自动检测 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#21 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 以前 + 1 关 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#22 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 顺时针 + 1 逆时针 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#23 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 直接 + 1 MODBUS + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#24 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 9600 + 1 19200 + 2 38400 + 3 57600 + 4 115200 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#25 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 转速 + 1 PF + 2 运行小时 + 3 后处理 + 4 AIN1 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#26 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 柴油 + 1 燃气 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#27 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 执行 + 1 充电失败 + 2 非执行 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#28 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 怠速 + 1 无计时 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#29 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 超速停机 + 1 下一台启动在 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#30 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 执行 + 1 非执行 + 2 外置非执行 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#31 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 手动 + 1 自动 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#32 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 通—合 + 1 通—关 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#33 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 市电故障 + 1 机组运行 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#34 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 非执行 + 1 并联 + 2 执行 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#35 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 MCB + 1 GCB + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#36 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 非执行 + 1 仅岛运行 + 2 岛运行+负载分配 + 3 所有时间 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#37 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 绝对值 (kW) + 1 无效 + 2 相对(%) + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#38 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 非执行 + 1 运行时间均等 + 2 无效 + 3 高效的 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#39 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 正方向 + 1 负极 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#40 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 分 + 1 仅合闸 + 2 关闭优先 + 3 慢转移 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#41 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 相角匹配 + 1 滑差同步 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#42 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 同步 + 1 下垂 + 2 紧急下垂 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#43 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 非执行 + 1 冬季 + 2 夏季 + 3 南半球冬季 + 4 南半球夏季 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#44 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 非执行 + 1 无功能 + 2 测试 + 3 带载测试 + 4 关模式 + 5 市电故障锁 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#45 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 无效 + 1 执行 + 2 LBI执行 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#46 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 仅历史记录 + 1 警告 + 2 停机 + 3 分闸冷却 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#47 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 English + 1 中文 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#48 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 GMT-12:00 + 1 GMT-11:00 + 2 GMT-10:00 + 3 GMT-9:00 + 4 GMT-8:00 + 5 GMT-7:00 + 6 GMT-6:00 + 7 GMT-5:00 + 8 GMT-4:00 + 9 GMT-3:30 + 10 GMT-3:00 + 11 GMT-2:00 + 12 GMT-1:00 + 13 GMT+0:00 + 14 GMT+1:00 + 15 GMT+2:00 + 16 GMT+3:00 + 17 GMT+3:30 + 18 GMT+4:00 + 19 GMT+4:30 + 20 GMT+5:00 + 21 GMT+5:30 + 22 GMT+5:45 + 23 GMT+6:00 + 24 GMT+6:30 + 25 GMT+7:00 + 26 GMT+8:00 + 27 GMT+9:00 + 28 GMT+9:30 + 29 GMT+10:00 + 30 GMT+11:00 + 31 GMT+12:00 + 32 GMT+13:00 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#49 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 2G + 1 3G + 2 4G + 3 自动 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#50 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 固定 + 1 自动 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#51 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 v1 Trap + 1 v2 Notific + 2 v2 Inform + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#52 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 1A + 1 5A + + +======================================================================================================================================================================================== + Binary# Types Meaning +======================================================================================================================================================================================== + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#1 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 ECU黄灯 + 1 ECU红灯 + 2 ECU等待起动中 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#2 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 GCB反馈 + 1 MCB反馈 + 2 未用 + 3 存取锁 + 4 远程关 + 5 远程测试 + 6 禁止停机 + 7 未用 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#3 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 紧急停 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#4 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 起动马达 + 1 燃油阀 + 2 GCB合/分 + 3 MCB合/分 + 4 预起动 + 5 可以加载 + 6 警告 + 7 未用 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#5 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 CAN CU 1 + 1 CAN CU 2 + 2 CAN CU 3 + 3 CAN CU 4 + 4 CAN CU 5 + 5 CAN CU 6 + 6 CAN CU 7 + 7 CAN CU 8 + 8 CAN CU 9 + 9 CAN CU 10 + 10 CAN CU 11 + 11 CAN CU 12 + 12 CAN CU 13 + 13 CAN CU 14 + 14 CAN CU 15 + 15 CAN CU 16 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#6 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 CAN CU 17 + 1 CAN CU 18 + 2 CAN CU 19 + 3 CAN CU 20 + 4 CAN CU 21 + 5 CAN CU 22 + 6 CAN CU 23 + 7 CAN CU 24 + 8 CAN CU 25 + 9 CAN CU 26 + 10 CAN CU 27 + 11 CAN CU 28 + 12 CAN CU 29 + 13 CAN CU 30 + 14 CAN CU 31 + 15 CAN CU 32 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#7 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 机组已加载1 + 1 机组已加载2 + 2 机组已加载3 + 3 机组已加载4 + 4 机组已加载5 + 5 机组已加载6 + 6 机组已加载7 + 7 机组已加载8 + 8 机组已加载9 + 9 机组已加载10 + 10 机组已加载11 + 11 机组已加载12 + 12 机组已加载13 + 13 机组已加载14 + 14 机组已加载15 + 15 机组已加载16 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#8 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 机组已加载17 + 1 机组已加载18 + 2 机组已加载19 + 3 机组已加载20 + 4 机组已加载21 + 5 机组已加载22 + 6 机组已加载23 + 7 机组已加载24 + 8 机组已加载25 + 9 机组已加载26 + 10 机组已加载27 + 11 机组已加载28 + 12 机组已加载29 + 13 机组已加载30 + 14 机组已加载31 + 15 机组已加载32 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#9 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 未用 + 1 起动马达 + 2 燃油阀 + 3 停机阀 + 4 停机脉冲 + 5 点火 + 6 预起动 + 7 冷却泵 + 8 怠速/额定 + 9 空气阀 + 10 警告 + 11 蜂鸣 + 12 GCB合/分 + 13 脉冲GCB合 + 14 脉冲GCB分 + 15 GCB失压线圈 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#10 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 MCB合/分 + 1 脉冲MCB合 + 2 脉冲MCB分 + 3 MCB失压线圈 + 4 候命中 + 5 可测市电自启动 + 6 可以加载 + 7 不在自动 + 8 运行中 + 9 冷却中 + 10 加载 + 11 FltRes Button Echo + 12 发电正常 + 13 市电正常 + 14 动作计时器1 + 15 动作计时器2 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#11 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 预热塞 + 1 燃油泵 + 2 温度开关 + 3 功率开关 + 4 维护保养1 + 5 维护保养2 + 6 维护保养3 + 7 心跳 + 8 点火启动 + 9 手动候命 + 10 预留 + 11 关模式 + 12 手动模式 + 13 自动模式 + 14 测试模式 + 15 D+ 故障 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#12 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 发电电压高 + 1 发电机电压低 + 2 发电电压警告 + 3 发电电压 + 4 发电机频率高 + 5 发电机频率低 + 6 发电频率警告 + 7 发电频率 + 8 市电失败 + 9 市电频率 + 10 市电电压 + 11 过载分闸冷 + 12 过载警告 + 13 停机失败 + 14 转速高警告 + 15 转速低警告 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#13 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 启动失败 + 1 过流 + 2 电池缺电报警 + 3 AL Battery Charger + 4 电池电压报警 + 5 接地故障 + 6 公共警告 + 7 公共报警停机 + 8 公共报警BOC + 9 传感器断线报警 + 10 预留 + 11 公共警告慢停 + 12 预留 + 13 预留 + 14 预留 + 15 预留 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#14 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 预留 + 1 水温低报警 + 2 ECU供电 + 3 ECU停止运行 + 4 预留 + 5 预留 + 6 禁止停机 + 7 静态逻辑0 + 8 静态逻辑1 + 9 租赁计时1 + 10 租赁计时2 + 11 需要再生regen + 12 HEST 灯 + 13 预留 + 14 预留 + 15 预留 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#15 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 预留 + 1 开关量1状态 + 2 开关量2状态 + 3 开关量3状态 + 4 开关量4状态 + 5 开关量5状态 + 6 开关量6状态 + 7 开关量7状态 + 8 开关量8状态 + 9 AIN1警告 + 10 AIN2警告 + 11 AIN3警告 + 12 AIN4警告 + 13 AIN1停机+分闸冷 + 14 AIN2停机+分闸冷 + 15 AIN3停机+分闸冷 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#16 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 AIN4停机+分闸冷 + 1 AIN1开关 + 2 AIN2开关 + 3 AIN3开关 + 4 AIN4开关 + 5 AIN5开关 + 6 AIN6开关 + 7 AIN7开关 + 8 AIN8开关 + 9 AIN9开关 + 10 AIN10开关 + 11 AIN11开关 + 12 AIN12开关 + 13 AIN13开关 + 14 AIN14开关 + 15 AIN15开关 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#17 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 AIN16开关 + 1 AIN17开关 + 2 AIN18开关 + 3 AIN19开关 + 4 AIN20开关 + 5 ECU通讯正常 + 6 ECU通讯故障 + 7 ECU红灯 + 8 ECU黄灯 + 9 油压警告 + 10 油压停机 + 11 水温警告 + 12 水温停机 + 13 燃油位警告 + 14 燃油位停机 + 15 围栏1报警 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#18 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 围栏2报警 + 1 预留 + 2 预留 + 3 预留 + 4 预留 + 5 预留 + 6 预留 + 7 速度升 + 8 速度降 + 9 AVR升 + 10 AVR降 + 11 中线合/分 + 12 系统储备OK + 13 Engines Swapped + 14 kWh Pulse + 15 Bus Healthy + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#19 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 预留 + 1 调峰激活 + 2 预留 + 3 预留 + 4 预留 + 5 预留 + 6 负载分配阶段1 + 7 负载分配阶段2 + 8 负载分配阶段3 + 9 频率选择 + 10 预留 + 11 HornRes Button Echo + 12 Start Button Echo + 13 Stop Button Echo + 14 MCB Button Echo + 15 GCB Button Echo + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#20 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 未使用BIO1 + 1 未使用BIO2 + 2 未使用BIO3 + 3 未使用BIO4 + 4 未使用BIO5 + 5 未使用BIO6 + 6 未使用BIO7 + 7 未使用BIO8 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#21 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 PLC开关量输出1.1 + 1 PLC开关量输出1.2 + 2 PLC开关量输出1.3 + 3 PLC开关量输出1.4 + 4 PLC开关量输出1.5 + 5 PLC开关量输出1.6 + 6 PLC开关量输出1.7 + 7 PLC开关量输出1.8 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#22 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 PLC开关量输出2.1 + 1 PLC开关量输出2.2 + 2 PLC开关量输出2.3 + 3 PLC开关量输出2.4 + 4 PLC开关量输出2.5 + 5 PLC开关量输出2.6 + 6 PLC开关量输出2.7 + 7 PLC开关量输出2.8 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#23 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 PLC开关量输出3.1 + 1 PLC开关量输出3.2 + 2 PLC开关量输出3.3 + 3 PLC开关量输出3.4 + 4 PLC开关量输出3.5 + 5 PLC开关量输出3.6 + 6 PLC开关量输出3.7 + 7 PLC开关量输出3.8 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#24 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 PLC开关量输出4.1 + 1 PLC开关量输出4.2 + 2 PLC开关量输出4.3 + 3 PLC开关量输出4.4 + 4 PLC开关量输出4.5 + 5 PLC开关量输出4.6 + 6 PLC开关量输出4.7 + 7 PLC开关量输出4.8 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#25 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 PLC开关量输出5.1 + 1 PLC开关量输出5.2 + 2 PLC开关量输出5.3 + 3 PLC开关量输出5.4 + 4 PLC开关量输出5.5 + 5 PLC开关量输出5.6 + 6 PLC开关量输出5.7 + 7 PLC开关量输出.8 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#26 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 PLC开关量输出6.1 + 1 PLC开关量输出6.2 + 2 PLC开关量输出6.3 + 3 PLC开关量输出6.4 + 4 PLC开关量输出6.5 + 5 PLC开关量输出6.6 + 6 PLC开关量输出6.7 + 7 PLC开关量输出6.8 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#27 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 PLC开关量输出7.1 + 1 PLC开关量输出7.2 + 2 PLC开关量输出7.3 + 3 PLC开关量输出7.4 + 4 PLC开关量输出7.5 + 5 PLC开关量输出7.6 + 6 PLC开关量输出7.7 + 7 PLC开关量输出7.8 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#28 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 DPF状态 1 + 1 DPF状态 2 + 2 DPF状态 3 + 3 DPF状态 4 + 4 DPF状态 5 + 5 DPF状态 6 + 6 DPF状态 7 + 7 DPF状态 8 + 8 DPF状态 9 + 9 DPF状态 10 + 10 DPF状态 11 + 11 DPF状态 12 + 12 DPF状态 13 + 13 DPF状态 14 + 14 DPF状态 15 + 15 DPF状态 16 + 16 DPF状态 17 + 17 DPF状态 18 + 18 DPF状态 19 + 19 DPF状态 20 + 20 DPF状态 21 + 21 DPF状态 22 + 22 DPF状态 23 + 23 DPF状态 24 + 24 DPF状态 25 + 25 DPF状态 26 + 26 DPF状态 27 + 27 DPF状态 28 + 28 DPF状态 29 + 29 DPF状态 30 + 30 DPF状态 31 + 31 DPF状态 32 + + diff --git a/docs/AI训练资料/科迈控制/IG4-200通讯点表.txt b/docs/AI训练资料/科迈控制/IG4-200通讯点表.txt new file mode 100644 index 00000000..34597134 --- /dev/null +++ b/docs/AI训练资料/科迈控制/IG4-200通讯点表.txt @@ -0,0 +1,1394 @@ +HEADER +======================================================================================================================================================================================== +Format: 2.3 +LongNamesLength: 64 - Name, Name of State, Name of Value, Bit Name, Group +ShortNamesLength: 10 - Dimension, Type +======================================================================================================================================================================================== +======================================================================================================================================================================================== + Table: Binaries +======================================================================================================================================================================================== + +Allowed MODBUS functions: 01, 02 + +Addresses Source +Modbus Addr. = Value C.O.# Name of Value Bit # Bit Name Group / Subgroup +Prot. Addr. = State State # Name of State Activated by protection(s): +======================================================================================================================================================================================== +00000 Value 8235 开关量输入 1 远程起动/停机 控制器I/O口 +00001 Value 8235 开关量输入 2 中线开关合闸反馈 +00002 Value 8235 开关量输入 3 MCB反馈 控制器I/O口 +00003 Value 8235 开关量输入 4 接地故障报警 +00004 Value 8235 开关量输入 5 GCB反馈 控制器I/O口 +00005 Value 8235 开关量输入 6 高温水低水位报警 +00006 Value 8235 开关量输入 7 低温水低水位报警 +00007 Value 8235 开关量输入 8 绕组温度高报警 +00008 Value 8239 开关量输出 1 起动马达1 控制器I/O口 +00009 Value 8239 开关量输出 2 ECU供电 控制器I/O口 +00010 Value 8239 开关量输出 3 GCB合闸脉冲 控制器I/O口 +00011 Value 8239 开关量输出 4 GCB分闸脉冲 控制器I/O口 +00012 Value 8239 开关量输出 5 怠速/额定 控制器I/O口 +00013 Value 8239 开关量输出 6 预润滑泵 控制器I/O口 +00014 Value 8239 开关量输出 7 停机阀 控制器I/O口 +00015 Value 8239 开关量输出 8 蜂鸣 控制器I/O口 +00016 Value 14291 扩展BIO A 1 中线合/分 插入式 +00017 Value 14291 扩展BIO A 2 发电机正常 插入式 +00018 Value 14291 扩展BIO A 3 公共警告 插入式 +00019 Not Used +00020 Value 14291 扩展BIO A 5 低低油位报警 插入式 +00021 Value 14291 扩展BIO A 6 差动故障 插入式 +00022 Value 14291 扩展BIO A 7 外部急停 插入式 +00023 Value 14291 扩展BIO A 8 充电故障 插入式 +00024 Value 20743 用户按钮 9 用户按钮9 用户按钮 / 用户按钮 +00025 Value 20743 用户按钮 10 用户按钮10 用户按钮 / 用户按钮 +00026 Value 20743 用户按钮 11 用户按钮11 用户按钮 / 用户按钮 +00027 Value 20743 用户按钮 12 用户按钮12 用户按钮 / 用户按钮 +00028 Value 20743 用户按钮 13 用户按钮13 用户按钮 / 用户按钮 +00029 Value 20743 用户按钮 14 用户按钮14 用户按钮 / 用户按钮 +00030 Value 20743 用户按钮 15 用户按钮15 用户按钮 / 用户按钮 +00031 Value 20743 用户按钮 16 用户按钮16 用户按钮 / 用户按钮 +00032 Not Used +00033 Not Used +00034 Not Used +00035 Not Used +00036 Not Used +00037 Not Used +00038 Not Used +00039 Not Used +00040 Not Used +00041 Not Used +00042 Not Used +00043 Not Used +00044 Not Used +00045 Not Used +00046 Not Used +00047 Not Used +00048 Not Used +00049 Value 9143 Log开关量输出1 2 起动马达1 开关量逻辑输出 +00050 Value 9143 Log开关量输出1 3 燃油阀 开关量逻辑输出 +00051 Value 9143 Log开关量输出1 4 停机阀 开关量逻辑输出 +00052 Value 9143 Log开关量输出1 5 停机脉冲 开关量逻辑输出 +00053 Value 9143 Log开关量输出1 6 点火 开关量逻辑输出 +00054 Value 9143 Log开关量输出1 7 预起动 开关量逻辑输出 +00055 Value 9143 Log开关量输出1 8 冷却泵 开关量逻辑输出 +00056 Value 9143 Log开关量输出1 9 怠速/额定 开关量逻辑输出 +00057 Value 9143 Log开关量输出1 10 空气阀 开关量逻辑输出 +00058 Value 9143 Log开关量输出1 11 警告 开关量逻辑输出 +00059 Value 9143 Log开关量输出1 12 蜂鸣 开关量逻辑输出 +00060 Value 9143 Log开关量输出1 13 GCB合/分 开关量逻辑输出 +00061 Value 9143 Log开关量输出1 14 GCB合闸脉冲 开关量逻辑输出 +00062 Value 9143 Log开关量输出1 15 GCB分闸脉冲 开关量逻辑输出 +00063 Value 9143 Log开关量输出1 16 GCB失压线圈 开关量逻辑输出 +00064 Value 9144 Log开关量输出2 1 MCB合/分 开关量逻辑输出 +00065 Value 9144 Log开关量输出2 2 MCB合闸脉冲 开关量逻辑输出 +00066 Value 9144 Log开关量输出2 3 MCB分闸脉冲 开关量逻辑输出 +00067 Value 9144 Log开关量输出2 4 MCB失压线圈 开关量逻辑输出 +00068 Value 9144 Log开关量输出2 5 候命中 开关量逻辑输出 +00069 Value 9144 Log开关量输出2 6 可测市电自启动 开关量逻辑输出 +00070 Value 9144 Log开关量输出2 7 可以加载 开关量逻辑输出 +00071 Value 9144 Log开关量输出2 8 不在自动 开关量逻辑输出 +00072 Value 9144 Log开关量输出2 9 运行中 开关量逻辑输出 +00073 Value 9144 Log开关量输出2 10 冷却中 开关量逻辑输出 +00074 Value 9144 Log开关量输出2 11 加载 开关量逻辑输出 +00075 Value 9144 Log开关量输出2 12 发电机正常 开关量逻辑输出 +00076 Value 9144 Log开关量输出2 13 市电/母排正常 开关量逻辑输出 +00077 Value 9144 Log开关量输出2 14 动作计时器1 开关量逻辑输出 +00078 Value 9144 Log开关量输出2 15 动作计时器2 开关量逻辑输出 +00079 Value 9144 Log开关量输出2 16 预热塞 开关量逻辑输出 +00080 Value 9145 Log开关量输出3 1 停止按鈕 开关量逻辑输出 +00081 Value 9145 Log开关量输出3 2 温度开关 开关量逻辑输出 +00082 Value 9145 Log开关量输出3 3 保留 开关量逻辑输出 +00083 Value 9145 Log开关量输出3 4 点火启动 开关量逻辑输出 +00084 Value 9145 Log开关量输出3 5 手动候命 开关量逻辑输出 +00085 Value 9145 Log开关量输出3 6 心跳 开关量逻辑输出 +00086 Value 9145 Log开关量输出3 7 关模式 开关量逻辑输出 +00087 Value 9145 Log开关量输出3 8 手动模式 开关量逻辑输出 +00088 Value 9145 Log开关量输出3 9 自动模式 开关量逻辑输出 +00089 Value 9145 Log开关量输出3 10 测试模式 开关量逻辑输出 +00090 Value 9145 Log开关量输出3 11 发电电压报警报警 开关量逻辑输出 +00091 Value 9145 Log开关量输出3 12 发电电压警告 开关量逻辑输出 +00092 Value 9145 Log开关量输出3 13 公共报警值1 开关量逻辑输出 +00093 Value 9145 Log开关量输出3 14 公共报警值2 开关量逻辑输出 +00094 Value 9145 Log开关量输出3 15 公共报警有效值1 开关量逻辑输出 +00095 Value 9145 Log开关量输出3 16 公共报警有效值2 开关量逻辑输出 +00096 Value 9146 Log开关量输出4 1 发电频率警告 开关量逻辑输出 +00097 Value 9146 Log开关量输出4 2 发电频率报警 开关量逻辑输出 +00098 Value 9146 Log开关量输出4 3 AL 市电/母排故障 开关量逻辑输出 +00099 Value 9146 Log开关量输出4 4 AL 市电/母排频率 开关量逻辑输出 +00100 Value 9146 Log开关量输出4 5 AL 市电/母排电压 开关量逻辑输出 +00101 Value 9146 Log开关量输出4 6 公共警告 开关量逻辑输出 +00102 Value 9146 Log开关量输出4 7 公共报警停机 开关量逻辑输出 +00103 Value 9146 Log开关量输出4 8 公共报警分闸冷却 开关量逻辑输出 +00104 Value 9146 Log开关量输出4 9 传感器故障公共报警 开关量逻辑输出 +00105 Value 9146 Log开关量输出4 10 ECU供电 开关量逻辑输出 +00106 Value 9146 Log开关量输出4 11 ECU停止运行 开关量逻辑输出 +00107 Not Used +00108 Not Used +00109 Not Used +00110 Value 9146 Log开关量输出4 15 AL发电过流 开关量逻辑输出 +00111 Not Used +00112 Value 9147 Log开关量输出5 1 禁止停机 开关量逻辑输出 +00113 Value 9147 Log开关量输出5 2 静态逻辑0 开关量逻辑输出 +00114 Value 9147 Log开关量输出5 3 静态逻辑1 开关量逻辑输出 +00115 Value 9147 Log开关量输出5 4 需要再生 开关量逻辑输出 +00116 Value 9147 Log开关量输出5 5 后处理HEST 灯 开关量逻辑输出 +00117 Not Used +00118 Not Used +00119 Not Used +00120 Value 9147 Log开关量输出5 9 消音按钮 开关量逻辑输出 +00121 Value 9147 Log开关量输出5 10 起动按钮 开关量逻辑输出 +00122 Value 9147 Log开关量输出5 11 停止按钮 开关量逻辑输出 +00123 Value 9147 Log开关量输出5 12 MCB按钮 开关量逻辑输出 +00124 Value 9147 Log开关量输出5 13 GCB按钮 开关量逻辑输出 +00125 Value 9147 Log开关量输出5 14 故障复位按钮 开关量逻辑输出 +00126 Value 9147 Log开关量输出5 15 电力报警 开关量逻辑输出 +00127 Value 9147 Log开关量输出5 16 公共报警慢停 开关量逻辑输出 +00128 Value 9148 Log开关量输出6 1 ECU等待起动中 开关量逻辑输出 +00129 Value 9148 Log开关量输出6 2 模拟量1开关 开关量逻辑输出 +00130 Value 9148 Log开关量输出6 3 模拟量2开关 开关量逻辑输出 +00131 Value 9148 Log开关量输出6 4 模拟量3开关 开关量逻辑输出 +00132 Value 9148 Log开关量输出6 5 模拟量4开关 开关量逻辑输出 +00133 Value 9148 Log开关量输出6 6 模拟量5开关 开关量逻辑输出 +00134 Value 9148 Log开关量输出6 7 模拟量6开关 开关量逻辑输出 +00135 Not Used +00136 Not Used +00137 Not Used +00138 Not Used +00139 Not Used +00140 Not Used +00141 Not Used +00142 Not Used +00143 Not Used +00144 Not Used +00145 Not Used +00146 Not Used +00147 Not Used +00148 Not Used +00149 Value 9149 Log开关量输出7 6 ECU通讯故障 开关量逻辑输出 +00150 Value 9149 Log开关量输出7 7 ECU红灯 开关量逻辑输出 +00151 Value 9149 Log开关量输出7 8 ECU 黄灯 开关量逻辑输出 +00152 Value 9149 Log开关量输出7 9 后处理DEF值灯 开关量逻辑输出 +00153 Value 9149 Log开关量输出7 10 后处理阻止灯 开关量逻辑输出 +00154 Value 9149 Log开关量输出7 11 运用计时3 开关量逻辑输出 +00155 Value 9149 Log开关量输出7 12 运用计时4 开关量逻辑输出 +00156 Not Used +00157 Not Used +00158 Not Used +00159 Not Used +00160 Value 9150 Log开关量输出8 1 负载撤载阶段1 开关量逻辑输出 +00161 Value 9150 Log开关量输出8 2 负载撤载阶段2 开关量逻辑输出 +00162 Value 9150 Log开关量输出8 3 负载撤载阶段3 开关量逻辑输出 +00163 Value 9150 Log开关量输出8 4 卸载阶段4 开关量逻辑输出 +00164 Value 9150 Log开关量输出8 5 卸载阶段5 开关量逻辑输出 +00165 Value 9150 Log开关量输出8 6 频率选择 开关量逻辑输出 +00166 Not Used +00167 Value 9150 Log开关量输出8 8 ATT DPF 灯 开关量逻辑输出 +00168 Value 9150 Log开关量输出8 9 后处理SCR故障灯 开关量逻辑输出 +00169 Value 9150 Log开关量输出8 10 排空 开关量逻辑输出 +00170 Value 9150 Log开关量输出8 11 排空通脉冲 开关量逻辑输出 +00171 Value 9150 Log开关量输出8 12 排空断脉冲 开关量逻辑输出 +00172 Not Used +00173 Value 9150 Log开关量输出8 14 起动马达2 开关量逻辑输出 +00174 Value 9150 Log开关量输出8 15 ATT连锁状态 开关量逻辑输出 +00175 Value 9150 Log开关量输出8 16 ECU 通信正常 开关量逻辑输出 +00176 Value 11896 Log开关量输出 1 ATT Regen ACK 灯 开关量逻辑输出 +00177 Value 11896 Log开关量输出 2 ATT PCD 灯 开关量逻辑输出 +00178 Value 11896 Log开关量输出 3 维护时间1报警 开关量逻辑输出 +00179 Value 11896 Log开关量输出 4 维护时间2报警 开关量逻辑输出 +00180 Value 11896 Log开关量输出 5 维护时间3报警 开关量逻辑输出 +00181 Value 11896 Log开关量输出 6 kWh 脉冲 开关量逻辑输出 +00182 Value 11896 Log开关量输出 7 机组已互换 开关量逻辑输出 +00183 Value 11896 Log开关量输出 8 中线合/分 开关量逻辑输出 +00184 Value 11896 Log开关量输出 9 系统储备OK 开关量逻辑输出 +00185 Value 11896 Log开关量输出 10 系统候命中 开关量逻辑输出 +00186 Value 11896 Log开关量输出 11 保留 开关量逻辑输出 +00187 Value 11896 Log开关量输出 12 速度升 开关量逻辑输出 +00188 Value 11896 Log开关量输出 13 速度降 开关量逻辑输出 +00189 Value 11896 Log开关量输出 14 AVR升 开关量逻辑输出 +00190 Value 11896 Log开关量输出 15 AVR降 开关量逻辑输出 +00191 Value 11896 Log开关量输出 16 心跳检测故障 开关量逻辑输出 +00192 Value 11897 Log开关量输出10 1 GCB任意合闸 开关量逻辑输出 +00193 Value 11897 Log开关量输出10 2 其他GCB任意合闸 开关量逻辑输出 +00194 Value 11897 Log开关量输出10 3 正向同步 开关量逻辑输出 +00195 Value 11897 Log开关量输出10 4 反向同步 开关量逻辑输出 +00196 Value 11897 Log开关量输出10 5 同步中 开关量逻辑输出 +00197 Value 11897 Log开关量输出10 6 保留 开关量逻辑输出 +00198 Value 11897 Log开关量输出10 7 保留 开关量逻辑输出 +00199 Value 11897 Log开关量输出10 8 软卸载 开关量逻辑输出 +00200 Value 11897 Log开关量输出10 9 怠速/额定脉冲 开关量逻辑输出 +00201 Value 11897 Log开关量输出10 10 额定/怠速脉冲 开关量逻辑输出 +00202 Not Used +00203 Value 11897 Log开关量输出10 12 调峰激活 开关量逻辑输出 +00204 Not Used +00205 Not Used +00206 Not Used +00207 Not Used +00208 Value 11898 Log开关量输出11 1 候命中/自动 开关量逻辑输出 +00209 Value 11898 Log开关量输出11 2 ECU1 通信故障 开关量逻辑输出 +00210 Value 11898 Log开关量输出11 3 ECU2 通信故障 开关量逻辑输出 +00211 Value 11898 Log开关量输出11 4 ECU3 通信故障 开关量逻辑输出 +00212 Value 11898 Log开关量输出11 5 ECU4 通信故障 开关量逻辑输出 +00213 Value 11898 Log开关量输出11 6 已初始化 开关量逻辑输出 +00214 Value 11898 Log开关量输出11 7 MCB状态 开关量逻辑输出 +00215 Value 11898 Log开关量输出11 8 GCB状态 开关量逻辑输出 +00216 Value 11898 Log开关量输出11 9 外围模块通讯故障 开关量逻辑输出 +00217 Value 11898 Log开关量输出11 10 撤销通讯失败停机 开关量逻辑输出 +00218 Value 11898 Log开关量输出11 11 只共同报警 开关量逻辑输出 +00219 Value 11898 Log开关量输出11 12 公共历史记录 开关量逻辑输出 +00220 Value 11898 Log开关量输出11 13 未准备 开关量逻辑输出 +00221 Value 11898 Log开关量输出11 14 已加载 开关量逻辑输出 +00222 Value 11898 Log开关量输出11 15 正在同步 开关量逻辑输出 +00223 Value 11898 Log开关量输出11 16 并网最小功率限制 开关量逻辑输出 +00224 Value 11899 开关量逻辑输出12 1 功率限制 开关量逻辑输出 +00225 Not Used +00226 Not Used +00227 Not Used +00228 Not Used +00229 Not Used +00230 Not Used +00231 Not Used +00232 Not Used +00233 Not Used +00234 Not Used +00235 Not Used +00236 Not Used +00237 Not Used +00238 Not Used +00239 Not Used +00240 Not Used +00241 Not Used +00242 Not Used +00243 Not Used +00244 Not Used +00245 Not Used +00246 Not Used +00247 Not Used +00248 Not Used +00249 Not Used +00250 Not Used +00251 Not Used +00252 Not Used +00253 Not Used +00254 Not Used +00255 Not Used +00256 Not Used +00257 Not Used +00258 Not Used +00259 Not Used +00260 Not Used +00261 Not Used +00262 Not Used +00263 Not Used +00264 Not Used +00265 Not Used +00266 Value 20744 固定保护阶段 1 11 ECU 1通信故障警告 固定保护状态 +00267 Value 20744 固定保护阶段 1 12 ECU 1 通信故障停机 固定保护状态 +00268 Value 20744 固定保护阶段 1 13 ECU 黄灯 固定保护状态 +00269 Value 20744 固定保护阶段 1 14 ECU红灯 固定保护状态 +00270 Value 20744 固定保护阶段 1 15 ECU等待起动中 固定保护状态 +00271 Value 20744 固定保护阶段 1 16 ATT DPF 灯 固定保护状态 +00272 Value 20744 固定保护阶段 1 17 后处理HEST 灯 固定保护状态 +00273 Value 20744 固定保护阶段 1 18 后处理SCR故障灯 固定保护状态 +00274 Value 20744 固定保护阶段 1 19 后处理DEF值灯 固定保护状态 +00275 Value 20744 固定保护阶段 1 20 后处理阻止灯 固定保护状态 +00276 Value 20744 固定保护阶段 1 21 紧急停机 固定保护状态 +00277 Value 20744 固定保护阶段 1 22 充电发电机故障警告 固定保护状态 +00278 Value 20744 固定保护阶段 1 23 充电机故障停机 固定保护状态 +00279 Value 20744 固定保护阶段 1 24 停机失败警告 固定保护状态 +00280 Value 20744 固定保护阶段 1 25 超速停机 固定保护状态 +00281 Value 20744 固定保护阶段 1 26 欠速停机 固定保护状态 +00282 Value 20744 固定保护阶段 1 27 转速测量故障停机 固定保护状态 +00283 Value 20744 固定保护阶段 1 28 电池耗尽停机 固定保护状态 +00284 Value 20744 固定保护阶段 1 29 维修时间1运行时间警告 固定保护状态 +00285 Value 20744 固定保护阶段 1 30 维修时间2运行时间警告 固定保护状态 +00286 Value 20744 固定保护阶段 1 31 维修时间3运行时间警告 固定保护状态 +00287 Value 20744 固定保护阶段 1 32 起动失败停机 固定保护状态 +00288 Value 20745 固定保护阶段 2 1 MCB失败警告 固定保护状态 +00289 Value 20745 固定保护阶段 2 2 GCB故障停机 固定保护状态 +00290 Value 20745 固定保护阶段 2 3 发电L1相过压警告 固定保护状态 +00291 Value 20745 固定保护阶段 2 4 发电L1相过压停机 固定保护状态 +00292 Value 20745 固定保护阶段 2 5 发电L2相过压警告 固定保护状态 +00293 Value 20745 固定保护阶段 2 6 发电L2过电压 固定保护状态 +00294 Value 20745 固定保护阶段 2 7 发电L3相过压警告 固定保护状态 +00295 Value 20745 固定保护阶段 2 8 发电L3过电压 固定保护状态 +00296 Value 20745 固定保护阶段 2 9 发电L1L2过压警告 固定保护状态 +00297 Value 20745 固定保护阶段 2 10 发电L1L2过压停机 固定保护状态 +00298 Value 20745 固定保护阶段 2 11 发电L2L3过压警告 固定保护状态 +00299 Value 20745 固定保护阶段 2 12 发电L2L3过电压 固定保护状态 +00300 Value 20745 固定保护阶段 2 13 发电L3L1过压警告 固定保护状态 +00301 Value 20745 固定保护阶段 2 14 发电L3L1过电压 固定保护状态 +00302 Value 20745 固定保护阶段 2 15 发电L1相过压警告 固定保护状态 +00303 Value 20745 固定保护阶段 2 16 发电L1 低电压BOC 固定保护状态 +00304 Value 20745 固定保护阶段 2 17 发电L2相过压警告 固定保护状态 +00305 Value 20745 固定保护阶段 2 18 发电L2低电压BOC 固定保护状态 +00306 Value 20745 固定保护阶段 2 19 发电L3相过压警告 固定保护状态 +00307 Value 20745 固定保护阶段 2 20 发电L3低电压BOC 固定保护状态 +00308 Value 20745 固定保护阶段 2 21 发电L1L2过压警告 固定保护状态 +00309 Value 20745 固定保护阶段 2 22 发电L1L2低电压BOC 固定保护状态 +00310 Value 20745 固定保护阶段 2 23 发电L2L3过压警告 固定保护状态 +00311 Value 20745 固定保护阶段 2 24 发电L2L3低电压BOC 固定保护状态 +00312 Value 20745 固定保护阶段 2 25 发电L3L1过压警告 固定保护状态 +00313 Value 20745 固定保护阶段 2 26 发电L3L1低电压BOC 固定保护状态 +00314 Value 20745 固定保护阶段 2 27 BOC Gen Voltage Unbalance Ph-Ph 固定保护状态 +00315 Value 20745 固定保护阶段 2 28 BOC Gen Voltage Unbalance Ph-N 固定保护状态 +00316 Value 20745 固定保护阶段 2 29 发电过频警告 固定保护状态 +00317 Value 20745 固定保护阶段 2 30 发电频率高BOC 固定保护状态 +00318 Value 20745 固定保护阶段 2 31 发电欠频警告 固定保护状态 +00319 Value 20745 固定保护阶段 2 32 发电频率低BOC 固定保护状态 +00320 Value 20746 固定保护阶段 3 1 BOC IDMT Reverse Power 固定保护状态 +00321 Value 20746 固定保护阶段 3 2 失去励磁 固定保护状态 +00322 Value 20746 固定保护阶段 3 3 电流不平衡分闸冷 固定保护状态 +00323 Value 20746 固定保护阶段 3 4 市电/母排L1过压 固定保护状态 +00324 Value 20746 固定保护阶段 3 5 市电/母排L1欠压 固定保护状态 +00325 Value 20746 固定保护阶段 3 6 市电/母排L2过压 固定保护状态 +00326 Value 20746 固定保护阶段 3 7 市电/母排L2欠压 固定保护状态 +00327 Value 20746 固定保护阶段 3 8 市电/母排L2过压 固定保护状态 +00328 Value 20746 固定保护阶段 3 9 市电/母排L3欠压 固定保护状态 +00329 Value 20746 固定保护阶段 3 10 市电/母排L1L2过压 固定保护状态 +00330 Value 20746 固定保护阶段 3 11 市电/母排L1L2欠压 固定保护状态 +00331 Value 20746 固定保护阶段 3 12 市电/母排L2L3过压 固定保护状态 +00332 Value 20746 固定保护阶段 3 13 市电/母排L2L3欠压 固定保护状态 +00333 Value 20746 固定保护阶段 3 14 市电/母排L3L1过压 固定保护状态 +00334 Value 20746 固定保护阶段 3 15 市电/母排L3L1欠压 固定保护状态 +00335 Value 20746 固定保护阶段 3 16 封锁输入密码 固定保护状态 +00336 Value 20746 固定保护阶段 3 17 ATT 互锁有效 固定保护状态 +00337 Value 20746 固定保护阶段 3 18 ATT 强制再生有效 固定保护状态 +00338 Value 20746 固定保护阶段 3 19 ATT 禁止再生有效 固定保护状态 +00339 Value 20746 固定保护阶段 3 20 默认密码 固定保护状态 +00340 Not Used +00341 Not Used +00342 Not Used +00343 Not Used +00344 Not Used +00345 Value 20746 固定保护阶段 3 26 ALI 母排相序反 固定保护状态 +00346 Value 20746 固定保护阶段 3 27 ALI市电相序反 固定保护状态 +00347 Value 20746 固定保护阶段 3 28 ALI发电相序反 固定保护状态 +00348 Value 20746 固定保护阶段 3 29 Mains/Bus Voltage Unbalance Ph-Ph 固定保护状态 +00349 Value 20746 固定保护阶段 3 30 Mains/Bus Voltage Unbalance Ph-N 固定保护状态 +00350 Value 20746 固定保护阶段 3 31 市电/母排过频 固定保护状态 +00351 Value 20746 固定保护阶段 3 32 市电/母排欠频 固定保护状态 +00352 Value 20747 固定保护阶段 4 1 过载警告 固定保护状态 +00353 Value 20747 固定保护阶段 4 2 过载BOC 固定保护状态 +00354 Value 20747 固定保护阶段 4 3 电流短路BOC 固定保护状态 +00355 Value 20747 固定保护阶段 4 4 IDMT 过流BOC 固定保护状态 +00356 Not Used +00357 Value 20747 固定保护阶段 4 6 燃油传送 固定保护状态 +00358 Value 20747 固定保护阶段 4 7 燃油传输失败 固定保护状态 +00359 Value 20747 固定保护阶段 4 8 电池充电器故障警告 固定保护状态 +00360 Value 20747 固定保护阶段 4 9 越控所有停机警告 固定保护状态 +00361 Value 20747 固定保护阶段 4 10 租赁计时1警告 固定保护状态 +00362 Value 20747 固定保护阶段 4 11 租赁计时2警告 固定保护状态 +00363 Value 20747 固定保护阶段 4 12 租赁计时1时间到 固定保护状态 +00364 Value 20747 固定保护阶段 4 13 租赁计时2时间到 固定保护状态 +00365 Value 20747 固定保护阶段 4 14 租赁计时1超时停机 固定保护状态 +00366 Value 20747 固定保护阶段 4 15 租赁计时2超时停机 固定保护状态 +00367 Value 20747 固定保护阶段 4 16 租赁计时器封锁开始警告 固定保护状态 +00368 Value 20747 固定保护阶段 4 17 手动修复 固定保护状态 +00369 Value 20747 固定保护阶段 4 18 监测有市电电压警告 固定保护状态 +00370 Value 20747 固定保护阶段 4 19 偷油警告 固定保护状态 +00371 Not Used +00372 Value 20747 固定保护阶段 4 21 接地电流保护停机 固定保护状态 +00373 Not Used +00374 Value 20747 固定保护阶段 4 23 围栏1报警警告 固定保护状态 +00375 Value 20747 固定保护阶段 4 24 围栏1报警停机 固定保护状态 +00376 Value 20747 固定保护阶段 4 25 围栏1报警BOC 固定保护状态 +00377 Value 20747 固定保护阶段 4 26 围栏1报警 固定保护状态 +00378 Value 20747 固定保护阶段 4 27 围栏2报警警告 固定保护状态 +00379 Value 20747 固定保护阶段 4 28 围栏2报警停机 固定保护状态 +00380 Value 20747 固定保护阶段 4 29 围栏2报警BOC 固定保护状态 +00381 Value 20747 固定保护阶段 4 30 围栏2报警 固定保护状态 +00382 Value 20747 固定保护阶段 4 31 维修时间1间隔警告 固定保护状态 +00383 Value 20747 固定保护阶段 4 32 维修时间2间隔警告 固定保护状态 +00384 Value 20748 固定保护阶段 5 1 维修时间3间隔警告 固定保护状态 +00385 Value 20748 固定保护阶段 5 2 并联工作停机 固定保护状态 +00386 Not Used +00387 Not Used +00388 Value 20748 固定保护阶段 5 5 紧急停机 固定保护状态 +00389 Value 20748 固定保护阶段 5 6 Stp Maintenance Timer 1 RunHours 固定保护状态 +00390 Value 20748 固定保护阶段 5 7 Stp Maintenance Timer 2 RunHours 固定保护状态 +00391 Value 20748 固定保护阶段 5 8 Stp Maintenance Timer 3 RunHours 固定保护状态 +00392 Value 20748 固定保护阶段 5 9 Stp Maintenance Timer 1 Interval 固定保护状态 +00393 Value 20748 固定保护阶段 5 10 Stp Maintenance Timer 2 Interval 固定保护状态 +00394 Value 20748 固定保护阶段 5 11 Stp Maintenance Timer 3 Interval 固定保护状态 +00395 Value 20748 固定保护阶段 5 12 反向同步失败警告 固定保护状态 +00396 Value 20748 固定保护阶段 5 13 同步失败停机 固定保护状态 +00397 Value 20748 固定保护阶段 5 14 电池电压高报警 固定保护状态 +00398 Value 20748 固定保护阶段 5 15 电池电压低报警 固定保护状态 +00399 Value 20748 固定保护阶段 5 16 电池电压报警 固定保护状态 +00400 Value 20748 固定保护阶段 5 17 ECU 2通信故障警告 固定保护状态 +00401 Value 20748 固定保护阶段 5 18 ECU 2 通信故障停机 固定保护状态 +00402 Value 20748 固定保护阶段 5 19 ECU 3通信故障警告 固定保护状态 +00403 Value 20748 固定保护阶段 5 20 ECU 3 通信故障停机 固定保护状态 +00404 Value 20748 固定保护阶段 5 21 ECU 4通信故障警告 固定保护状态 +00405 Value 20748 固定保护阶段 5 22 ECU 4 通信故障停机 固定保护状态 +00406 Value 20748 固定保护阶段 5 23 Wrn MCB Fail To Open 固定保护状态 +00407 Value 20748 固定保护阶段 5 24 Wrn MCB Fail To Close 固定保护状态 +00408 Value 20748 固定保护阶段 5 25 Stp GCB Fail To Open 固定保护状态 +00409 Value 20748 固定保护阶段 5 26 Stp GCB Fail To Close 固定保护状态 +00410 Value 20748 固定保护阶段 5 27 Starting Speed Overshoot 固定保护状态 +00411 Value 20748 固定保护阶段 5 28 Sd Total Emergency Stop 固定保护状态 +00412 Value 20748 固定保护阶段 5 29 ALI 未润滑 固定保护状态 + + +======================================================================================================================================================================================== + Table: Values +======================================================================================================================================================================================== + +Allowed MODBUS functions: 03, 04 + +Register(s) Com.Obj. Name Dimension Type Len Dec Min Max Group / Subgroup +======================================================================================================================================================================================== +01000 10123 转速 RPM Integer 2 0 0 3000 发动机 +01001 8202 发电功率 kW Integer 2 0 -32767 32767 发电机 +01002 Not Used +01003 8524 发电功率L1 kW Integer 2 0 -32767 32767 发电机 +01004 8525 发电功率L2 kW Integer 2 0 -32767 32767 发电机 +01005 8526 发电功率L3 kW Integer 2 0 -32767 32767 发电机 +01006 8203 发电无功 kVAr Integer 2 0 -32767 32767 发电机 +01007 8527 发电无功L1 kVAr Integer 2 0 -32767 32767 发电机 +01008 8528 发电无功L2 kVAr Integer 2 0 -32767 32767 发电机 +01009 8529 发电无功L3 kVAr Integer 2 0 -32767 32767 发电机 +01010 8565 发电视功 kVA Integer 2 0 0 32767 发电机 +01011 8530 发电视功L1 kVA Integer 2 0 0 32767 发电机 +01012 8531 发电视功L2 kVA Integer 2 0 0 32767 发电机 +01013 8532 发电视功L3 kVA Integer 2 0 0 32767 发电机 +01014 8204 发电功率因数 Integer 1 2 -100 100 发电机 +01015 8395 发电负载特性 Char 1 0 - - 发电机 +01016 8533 发电功率因数L1 Integer 1 2 -100 100 发电机 +01017 8534 发电功率因数L2 Integer 1 2 -100 100 发电机 +01018 8535 发电功率因数L3 Integer 1 2 -100 100 发电机 +01019 8210 发电频率 Hz Unsigned 2 1 0 4000 发电机 +01020 8192 发电电压L1-N V Unsigned 2 0 0 65534 发电机 +01021 8193 发电电压L2-N V Unsigned 2 0 0 65534 发电机 +01022 8194 发电电压L3-N V Unsigned 2 0 0 65534 发电机 +01023 9628 发电电压L1-L2 V Unsigned 2 0 0 65534 发电机 +01024 9629 发电电压L2-L3 V Unsigned 2 0 0 65534 发电机 +01025 9630 发电电压L3-L1 V Unsigned 2 0 0 65534 发电机 +01026 8198 发电电流L1 A Unsigned 2 0 0 32767 发电机 +01027 8199 发电电流L2 A Unsigned 2 0 0 32767 发电机 +01028 8200 发电电流L3 A Unsigned 2 0 0 32767 发电机 +01029 14996 接地电流 A Unsigned 2 0 0 32767 发电机 +01030 8224 滑差频率 Hz Integer 2 2 -7000 7000 发电机 +01031 8225 滑差角度 ° Integer 2 1 -1800 1800 发电机 +01032 8211 市电/母排频率 Hz Unsigned 2 1 0 4000 市电/母排 +01033 8195 市/母电压L1-N V Unsigned 2 0 0 65534 市电/母排 +01034 8196 市/母电压L2-N V Unsigned 2 0 0 65534 市电/母排 +01035 8197 市/母电压L3-N V Unsigned 2 0 0 65534 市电/母排 +01036 9631 市/母电压L1-L2 V Unsigned 2 0 0 65534 市电/母排 +01037 9632 市/母电压L2-L3 V Unsigned 2 0 0 65534 市电/母排 +01038 9633 市/母电压L3-L1 V Unsigned 2 0 0 65534 市电/母排 +01039 8208 市电L1电流 A Unsigned 2 0 0 32767 市电/母排 +01040 8703 市电输入功率 kW Integer 2 0 -32767 32767 市电/母排 +01041 8704 市电输入无功 kVAr Integer 2 0 -32767 32767 市电/母排 +01042 8705 市电PF Integer 1 2 -100 100 市电/母排 +01043 9847 最大矢量变化 ° Unsigned 2 1 0 450 市电/母排 +01044 9848 ROCOF Hz/s Integer 2 2 0 5000 市电/母排 +01045 10049 最高ROCOF Hz/s Integer 2 2 0 5000 市电/母排 +01046-01047(2) 10601 有功负载 kW Integer 4 0 -65000 65000 负载 +01048-01049(2) 10644 无功负载 kVAr Integer 4 0 -65000 65000 负载 +01050 9025 负载PF Integer 1 2 -100 100 负载 +01051 8213 电池电压 V Integer 2 1 0 360 控制器I/O口 +01052 10603 D+ V Integer 2 1 0 360 控制器I/O口 +01053 Not Used +01054 9152 未用 °C Integer 2 0 -16 120 控制器I/O口 +01055 9153 燃油位 % Integer 2 0 0 100 控制器I/O口 +01056 Not Used +01057 8235 开关量输入 Binary#1 2 0 - - 控制器I/O口 +01058 15780 紧急停机 Binary#2 1 0 - - 控制器I/O口 +01059 8239 开关量输出 Binary#3 2 0 - - 控制器I/O口 +01060-01061(2) 19437 EngineSpeed rpm Integer 4 0 0 5000 ECU 隐藏; Yuchai YC-ECU 1 +01062-01063(2) 19433 P-Oil bar Integer 4 2 0 1000 ECU 隐藏; Yuchai YC-ECU 1 +01064-01065(2) 19435 T-Coolant °C Integer 4 0 -40 210 ECU 隐藏; Yuchai YC-ECU 1 +01066-01067(2) 19436 FuelRate L/h Integer 4 1 0 32000 ECU 隐藏; Yuchai YC-ECU 1 +01068-01069(2) 19434 T-IntManifold °C Integer 4 0 -40 210 ECU 隐藏; Yuchai YC-ECU 1 +01070 Not Used +01071 Not Used +01072 Not Used +01073 Not Used +01074 Not Used +01075 Not Used +01076 Not Used +01077-01084(8) 23929 当前网关 String 16 0 - - CM-ETHERNET +01085-01092(8) 23928 主DNS String 16 0 - - CM-ETHERNET +01093-01100(8) 23927 次级DNS String 16 0 - - CM-ETHERNET +01101 23925 最后E-mail结果 Unsigned 1 0 0 254 CM-ETHERNET +01102-01117(16) 23932 MAC 地址 String 32 0 - - CM-ETHERNET +01118 23916 以太网接线模式 List#1 1 0 0 4 CM-ETHERNET +01119-01126(8) 23926 AirGate ID String 16 0 - - CM-ETHERNET +01127 23910 AirGate 状态 List#2 1 0 0 8 CM-ETHERNET +01128-01159(32) 23915 AirGate服务节点 String 64 0 - - CM-ETHERNET +01160-01167(8) 24309 AirGate ID String 16 0 - - CM-4G-GPS +01168 23967 AirGate 状态 List#2 1 0 0 8 CM-4G-GPS +01169-01200(32) 23991 AirGate服务节点 String 64 0 - - CM-4G-GPS +01201-01208(8) 23971 IP地址 String 16 0 - - CM-4G-GPS +01209-01216(8) 23984 主DNS String 16 0 - - CM-4G-GPS +01217-01224(8) 23983 次级DNS String 16 0 - - CM-4G-GPS +01225 24307 最后E-mail结果 Unsigned 1 0 0 254 CM-4G-GPS +01226 24302 讯号强度 % Unsigned 1 0 0 100 CM-4G-GPS +01227 24288 数据机状态 List#3 1 0 0 29 CM-4G-GPS +01228 23972 网络状态 List#4 1 0 0 2 CM-4G-GPS +01229 23973 GPS 状态 List#5 1 0 0 2 CM-4G-GPS +01230-01245(16) 24147 网络名称 String 32 0 - - CM-4G-GPS +01246-01253(8) 24146 网络模式 String 16 0 - - CM-4G-GPS +01254-01261(8) 24268 纬度 String 16 0 - - CM-4G-GPS +01262-01269(8) 24267 经度 String 16 0 - - CM-4G-GPS +01270 24265 有效卫星 Unsigned 1 0 0 15 CM-4G-GPS +01271 24264 速度 km/h Unsigned 2 0 0 65535 CM-4G-GPS +01272 8663 所需目标功率 kW Integer 2 0 0 5000 速度/负载控制 +01273 13105 请求功率 kW Integer 2 0 0 5000 速度/负载控制 +01274 9052 速度调节输出 V Integer 2 3 -10000 10000 速度/负载控制 +01275 10137 速度请求 % Integer 2 1 0 1000 速度/负载控制 +01276 10006 所需转速 RPM Unsigned 2 0 0 3000 速度/负载控制 +01277 12877 请求无功 kVAr Integer 2 0 -32000 32000 电压/因数控制 +01278 9053 调压输出 V Integer 2 3 -10000 10000 电压/因数控制 +01279 14997 电压请求 % Integer 2 1 0 1000 电压/因数控制 +01280 9018 额定功率 kW Integer 2 0 1 32000 发电机 +01281 9917 额定电压 V Unsigned 2 0 0 65534 发电机 +01282 9978 额定电流 A Unsigned 2 0 0 65534 发电机 +01283-01284(2) 8205 发电KWh kWh Integer 4 0 -32768000 32767000 统计值 +01285-01286(2) 8539 发电KVArh kVArh Integer 4 0 -32768000 32767000 统计值 +01287-01288(2) 11025 市电KWh kWh Integer 4 0 -32768000 32767000 统计值 +01289-01290(2) 11026 市电kVArh kVArh Integer 4 0 -32768000 32767000 统计值 +01291-01292(2) 8206 运行小时 h Integer 4 1 -32768000 32767000 统计值 +01293 8207 起动次数 Unsigned 2 0 0 65534 统计值 +01294 11616 维修时间1运行小时 h Integer 2 0 -10000 10000 统计值 +01295 11617 维修时间2运行小时 h Integer 2 0 -10000 10000 统计值 +01296 11618 维修时间3运行小时 h Integer 2 0 -10000 10000 统计值 +01297-01298(2) 16387 维修时间1间隔 天 Integer 4 0 -10000 10000 统计值 +01299-01300(2) 16388 维修时间2间隔 天 Integer 4 0 -10000 10000 统计值 +01301-01302(2) 16389 维修时间3间隔 天 Integer 4 0 -10000 10000 统计值 +01303-01304(2) 14328 租赁1 h Integer 4 0 0 9000 统计值 +01305-01306(2) 14369 租赁2 天 Integer 4 0 0 32000 统计值 +01307-01308(2) 11195 急停次数 Unsigned 4 0 0 65535000 统计值 +01309-01310(2) 11196 停机 Unsigned 4 0 0 65535000 统计值 +01311-01312(2) 9040 总燃油消耗 L Unsigned 4 0 0 65535000 统计值 +01313 13772 时间到清空 天 Integer 2 0 0 32000 统计值 +01314 13771 时间到清空 hrs Integer 2 0 0 23 统计值 +01315 13770 时间到清空 min Integer 2 0 0 59 统计值 +01316 Not Used +01317 Not Used +01318 Not Used +01319 Not Used +01320 9887 控制器模式 List#6 1 0 0 3 信息 +01321 9591 负载撤载状态 List#7 1 0 0 5 信息 +01322 9244 发动机状态 List#8 1 0 0 20 信息 +01323 9245 断路器状态 List#9 1 0 0 12 信息 +01324 10040 计时文本 List#10 1 0 0 40 信息 +01325 12944 连接类型 List#11 1 0 0 7 信息 +01326 14447 SPI模块A List#12 1 0 0 15 信息 +01327 14448 SPI模块B List#12 1 0 0 15 信息 +01328-01343(16) 24501 ID 字串 String 32 0 - - 信息 +01344-01351(8) 24339 FW版本 String 16 0 - - 信息 +01352 8480 应用 List#13 1 0 0 2 信息 +01353 8707 FW分支 List#14 1 0 0 1 信息 +01354 8546 CAN16 Binary#4 2 0 - - 信息 +01355 8827 CAN32 Binary#5 2 0 - - 信息 +01356 11081 Reg16 Binary#6 2 0 - - 信息 +01357 11082 Reg32 Binary#7 2 0 - - 信息 +01358 10196 机组已加载16 Binary#8 2 0 - - 信息 +01359 10197 机组已加载32 Binary#9 2 0 - - 信息 +01360 8624 发动机优先 Unsigned 1 0 0 32 功率管理 +01361-01362(2) 15805 实际储备 kW Integer 4 0 -32768000 32767000 功率管理 +01363-01364(2) 15806 储备起动 kW Integer 4 0 -32768000 32767000 功率管理 +01365-01366(2) 15807 储备停机 kW Integer 4 0 -32768000 32767000 功率管理 +01367 15673 动态转动储备 kW Integer 2 0 -32768 32767 功率管理 +01368 15674 动态转动储备偏移 kW Integer 2 0 -32768 32767 功率管理 +01369 10788 实际相对储备 % Integer 2 0 0 110 功率管理 +01370 10786 相对储备启动 % Integer 2 0 0 110 功率管理 +01371 10787 相对储备停机 % Integer 2 0 0 110 功率管理 +01372-01373(2) 10657 运行总功率 kW Integer 4 0 -32768000 32767000 功率管理 +01374-01375(2) 10656 总运算无功 kVAr Integer 4 0 -32768000 32767000 功率管理 +01376-01377(2) 10999 功率管理中额定运行功率 kW Integer 4 0 -32768000 32767000 功率管理 +01378-01379(2) 10658 所有运行额定功率 kW Integer 4 0 -32768000 32767000 功率管理 +01380-01381(2) 10998 并网持续功率 kW Integer 4 0 -32768000 32767000 功率管理 +01382 10012 最少运行功率 kW Unsigned 2 0 0 32767 功率管理 +01383-01384(2) 8974 实际功率段 Binary#10 4 0 - - 功率管理 +01385-01386(2) 8975 下一功率段 Binary#11 4 0 - - 功率管理 +01387 9143 Log开关量输出1 Binary#12 2 0 - - 开关量逻辑输出 +01388 9144 Log开关量输出2 Binary#13 2 0 - - 开关量逻辑输出 +01389 9145 Log开关量输出3 Binary#14 2 0 - - 开关量逻辑输出 +01390 9146 Log开关量输出4 Binary#15 2 0 - - 开关量逻辑输出 +01391 9147 Log开关量输出5 Binary#16 2 0 - - 开关量逻辑输出 +01392 9148 Log开关量输出6 Binary#17 2 0 - - 开关量逻辑输出 +01393 9149 Log开关量输出7 Binary#18 2 0 - - 开关量逻辑输出 +01394 9150 Log开关量输出8 Binary#19 2 0 - - 开关量逻辑输出 +01395 11896 Log开关量输出 Binary#20 2 0 - - 开关量逻辑输出 +01396 11897 Log开关量输出10 Binary#21 2 0 - - 开关量逻辑输出 +01397 11898 Log开关量输出11 Binary#22 2 0 - - 开关量逻辑输出 +01398 11899 开关量逻辑输出12 Binary#23 2 0 - - 开关量逻辑输出 +01399 Not Used +01400-01401(2) 13663 发电KVAh kVAh Integer 4 0 -32768000 32767000 统计值 + + +======================================================================================================================================================================================== + Table: Setpoints +======================================================================================================================================================================================== + +Allowed MODBUS functions: 03, 04, 06, 16 + +Register(s) Com.Obj. Name Dimension Type Len Dec Min Max Group / Subgroup +======================================================================================================================================================================================== + + +======================================================================================================================================================================================== + List# Types Meaning +======================================================================================================================================================================================== + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#1 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 关闭连接 + 1 10-HD + 2 10-FD + 3 100-HD + 4 100-FD + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#2 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 没有定义 + 1 等待连线 + 2 解析 + 3 连接中 + 4 产生第二通道 + 5 注册中 + 6 连线不互通 + 7 连线互通 + 8 Susp AGkeyEmpty + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#3 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 日出偏移 + 1 OK + 2 EO1 + 3 EO2 + 4 E SIM + 5 EO4 + 6 E 注册 + 7 E 注册 + 8 E 注册 + 9 E 内容 + 10 E 连接 + 11 E08 + 12 E09 + 13 E10 + 14 E 注册 + 15 E12 + 16 E13 + 17 E14 + 18 E SMS 发送 + 19 起始1错误 + 20 起始2错误 + 21 起始3错误 + 22 E18 + 23 E18 + 24 E18 + 25 E 失去连线 + 26 E19 + 27 E18 + 28 重启-配置 + 29 重启-app + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#4 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 无法使用 + 1 可以使用 + 2 附上 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#5 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 未定义 + 1 寻找中 + 2 固定 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#6 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 关 + 1 手动 + 2 自动 + 3 测试 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#7 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 未卸载 + 1 甩负载1 + 2 甩负载2 + 3 甩负载3 + 4 甩负载S4 + 5 甩负载S5 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#8 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 初始化 + 1 候命中 + 2 未预备 + 3 预起动 + 4 盘车中 + 5 间歇 + 6 起动中 + 7 运行中 + 8 已加载 + 9 软卸载 + 10 冷却中 + 11 停机 + 12 故障停机 + 13 通风 + 14 应急手动 + 15 软加载 + 16 等待停机 + 17 故障停机通风 + 18 失去励磁 + 19 警告 + 20 卸载 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#9 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 初始化 + 1 断路器分 + 2 孤岛运行 + 3 市电运行 + 4 并联操作 + 5 反向同步 + 6 同步中 + 7 市电故障 + 8 有效错误 + 9 市电恢复 + 10 多台岛运 + 11 多台并运 + 12 应急手动 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#10 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 无计时 + 1 预起动 + 2 盘车中 + 3 怠速运行 + 4 冷却中 + 5 停机阀 + 6 后冷却 + 7 间歇 + 8 燃气通风 + 9 最短稳定到 + 10 最大稳定至 + 11 MCB合 + 12 转换延时 + 13 恢复延时 + 14 启动延时 + 15 电压侦测 + 16 GCB延时 + 17 GCB分闸 + 18 同步超时 + 19 GCB闭合 + 20 MCB分闸 + 21 等待停机 + 22 系统起动 + 23 系统停机 + 24 下一台起动 + 25 下一台停机 + 26 甩负载改变 + 27 重接载变换(无效) + 28 卸载停机 + 29 警告 + 30 RPM 窗口超时 + 31 励磁延时 + 32 发动机起动超时 + 33 允许同步 + 34 燃料阀提前 + 35 失去励磁 + 36 假负载开 + 37 假负载关 + 38 手动激活ECU + 39 After Sprink + 40 GCB Toggle + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#11 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 单相 + 1 SplPhL1L2 + 2 SplPhL1L3 + 3 三角接电压 + 4 3相3线 + 5 3相4线 + 6 3PH 黄低 + 7 3相黄高 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#12 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 无 + 1 EM-AOUT8 + 2 EM-BIO8 + 3 EM-EFCP + 4 EM-EFCP-8mA + 5 EM-BIO8-EFCP + 6 CM-RS232-485 + 7 CM-RS232 + 8 CM-Ethernet + 9 CM-GPRS + 10 CM-3G + 11 CM-3G-GPS + 12 CM-CAN-RS485 + 13 CM-Ethernet + 14 CM-4G-GPS + 15 CM-WIFI + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#13 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 未用 + 1 未用 + 2 机组控制器 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#14 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 未用 + 1 标准 + + +======================================================================================================================================================================================== + Binary# Types Meaning +======================================================================================================================================================================================== + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#1 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 远程起动/停机 + 1 中线开关合闸反馈 + 2 MCB反馈 + 3 接地故障报警 + 4 GCB反馈 + 5 高温水低水位报警 + 6 低温水低水位报警 + 7 绕组温度高报警 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#2 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 紧急停机 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#3 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 起动马达1 + 1 ECU供电 + 2 GCB合闸脉冲 + 3 GCB分闸脉冲 + 4 怠速/额定 + 5 预润滑泵 + 6 停机阀 + 7 蜂鸣 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#4 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 CAN CU 1 + 1 CAN CU 2 + 2 CAN CU 3 + 3 CAN CU 4 + 4 CAN CU 5 + 5 CAN CU 6 + 6 CAN CU 7 + 7 CAN CU 8 + 8 CAN CU 9 + 9 CAN CU 10 + 10 CAN CU 11 + 11 CAN CU 12 + 12 CAN CU 13 + 13 CAN CU 14 + 14 CAN CU 15 + 15 CAN CU 16 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#5 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 CAN CU 17 + 1 CAN CU 18 + 2 CAN CU 19 + 3 CAN CU 20 + 4 CAN CU 21 + 5 CAN CU 22 + 6 CAN CU 23 + 7 CAN CU 24 + 8 CAN CU 25 + 9 CAN CU 26 + 10 CAN CU 27 + 11 CAN CU 28 + 12 CAN CU 29 + 13 CAN CU 30 + 14 CAN CU 31 + 15 CAN CU 32 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#6 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 Reg CU 1 + 1 Reg CU 2 + 2 Reg CU 3 + 3 Reg CU 4 + 4 Reg CU 5 + 5 Reg CU 6 + 6 Reg CU 7 + 7 Reg CU 8 + 8 Reg CU 9 + 9 Reg CU 10 + 10 Reg CU 11 + 11 Reg CU 12 + 12 Reg CU 13 + 13 Reg CU 14 + 14 Reg CU 15 + 15 Reg CU 16 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#7 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 Reg CU 17 + 1 Reg CU 18 + 2 Reg CU 19 + 3 Reg CU 20 + 4 Reg CU 21 + 5 Reg CU 22 + 6 Reg CU 23 + 7 Reg CU 24 + 8 Reg CU 25 + 9 Reg CU 26 + 10 Reg CU 27 + 11 Reg CU 28 + 12 Reg CU 29 + 13 Reg CU 30 + 14 Reg CU 31 + 15 Reg CU 32 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#8 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 机组已加载1 + 1 机组已加载2 + 2 机组已加载3 + 3 机组已加载4 + 4 机组已加载5 + 5 机组已加载6 + 6 机组已加载7 + 7 机组已加载8 + 8 机组已加载9 + 9 机组已加载10 + 10 机组已加载11 + 11 机组已加载12 + 12 机组已加载13 + 13 机组已加载14 + 14 机组已加载15 + 15 机组已加载16 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#9 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 机组已加载17 + 1 机组已加载18 + 2 机组已加载19 + 3 机组已加载20 + 4 机组已加载21 + 5 机组已加载22 + 6 机组已加载23 + 7 机组已加载24 + 8 机组已加载25 + 9 机组已加载26 + 10 机组已加载27 + 11 机组已加载28 + 12 机组已加载29 + 13 机组已加载30 + 14 机组已加载31 + 15 机组已加载32 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#10 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 实际功率段 1 + 1 实际功率段 2 + 2 实际功率段 3 + 3 实际功率段 4 + 4 实际功率段 5 + 5 实际功率段 6 + 6 实际功率段 7 + 7 实际功率段 8 + 8 实际功率段 9 + 9 实际功率段 10 + 10 实际功率段 11 + 11 实际功率段 12 + 12 实际功率段 13 + 13 实际功率段 14 + 14 实际功率段 15 + 15 实际功率段 16 + 16 实际功率段 17 + 17 实际功率段 18 + 18 实际功率段 19 + 19 实际功率段 20 + 20 实际功率段 21 + 21 实际功率段 22 + 22 实际功率段 23 + 23 实际功率段 24 + 24 实际功率段 25 + 25 实际功率段 26 + 26 实际功率段 27 + 27 实际功率段 28 + 28 实际功率段 29 + 29 实际功率段 30 + 30 实际功率段 31 + 31 实际功率段 32 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#11 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 下一功率段 1 + 1 下一功率段 2 + 2 下一功率段 3 + 3 下一功率段 4 + 4 下一功率段 5 + 5 下一功率段 6 + 6 下一功率段 7 + 7 下一功率段 8 + 8 下一功率段 9 + 9 下一功率段 10 + 10 下一功率段 11 + 11 下一功率段 12 + 12 下一功率段 13 + 13 下一功率段 14 + 14 下一功率段 15 + 15 下一功率段 16 + 16 下一功率段 17 + 17 下一功率段 18 + 18 下一功率段 19 + 19 下一功率段 20 + 20 下一功率段 21 + 21 下一功率段 22 + 22 下一功率段 23 + 23 下一功率段 24 + 24 下一功率段 25 + 25 下一功率段 26 + 26 下一功率段 27 + 27 下一功率段 28 + 28 下一功率段 29 + 29 下一功率段 30 + 30 下一功率段 31 + 31 下一功率段 32 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#12 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 未用 + 1 起动马达1 + 2 燃油阀 + 3 停机阀 + 4 停机脉冲 + 5 点火 + 6 预起动 + 7 冷却泵 + 8 怠速/额定 + 9 空气阀 + 10 警告 + 11 蜂鸣 + 12 GCB合/分 + 13 GCB合闸脉冲 + 14 GCB分闸脉冲 + 15 GCB失压线圈 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#13 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 MCB合/分 + 1 MCB合闸脉冲 + 2 MCB分闸脉冲 + 3 MCB失压线圈 + 4 候命中 + 5 可测市电自启动 + 6 可以加载 + 7 不在自动 + 8 运行中 + 9 冷却中 + 10 加载 + 11 发电机正常 + 12 市电/母排正常 + 13 动作计时器1 + 14 动作计时器2 + 15 预热塞 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#14 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 停止按鈕 + 1 温度开关 + 2 保留 + 3 点火启动 + 4 手动候命 + 5 心跳 + 6 关模式 + 7 手动模式 + 8 自动模式 + 9 测试模式 + 10 发电电压报警报警 + 11 发电电压警告 + 12 公共报警值1 + 13 公共报警值2 + 14 公共报警有效值1 + 15 公共报警有效值2 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#15 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 发电频率警告 + 1 发电频率报警 + 2 AL 市电/母排故障 + 3 AL 市电/母排频率 + 4 AL 市电/母排电压 + 5 公共警告 + 6 公共报警停机 + 7 公共报警分闸冷却 + 8 传感器故障公共报警 + 9 ECU供电 + 10 ECU停止运行 + 11 保留 + 12 保留 + 13 保留 + 14 AL发电过流 + 15 保留 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#16 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 禁止停机 + 1 静态逻辑0 + 2 静态逻辑1 + 3 需要再生 + 4 后处理HEST 灯 + 5 保留 + 6 保留 + 7 保留 + 8 消音按钮 + 9 起动按钮 + 10 停止按钮 + 11 MCB按钮 + 12 GCB按钮 + 13 故障复位按钮 + 14 电力报警 + 15 公共报警慢停 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#17 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 ECU等待起动中 + 1 模拟量1开关 + 2 模拟量2开关 + 3 模拟量3开关 + 4 模拟量4开关 + 5 模拟量5开关 + 6 模拟量6开关 + 7 保留 + 8 保留 + 9 保留 + 10 保留 + 11 保留 + 12 保留 + 13 保留 + 14 保留 + 15 保留 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#18 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 保留 + 1 保留 + 2 保留 + 3 保留 + 4 保留 + 5 ECU通讯故障 + 6 ECU红灯 + 7 ECU 黄灯 + 8 后处理DEF值灯 + 9 后处理阻止灯 + 10 运用计时3 + 11 运用计时4 + 12 保留 + 13 保留 + 14 保留 + 15 保留 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#19 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 负载撤载阶段1 + 1 负载撤载阶段2 + 2 负载撤载阶段3 + 3 卸载阶段4 + 4 卸载阶段5 + 5 频率选择 + 6 保留 + 7 ATT DPF 灯 + 8 后处理SCR故障灯 + 9 排空 + 10 排空通脉冲 + 11 排空断脉冲 + 12 保留 + 13 起动马达2 + 14 ATT连锁状态 + 15 ECU 通信正常 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#20 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 ATT Regen ACK 灯 + 1 ATT PCD 灯 + 2 维护时间1报警 + 3 维护时间2报警 + 4 维护时间3报警 + 5 kWh 脉冲 + 6 机组已互换 + 7 中线合/分 + 8 系统储备OK + 9 系统候命中 + 10 保留 + 11 速度升 + 12 速度降 + 13 AVR升 + 14 AVR降 + 15 心跳检测故障 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#21 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 GCB任意合闸 + 1 其他GCB任意合闸 + 2 正向同步 + 3 反向同步 + 4 同步中 + 5 保留 + 6 保留 + 7 软卸载 + 8 怠速/额定脉冲 + 9 额定/怠速脉冲 + 10 保留 + 11 调峰激活 + 12 保留 + 13 保留 + 14 保留 + 15 保留 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#22 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 候命中/自动 + 1 ECU1 通信故障 + 2 ECU2 通信故障 + 3 ECU3 通信故障 + 4 ECU4 通信故障 + 5 已初始化 + 6 MCB状态 + 7 GCB状态 + 8 外围模块通讯故障 + 9 撤销通讯失败停机 + 10 只共同报警 + 11 公共历史记录 + 12 未准备 + 13 已加载 + 14 正在同步 + 15 并网最小功率限制 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#23 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 功率限制 + 1 假负载阶段 1 + 2 假负载阶段 2 + 3 假负载阶段 3 + 4 假负载阶段 4 + 5 假负载阶段 5 + 6 历史记录指示 + 7 起动按键状态 + 8 停机按键 + 9 复位按键状态 + 10 蜂鸣按键状态 + 11 MCB按键状态 + 12 GCB按键状态 + 13 预润滑泵 + + diff --git a/docs/AI训练资料/科迈控制/IG500-G2通讯点表.txt b/docs/AI训练资料/科迈控制/IG500-G2通讯点表.txt new file mode 100644 index 00000000..14d5f0db --- /dev/null +++ b/docs/AI训练资料/科迈控制/IG500-G2通讯点表.txt @@ -0,0 +1,1491 @@ +HEADER +======================================================================================================================================================================================== +Format: 2.3 +LongNamesLength: 64 - Name, Name of State, Name of Value, Bit Name, Group +ShortNamesLength: 10 - Dimension, Type +======================================================================================================================================================================================== +======================================================================================================================================================================================== + Table: Binaries +======================================================================================================================================================================================== + +Allowed MODBUS functions: 01, 02 + +Addresses Source +Modbus Addr. = Value C.O.# Name of Value Bit # Bit Name Group / Subgroup +Prot. Addr. = State State # Name of State Activated by protection(s): +======================================================================================================================================================================================== +00000 Value 8235 开关量输入 1 远程起动/停机 控制器I/O口 +00001 Value 8235 开关量输入 2 GCB反馈 控制器I/O口 +00002 Not Used +00003 Not Used +00004 Not Used +00005 Not Used +00006 Not Used +00007 Not Used +00008 Value 8239 开关量输出 1 起动马达1 控制器I/O口 +00009 Value 8239 开关量输出 2 燃油阀 控制器I/O口 +00010 Value 8239 开关量输出 3 GCB闭合线圈 控制器I/O口 +00011 Value 8239 开关量输出 4 GCB断开线圈 控制器I/O口 +00012 Value 8239 开关量输出 5 故障复位按钮 控制器I/O口 +00013 Value 8239 开关量输出 6 中线合/分 控制器I/O口 +00014 Value 8239 开关量输出 7 百叶窗控制 控制器I/O口 +00015 Value 8239 开关量输出 8 蜂鸣 控制器I/O口 +00016 Value 20743 用户按钮 1 用户按钮1 用户按钮 / 用户按钮 +00017 Value 20743 用户按钮 2 用户按钮2 用户按钮 / 用户按钮 +00018 Value 20743 用户按钮 3 用户按钮3 用户按钮 / 用户按钮 +00019 Value 20743 用户按钮 4 用户按钮4 用户按钮 / 用户按钮 +00020 Value 20743 用户按钮 5 用户按钮5 用户按钮 / 用户按钮 +00021 Value 20743 用户按钮 6 用户按钮6 用户按钮 / 用户按钮 +00022 Value 20743 用户按钮 7 用户按钮7 用户按钮 / 用户按钮 +00023 Value 20743 用户按钮 8 用户按钮8 用户按钮 / 用户按钮 +00024 Value 20743 用户按钮 9 用户按钮9 用户按钮 / 用户按钮 +00025 Value 20743 用户按钮 10 用户按钮10 用户按钮 / 用户按钮 +00026 Value 20743 用户按钮 11 用户按钮11 用户按钮 / 用户按钮 +00027 Value 20743 用户按钮 12 用户按钮12 用户按钮 / 用户按钮 +00028 Value 20743 用户按钮 13 用户按钮13 用户按钮 / 用户按钮 +00029 Value 20743 用户按钮 14 用户按钮14 用户按钮 / 用户按钮 +00030 Value 20743 用户按钮 15 用户按钮15 用户按钮 / 用户按钮 +00031 Value 20743 用户按钮 16 用户按钮16 用户按钮 / 用户按钮 +00032 Not Used +00033 Value 14291 扩展BIO A 2 公共警告 插入式 +00034 Not Used +00035 Not Used +00036 Value 14291 扩展BIO A 5 水箱风机运行反馈 插入式 +00037 Value 14291 扩展BIO A 6 高油位报警 插入式 +00038 Value 14291 扩展BIO A 7 低油位停机 插入式 +00039 Value 14291 扩展BIO A 8 燃油泄漏报警 插入式 +00040 Not Used +00041 Not Used +00042 Not Used +00043 Not Used +00044 Not Used +00045 Not Used +00046 Not Used +00047 Not Used +00048 Not Used +00049 Value 9143 Log开关量输出1 2 起动马达1 开关量逻辑输出 +00050 Value 9143 Log开关量输出1 3 燃油阀 开关量逻辑输出 +00051 Value 9143 Log开关量输出1 4 停机阀 开关量逻辑输出 +00052 Value 9143 Log开关量输出1 5 停机脉冲 开关量逻辑输出 +00053 Value 9143 Log开关量输出1 6 点火 开关量逻辑输出 +00054 Value 9143 Log开关量输出1 7 预起动 开关量逻辑输出 +00055 Value 9143 Log开关量输出1 8 冷却泵 开关量逻辑输出 +00056 Value 9143 Log开关量输出1 9 怠速/额定 开关量逻辑输出 +00057 Value 9143 Log开关量输出1 10 空气阀 开关量逻辑输出 +00058 Value 9143 Log开关量输出1 11 警告 开关量逻辑输出 +00059 Value 9143 Log开关量输出1 12 蜂鸣 开关量逻辑输出 +00060 Value 9143 Log开关量输出1 13 GCB合/分 开关量逻辑输出 +00061 Value 9143 Log开关量输出1 14 GCB闭合线圈 开关量逻辑输出 +00062 Value 9143 Log开关量输出1 15 GCB断开线圈 开关量逻辑输出 +00063 Value 9143 Log开关量输出1 16 GCB失压线圈 开关量逻辑输出 +00064 Value 9144 Log开关量输出2 1 MCB合/分 开关量逻辑输出 +00065 Value 9144 Log开关量输出2 2 脉冲MCB合 开关量逻辑输出 +00066 Value 9144 Log开关量输出2 3 脉冲MCB分 开关量逻辑输出 +00067 Value 9144 Log开关量输出2 4 MCB失压线圈 开关量逻辑输出 +00068 Value 9144 Log开关量输出2 5 候命中 开关量逻辑输出 +00069 Value 9144 Log开关量输出2 6 可测市电自启动 开关量逻辑输出 +00070 Value 9144 Log开关量输出2 7 可以加载 开关量逻辑输出 +00071 Value 9144 Log开关量输出2 8 不在自动 开关量逻辑输出 +00072 Value 9144 Log开关量输出2 9 运行中 开关量逻辑输出 +00073 Value 9144 Log开关量输出2 10 冷却中 开关量逻辑输出 +00074 Value 9144 Log开关量输出2 11 加载 开关量逻辑输出 +00075 Value 9144 Log开关量输出2 12 发电正常 开关量逻辑输出 +00076 Value 9144 Log开关量输出2 13 市电/母排正常 开关量逻辑输出 +00077 Value 9144 Log开关量输出2 14 动作计时器1 开关量逻辑输出 +00078 Value 9144 Log开关量输出2 15 动作计时器2 开关量逻辑输出 +00079 Value 9144 Log开关量输出2 16 预热塞 开关量逻辑输出 +00080 Value 9145 Log开关量输出3 1 停止按鈕 开关量逻辑输出 +00081 Not Used +00082 Not Used +00083 Value 9145 Log开关量输出3 4 心跳 开关量逻辑输出 +00084 Value 9145 Log开关量输出3 5 点火启动 开关量逻辑输出 +00085 Value 9145 Log开关量输出3 6 关模式 开关量逻辑输出 +00086 Value 9145 Log开关量输出3 7 手动模式 开关量逻辑输出 +00087 Value 9145 Log开关量输出3 8 自动模式 开关量逻辑输出 +00088 Value 9145 Log开关量输出3 9 测试模式 开关量逻辑输出 +00089 Value 9145 Log开关量输出3 10 过流 开关量逻辑输出 +00090 Value 9145 Log开关量输出3 11 起动按钮 开关量逻辑输出 +00091 Value 9145 Log开关量输出3 12 停止按钮 开关量逻辑输出 +00092 Value 9145 Log开关量输出3 13 MCB按钮 开关量逻辑输出 +00093 Value 9145 Log开关量输出3 14 GCB按钮 开关量逻辑输出 +00094 Value 9145 Log开关量输出3 15 故障复位按钮 开关量逻辑输出 +00095 Value 9145 Log开关量输出3 16 消音按钮 开关量逻辑输出 +00096 Value 9146 Log开关量输出4 1 发电频率警告 开关量逻辑输出 +00097 Value 9146 Log开关量输出4 2 发电频率报警 开关量逻辑输出 +00098 Value 9146 Log开关量输出4 3 发电电压警告 开关量逻辑输出 +00099 Value 9146 Log开关量输出4 4 发电电压报警 开关量逻辑输出 +00100 Value 9146 Log开关量输出4 5 市电/母排故障报警 开关量逻辑输出 +00101 Value 9146 Log开关量输出4 6 市电/母排频率报警 开关量逻辑输出 +00102 Value 9146 Log开关量输出4 7 市电/母排电压报警 开关量逻辑输出 +00103 Value 9146 Log开关量输出4 8 公共警告 开关量逻辑输出 +00104 Value 9146 Log开关量输出4 9 公共报警停机 开关量逻辑输出 +00105 Value 9146 Log开关量输出4 10 公共报警BOC 开关量逻辑输出 +00106 Value 9146 Log开关量输出4 11 传感器故障公共报警 开关量逻辑输出 +00107 Value 9146 Log开关量输出4 12 撤销通讯失败停机 开关量逻辑输出 +00108 Value 9146 Log开关量输出4 13 公共报警慢停 开关量逻辑输出 +00109 Not Used +00110 Not Used +00111 Value 9146 Log开关量输出4 16 公共市电保护 开关量逻辑输出 +00112 Value 9147 Log开关量输出5 1 只共同报警 开关量逻辑输出 +00113 Value 9147 Log开关量输出5 2 公共历史记录 开关量逻辑输出 +00114 Value 9147 Log开关量输出5 3 ECU供电 开关量逻辑输出 +00115 Value 9147 Log开关量输出5 4 ECU停止运行 开关量逻辑输出 +00116 Value 9147 Log开关量输出5 5 保留 开关量逻辑输出 +00117 Value 9147 Log开关量输出5 6 保留 开关量逻辑输出 +00118 Value 9147 Log开关量输出5 7 禁止停机 开关量逻辑输出 +00119 Value 9147 Log开关量输出5 8 静态逻辑0 开关量逻辑输出 +00120 Value 9147 Log开关量输出5 9 静态逻辑1 开关量逻辑输出 +00121 Value 9147 Log开关量输出5 10 需要再生regen 开关量逻辑输出 +00122 Value 9147 Log开关量输出5 11 后处理HEST 灯 开关量逻辑输出 +00123 Not Used +00124 Not Used +00125 Not Used +00126 Value 9147 Log开关量输出5 15 软卸载 开关量逻辑输出 +00127 Value 9147 Log开关量输出5 16 系统候命中 开关量逻辑输出 +00128 Value 9148 Log开关量输出6 1 ECU等待起动中 开关量逻辑输出 +00129 Value 9148 Log开关量输出6 2 AIN1开关 开关量逻辑输出 +00130 Value 9148 Log开关量输出6 3 AIN2开关 开关量逻辑输出 +00131 Value 9148 Log开关量输出6 4 AIN3开关 开关量逻辑输出 +00132 Value 9148 Log开关量输出6 5 AIN4开关 开关量逻辑输出 +00133 Value 9148 Log开关量输出6 6 AIN5开关 开关量逻辑输出 +00134 Value 9148 Log开关量输出6 7 AIN6开关 开关量逻辑输出 +00135 Value 9148 Log开关量输出6 8 AIN7开关 开关量逻辑输出 +00136 Value 9148 Log开关量输出6 9 AIN8开关 开关量逻辑输出 +00137 Value 9148 Log开关量输出6 10 AIN9开关 开关量逻辑输出 +00138 Value 9148 Log开关量输出6 11 AIN10开关 开关量逻辑输出 +00139 Not Used +00140 Not Used +00141 Not Used +00142 Not Used +00143 Not Used +00144 Not Used +00145 Not Used +00146 Not Used +00147 Not Used +00148 Not Used +00149 Value 9149 Log开关量输出7 6 ECU通讯故障 开关量逻辑输出 +00150 Value 9149 Log开关量输出7 7 ECU红灯 开关量逻辑输出 +00151 Value 9149 Log开关量输出7 8 ECU 黄灯 开关量逻辑输出 +00152 Value 9149 Log开关量输出7 9 ATT连锁状态 开关量逻辑输出 +00153 Value 9149 Log开关量输出7 10 运用计时3 开关量逻辑输出 +00154 Value 9149 Log开关量输出7 11 运用计时4 开关量逻辑输出 +00155 Value 9149 Log开关量输出7 12 计时器5 开关量逻辑输出 +00156 Value 9149 Log开关量输出7 13 计时器6 开关量逻辑输出 +00157 Not Used +00158 Not Used +00159 Value 9149 Log开关量输出7 16 保留 开关量逻辑输出 +00160 Value 9150 Log开关量输出8 1 速度升 开关量逻辑输出 +00161 Value 9150 Log开关量输出8 2 速度降 开关量逻辑输出 +00162 Value 9150 Log开关量输出8 3 AVR升 开关量逻辑输出 +00163 Value 9150 Log开关量输出8 4 AVR降 开关量逻辑输出 +00164 Value 9150 Log开关量输出8 5 中线合/分 开关量逻辑输出 +00165 Value 9150 Log开关量输出8 6 系统储备OK 开关量逻辑输出 +00166 Value 9150 Log开关量输出8 7 机组已互换 开关量逻辑输出 +00167 Value 9150 Log开关量输出8 8 kWh 脉冲 开关量逻辑输出 +00168 Value 9150 Log开关量输出8 9 保留 开关量逻辑输出 +00169 Not Used +00170 Value 9150 Log开关量输出8 11 调峰激活 开关量逻辑输出 +00171 Not Used +00172 Not Used +00173 Not Used +00174 Not Used +00175 Value 9150 Log开关量输出8 16 排空 开关量逻辑输出 +00176 Value 11896 Log开关量输出 1 排空通脉冲 开关量逻辑输出 +00177 Value 11896 Log开关量输出 2 排空断脉冲 开关量逻辑输出 +00178 Value 11896 Log开关量输出 3 显示故障 开关量逻辑输出 +00179 Value 11896 Log开关量输出 4 ATT DPF 灯 开关量逻辑输出 +00180 Value 11896 Log开关量输出 5 后处理SCR故障灯 开关量逻辑输出 +00181 Value 11896 Log开关量输出 6 后处理DEF值灯 开关量逻辑输出 +00182 Value 11896 Log开关量输出 7 后处理阻止灯 开关量逻辑输出 +00183 Value 11896 Log开关量输出 8 正向同步 开关量逻辑输出 +00184 Value 11896 Log开关量输出 9 反向同步 开关量逻辑输出 +00185 Value 11896 Log开关量输出 10 同步中 开关量逻辑输出 +00186 Value 11896 Log开关量输出 11 警报闪烁 开关量逻辑输出 +00187 Value 11896 Log开关量输出 12 蜂鸣闪烁 开关量逻辑输出 +00188 Value 11896 Log开关量输出 13 公共报警值1 开关量逻辑输出 +00189 Value 11896 Log开关量输出 14 公共报警值2 开关量逻辑输出 +00190 Value 11896 Log开关量输出 15 公共报警有效值1 开关量逻辑输出 +00191 Value 11896 Log开关量输出 16 公共报警有效值2 开关量逻辑输出 +00192 Value 11897 Log开关量输出10 1 怠速/额定脉冲 开关量逻辑输出 +00193 Value 11897 Log开关量输出10 2 额定/怠速脉冲 开关量逻辑输出 +00194 Value 11897 Log开关量输出10 3 手动候命 开关量逻辑输出 +00195 Value 11897 Log开关量输出10 4 频率选择 开关量逻辑输出 +00196 Not Used +00197 Value 11897 Log开关量输出10 6 ECU 通信正常 开关量逻辑输出 +00198 Value 11897 Log开关量输出10 7 ATT 再生确认灯 开关量逻辑输出 +00199 Value 11897 Log开关量输出10 8 ATT PCD 灯 开关量逻辑输出 +00200 Value 11897 Log开关量输出10 9 GCB任意合闸 开关量逻辑输出 +00201 Value 11897 Log开关量输出10 10 其他GCB任意合闸 开关量逻辑输出 +00202 Value 11897 Log开关量输出10 11 MCB状态 开关量逻辑输出 +00203 Value 11897 Log开关量输出10 12 GCB状态 开关量逻辑输出 +00204 Value 11897 Log开关量输出10 13 正在同步 开关量逻辑输出 +00205 Value 11897 Log开关量输出10 14 维护时间1报警 开关量逻辑输出 +00206 Value 11897 Log开关量输出10 15 维护时间2报警 开关量逻辑输出 +00207 Value 11897 Log开关量输出10 16 维护时间3报警 开关量逻辑输出 +00208 Value 11898 Log开关量输出11 1 保留 开关量逻辑输出 +00209 Value 11898 Log开关量输出11 2 候命中/自动 开关量逻辑输出 +00210 Value 11898 Log开关量输出11 3 ECU1 通信故障 开关量逻辑输出 +00211 Value 11898 Log开关量输出11 4 ECU2 通信故障 开关量逻辑输出 +00212 Value 11898 Log开关量输出11 5 ECU3 通信故障 开关量逻辑输出 +00213 Value 11898 Log开关量输出11 6 ECU4 通信故障 开关量逻辑输出 +00214 Value 11898 Log开关量输出11 7 保留 开关量逻辑输出 +00215 Value 11898 Log开关量输出11 8 保留 开关量逻辑输出 +00216 Value 11898 Log开关量输出11 9 保留 开关量逻辑输出 +00217 Value 11898 Log开关量输出11 10 保留 开关量逻辑输出 +00218 Value 11898 Log开关量输出11 11 负载撤载阶段1 开关量逻辑输出 +00219 Value 11898 Log开关量输出11 12 负载撤载阶段2 开关量逻辑输出 +00220 Value 11898 Log开关量输出11 13 负载撤载阶段3 开关量逻辑输出 +00221 Value 11898 Log开关量输出11 14 卸载阶段4 开关量逻辑输出 +00222 Value 11898 Log开关量输出11 15 卸载阶段5 开关量逻辑输出 +00223 Value 11898 Log开关量输出11 16 起动马达2 开关量逻辑输出 +00224 Value 11899 开关量逻辑输出12 1 预润滑泵 开关量逻辑输出 +00225 Value 11899 开关量逻辑输出12 2 开始励磁 开关量逻辑输出 +00226 Value 11899 开关量逻辑输出12 3 SUS励磁 开关量逻辑输出 +00227 Value 11899 开关量逻辑输出12 4 假负载阶段 1 开关量逻辑输出 +00228 Value 11899 开关量逻辑输出12 5 假负载阶段 2 开关量逻辑输出 +00229 Value 11899 开关量逻辑输出12 6 假负载阶段 3 开关量逻辑输出 +00230 Value 11899 开关量逻辑输出12 7 假负载阶段 4 开关量逻辑输出 +00231 Value 11899 开关量逻辑输出12 8 假负载阶段 5 开关量逻辑输出 +00232 Value 11899 开关量逻辑输出12 9 发电机有效 开关量逻辑输出 +00233 Value 11899 开关量逻辑输出12 10 操作 开关量逻辑输出 +00234 Value 11899 开关量逻辑输出12 11 起动中 开关量逻辑输出 +00235 Value 11899 开关量逻辑输出12 12 起动程序 开关量逻辑输出 +00236 Value 11899 开关量逻辑输出12 13 怠速运行 开关量逻辑输出 +00237 Value 11899 开关量逻辑输出12 14 软加载 开关量逻辑输出 +00238 Value 11899 开关量逻辑输出12 15 盘车中 开关量逻辑输出 +00239 Value 11899 开关量逻辑输出12 16 所有可用机组运行 开关量逻辑输出 +00240 Value 11900 开关量逻辑输出13 1 矢量变化激活 开关量逻辑输出 +00241 Value 11900 开关量逻辑输出13 2 ROCOF 激活 开关量逻辑输出 +00242 Value 11900 开关量逻辑输出13 3 电力报警 开关量逻辑输出 +00243 Value 11900 开关量逻辑输出13 4 已初始化 开关量逻辑输出 +00244 Value 11900 开关量逻辑输出13 5 未准备 开关量逻辑输出 +00245 Value 11900 开关量逻辑输出13 6 外围模块通讯故障 开关量逻辑输出 +00246 Value 11900 开关量逻辑输出13 7 维护时间4报警 开关量逻辑输出 +00247 Value 11900 开关量逻辑输出13 8 并网最小功率限制 开关量逻辑输出 +00248 Value 11900 开关量逻辑输出13 9 功率限制 开关量逻辑输出 +00249 Not Used +00250 Not Used +00251 Not Used +00252 Not Used +00253 Not Used +00254 Not Used +00255 Not Used +00256 Not Used +00257 Not Used +00258 Not Used +00259 Not Used +00260 Not Used +00261 Not Used +00262 Not Used +00263 Not Used +00264 Not Used +00265 Value 20744 固定保护阶段 1 10 GCB Closing Is Blocked 固定保护状态 +00266 Value 20744 固定保护阶段 1 11 ECU 1通信故障警告 固定保护状态 +00267 Value 20744 固定保护阶段 1 12 ECU 1 通信故障停机 固定保护状态 +00268 Value 20744 固定保护阶段 1 13 ECU 黄灯 固定保护状态 +00269 Value 20744 固定保护阶段 1 14 ECU红灯 固定保护状态 +00270 Value 20744 固定保护阶段 1 15 ECU等待起动中 固定保护状态 +00271 Value 20744 固定保护阶段 1 16 ATT DPF 灯 固定保护状态 +00272 Value 20744 固定保护阶段 1 17 后处理HEST 灯 固定保护状态 +00273 Value 20744 固定保护阶段 1 18 后处理SCR故障灯 固定保护状态 +00274 Value 20744 固定保护阶段 1 19 后处理DEF值灯 固定保护状态 +00275 Value 20744 固定保护阶段 1 20 后处理阻止灯 固定保护状态 +00276 Value 20744 固定保护阶段 1 21 紧急停机 固定保护状态 +00277 Value 20744 固定保护阶段 1 22 充电发电机故障警告 固定保护状态 +00278 Value 20744 固定保护阶段 1 23 充电机故障停机 固定保护状态 +00279 Value 20744 固定保护阶段 1 24 停车失败警告 固定保护状态 +00280 Value 20744 固定保护阶段 1 25 超速停机 固定保护状态 +00281 Value 20744 固定保护阶段 1 26 欠速停机 固定保护状态 +00282 Value 20744 固定保护阶段 1 27 转速测量故障停机 固定保护状态 +00283 Value 20744 固定保护阶段 1 28 电池耗尽停机 固定保护状态 +00284 Value 20744 固定保护阶段 1 29 维修时间1运行时间警告 固定保护状态 +00285 Value 20744 固定保护阶段 1 30 维修时间2运行时间警告 固定保护状态 +00286 Value 20744 固定保护阶段 1 31 维修时间3运行时间警告 固定保护状态 +00287 Value 20744 固定保护阶段 1 32 起动失败停机 固定保护状态 +00288 Value 20745 固定保护阶段 2 1 MCB失败警告 固定保护状态 +00289 Value 20745 固定保护阶段 2 2 GCB故障停机 固定保护状态 +00290 Value 20745 固定保护阶段 2 3 发电L1电压高警告 固定保护状态 +00291 Value 20745 固定保护阶段 2 4 发电L1 过电压停机 固定保护状态 +00292 Value 20745 固定保护阶段 2 5 发电L2电压高警告 固定保护状态 +00293 Value 20745 固定保护阶段 2 6 发电L2过电压 固定保护状态 +00294 Value 20745 固定保护阶段 2 7 发电L3电压高警告 固定保护状态 +00295 Value 20745 固定保护阶段 2 8 发电L3过电压 固定保护状态 +00296 Value 20745 固定保护阶段 2 9 发电L1L2电压高警告 固定保护状态 +00297 Value 20745 固定保护阶段 2 10 发电L1L2过电压停机 固定保护状态 +00298 Value 20745 固定保护阶段 2 11 发电L2L3电压高警告 固定保护状态 +00299 Value 20745 固定保护阶段 2 12 发电L2L3过电压 固定保护状态 +00300 Value 20745 固定保护阶段 2 13 发电L3L1电压高警告 固定保护状态 +00301 Value 20745 固定保护阶段 2 14 发电L3L1过电压 固定保护状态 +00302 Value 20745 固定保护阶段 2 15 发电L1电压低警告 固定保护状态 +00303 Value 20745 固定保护阶段 2 16 发电L1 低电压BOC 固定保护状态 +00304 Value 20745 固定保护阶段 2 17 发电L2电压低警告 固定保护状态 +00305 Value 20745 固定保护阶段 2 18 发电L2低电压BOC 固定保护状态 +00306 Value 20745 固定保护阶段 2 19 发电L3电压低警告 固定保护状态 +00307 Value 20745 固定保护阶段 2 20 发电L3低电压BOC 固定保护状态 +00308 Value 20745 固定保护阶段 2 21 发电L1L2电压低警告 固定保护状态 +00309 Value 20745 固定保护阶段 2 22 发电L1L2低电压BOC 固定保护状态 +00310 Value 20745 固定保护阶段 2 23 发电L2L3电压低警告 固定保护状态 +00311 Value 20745 固定保护阶段 2 24 发电L2L3低电压BOC 固定保护状态 +00312 Value 20745 固定保护阶段 2 25 发电L3L1电压低警告 固定保护状态 +00313 Value 20745 固定保护阶段 2 26 发电L3L1低电压BOC 固定保护状态 +00314 Value 20745 固定保护阶段 2 27 BOC Gen Voltage Unbalance Ph-Ph 固定保护状态 +00315 Value 20745 固定保护阶段 2 28 BOC Gen Voltage Unbalance Ph-N 固定保护状态 +00316 Value 20745 固定保护阶段 2 29 发电频率高警告 固定保护状态 +00317 Value 20745 固定保护阶段 2 30 发电频率高BOC 固定保护状态 +00318 Value 20745 固定保护阶段 2 31 发电频率低警告 固定保护状态 +00319 Value 20745 固定保护阶段 2 32 发电频率低BOC 固定保护状态 +00320 Value 20746 固定保护阶段 3 1 逆功率分闸 固定保护状态 +00321 Value 20746 固定保护阶段 3 2 失去励磁 固定保护状态 +00322 Value 20746 固定保护阶段 3 3 电流不平衡BOC 固定保护状态 +00323 Value 20746 固定保护阶段 3 4 市电/母排L1过压 固定保护状态 +00324 Value 20746 固定保护阶段 3 5 市电/母排L1欠压 固定保护状态 +00325 Value 20746 固定保护阶段 3 6 市电/母排L2过压 固定保护状态 +00326 Value 20746 固定保护阶段 3 7 市电/母排L2欠压 固定保护状态 +00327 Value 20746 固定保护阶段 3 8 市电/母排L2过压 固定保护状态 +00328 Value 20746 固定保护阶段 3 9 市电/母排L3欠压 固定保护状态 +00329 Value 20746 固定保护阶段 3 10 市电/母排L1L2过压 固定保护状态 +00330 Value 20746 固定保护阶段 3 11 市电/母排L1L2欠压 固定保护状态 +00331 Value 20746 固定保护阶段 3 12 市电/母排L2L3过压 固定保护状态 +00332 Value 20746 固定保护阶段 3 13 市电/母排L2L3欠压 固定保护状态 +00333 Value 20746 固定保护阶段 3 14 市电/母排L3L1过压 固定保护状态 +00334 Value 20746 固定保护阶段 3 15 市电/母排L3L1欠压 固定保护状态 +00335 Value 20746 固定保护阶段 3 16 封锁输入密码 固定保护状态 +00336 Value 20746 固定保护阶段 3 17 ATT 互锁有效 固定保护状态 +00337 Value 20746 固定保护阶段 3 18 ATT 强制再生有效 固定保护状态 +00338 Value 20746 固定保护阶段 3 19 ATT 禁止再生有效 固定保护状态 +00339 Value 20746 固定保护阶段 3 20 默认密码 固定保护状态 +00340 Not Used +00341 Not Used +00342 Not Used +00343 Not Used +00344 Not Used +00345 Value 20746 固定保护阶段 3 26 ALI 母排相序反 固定保护状态 +00346 Value 20746 固定保护阶段 3 27 ALI市电相序反 固定保护状态 +00347 Value 20746 固定保护阶段 3 28 ALI发电相序反 固定保护状态 +00348 Value 20746 固定保护阶段 3 29 Mains/Bus Voltage Unbalance Ph-Ph 固定保护状态 +00349 Value 20746 固定保护阶段 3 30 Mains/Bus Voltage Unbalance Ph-N 固定保护状态 +00350 Value 20746 固定保护阶段 3 31 市电/母排过频 固定保护状态 +00351 Value 20746 固定保护阶段 3 32 市电/母排欠频 固定保护状态 +00352 Value 20747 固定保护阶段 4 1 过载警告 固定保护状态 +00353 Value 20747 固定保护阶段 4 2 过载BOC 固定保护状态 +00354 Value 20747 固定保护阶段 4 3 电流短路BOC 固定保护状态 +00355 Value 20747 固定保护阶段 4 4 IDMT 过流BOC 固定保护状态 +00356 Not Used +00357 Value 20747 固定保护阶段 4 6 燃油传送 固定保护状态 +00358 Value 20747 固定保护阶段 4 7 燃油传输失败 固定保护状态 +00359 Value 20747 固定保护阶段 4 8 电池充电器故障警告 固定保护状态 +00360 Value 20747 固定保护阶段 4 9 越控所有停机警告 固定保护状态 +00361 Value 20747 固定保护阶段 4 10 租赁计时1警告 固定保护状态 +00362 Value 20747 固定保护阶段 4 11 租赁计时2警告 固定保护状态 +00363 Value 20747 固定保护阶段 4 12 租赁计时1时间到 固定保护状态 +00364 Value 20747 固定保护阶段 4 13 租赁计时2时间到 固定保护状态 +00365 Value 20747 固定保护阶段 4 14 租赁计时1超时停机 固定保护状态 +00366 Value 20747 固定保护阶段 4 15 租赁计时2超时停机 固定保护状态 +00367 Value 20747 固定保护阶段 4 16 租赁计时器封锁开始警告 固定保护状态 +00368 Value 20747 固定保护阶段 4 17 手动修复 固定保护状态 +00369 Value 20747 固定保护阶段 4 18 监测有市电电压警告 固定保护状态 +00370 Value 20747 固定保护阶段 4 19 偷油警告 固定保护状态 +00371 Not Used +00372 Value 20747 固定保护阶段 4 21 接地电流保护停机 固定保护状态 +00373 Not Used +00374 Value 20747 固定保护阶段 4 23 围栏1报警警告 固定保护状态 +00375 Value 20747 固定保护阶段 4 24 围栏1报警停机 固定保护状态 +00376 Value 20747 固定保护阶段 4 25 围栏1报警BOC 固定保护状态 +00377 Value 20747 固定保护阶段 4 26 围栏1报警 固定保护状态 +00378 Value 20747 固定保护阶段 4 27 围栏2报警警告 固定保护状态 +00379 Value 20747 固定保护阶段 4 28 围栏2报警停机 固定保护状态 +00380 Value 20747 固定保护阶段 4 29 围栏2报警BOC 固定保护状态 +00381 Value 20747 固定保护阶段 4 30 围栏2报警 固定保护状态 +00382 Value 20747 固定保护阶段 4 31 维修时间1间隔警告 固定保护状态 +00383 Value 20747 固定保护阶段 4 32 维修时间2间隔警告 固定保护状态 +00384 Value 20748 固定保护阶段 5 1 维修时间3间隔警告 固定保护状态 +00385 Value 20748 固定保护阶段 5 2 并联工作停机 固定保护状态 +00386 Not Used +00387 Not Used +00388 Value 20748 固定保护阶段 5 5 紧急停机 固定保护状态 +00389 Value 20748 固定保护阶段 5 6 Stp Maintenance Timer 1 RunHours 固定保护状态 +00390 Value 20748 固定保护阶段 5 7 Stp Maintenance Timer 2 RunHours 固定保护状态 +00391 Value 20748 固定保护阶段 5 8 Stp Maintenance Timer 3 RunHours 固定保护状态 +00392 Value 20748 固定保护阶段 5 9 Stp Maintenance Timer 1 Interval 固定保护状态 +00393 Value 20748 固定保护阶段 5 10 Stp Maintenance Timer 2 Interval 固定保护状态 +00394 Value 20748 固定保护阶段 5 11 Stp Maintenance Timer 3 Interval 固定保护状态 +00395 Value 20748 固定保护阶段 5 12 反向同步失败警告 固定保护状态 +00396 Value 20748 固定保护阶段 5 13 同步失败停机 固定保护状态 +00397 Value 20748 固定保护阶段 5 14 电池电压高报警 固定保护状态 +00398 Value 20748 固定保护阶段 5 15 电池电压地报警 固定保护状态 +00399 Value 20748 固定保护阶段 5 16 电池电压报警 固定保护状态 +00400 Value 20748 固定保护阶段 5 17 ECU 2通信故障警告 固定保护状态 +00401 Value 20748 固定保护阶段 5 18 ECU 2 通信故障停机 固定保护状态 +00402 Value 20748 固定保护阶段 5 19 ECU 3通信故障警告 固定保护状态 +00403 Value 20748 固定保护阶段 5 20 ECU 3 通信故障停机 固定保护状态 +00404 Value 20748 固定保护阶段 5 21 ECU 4通信故障警告 固定保护状态 +00405 Value 20748 固定保护阶段 5 22 ECU 4 通信故障停机 固定保护状态 +00406 Value 20748 固定保护阶段 5 23 ALI 未润滑 固定保护状态 +00407 Value 20748 固定保护阶段 5 24 Wrn MCB Fail To Open 固定保护状态 +00408 Value 20748 固定保护阶段 5 25 Wrn MCB Fail To Close 固定保护状态 +00409 Value 20748 固定保护阶段 5 26 Stp GCB Fail To Open 固定保护状态 +00410 Value 20748 固定保护阶段 5 27 Stp GCB Fail To Close 固定保护状态 +00411 Value 20748 固定保护阶段 5 28 Sd Total Emergency Stop 固定保护状态 +00412 Value 20748 固定保护阶段 5 29 SUS顺序抑制 固定保护状态 +00413 Value 20748 固定保护阶段 5 30 SUS 最低功率警告 固定保护状态 +00414 Not Used +00415 Not Used +00416 Not Used +00417 Not Used +00418 Not Used +00419 Not Used +00420 Not Used +00421 Not Used +00422 Value 20749 固定保护状态6 7 警告维护定时器 4 运行时间 固定保护状态 +00423 Value 20749 固定保护状态6 8 警告维护定时器 4 间隔 固定保护状态 +00424 Value 20749 固定保护状态6 9 Stp Maintenance Timer 4 RunHours 固定保护状态 +00425 Value 20749 固定保护状态6 10 Stp Maintenance Timer 4 Interval 固定保护状态 + + +======================================================================================================================================================================================== + Table: Values +======================================================================================================================================================================================== + +Allowed MODBUS functions: 03, 04 + +Register(s) Com.Obj. Name Dimension Type Len Dec Min Max Group / Subgroup +======================================================================================================================================================================================== +01000 10123 转速 RPM Integer 2 0 0 3000 发动机 +01001 8202 发电功率 kW Integer 2 0 -32767 32767 发电机 +01002 Not Used +01003 8524 发电功率L1 kW Integer 2 0 -32767 32767 发电机 +01004 8525 发电功率L2 kW Integer 2 0 -32767 32767 发电机 +01005 8526 发电功率L3 kW Integer 2 0 -32767 32767 发电机 +01006 8203 发电无功 kVAr Integer 2 0 -32767 32767 发电机 +01007 8527 发电无功L1 kVAr Integer 2 0 -32767 32767 发电机 +01008 8528 发电无功L2 kVAr Integer 2 0 -32767 32767 发电机 +01009 8529 发电无功L3 kVAr Integer 2 0 -32767 32767 发电机 +01010 8565 发电视功 kVA Integer 2 0 0 32767 发电机 +01011 8530 发电视功L1 kVA Integer 2 0 0 32767 发电机 +01012 8531 发电视功L2 kVA Integer 2 0 0 32767 发电机 +01013 8532 发电视功L3 kVA Integer 2 0 0 32767 发电机 +01014 8204 发电功率因数 Integer 1 2 -100 100 发电机 +01015 8395 发电负载特性 Char 1 0 - - 发电机 +01016 8533 发电功率因数L1 Integer 1 2 -100 100 发电机 +01017 8534 发电功率因数L2 Integer 1 2 -100 100 发电机 +01018 8535 发电功率因数L3 Integer 1 2 -100 100 发电机 +01019 8210 发电频率 Hz Unsigned 2 1 0 4000 发电机 +01020 8192 发电电压L1-N V Unsigned 2 0 0 65534 发电机 +01021 8193 发电电压L2-N V Unsigned 2 0 0 65534 发电机 +01022 8194 发电电压L3-N V Unsigned 2 0 0 65534 发电机 +01023 9628 发电电压L1-L2 V Unsigned 2 0 0 65534 发电机 +01024 9629 发电电压L2-L3 V Unsigned 2 0 0 65534 发电机 +01025 9630 发电电压L3-L1 V Unsigned 2 0 0 65534 发电机 +01026 8198 发电电流L1 A Unsigned 2 0 0 32767 发电机 +01027 8199 发电电流L2 A Unsigned 2 0 0 32767 发电机 +01028 8200 发电电流L3 A Unsigned 2 0 0 32767 发电机 +01029 14996 接地电流 A Unsigned 2 0 0 32767 发电机 +01030 8224 滑差频率 Hz Integer 2 2 -7000 7000 发电机 +01031 8225 滑差角度 ° Integer 2 1 -1800 1800 发电机 +01032 8211 市电/母排频率 Hz Unsigned 2 1 0 4000 市电/母排 +01033 8195 市/母电压L1-N V Unsigned 2 0 0 65534 市电/母排 +01034 8196 市/母电压L2-N V Unsigned 2 0 0 65534 市电/母排 +01035 8197 市/母电压L3-N V Unsigned 2 0 0 65534 市电/母排 +01036 9631 市/母电压L1-L2 V Unsigned 2 0 0 65534 市电/母排 +01037 9632 市/母电压L2-L3 V Unsigned 2 0 0 65534 市电/母排 +01038 9633 市/母电压L3-L1 V Unsigned 2 0 0 65534 市电/母排 +01039 8208 市电L1电流 A Unsigned 2 0 0 32767 市电/母排 +01040 8703 市电输入功率 kW Integer 2 0 -32767 32767 市电/母排 +01041 8704 市电输入无功 kVAr Integer 2 0 -32767 32767 市电/母排 +01042 8705 市电PF Integer 1 2 -100 100 市电/母排 +01043 9847 最大矢量变化 ° Unsigned 2 1 0 450 市电/母排 +01044 9848 ROCOF Hz/s Integer 2 2 0 5000 市电/母排 +01045 10049 最高ROCOF Hz/s Integer 2 2 0 5000 市电/母排 +01046-01047(2) 10601 有功负载 kW Integer 4 0 -65000 65000 负载 +01048-01049(2) 10644 无功负载 kVAr Integer 4 0 -65000 65000 负载 +01050 9025 负载PF Integer 1 2 -100 100 负载 +01051 8213 电池电压 V Integer 2 1 0 360 控制器I/O口 +01052 10603 D+ V Integer 2 1 0 360 控制器I/O口 +01053 9151 油压 Bar Integer 2 1 0 100 控制器I/O口 +01054 9152 水温 °C Integer 2 0 -16 120 控制器I/O口 +01055 9153 燃油位 % Integer 2 0 0 100 控制器I/O口 +01056 Not Used +01057 8235 开关量输入 Binary#1 2 0 - - 控制器I/O口 +01058 15780 紧急停机 Binary#2 1 0 - - 控制器I/O口 +01059 8239 开关量输出 Binary#3 2 0 - - 控制器I/O口 +01060-01061(2) 19437 发动机转速 rpm Integer 4 0 0 5000 ECU 隐藏; MTU ECU9 1 +01062-01063(2) 19435 Engine Total Fuel Used L Integer 4 1 0 2100000000 ECU 隐藏; MTU ECU9 1 +01064-01065(2) 19434 Engine Coolant Temperature °C Integer 4 0 -40 210 ECU 隐藏; MTU ECU9 1 +01066-01067(2) 19433 Engine Oil Pressure bar Integer 4 2 0 1000 ECU 隐藏; MTU ECU9 1 +01068-01069(2) 19432 Engine Fuel Rate L/h Integer 4 1 0 32000 ECU 隐藏; MTU ECU9 1 +01070 Not Used +01071 Not Used +01072 Not Used +01073 Not Used +01074 Not Used +01075 Not Used +01076 Not Used +01077-01084(8) 23929 当前网关 String 16 0 - - CM-ETHERNET +01085-01092(8) 23928 主DNS String 16 0 - - CM-ETHERNET +01093-01100(8) 23927 次级DNS String 16 0 - - CM-ETHERNET +01101 23925 最后E-mail结果 Unsigned 1 0 0 254 CM-ETHERNET +01102-01117(16) 23932 MAC 地址 String 32 0 - - CM-ETHERNET +01118 23916 以太网接线模式 List#1 1 0 0 4 CM-ETHERNET +01119-01126(8) 23926 AirGate ID String 16 0 - - CM-ETHERNET +01127 23910 AirGate 状态 List#2 1 0 0 8 CM-ETHERNET +01128-01159(32) 23915 AirGate服务节点 String 64 0 - - CM-ETHERNET +01160-01167(8) 24309 AirGate ID String 16 0 - - CM-4G-GPS +01168 23967 AirGate 状态 List#3 1 0 0 8 CM-4G-GPS +01169-01200(32) 23991 AirGate服务节点 String 64 0 - - CM-4G-GPS +01201-01208(8) 23971 IP地址 String 16 0 - - CM-4G-GPS +01209-01216(8) 23984 主DNS String 16 0 - - CM-4G-GPS +01217-01224(8) 23983 次级DNS String 16 0 - - CM-4G-GPS +01225 24307 最后E-mail结果 Unsigned 1 0 0 254 CM-4G-GPS +01226 24302 讯号强度 % Unsigned 1 0 0 100 CM-4G-GPS +01227 24288 数据机状态 List#4 1 0 0 29 CM-4G-GPS +01228 23972 网络状态 List#5 1 0 0 2 CM-4G-GPS +01229 23973 GPS 状态 List#6 1 0 0 2 CM-4G-GPS +01230-01245(16) 24147 网络名称 String 32 0 - - CM-4G-GPS +01246-01253(8) 24146 网络模式 String 16 0 - - CM-4G-GPS +01254-01261(8) 24268 纬度 String 16 0 - - CM-4G-GPS +01262-01269(8) 24267 经度 String 16 0 - - CM-4G-GPS +01270 24265 有效卫星 Unsigned 1 0 0 15 CM-4G-GPS +01271 24264 速度 km/h Unsigned 2 0 0 65535 CM-4G-GPS +01272 8663 所需目标功率 kW Integer 2 0 0 5000 速度/负载控制 +01273 13105 请求功率 kW Integer 2 0 0 5000 速度/负载控制 +01274 9052 速度调节输出 V Integer 2 3 -10000 10000 速度/负载控制 +01275 10137 速度请求 % Integer 2 1 0 1000 速度/负载控制 +01276 10006 所需转速 RPM Unsigned 2 0 0 3000 速度/负载控制 +01277 12877 请求无功 kVAr Integer 2 0 -32000 32000 电压/因数控制 +01278 9053 调压输出 V Integer 2 3 -10000 10000 电压/因数控制 +01279 14997 电压请求 % Integer 2 1 0 1000 电压/因数控制 +01280 9018 额定功率 kW Integer 2 0 1 32000 发电机 +01281 9917 额定电压 V Unsigned 2 0 0 65534 发电机 +01282 9978 额定电流 A Unsigned 2 0 0 65534 发电机 +01283-01284(2) 8205 发电KWh kWh Integer 4 0 -32768000 32767000 统计值 +01285-01286(2) 8539 发电KVArh kVArh Integer 4 0 -32768000 32767000 统计值 +01287-01288(2) 11025 市电KWh kWh Integer 4 0 -32768000 32767000 统计值 +01289-01290(2) 11026 市电kVArh kVArh Integer 4 0 -32768000 32767000 统计值 +01291-01292(2) 8206 运行小时 h Integer 4 1 -32768000 32767000 统计值 +01293 8207 起动次数 Unsigned 2 0 0 65534 统计值 +01294 11616 维修时间1运行小时 h Integer 2 0 -10000 10000 统计值 +01295 11617 维修时间2运行小时 h Integer 2 0 -10000 10000 统计值 +01296 11618 维修时间3运行小时 h Integer 2 0 -10000 10000 统计值 +01297 11619 维护计时器4运行时间 h Integer 2 0 -10000 10000 统计值 +01298-01299(2) 16387 维修时间1间隔 天 Integer 4 0 -10000 10000 统计值 +01300-01301(2) 16388 维修时间2间隔 天 Integer 4 0 -10000 10000 统计值 +01302-01303(2) 16389 维修时间3间隔 天 Integer 4 0 -10000 10000 统计值 +01304-01305(2) 20288 维护计时器4间隔 天 Integer 4 0 -10000 10000 统计值 +01306-01307(2) 14328 租赁1 h Integer 4 0 0 9000 统计值 +01308-01309(2) 14369 租赁2 天 Integer 4 0 0 32000 统计值 +01310-01311(2) 11195 急停次数 Unsigned 4 0 0 65535000 统计值 +01312-01313(2) 11196 停机 Unsigned 4 0 0 65535000 统计值 +01314-01315(2) 9040 总燃油消耗 L Unsigned 4 0 0 65535000 统计值 +01316 13772 时间到清空 天 Integer 2 0 0 32000 统计值 +01317 13771 时间到清空 hrs Integer 2 0 0 23 统计值 +01318 13770 时间到清空 min Integer 2 0 0 59 统计值 +01319 Not Used +01320 Not Used +01321 Not Used +01322 Not Used +01323 9887 控制器模式 List#7 1 0 0 3 信息 +01324 9591 负载撤载状态 List#8 1 0 0 5 信息 +01325 9244 发动机状态 List#9 1 0 0 20 信息 +01326 9245 断路器状态 List#10 1 0 0 13 信息 +01327 10040 计时文本 List#11 1 0 0 38 信息 +01328 12944 连接类型 List#12 1 0 0 7 信息 +01329 14447 SPI模块A List#13 1 0 0 15 信息 +01330 14448 SPI模块B List#13 1 0 0 15 信息 +01331-01346(16) 24501 ID 字串 String 32 0 - - 信息 +01347-01354(8) 24339 FW版本 String 16 0 - - 信息 +01355 8480 应用 List#14 1 0 0 15 信息 +01356 8707 FW分支 List#15 1 0 0 1 信息 +01357 8546 CAN16 Binary#4 2 0 - - 信息 +01358 8827 CAN32 Binary#5 2 0 - - 信息 +01359 11081 Reg16 Binary#6 2 0 - - 信息 +01360 11082 Reg32 Binary#7 2 0 - - 信息 +01361 10196 机组已加载16 Binary#8 2 0 - - 信息 +01362 10197 机组已加载32 Binary#9 2 0 - - 信息 +01363 8624 发动机优先 Unsigned 1 0 0 32 功率管理 +01364-01365(2) 15805 实际储备 kW Integer 4 0 -32768000 32767000 功率管理 +01366-01367(2) 15806 储备起动 kW Integer 4 0 -32768000 32767000 功率管理 +01368-01369(2) 15807 储备停机 kW Integer 4 0 -32768000 32767000 功率管理 +01370 15673 动态转动储备 kW Integer 2 0 -32768 32767 功率管理 +01371 15674 动态转动储备偏移 kW Integer 2 0 -32768 32767 功率管理 +01372 10788 实际相对储备 % Integer 2 0 0 110 功率管理 +01373 10786 相对储备启动 % Integer 2 0 0 110 功率管理 +01374 10787 相对储备停机 % Integer 2 0 0 110 功率管理 +01375-01376(2) 10657 运行总功率 kW Integer 4 0 -32768000 32767000 功率管理 +01377-01378(2) 10656 总运算无功 kVAr Integer 4 0 -32768000 32767000 功率管理 +01379-01380(2) 10999 功率管理中额定运行功率 kW Integer 4 0 -32768000 32767000 功率管理 +01381-01382(2) 10658 所有运行额定功率 kW Integer 4 0 -32768000 32767000 功率管理 +01383-01384(2) 10998 并网持续功率 kW Integer 4 0 -32768000 32767000 功率管理 +01385 10012 最少运行功率 kW Unsigned 2 0 0 32767 功率管理 +01386-01387(2) 8974 实际功率段 Binary#10 4 0 - - 功率管理 +01388-01389(2) 8975 下一功率段 Binary#11 4 0 - - 功率管理 +01390 9143 Log开关量输出1 Binary#12 2 0 - - 开关量逻辑输出 +01391 9144 Log开关量输出2 Binary#13 2 0 - - 开关量逻辑输出 +01392 9145 Log开关量输出3 Binary#14 2 0 - - 开关量逻辑输出 +01393 9146 Log开关量输出4 Binary#15 2 0 - - 开关量逻辑输出 +01394 9147 Log开关量输出5 Binary#16 2 0 - - 开关量逻辑输出 +01395 9148 Log开关量输出6 Binary#17 2 0 - - 开关量逻辑输出 +01396 9149 Log开关量输出7 Binary#18 2 0 - - 开关量逻辑输出 +01397 9150 Log开关量输出8 Binary#19 2 0 - - 开关量逻辑输出 +01398 11896 Log开关量输出 Binary#20 2 0 - - 开关量逻辑输出 +01399 11897 Log开关量输出10 Binary#21 2 0 - - 开关量逻辑输出 +01400 11898 Log开关量输出11 Binary#22 2 0 - - 开关量逻辑输出 +01401 11899 开关量逻辑输出12 Binary#23 2 0 - - 开关量逻辑输出 +01402 11900 开关量逻辑输出13 Binary#24 2 0 - - 开关量逻辑输出 +01403 24180 以太网界面状态 List#16 1 0 0 4 局域网 +01404-01411(8) 24184 IP地址 String 16 0 - - 局域网 +01412-01419(8) 24183 当前子网掩码 String 16 0 - - 局域网 +01420-01427(8) 24182 当前网关 String 16 0 - - 局域网 +01428-01435(8) 24181 主DNS String 16 0 - - 局域网 +01436-01443(8) 24100 次级DNS String 16 0 - - 局域网 +01444 24332 最后E-mail结果 Unsigned 1 0 0 254 局域网 +01445-01460(16) 24333 MAC 地址 String 32 0 - - 局域网 +01461 24088 以太网接线模式 List#1 1 0 0 4 局域网 +01462 24007 AirGate 状态 List#17 1 0 0 8 局域网 +01463-01470(8) 24345 AirGate ID String 16 0 - - 局域网 +01471-01472(2) 13663 发电KVAh kVAh Integer 4 0 -32768000 32767000 统计值 + + +======================================================================================================================================================================================== + Table: Setpoints +======================================================================================================================================================================================== + +Allowed MODBUS functions: 03, 04, 06, 16 + +Register(s) Com.Obj. Name Dimension Type Len Dec Min Max Group / Subgroup +======================================================================================================================================================================================== + + +======================================================================================================================================================================================== + List# Types Meaning +======================================================================================================================================================================================== + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#1 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 关闭连接 + 1 10-HD + 2 10-FD + 3 100-HD + 4 100-FD + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#2 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 没有定义 + 1 等待连线 + 2 解析 + 3 连接中 + 4 产生第二通道 + 5 注册中 + 6 连线不互通 + 7 连线互通 + 8 Susp AGkeyEmpty + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#3 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 没有定义 + 1 等待连接 + 2 解析 + 3 连接中 + 4 创建安全通道 + 5 注册中 + 6 连接不可用 + 7 已连接 + 8 Susp AGkeyEmpty + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#4 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 日出偏移 + 1 OK + 2 EO1 + 3 EO2 + 4 E SIM + 5 EO4 + 6 E 注册 + 7 E 注册 + 8 E 注册 + 9 E 内容 + 10 E 连接 + 11 E08 + 12 E09 + 13 E10 + 14 E 注册 + 15 E12 + 16 E13 + 17 E14 + 18 E SMS 发送 + 19 起始1错误 + 20 起始2错误 + 21 起始3错误 + 22 E18 + 23 E18 + 24 E18 + 25 E 失去连线 + 26 E19 + 27 E18 + 28 重启-配置 + 29 重启-app + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#5 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 不可用 + 1 可以使用 + 2 附上 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#6 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 未定义 + 1 寻找中 + 2 固定 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#7 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 关 + 1 手动 + 2 自动 + 3 测试 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#8 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 未卸载 + 1 甩负载1 + 2 甩负载2 + 3 甩负载3 + 4 甩负载S4 + 5 甩负载S5 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#9 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 初始化 + 1 候命中 + 2 未预备 + 3 预起动 + 4 盘车中 + 5 间歇 + 6 起动中 + 7 运行中 + 8 已加载 + 9 软卸载 + 10 冷却中 + 11 停机 + 12 故障停机 + 13 通风 + 14 应急手动 + 15 软加载 + 16 等待停机 + 17 故障停机通风 + 18 失去励磁 + 19 警告 + 20 卸载 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#10 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 初始化 + 1 断路器分 + 2 孤岛运行 + 3 市电运行 + 4 并联操作 + 5 反向同步 + 6 同步中 + 7 市电故障 + 8 有效错误 + 9 市电恢复 + 10 多台岛运 + 11 多台并运 + 12 应急手动 + 13 SUS启动同步 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#11 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 无计时 + 1 预起动 + 2 盘车中 + 3 怠速运行 + 4 冷却中 + 5 停机阀 + 6 后冷却 + 7 间歇 + 8 燃气通风 + 9 最短稳定到 + 10 最大稳定至 + 11 MCB合 + 12 转换延时 + 13 恢复延时 + 14 启动延时 + 15 电压侦测 + 16 GCB延时 + 17 GCB分闸 + 18 同步超时 + 19 GCB闭合 + 20 MCB分闸 + 21 等待停机 + 22 系统起动 + 23 系统停机 + 24 下一台起动 + 25 下一台停机 + 26 甩负载改变 + 27 重接载变换(无效) + 28 卸载停机 + 29 警告 + 30 RPM 窗口超时 + 31 励磁延时 + 32 发动机起动超时 + 33 允许同步 + 34 燃料阀提前 + 35 失去励磁 + 36 假负载开 + 37 假负载关 + 38 手动激活ECU + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#12 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 单相 + 1 SplPhL1L2 + 2 SplPhL1L3 + 3 三角接电压 + 4 3相3线 + 5 3相4线 + 6 3PH 黄低 + 7 3相黄高 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#13 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 无 + 1 EM-AOUT8 + 2 EM-BIO8 + 3 EM-EFCP + 4 EM-EFCP-8mA + 5 EM-BIO8-EFCP + 6 CM-RS232-485 + 7 CM-RS232 + 8 CM-Ethernet + 9 CM-GPRS + 10 CM-3G + 11 CM-3G-GPS + 12 CM-CAN-RS485 + 13 CM-Ethernet + 14 CM-4G-GPS + 15 CM-WIFI + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#14 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 未用 + 1 未用 + 2 机组控制器 + 3 未用 + 4 未用 + 5 未用 + 6 未用 + 7 未用 + 8 未用 + 9 未用 + 10 未用 + 11 未用 + 12 未用 + 13 未用 + 14 未用 + 15 AGC + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#15 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 未用 + 1 标准 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#16 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 未知 + 1 已断开 + 2 连接中 + 3 已连接 + 4 失败 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#17 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 没有定义 + 1 等待连接 + 2 解析 + 3 连接中 + 4 创建安全通道 + 5 注册中 + 6 连接不可用 + 7 已连接 + 8 暂停、空键 + + +======================================================================================================================================================================================== + Binary# Types Meaning +======================================================================================================================================================================================== + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#1 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 远程起动/停机 + 1 GCB反馈 + 2 火灾停机 + 3 差动故障报警 + 4 发电机温度高报警 + 5 百叶窗打开信号反馈 + 6 接地故障报警 + 7 中线开关反馈 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#2 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 紧急停机 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#3 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 起动马达1 + 1 燃油阀 + 2 GCB闭合线圈 + 3 GCB断开线圈 + 4 故障复位按钮 + 5 中线合/分 + 6 百叶窗控制 + 7 蜂鸣 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#4 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 CAN CU 1 + 1 CAN CU 2 + 2 CAN CU 3 + 3 CAN CU 4 + 4 CAN CU 5 + 5 CAN CU 6 + 6 CAN CU 7 + 7 CAN CU 8 + 8 CAN CU 9 + 9 CAN CU 10 + 10 CAN CU 11 + 11 CAN CU 12 + 12 CAN CU 13 + 13 CAN CU 14 + 14 CAN CU 15 + 15 CAN CU 16 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#5 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 CAN CU 17 + 1 CAN CU 18 + 2 CAN CU 19 + 3 CAN CU 20 + 4 CAN CU 21 + 5 CAN CU 22 + 6 CAN CU 23 + 7 CAN CU 24 + 8 CAN CU 25 + 9 CAN CU 26 + 10 CAN CU 27 + 11 CAN CU 28 + 12 CAN CU 29 + 13 CAN CU 30 + 14 CAN CU 31 + 15 CAN CU 32 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#6 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 Reg CU 1 + 1 Reg CU 2 + 2 Reg CU 3 + 3 Reg CU 4 + 4 Reg CU 5 + 5 Reg CU 6 + 6 Reg CU 7 + 7 Reg CU 8 + 8 Reg CU 9 + 9 Reg CU 10 + 10 Reg CU 11 + 11 Reg CU 12 + 12 Reg CU 13 + 13 Reg CU 14 + 14 Reg CU 15 + 15 Reg CU 16 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#7 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 Reg CU 17 + 1 Reg CU 18 + 2 Reg CU 19 + 3 Reg CU 20 + 4 Reg CU 21 + 5 Reg CU 22 + 6 Reg CU 23 + 7 Reg CU 24 + 8 Reg CU 25 + 9 Reg CU 26 + 10 Reg CU 27 + 11 Reg CU 28 + 12 Reg CU 29 + 13 Reg CU 30 + 14 Reg CU 31 + 15 Reg CU 32 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#8 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 机组已加载1 + 1 机组已加载2 + 2 机组已加载3 + 3 机组已加载4 + 4 机组已加载5 + 5 机组已加载6 + 6 机组已加载7 + 7 机组已加载8 + 8 机组已加载9 + 9 机组已加载10 + 10 机组已加载11 + 11 机组已加载12 + 12 机组已加载13 + 13 机组已加载14 + 14 机组已加载15 + 15 机组已加载16 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#9 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 机组已加载17 + 1 机组已加载18 + 2 机组已加载19 + 3 机组已加载20 + 4 机组已加载21 + 5 机组已加载22 + 6 机组已加载23 + 7 机组已加载24 + 8 机组已加载25 + 9 机组已加载26 + 10 机组已加载27 + 11 机组已加载28 + 12 机组已加载29 + 13 机组已加载30 + 14 机组已加载31 + 15 机组已加载32 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#10 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 实际功率段 1 + 1 实际功率段 2 + 2 实际功率段 3 + 3 实际功率段 4 + 4 实际功率段 5 + 5 实际功率段 6 + 6 实际功率段 7 + 7 实际功率段 8 + 8 实际功率段 9 + 9 实际功率段 10 + 10 实际功率段 11 + 11 实际功率段 12 + 12 实际功率段 13 + 13 实际功率段 14 + 14 实际功率段 15 + 15 实际功率段 16 + 16 实际功率段 17 + 17 实际功率段 18 + 18 实际功率段 19 + 19 实际功率段 20 + 20 实际功率段 21 + 21 实际功率段 22 + 22 实际功率段 23 + 23 实际功率段 24 + 24 实际功率段 25 + 25 实际功率段 26 + 26 实际功率段 27 + 27 实际功率段 28 + 28 实际功率段 29 + 29 实际功率段 30 + 30 实际功率段 31 + 31 实际功率段 32 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#11 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 下一功率段 1 + 1 下一功率段 2 + 2 下一功率段 3 + 3 下一功率段 4 + 4 下一功率段 5 + 5 下一功率段 6 + 6 下一功率段 7 + 7 下一功率段 8 + 8 下一功率段 9 + 9 下一功率段 10 + 10 下一功率段 11 + 11 下一功率段 12 + 12 下一功率段 13 + 13 下一功率段 14 + 14 下一功率段 15 + 15 下一功率段 16 + 16 下一功率段 17 + 17 下一功率段 18 + 18 下一功率段 19 + 19 下一功率段 20 + 20 下一功率段 21 + 21 下一功率段 22 + 22 下一功率段 23 + 23 下一功率段 24 + 24 下一功率段 25 + 25 下一功率段 26 + 26 下一功率段 27 + 27 下一功率段 28 + 28 下一功率段 29 + 29 下一功率段 30 + 30 下一功率段 31 + 31 下一功率段 32 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#12 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 未用 + 1 起动马达1 + 2 燃油阀 + 3 停机阀 + 4 停机脉冲 + 5 点火 + 6 预起动 + 7 冷却泵 + 8 怠速/额定 + 9 空气阀 + 10 警告 + 11 蜂鸣 + 12 GCB合/分 + 13 GCB闭合线圈 + 14 GCB断开线圈 + 15 GCB失压线圈 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#13 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 MCB合/分 + 1 脉冲MCB合 + 2 脉冲MCB分 + 3 MCB失压线圈 + 4 候命中 + 5 可测市电自启动 + 6 可以加载 + 7 不在自动 + 8 运行中 + 9 冷却中 + 10 加载 + 11 发电正常 + 12 市电/母排正常 + 13 动作计时器1 + 14 动作计时器2 + 15 预热塞 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#14 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 停止按鈕 + 1 温度开关 + 2 保留 + 3 心跳 + 4 点火启动 + 5 关模式 + 6 手动模式 + 7 自动模式 + 8 测试模式 + 9 过流 + 10 起动按钮 + 11 停止按钮 + 12 MCB按钮 + 13 GCB按钮 + 14 故障复位按钮 + 15 消音按钮 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#15 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 发电频率警告 + 1 发电频率报警 + 2 发电电压警告 + 3 发电电压报警 + 4 市电/母排故障报警 + 5 市电/母排频率报警 + 6 市电/母排电压报警 + 7 公共警告 + 8 公共报警停机 + 9 公共报警BOC + 10 传感器故障公共报警 + 11 撤销通讯失败停机 + 12 公共报警慢停 + 13 保留 + 14 AL 公共卸载 + 15 公共市电保护 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#16 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 只共同报警 + 1 公共历史记录 + 2 ECU供电 + 3 ECU停止运行 + 4 保留 + 5 保留 + 6 禁止停机 + 7 静态逻辑0 + 8 静态逻辑1 + 9 需要再生regen + 10 后处理HEST 灯 + 11 保留 + 12 保留 + 13 保留 + 14 软卸载 + 15 系统候命中 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#17 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 ECU等待起动中 + 1 AIN1开关 + 2 AIN2开关 + 3 AIN3开关 + 4 AIN4开关 + 5 AIN5开关 + 6 AIN6开关 + 7 AIN7开关 + 8 AIN8开关 + 9 AIN9开关 + 10 AIN10开关 + 11 保留 + 12 保留 + 13 保留 + 14 保留 + 15 保留 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#18 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 保留 + 1 保留 + 2 保留 + 3 保留 + 4 保留 + 5 ECU通讯故障 + 6 ECU红灯 + 7 ECU 黄灯 + 8 ATT连锁状态 + 9 运用计时3 + 10 运用计时4 + 11 计时器5 + 12 计时器6 + 13 保留 + 14 保留 + 15 保留 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#19 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 速度升 + 1 速度降 + 2 AVR升 + 3 AVR降 + 4 中线合/分 + 5 系统储备OK + 6 机组已互换 + 7 kWh 脉冲 + 8 保留 + 9 保留 + 10 调峰激活 + 11 保留 + 12 保留 + 13 保留 + 14 保留 + 15 排空 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#20 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 排空通脉冲 + 1 排空断脉冲 + 2 显示故障 + 3 ATT DPF 灯 + 4 后处理SCR故障灯 + 5 后处理DEF值灯 + 6 后处理阻止灯 + 7 正向同步 + 8 反向同步 + 9 同步中 + 10 警报闪烁 + 11 蜂鸣闪烁 + 12 公共报警值1 + 13 公共报警值2 + 14 公共报警有效值1 + 15 公共报警有效值2 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#21 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 怠速/额定脉冲 + 1 额定/怠速脉冲 + 2 手动候命 + 3 频率选择 + 4 保留 + 5 ECU 通信正常 + 6 ATT 再生确认灯 + 7 ATT PCD 灯 + 8 GCB任意合闸 + 9 其他GCB任意合闸 + 10 MCB状态 + 11 GCB状态 + 12 正在同步 + 13 维护时间1报警 + 14 维护时间2报警 + 15 维护时间3报警 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#22 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 保留 + 1 候命中/自动 + 2 ECU1 通信故障 + 3 ECU2 通信故障 + 4 ECU3 通信故障 + 5 ECU4 通信故障 + 6 保留 + 7 保留 + 8 保留 + 9 保留 + 10 负载撤载阶段1 + 11 负载撤载阶段2 + 12 负载撤载阶段3 + 13 卸载阶段4 + 14 卸载阶段5 + 15 起动马达2 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#23 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 预润滑泵 + 1 开始励磁 + 2 SUS励磁 + 3 假负载阶段 1 + 4 假负载阶段 2 + 5 假负载阶段 3 + 6 假负载阶段 4 + 7 假负载阶段 5 + 8 发电机有效 + 9 操作 + 10 起动中 + 11 起动程序 + 12 怠速运行 + 13 软加载 + 14 盘车中 + 15 所有可用机组运行 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#24 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 矢量变化激活 + 1 ROCOF 激活 + 2 电力报警 + 3 已初始化 + 4 未准备 + 5 外围模块通讯故障 + 6 维护时间4报警 + 7 并网最小功率限制 + 8 功率限制 + 9 历史记录指示 + + diff --git a/docs/AI训练资料/科迈控制/IL4MRS16.txt b/docs/AI训练资料/科迈控制/IL4MRS16.txt new file mode 100644 index 00000000..a028d9c8 --- /dev/null +++ b/docs/AI训练资料/科迈控制/IL4MRS16.txt @@ -0,0 +1,960 @@ +HEADER +======================================================================================================================================================================================== +Format: 2.3 +LongNamesLength: 64 - Name, Name of State, Name of Value, Bit Name, Group +ShortNamesLength: 10 - Dimension, Type +======================================================================================================================================================================================== +======================================================================================================================================================================================== + Table: Binaries +======================================================================================================================================================================================== + +Allowed MODBUS functions: 01, 02 + +Addresses Source +Modbus Addr. = Value C.O.# Name of Value Bit # Bit Name Group / Subgroup +Prot. Addr. = State State # Name of State Activated by protection(s): +======================================================================================================================================================================================== +00000 Value 8235 开关量输入 1 遥控启动/停机 控制器I/O口 +00001 Value 8235 开关量输入 2 GC反饋 控制器I/O口 +00002 Not Used +00003 Value 8235 开关量输入 4 存取锁 控制器I/O口 +00004 Value 8235 开关量输入 5 远程关 控制器I/O口 +00005 Not Used +00006 Value 8235 开关量输入 7 禁止停机 控制器I/O口 +00007 Not Used +00008 Value 8239 开关量输出 1 起动马达1 控制器I/O口 +00009 Value 8239 开关量输出 2 燃油阀 控制器I/O口 +00010 Value 8239 开关量输出 3 GCB合/分 控制器I/O口 +00011 Value 8239 开关量输出 4 预起动 控制器I/O口 +00012 Value 8239 开关量输出 5 可以加载 控制器I/O口 +00013 Value 8239 开关量输出 6 警告 控制器I/O口 +00014 Not Used +00015 Not Used +00016 Not Used +00017 Value 9143 Log开关量输出1 2 起动马达1 开关量逻辑输出 +00018 Value 9143 Log开关量输出1 3 燃油阀 开关量逻辑输出 +00019 Value 9143 Log开关量输出1 4 停机阀 开关量逻辑输出 +00020 Value 9143 Log开关量输出1 5 停机脉冲 开关量逻辑输出 +00021 Value 9143 Log开关量输出1 6 点火 开关量逻辑输出 +00022 Value 9143 Log开关量输出1 7 预起动 开关量逻辑输出 +00023 Value 9143 Log开关量输出1 8 冷却泵 开关量逻辑输出 +00024 Value 9143 Log开关量输出1 9 怠速/额定 开关量逻辑输出 +00025 Value 9143 Log开关量输出1 10 空气阀 开关量逻辑输出 +00026 Value 9143 Log开关量输出1 11 警告 开关量逻辑输出 +00027 Value 9143 Log开关量输出1 12 蜂鸣 开关量逻辑输出 +00028 Value 9143 Log开关量输出1 13 GCB合/分 开关量逻辑输出 +00029 Value 9143 Log开关量输出1 14 GCB闭合线圈 开关量逻辑输出 +00030 Value 9143 Log开关量输出1 15 GCB断开线圈 开关量逻辑输出 +00031 Value 9143 Log开关量输出1 16 GCB失压线圈 开关量逻辑输出 +00032 Value 9144 Log开关量输出2 1 保留 开关量逻辑输出 +00033 Value 9144 Log开关量输出2 2 保留 开关量逻辑输出 +00034 Value 9144 Log开关量输出2 3 保留 开关量逻辑输出 +00035 Value 9144 Log开关量输出2 4 保留 开关量逻辑输出 +00036 Value 9144 Log开关量输出2 5 候命中 开关量逻辑输出 +00037 Value 9144 Log开关量输出2 6 保留 开关量逻辑输出 +00038 Value 9144 Log开关量输出2 7 可以加载 开关量逻辑输出 +00039 Value 9144 Log开关量输出2 8 不在自动 开关量逻辑输出 +00040 Value 9144 Log开关量输出2 9 运行中 开关量逻辑输出 +00041 Value 9144 Log开关量输出2 10 冷却中 开关量逻辑输出 +00042 Value 9144 Log开关量输出2 11 加载 开关量逻辑输出 +00043 Value 9144 Log开关量输出2 12 发电正常 开关量逻辑输出 +00044 Value 9144 Log开关量输出2 13 保留 开关量逻辑输出 +00045 Value 9144 Log开关量输出2 14 动作计时器1 开关量逻辑输出 +00046 Value 9144 Log开关量输出2 15 动作计时器2 开关量逻辑输出 +00047 Value 9144 Log开关量输出2 16 预热塞 开关量逻辑输出 +00048 Value 9145 Log开关量输出3 1 停止按鈕 开关量逻辑输出 +00049 Value 9145 Log开关量输出3 2 温度开关 开关量逻辑输出 +00050 Value 9145 Log开关量输出3 3 保留 开关量逻辑输出 +00051 Value 9145 Log开关量输出3 4 点火启动 开关量逻辑输出 +00052 Value 9145 Log开关量输出3 5 手动候命 开关量逻辑输出 +00053 Value 9145 Log开关量输出3 6 心跳 开关量逻辑输出 +00054 Value 9145 Log开关量输出3 7 关模式 开关量逻辑输出 +00055 Value 9145 Log开关量输出3 8 手动模式 开关量逻辑输出 +00056 Value 9145 Log开关量输出3 9 自动模式 开关量逻辑输出 +00057 Value 9145 Log开关量输出3 10 保留 开关量逻辑输出 +00058 Value 9145 Log开关量输出3 11 发电电压报警报警 开关量逻辑输出 +00059 Value 9145 Log开关量输出3 12 发电电压警告 开关量逻辑输出 +00060 Value 9145 Log开关量输出3 13 公共报警值1 开关量逻辑输出 +00061 Value 9145 Log开关量输出3 14 公共报警值2 开关量逻辑输出 +00062 Value 9145 Log开关量输出3 15 公共报警有效值1 开关量逻辑输出 +00063 Value 9145 Log开关量输出3 16 公共报警有效值2 开关量逻辑输出 +00064 Value 9146 Log开关量输出4 1 发电频率警告 开关量逻辑输出 +00065 Value 9146 Log开关量输出4 2 发电频率报警 开关量逻辑输出 +00066 Value 9146 Log开关量输出4 3 保留 开关量逻辑输出 +00067 Value 9146 Log开关量输出4 4 保留 开关量逻辑输出 +00068 Value 9146 Log开关量输出4 5 保留 开关量逻辑输出 +00069 Value 9146 Log开关量输出4 6 公共警告 开关量逻辑输出 +00070 Value 9146 Log开关量输出4 7 公共报警停机 开关量逻辑输出 +00071 Value 9146 Log开关量输出4 8 公共报警BOC 开关量逻辑输出 +00072 Value 9146 Log开关量输出4 9 传感器故障公共报警 开关量逻辑输出 +00073 Value 9146 Log开关量输出4 10 ECU供电 开关量逻辑输出 +00074 Value 9146 Log开关量输出4 11 ECU停止运行 开关量逻辑输出 +00075 Value 9146 Log开关量输出4 12 保留 开关量逻辑输出 +00076 Value 9146 Log开关量输出4 13 保留 开关量逻辑输出 +00077 Value 9146 Log开关量输出4 14 双备正常 开关量逻辑输出 +00078 Value 9146 Log开关量输出4 15 过流 开关量逻辑输出 +00079 Value 9146 Log开关量输出4 16 保留 开关量逻辑输出 +00080 Value 9147 Log开关量输出5 1 禁止停机 开关量逻辑输出 +00081 Value 9147 Log开关量输出5 2 静态逻辑0 开关量逻辑输出 +00082 Value 9147 Log开关量输出5 3 静态逻辑1 开关量逻辑输出 +00083 Value 9147 Log开关量输出5 4 需要再生regen 开关量逻辑输出 +00084 Value 9147 Log开关量输出5 5 后处理HEST 灯 开关量逻辑输出 +00085 Value 9147 Log开关量输出5 6 保留 开关量逻辑输出 +00086 Value 9147 Log开关量输出5 7 保留 开关量逻辑输出 +00087 Value 9147 Log开关量输出5 8 保留 开关量逻辑输出 +00088 Value 9147 Log开关量输出5 9 消音按钮 开关量逻辑输出 +00089 Value 9147 Log开关量输出5 10 起动按钮 开关量逻辑输出 +00090 Value 9147 Log开关量输出5 11 停止按钮 开关量逻辑输出 +00091 Value 9147 Log开关量输出5 12 保留 开关量逻辑输出 +00092 Value 9147 Log开关量输出5 13 GCB按钮 开关量逻辑输出 +00093 Value 9147 Log开关量输出5 14 故障复位按钮 开关量逻辑输出 +00094 Value 9147 Log开关量输出5 15 电力报警 开关量逻辑输出 +00095 Not Used +00096 Value 9148 Log开关量输出6 1 ECU等待起动中 开关量逻辑输出 +00097 Value 9148 Log开关量输出6 2 AIN1开关 开关量逻辑输出 +00098 Value 9148 Log开关量输出6 3 AIN2开关 开关量逻辑输出 +00099 Value 9148 Log开关量输出6 4 AIN3开关 开关量逻辑输出 +00100 Value 9148 Log开关量输出6 5 AIN4开关 开关量逻辑输出 +00101 Value 9148 Log开关量输出6 6 保留 开关量逻辑输出 +00102 Value 9148 Log开关量输出6 7 保留 开关量逻辑输出 +00103 Value 9148 Log开关量输出6 8 保留 开关量逻辑输出 +00104 Value 9148 Log开关量输出6 9 保留 开关量逻辑输出 +00105 Value 9148 Log开关量输出6 10 保留 开关量逻辑输出 +00106 Value 9148 Log开关量输出6 11 保留 开关量逻辑输出 +00107 Value 9148 Log开关量输出6 12 保留 开关量逻辑输出 +00108 Value 9148 Log开关量输出6 13 保留 开关量逻辑输出 +00109 Value 9148 Log开关量输出6 14 保留 开关量逻辑输出 +00110 Value 9148 Log开关量输出6 15 保留 开关量逻辑输出 +00111 Value 9148 Log开关量输出6 16 保留 开关量逻辑输出 +00112 Value 9149 Log开关量输出7 1 保留 开关量逻辑输出 +00113 Value 9149 Log开关量输出7 2 保留 开关量逻辑输出 +00114 Value 9149 Log开关量输出7 3 保留 开关量逻辑输出 +00115 Value 9149 Log开关量输出7 4 保留 开关量逻辑输出 +00116 Value 9149 Log开关量输出7 5 保留 开关量逻辑输出 +00117 Value 9149 Log开关量输出7 6 ECU通讯故障 开关量逻辑输出 +00118 Value 9149 Log开关量输出7 7 ECU红灯 开关量逻辑输出 +00119 Value 9149 Log开关量输出7 8 ECU 黄灯 开关量逻辑输出 +00120 Value 9149 Log开关量输出7 9 后处理DEF值灯 开关量逻辑输出 +00121 Value 9149 Log开关量输出7 10 后处理阻止灯 开关量逻辑输出 +00122 Value 9149 Log开关量输出7 11 运用计时3 开关量逻辑输出 +00123 Value 9149 Log开关量输出7 12 运用计时4 开关量逻辑输出 +00124 Value 9149 Log开关量输出7 13 Exercise Timer 5 开关量逻辑输出 +00125 Value 9149 Log开关量输出7 14 Exercise Timer 6 开关量逻辑输出 +00126 Value 9149 Log开关量输出7 15 Exercise Timer 7 开关量逻辑输出 +00127 Value 9149 Log开关量输出7 16 Exercise Timer 8 开关量逻辑输出 +00128 Value 9150 Log开关量输出8 1 负载撤载阶段1 开关量逻辑输出 +00129 Value 9150 Log开关量输出8 2 负载撤载阶段2 开关量逻辑输出 +00130 Value 9150 Log开关量输出8 3 负载撤载阶段3 开关量逻辑输出 +00131 Value 9150 Log开关量输出8 4 卸载阶段4 开关量逻辑输出 +00132 Value 9150 Log开关量输出8 5 卸载阶段5 开关量逻辑输出 +00133 Value 9150 Log开关量输出8 6 频率选择 开关量逻辑输出 +00134 Value 9150 Log开关量输出8 7 保留 开关量逻辑输出 +00135 Value 9150 Log开关量输出8 8 ATT DPF Lamp 开关量逻辑输出 +00136 Value 9150 Log开关量输出8 9 后处理SCR故障灯 开关量逻辑输出 +00137 Value 9150 Log开关量输出8 10 排空 开关量逻辑输出 +00138 Value 9150 Log开关量输出8 11 排空通脉冲 开关量逻辑输出 +00139 Value 9150 Log开关量输出8 12 排空断脉冲 开关量逻辑输出 +00140 Value 9150 Log开关量输出8 13 阻风门 开关量逻辑输出 +00141 Value 9150 Log开关量输出8 14 起动马达2 开关量逻辑输出 +00142 Value 9150 Log开关量输出8 15 ATT连锁状态 开关量逻辑输出 +00143 Value 9150 Log开关量输出8 16 ECU 通信正常 开关量逻辑输出 +00144 Value 11896 Log开关量输出 1 ATT Regen ACK Lamp 开关量逻辑输出 +00145 Value 11896 Log开关量输出 2 ATT PCD 灯 开关量逻辑输出 +00146 Value 11896 Log开关量输出 3 维护时间1报警 开关量逻辑输出 +00147 Value 11896 Log开关量输出 4 维护时间2报警 开关量逻辑输出 +00148 Value 11896 Log开关量输出 5 维护时间3报警 开关量逻辑输出 +00149 Value 11896 Log开关量输出 6 MCB 状态 开关量逻辑输出 +00150 Value 11896 Log开关量输出 7 GCB 状态 开关量逻辑输出 +00151 Value 11896 Log开关量输出 8 Exercise Timer 9 开关量逻辑输出 +00152 Value 11896 Log开关量输出 9 Exercise Timer 10 开关量逻辑输出 +00153 Value 11896 Log开关量输出 10 Exercise Timer 11 开关量逻辑输出 +00154 Value 11896 Log开关量输出 11 Exercise Timer 12 开关量逻辑输出 +00155 Value 11896 Log开关量输出 12 Exercise Timer 13 开关量逻辑输出 +00156 Value 11896 Log开关量输出 13 Exercise Timer 14 开关量逻辑输出 +00157 Value 11896 Log开关量输出 14 Exercise Timer 15 开关量逻辑输出 +00158 Value 11896 Log开关量输出 15 Exercise Timer 16 开关量逻辑输出 +00159 Value 11896 Log开关量输出 16 Peripheral Module Comm Fail 开关量逻辑输出 +00160 Value 11897 Log开关量输出10 1 Initialized 开关量逻辑输出 +00161 Value 11897 Log开关量输出10 2 发电机有效 开关量逻辑输出 +00162 Not Used +00163 Not Used +00164 Not Used +00165 Not Used +00166 Not Used +00167 Not Used +00168 Not Used +00169 Not Used +00170 Not Used +00171 Not Used +00172 Value 20744 固定保护阶段 1 11 ECU 1通信故障警告 固定保护状态 +00173 Value 20744 固定保护阶段 1 12 ECU 1 通信故障停机 固定保护状态 +00174 Value 20744 固定保护阶段 1 13 ECU 黄灯 固定保护状态 +00175 Value 20744 固定保护阶段 1 14 ECU红灯 固定保护状态 +00176 Value 20744 固定保护阶段 1 15 ECU等待起动中 固定保护状态 +00177 Value 20744 固定保护阶段 1 16 ATT DPF Lamp 固定保护状态 +00178 Value 20744 固定保护阶段 1 17 后处理HEST 灯 固定保护状态 +00179 Value 20744 固定保护阶段 1 18 后处理SCR故障灯 固定保护状态 +00180 Value 20744 固定保护阶段 1 19 后处理DEF值灯 固定保护状态 +00181 Value 20744 固定保护阶段 1 20 后处理阻止灯 固定保护状态 +00182 Value 20744 固定保护阶段 1 21 紧急停机 固定保护状态 +00183 Value 20744 固定保护阶段 1 22 充电发电机故障警告 固定保护状态 +00184 Value 20744 固定保护阶段 1 23 充电机故障停机 固定保护状态 +00185 Value 20744 固定保护阶段 1 24 停机失败警告 固定保护状态 +00186 Value 20744 固定保护阶段 1 25 超速停机 固定保护状态 +00187 Value 20744 固定保护阶段 1 26 欠速停机 固定保护状态 +00188 Value 20744 固定保护阶段 1 27 转速测量故障停机 固定保护状态 +00189 Value 20744 固定保护阶段 1 28 电池耗尽停机 固定保护状态 +00190 Value 20744 固定保护阶段 1 29 维修时间1运行时间警告 固定保护状态 +00191 Value 20744 固定保护阶段 1 30 维修时间2运行时间警告 固定保护状态 +00192 Value 20744 固定保护阶段 1 31 维修时间3运行时间警告 固定保护状态 +00193 Value 20744 固定保护阶段 1 32 起动失败停机 固定保护状态 +00194 Not Used +00195 Value 20745 固定保护阶段 2 2 GCB故障停机 固定保护状态 +00196 Value 20745 固定保护阶段 2 3 发电L1电压高警告 固定保护状态 +00197 Value 20745 固定保护阶段 2 4 发电L1 过电压停机 固定保护状态 +00198 Value 20745 固定保护阶段 2 5 发电L2电压高警告 固定保护状态 +00199 Value 20745 固定保护阶段 2 6 发电L2过电压 固定保护状态 +00200 Value 20745 固定保护阶段 2 7 发电L3电压高警告 固定保护状态 +00201 Value 20745 固定保护阶段 2 8 发电L3过电压 固定保护状态 +00202 Value 20745 固定保护阶段 2 9 发电L1L2电压高警告 固定保护状态 +00203 Value 20745 固定保护阶段 2 10 发电L1L2过电压停机 固定保护状态 +00204 Value 20745 固定保护阶段 2 11 发电L2L3电压高警告 固定保护状态 +00205 Value 20745 固定保护阶段 2 12 发电L2L3过电压 固定保护状态 +00206 Value 20745 固定保护阶段 2 13 发电L3L1电压高警告 固定保护状态 +00207 Value 20745 固定保护阶段 2 14 发电L3L1过电压 固定保护状态 +00208 Value 20745 固定保护阶段 2 15 发电L1电压低警告 固定保护状态 +00209 Value 20745 固定保护阶段 2 16 发电L1 低电压BOC 固定保护状态 +00210 Value 20745 固定保护阶段 2 17 发电L2电压低警告 固定保护状态 +00211 Value 20745 固定保护阶段 2 18 发电L2低电压BOC 固定保护状态 +00212 Value 20745 固定保护阶段 2 19 发电L3电压低警告 固定保护状态 +00213 Value 20745 固定保护阶段 2 20 发电L3低电压BOC 固定保护状态 +00214 Value 20745 固定保护阶段 2 21 发电L1L2电压低警告 固定保护状态 +00215 Value 20745 固定保护阶段 2 22 发电L1L2低电压BOC 固定保护状态 +00216 Value 20745 固定保护阶段 2 23 发电L2L3电压低警告 固定保护状态 +00217 Value 20745 固定保护阶段 2 24 发电L2L3低电压BOC 固定保护状态 +00218 Value 20745 固定保护阶段 2 25 发电L3L1电压低警告 固定保护状态 +00219 Value 20745 固定保护阶段 2 26 发电L3L1低电压BOC 固定保护状态 +00220 Value 20745 固定保护阶段 2 27 线电压不平衡BOC 固定保护状态 +00221 Value 20745 固定保护阶段 2 28 相电压不平衡BOC 固定保护状态 +00222 Value 20745 固定保护阶段 2 29 发电频率高警告 固定保护状态 +00223 Value 20745 固定保护阶段 2 30 发电频率高BOC 固定保护状态 +00224 Value 20745 固定保护阶段 2 31 发电频率低警告 固定保护状态 +00225 Value 20745 固定保护阶段 2 32 发电频率低BOC 固定保护状态 +00226 Value 20746 固定保护阶段 3 1 逆功率分闸 固定保护状态 +00227 Not Used +00228 Value 20746 固定保护阶段 3 3 电流不平衡BOC 固定保护状态 +00229 Not Used +00230 Not Used +00231 Not Used +00232 Not Used +00233 Not Used +00234 Not Used +00235 Not Used +00236 Not Used +00237 Not Used +00238 Not Used +00239 Not Used +00240 Not Used +00241 Value 20746 固定保护阶段 3 16 封锁输入密码 固定保护状态 +00242 Value 20746 固定保护阶段 3 17 ATT 互锁有效 固定保护状态 +00243 Value 20746 固定保护阶段 3 18 ATT 强制再生有效 固定保护状态 +00244 Value 20746 固定保护阶段 3 19 ATT 禁止再生有效 固定保护状态 +00245 Value 20746 固定保护阶段 3 20 默认密码 固定保护状态 +00246 Value 20746 固定保护阶段 3 21 双运行故障 固定保护状态 +00247 Value 20746 固定保护阶段 3 22 双运行固件版本不同 固定保护状态 +00248 Value 20746 固定保护阶段 3 23 AHI 双运行主机故障 固定保护状态 +00249 Value 20746 固定保护阶段 3 24 双运行主故障警告 固定保护状态 +00250 Value 20746 固定保护阶段 3 25 AHI 双运行从机故障 固定保护状态 +00251 Value 20746 固定保护阶段 3 26 双运行从故障警告 固定保护状态 +00252 Value 20746 固定保护阶段 3 27 双运行市电不同 固定保护状态 +00253 Value 20746 固定保护阶段 3 28 ALI发电相序反 固定保护状态 +00254 Not Used +00255 Not Used +00256 Not Used +00257 Not Used +00258 Value 20747 固定保护阶段 4 1 过载警告 固定保护状态 +00259 Value 20747 固定保护阶段 4 2 过载BOC 固定保护状态 +00260 Value 20747 固定保护阶段 4 3 电流短路BOC 固定保护状态 +00261 Value 20747 固定保护阶段 4 4 IDMT 过流BOC 固定保护状态 +00262 Not Used +00263 Value 20747 固定保护阶段 4 6 燃油传送 固定保护状态 +00264 Value 20747 固定保护阶段 4 7 燃油传输失败 固定保护状态 +00265 Value 20747 固定保护阶段 4 8 电池充电器故障警告 固定保护状态 +00266 Value 20747 固定保护阶段 4 9 越控所有停机警告 固定保护状态 +00267 Value 20747 固定保护阶段 4 10 租赁计时1警告 固定保护状态 +00268 Value 20747 固定保护阶段 4 11 租赁计时2警告 固定保护状态 +00269 Value 20747 固定保护阶段 4 12 租赁计时1时间到 固定保护状态 +00270 Value 20747 固定保护阶段 4 13 租赁计时2时间到 固定保护状态 +00271 Value 20747 固定保护阶段 4 14 租赁计时1超时停机 固定保护状态 +00272 Value 20747 固定保护阶段 4 15 租赁计时2超时停机 固定保护状态 +00273 Value 20747 固定保护阶段 4 16 租赁计时器封锁开始警告 固定保护状态 +00274 Not Used +00275 Not Used +00276 Value 20747 固定保护阶段 4 19 偷油警告 固定保护状态 +00277 Not Used +00278 Value 20747 固定保护阶段 4 21 接地电流保护停机 固定保护状态 +00279 Not Used +00280 Value 20747 固定保护阶段 4 23 围栏1报警警告 固定保护状态 +00281 Value 20747 固定保护阶段 4 24 围栏1报警停机 固定保护状态 +00282 Value 20747 固定保护阶段 4 25 围栏1报警BOC 固定保护状态 +00283 Value 20747 固定保护阶段 4 26 围栏1报警 固定保护状态 +00284 Value 20747 固定保护阶段 4 27 围栏2报警警告 固定保护状态 +00285 Value 20747 固定保护阶段 4 28 围栏2报警停机 固定保护状态 +00286 Value 20747 固定保护阶段 4 29 围栏2报警BOC 固定保护状态 +00287 Value 20747 固定保护阶段 4 30 围栏2报警 固定保护状态 +00288 Value 20747 固定保护阶段 4 31 维修时间1间隔警告 固定保护状态 +00289 Value 20747 固定保护阶段 4 32 维修时间2间隔警告 固定保护状态 +00290 Value 20748 固定保护阶段 5 1 维修时间3间隔警告 固定保护状态 +00291 Not Used +00292 Value 20748 固定保护阶段 5 3 电池充电器低压警告 固定保护状态 +00293 Value 20748 固定保护阶段 5 4 电池充电器过压警告 固定保护状态 +00294 Value 20748 固定保护阶段 5 5 紧急停 固定保护状态 +00295 Value 20748 固定保护阶段 5 6 维修时间1运行时间BOC 固定保护状态 +00296 Value 20748 固定保护阶段 5 7 维修时间2运行时间BOC 固定保护状态 +00297 Value 20748 固定保护阶段 5 8 维修时间3运行时间BOC 固定保护状态 +00298 Value 20748 固定保护阶段 5 9 维修时间1间隔BOC 固定保护状态 +00299 Value 20748 固定保护阶段 5 10 维修时间2间隔BOC 固定保护状态 +00300 Value 20748 固定保护阶段 5 11 维修时间3间隔BOC 固定保护状态 +00301 Value 20748 固定保护阶段 5 12 Wrn MCB Fail To Open 固定保护状态 +00302 Value 20748 固定保护阶段 5 13 Wrn MCB Fail To Close 固定保护状态 +00303 Value 20748 固定保护阶段 5 14 Sd GCB Fail To Open 固定保护状态 +00304 Value 20748 固定保护阶段 5 15 Sd GCB Fail To Close 固定保护状态 + + +======================================================================================================================================================================================== + Table: Values +======================================================================================================================================================================================== + +Allowed MODBUS functions: 03, 04 + +Register(s) Com.Obj. Name Dimension Type Len Dec Min Max Group / Subgroup +======================================================================================================================================================================================== +01000 10123 转速 RPM Integer 2 0 0 3000 发动机 +01001 8202 Load P kW Integer 2 0 -32767 32767 负载 +01002 8524 Load P L1 kW Integer 2 0 -32767 32767 负载 +01003 8525 Load P L2 kW Integer 2 0 -32767 32767 负载 +01004 8526 Load P L3 kW Integer 2 0 -32767 32767 负载 +01005 8203 Load Q kVAr Integer 2 0 -32767 32767 负载 +01006 8527 Load Q L1 kVAr Integer 2 0 -32767 32767 负载 +01007 8528 Load Q L2 kVAr Integer 2 0 -32767 32767 负载 +01008 8529 Load Q L3 kVAr Integer 2 0 -32767 32767 负载 +01009 8565 Load S kVA Integer 2 0 0 32767 负载 +01010 8530 Load S L1 kVA Integer 2 0 0 32767 负载 +01011 8531 Load S L2 kVA Integer 2 0 0 32767 负载 +01012 8532 Load S L3 kVA Integer 2 0 0 32767 负载 +01013 8204 功率因数 Integer 1 2 -100 100 负载 +01014 8533 L1功率因数 Integer 1 2 -100 100 负载 +01015 8534 L2功率因数 Integer 1 2 -100 100 负载 +01016 8535 L3功率因数 Integer 1 2 -100 100 负载 +01017 8210 发电频率 Hz Unsigned 2 1 0 4000 发电机 +01018 8192 发电电压L1-N V Unsigned 2 0 0 65534 发电机 +01019 8193 发电电压L2-N V Unsigned 2 0 0 65534 发电机 +01020 8194 发电电压L3-N V Unsigned 2 0 0 65534 发电机 +01021 9628 发电电压L1-L2 V Unsigned 2 0 0 65534 发电机 +01022 9629 发电电压L2-L3 V Unsigned 2 0 0 65534 发电机 +01023 9630 发电电压L3-L1 V Unsigned 2 0 0 65534 发电机 +01024 8198 负载电流L1 A Unsigned 2 0 0 32767 负载 +01025 8199 负载电流L2 A Unsigned 2 0 0 32767 负载 +01026 8200 负载电流L3 A Unsigned 2 0 0 32767 负载 +01027 Not Used +01028 Not Used +01029 Not Used +01030 Not Used +01031 Not Used +01032 Not Used +01033 Not Used +01034 Not Used +01035 Not Used +01036 8213 电池电压 V Integer 2 1 0 360 控制器I/O口 +01037 10603 D+ V Integer 2 1 0 360 控制器I/O口 +01038 9151 油压 Bar Integer 2 1 0 100 控制器I/O口 +01039 9152 水温 °C Integer 2 0 -16 120 控制器I/O口 +01040 9153 燃油位 % Integer 2 0 0 100 控制器I/O口 +01041 Not Used +01042 8235 开关量输入 Binary#1 2 0 - - 控制器I/O口 +01043 15780 紧急停机 Binary#2 1 0 - - 控制器I/O口 +01044 8239 开关量输出 Binary#3 2 0 - - 控制器I/O口 +01045 23924 以太网界面状态 List#1 1 0 0 4 CM-ETHERNET +01046-01053(8) 23931 IP地址 String 16 0 - - CM-ETHERNET +01054-01061(8) 23930 当前子网掩码 String 16 0 - - CM-ETHERNET +01062-01069(8) 23929 当前网关 String 16 0 - - CM-ETHERNET +01070-01077(8) 23928 主DNS String 16 0 - - CM-ETHERNET +01078-01085(8) 23927 次级DNS String 16 0 - - CM-ETHERNET +01086 23925 最后E-mail结果 Unsigned 1 0 0 254 CM-ETHERNET +01087-01102(16) 23932 MAC 地址 String 32 0 - - CM-ETHERNET +01103 23916 以太网接线模式 List#2 1 0 0 3 CM-ETHERNET +01104-01111(8) 23926 AirGate ID String 16 0 - - CM-ETHERNET +01112 23910 AirGate 状态 List#3 1 0 0 8 CM-ETHERNET +01113-01144(32) 23915 AirGate服务节点 String 64 0 - - CM-ETHERNET +01145-01152(8) 24309 AirGate ID String 16 0 - - CM-4G-GPS +01153 23967 AirGate 状态 List#3 1 0 0 8 CM-4G-GPS +01154-01185(32) 23991 AirGate服务节点 String 64 0 - - CM-4G-GPS; CM-4G-GPS +01186-01193(8) 23971 IP地址 String 16 0 - - CM-4G-GPS +01194-01201(8) 23984 主DNS String 16 0 - - CM-4G-GPS +01202-01209(8) 23983 次级DNS String 16 0 - - CM-4G-GPS +01210 24307 最后E-mail结果 Unsigned 1 0 0 254 CM-4G-GPS +01211 24302 讯号强度 % Unsigned 1 0 0 100 CM-4G-GPS +01212 24288 数据机状态 List#4 1 0 0 29 CM-4G-GPS +01213 23972 网络状态 List#5 1 0 0 2 CM-4G-GPS +01214 23973 GPS 状态 List#6 1 0 0 2 CM-4G-GPS +01215-01230(16) 24147 网络名称 String 32 0 - - CM-4G-GPS +01231-01238(8) 24146 网络模式 String 16 0 - - CM-4G-GPS +01239-01246(8) 24268 纬度 String 16 0 - - CM-4G-GPS +01247-01254(8) 24267 经度 String 16 0 - - CM-4G-GPS +01255 24265 有效卫星 Unsigned 1 0 0 15 CM-4G-GPS +01256 24264 速度 km/h Unsigned 2 0 0 65535 CM-4G-GPS +01257-01258(2) 8205 发电KWh kWh Integer 4 0 -32768000 32767000 统计值 +01259-01260(2) 8539 发电KVArh kVArh Integer 4 0 -32768000 32767000 统计值 +01261 Not Used +01262 Not Used +01263 Not Used +01264 Not Used +01265-01266(2) 8206 运行小时 h Integer 4 1 -32768000 32767000 统计值 +01267 8207 起动次数 Unsigned 2 0 0 65534 统计值 +01268 11616 维修时间1运行小时 h Integer 2 0 -10000 10000 统计值 +01269 11617 维修时间2运行小时 h Integer 2 0 -10000 10000 统计值 +01270 11618 维修时间3运行小时 h Integer 2 0 -10000 10000 统计值 +01271-01272(2) 14328 租赁1 h Integer 4 0 0 9000 统计值 +01273-01274(2) 14369 租赁2 天 Integer 4 0 0 32000 统计值 +01275-01276(2) 11195 急停次数 Unsigned 4 0 0 65535000 统计值 +01277-01278(2) 11196 停机 Unsigned 4 0 0 65535000 统计值 +01279-01280(2) 9040 总燃油消耗 l Unsigned 4 0 0 65535000 统计值 +01281 13772 时间到清空 天 Integer 2 0 0 32000 统计值 +01282 13771 时间到清空 hrs Integer 2 0 0 23 统计值 +01283 13770 时间到清空 min Integer 2 0 0 59 统计值 +01284 9887 控制器模式 List#7 1 0 0 2 信息 +01285 9591 负载撤载状态 List#8 1 0 0 5 信息 +01286 9244 发动机状态 List#9 1 0 0 17 信息 +01287 9245 断路器状态 List#10 1 0 0 12 信息 +01288 10040 计时文本 List#11 1 0 0 37 信息 +01289 12944 连接类型 List#12 1 0 0 7 信息 +01290-01305(16) 24501 ID 字串 String 32 0 - - 信息 +01306-01313(8) 24339 FW版本 String 16 0 - - 信息 +01314 8480 应用 List#13 1 0 0 10 信息 +01315 8707 FW分支 List#14 1 0 0 1 信息 +01316 9143 Log开关量输出1 Binary#4 2 0 - - 开关量逻辑输出 +01317 9144 Log开关量输出2 Binary#5 2 0 - - 开关量逻辑输出 +01318 9145 Log开关量输出3 Binary#6 2 0 - - 开关量逻辑输出 +01319 9146 Log开关量输出4 Binary#7 2 0 - - 开关量逻辑输出 +01320 9147 Log开关量输出5 Binary#8 2 0 - - 开关量逻辑输出 +01321 9148 Log开关量输出6 Binary#9 2 0 - - 开关量逻辑输出 +01322 9149 Log开关量输出7 Binary#10 2 0 - - 开关量逻辑输出 +01323 9150 Log开关量输出8 Binary#11 2 0 - - 开关量逻辑输出 +01324 11896 Log开关量输出 Binary#12 2 0 - - 开关量逻辑输出 +01325 11897 Log开关量输出10 Binary#13 2 0 - - 开关量逻辑输出 +01326-01327(2) 16387 维修时间1间隔 天 Integer 4 0 -10000 10000 统计值 +01328-01329(2) 16388 维修时间2间隔 天 Integer 4 0 -10000 10000 统计值 +01330-01331(2) 16389 维修时间3间隔 天 Integer 4 0 -10000 10000 统计值 + + +======================================================================================================================================================================================== + Table: Setpoints +======================================================================================================================================================================================== + +Allowed MODBUS functions: 03, 04, 06, 16 + +Register(s) Com.Obj. Name Dimension Type Len Dec Min Max Group / Subgroup +======================================================================================================================================================================================== + + +======================================================================================================================================================================================== + List# Types Meaning +======================================================================================================================================================================================== + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#1 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 未知 + 1 已断开 + 2 连接中 + 3 已连接 + 4 失败 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#2 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 10-HD + 1 10-FD + 2 100-HD + 3 100-FD + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#3 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 没有定义 + 1 等待连线 + 2 解析 + 3 连接中 + 4 产生第二通道 + 5 注册中 + 6 连线不互通 + 7 连线互通 + 8 Susp AGkeyEmpty + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#4 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 + 1 OK + 2 EO1 + 3 EO2 + 4 E SIM + 5 EO4 + 6 E 注册 + 7 E 注册 + 8 E 注册 + 9 E 内容 + 10 E 连接 + 11 E08 + 12 E09 + 13 E10 + 14 E 注册 + 15 E12 + 16 E13 + 17 E14 + 18 E SMS 发送 + 19 起始1错误 + 20 起始2错误 + 21 起始3错误 + 22 E18 + 23 E18 + 24 E18 + 25 E 失去连线 + 26 E19 + 27 E18 + 28 重启-配置 + 29 重启-app + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#5 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 无法使用 + 1 可以使用 + 2 附上 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#6 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 未定义 + 1 寻找中 + 2 固定 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#7 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 关 + 1 手动 + 2 自动 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#8 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 未卸载 + 1 甩负载1 + 2 甩负载2 + 3 甩负载3 + 4 甩负载S4 + 5 甩负载S5 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#9 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 初始化 + 1 候命中 + 2 未预备 + 3 预起动 + 4 盘车中 + 5 间歇 + 6 起动中 + 7 运行中 + 8 已加载 + 9 软卸载 + 10 冷却中 + 11 停机 + 12 故障停机 + 13 通风 + 14 应急手动 + 15 软加载 + 16 等待停机 + 17 故障停机通风 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#10 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 初始化 + 1 断路器分 + 2 孤岛运行 + 3 市电运行 + 4 并联操作 + 5 反向同步 + 6 同步中 + 7 市电故障 + 8 有效错误 + 9 市电恢复 + 10 多台岛运 + 11 多台并运 + 12 应急手动 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#11 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 无计时 + 1 预起动 + 2 盘车中 + 3 怠速运行 + 4 冷却中 + 5 停机阀 + 6 后冷却 + 7 间歇 + 8 燃气通风 + 9 最短稳定到 + 10 最大稳定至 + 11 MCB合 + 12 转换延时 + 13 恢复延时 + 14 启动延时 + 15 电压侦测 + 16 GCB延时 + 17 GCB分闸 + 18 同步超时 + 19 GCB闭合 + 20 MCB分闸 + 21 等待停机 + 22 系统起动 + 23 系统停机 + 24 下一台起动 + 25 下一台停机 + 26 甩负载改变 + 27 重接载变换(无效) + 28 卸载停机 + 29 警告 + 30 RPM 窗口超时 + 31 励磁延时 + 32 发动机起动超时 + 33 允许同步 + 34 Fuel Sol Lead + 35 Deexcitation + 36 Dummy Load On + 37 Dummy Load Off + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#12 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 单相 + 1 SplPhL1L2 + 2 SplPhL1L3 + 3 三角接电压 + 4 3相3线 + 5 3相4线 + 6 3PH 黄低 + 7 3相黄高 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#13 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 未用 + 1 未用 + 2 未用 + 3 未用 + 4 未用 + 5 未用 + 6 MRS16 + 7 AMF8 + 8 AMF9 + 9 AMF20 + 10 AMF25 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +List#14 + +Value Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 未用 + 1 标准 + + +======================================================================================================================================================================================== + Binary# Types Meaning +======================================================================================================================================================================================== + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#1 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 遥控启动/停机 + 1 GC反饋 + 2 未用 + 3 存取锁 + 4 远程关 + 5 未用 + 6 禁止停机 + 7 未用 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#2 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 紧急停机 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#3 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 起动马达1 + 1 燃油阀 + 2 GCB合/分 + 3 预起动 + 4 可以加载 + 5 警告 + 6 未用 + 7 未用 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#4 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 未用 + 1 起动马达1 + 2 燃油阀 + 3 停机阀 + 4 停机脉冲 + 5 点火 + 6 预起动 + 7 冷却泵 + 8 怠速/额定 + 9 空气阀 + 10 警告 + 11 蜂鸣 + 12 GCB合/分 + 13 GCB闭合线圈 + 14 GCB断开线圈 + 15 GCB失压线圈 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#5 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 保留 + 1 保留 + 2 保留 + 3 保留 + 4 候命中 + 5 保留 + 6 可以加载 + 7 不在自动 + 8 运行中 + 9 冷却中 + 10 加载 + 11 发电正常 + 12 保留 + 13 动作计时器1 + 14 动作计时器2 + 15 预热塞 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#6 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 停止按鈕 + 1 温度开关 + 2 保留 + 3 点火启动 + 4 手动候命 + 5 心跳 + 6 关模式 + 7 手动模式 + 8 自动模式 + 9 保留 + 10 发电电压报警报警 + 11 发电电压警告 + 12 公共报警值1 + 13 公共报警值2 + 14 公共报警有效值1 + 15 公共报警有效值2 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#7 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 发电频率警告 + 1 发电频率报警 + 2 保留 + 3 保留 + 4 保留 + 5 公共警告 + 6 公共报警停机 + 7 公共报警BOC + 8 传感器故障公共报警 + 9 ECU供电 + 10 ECU停止运行 + 11 保留 + 12 保留 + 13 双备正常 + 14 过流 + 15 保留 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#8 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 禁止停机 + 1 静态逻辑0 + 2 静态逻辑1 + 3 需要再生regen + 4 后处理HEST 灯 + 5 保留 + 6 保留 + 7 保留 + 8 消音按钮 + 9 起动按钮 + 10 停止按钮 + 11 保留 + 12 GCB按钮 + 13 故障复位按钮 + 14 电力报警 + 15 未用 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#9 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 ECU等待起动中 + 1 AIN1开关 + 2 AIN2开关 + 3 AIN3开关 + 4 AIN4开关 + 5 保留 + 6 保留 + 7 保留 + 8 保留 + 9 保留 + 10 保留 + 11 保留 + 12 保留 + 13 保留 + 14 保留 + 15 保留 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#10 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 保留 + 1 保留 + 2 保留 + 3 保留 + 4 保留 + 5 ECU通讯故障 + 6 ECU红灯 + 7 ECU 黄灯 + 8 后处理DEF值灯 + 9 后处理阻止灯 + 10 运用计时3 + 11 运用计时4 + 12 Exercise Timer 5 + 13 Exercise Timer 6 + 14 Exercise Timer 7 + 15 Exercise Timer 8 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#11 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 负载撤载阶段1 + 1 负载撤载阶段2 + 2 负载撤载阶段3 + 3 卸载阶段4 + 4 卸载阶段5 + 5 频率选择 + 6 保留 + 7 ATT DPF Lamp + 8 后处理SCR故障灯 + 9 排空 + 10 排空通脉冲 + 11 排空断脉冲 + 12 阻风门 + 13 起动马达2 + 14 ATT连锁状态 + 15 ECU 通信正常 + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#12 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 ATT Regen ACK Lamp + 1 ATT PCD 灯 + 2 维护时间1报警 + 3 维护时间2报警 + 4 维护时间3报警 + 5 MCB 状态 + 6 GCB 状态 + 7 Exercise Timer 9 + 8 Exercise Timer 10 + 9 Exercise Timer 11 + 10 Exercise Timer 12 + 11 Exercise Timer 13 + 12 Exercise Timer 14 + 13 Exercise Timer 15 + 14 Exercise Timer 16 + 15 Peripheral Module Comm Fail + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Binary#13 + +Bit Name +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0 Initialized + 1 发电机有效 + 2 ECU1 通信故障 + 3 ECU2 通信故障 + 4 Dummy Load Stage 1 + 5 Dummy Load Stage 2 + 6 Dummy Load Stage 3 + 7 Dummy Load Stage 4 + 8 Dummy Load Stage 5 + 9 Start Button State + 10 Stop Button State + 11 FltRes Button State + 12 HornRes Button State + 13 MCB Button State + 14 GCB Button State + + diff --git a/docs/AI训练资料/科迈控制/InteliGen 200 - Global Guide.pdf b/docs/AI训练资料/科迈控制/InteliGen 200 - Global Guide.pdf new file mode 100644 index 00000000..869efd04 Binary files /dev/null and b/docs/AI训练资料/科迈控制/InteliGen 200 - Global Guide.pdf differ diff --git a/docs/AI训练资料/科迈控制/InteliGen 500 G2 Global Guide.pdf b/docs/AI训练资料/科迈控制/InteliGen 500 G2 Global Guide.pdf new file mode 100644 index 00000000..6610858c Binary files /dev/null and b/docs/AI训练资料/科迈控制/InteliGen 500 G2 Global Guide.pdf differ diff --git a/docs/AI训练资料/科迈控制/InteliGen4 200 Global Guide.pdf b/docs/AI训练资料/科迈控制/InteliGen4 200 Global Guide.pdf new file mode 100644 index 00000000..fdf2c61f Binary files /dev/null and b/docs/AI训练资料/科迈控制/InteliGen4 200 Global Guide.pdf differ diff --git a/docs/AI训练资料/科迈控制/InteliLite4 MRS16 Global Guide.pdf b/docs/AI训练资料/科迈控制/InteliLite4 MRS16 Global Guide.pdf new file mode 100644 index 00000000..3254188b Binary files /dev/null and b/docs/AI训练资料/科迈控制/InteliLite4 MRS16 Global Guide.pdf differ diff --git a/docs/AI训练资料/菱重S12R发动机说明书.pdf b/docs/AI训练资料/菱重S12R发动机说明书.pdf new file mode 100644 index 00000000..1e007126 Binary files /dev/null and b/docs/AI训练资料/菱重S12R发动机说明书.pdf differ diff --git a/docs/AI训练资料/菱重S16R,S16R2_说明书.pdf b/docs/AI训练资料/菱重S16R,S16R2_说明书.pdf new file mode 100644 index 00000000..ea5f1dcd Binary files /dev/null and b/docs/AI训练资料/菱重S16R,S16R2_说明书.pdf differ diff --git a/docs/AI训练资料/菱重发动机_S16RS16R2维修保养手册.pdf b/docs/AI训练资料/菱重发动机_S16RS16R2维修保养手册.pdf new file mode 100644 index 00000000..fad69e2d Binary files /dev/null and b/docs/AI训练资料/菱重发动机_S16RS16R2维修保养手册.pdf differ diff --git a/docs/Jitsi-Meet-Docker部署指南.md b/docs/Jitsi-Meet-Docker部署指南.md deleted file mode 100644 index 1faccf92..00000000 --- a/docs/Jitsi-Meet-Docker部署指南.md +++ /dev/null @@ -1,393 +0,0 @@ -# 🎥 Jitsi Meet Docker 部署与使用指南 - -## 📋 架构说明 - -本项目已将Jitsi Meet完整集成到Docker Compose中,包含以下4个服务: - -| 服务 | 容器名 | 端口 | 说明 | -|------|--------|------|------| -| **jitsi-web** | urban-lifeline-jitsi-web | 8280 (HTTP)
8443 (HTTPS) | Web前端服务 | -| **jitsi-prosody** | urban-lifeline-jitsi-prosody | 5222/5347/5280 (内部) | XMPP信令服务器 | -| **jitsi-jicofo** | urban-lifeline-jitsi-jicofo | 无需暴露 | 会议控制服务 | -| **jitsi-jvb** | urban-lifeline-jitsi-jvb | 10000/udp
4443/tcp | 视频桥接服务 | - -**数据持久化目录**: -``` -F:\Project\urbanLifeline\.data\docker\jitsi\ -├── web/ # Web配置 -├── prosody/ # XMPP配置 -├── jicofo/ # Jicofo配置 -├── jvb/ # JVB配置 -└── transcripts/ # 转录文件 -``` - ---- - -## 🚀 快速开始 - -### 步骤1:启动Jitsi Meet服务 - -```bash -# 进入Docker Compose目录 -cd F:\Project\urbanLifeline\urbanLifelineServ\.bin\docker\urbanlifeline - -# 启动Jitsi Meet(仅启动jitsi相关服务) -docker-compose up -d jitsi-web jitsi-prosody jitsi-jicofo jitsi-jvb - -# 查看服务状态 -docker-compose ps - -# 查看日志(排查问题用) -docker-compose logs -f jitsi-web -``` - -**预期输出**: -``` -NAME STATUS PORTS -urban-lifeline-jitsi-web Up (healthy) 0.0.0.0:8280->80/tcp, 0.0.0.0:8443->443/tcp -urban-lifeline-jitsi-prosody Up (healthy) 5222/tcp, 5347/tcp, 5280/tcp -urban-lifeline-jitsi-jicofo Up (healthy) -urban-lifeline-jitsi-jvb Up (healthy) 0.0.0.0:10000->10000/udp, 0.0.0.0:4443->4443/tcp -``` - -### 步骤2:验证Jitsi Meet运行 - -在浏览器打开: -- **主页**: http://localhost:8280/ -- **测试房间**: http://localhost:8280/test-meeting - -如果能看到Jitsi Meet界面,说明部署成功! - ---- - -## 🔧 配置说明 - -### 1. JWT认证配置(已配置) - -**Docker配置**(docker-compose.yml): -```yaml -jitsi-web: - environment: - JWT_APP_ID: urbanLifeline # 应用ID - JWT_APP_SECRET: your-secret-key-change-in-production # JWT密钥 -``` - -**Java后端配置**(application-dev.yml): -```yaml -jitsi: - app: - id: urbanLifeline # 必须与Docker一致 - secret: your-secret-key-change-in-production # 必须与Docker一致 - server: - url: http://localhost:8280 # Jitsi服务地址 - token: - expiration: 7200000 # Token有效期2小时 -``` - -⚠️ **重要**: -- `JWT_APP_ID` 和 `JWT_APP_SECRET` 在Docker和Java后端**必须完全一致** -- 生产环境请修改 `JWT_APP_SECRET` 为强随机字符串 -- 建议使用密钥管理工具(如Vault)管理密钥 - -### 2. 修改JWT密钥(生产环境必须) - -#### 方法A:修改Docker配置 -```bash -# 1. 编辑 docker-compose.yml -# 将所有 JWT_APP_SECRET 改为你的密钥 -JWT_APP_SECRET: "A8sF9dK2mP5nX7qW3tY6uZ1vB4cE0hG" - -# 2. 同步修改 application-dev.yml -jitsi: - app: - secret: "A8sF9dK2mP5nX7qW3tY6uZ1vB4cE0hG" - -# 3. 重启服务 -docker-compose restart jitsi-web jitsi-prosody -``` - -#### 方法B:使用环境变量(推荐生产环境) -```bash -# 创建 .env 文件 -echo "JITSI_JWT_SECRET=your-strong-secret-key" > .env - -# 修改 docker-compose.yml 使用环境变量 -JWT_APP_SECRET: ${JITSI_JWT_SECRET} -``` - ---- - -## 🧪 测试JWT验证 - -### 1. 测试无Token访问(应被拒绝) - -在浏览器打开:http://localhost:8280/test-room - -**预期结果**:显示"会议需要密码"或"需要登录" - -### 2. 测试带JWT Token访问(应成功) - -使用你的Java后端创建会议,后端会自动生成JWT Token并返回iframe URL: - -```bash -# 调用创建会议接口 -POST http://localhost:8180/urban-lifeline/workcase/chat/meeting/create -Content-Type: application/json - -{ - "roomId": "test-room-123", - "workcaseId": "WC001", - "meetingName": "测试会议", - "maxParticipants": 10 -} - -# 响应包含带JWT的URL -{ - "code": 0, - "data": { - "meetingId": "xxx", - "iframeUrl": "http://localhost:8280/workcase_WC001_1234567890?jwt=eyJhbGc..." - } -} -``` - -在浏览器打开响应中的 `iframeUrl`,应该能正常进入会议。 - ---- - -## 📊 服务管理命令 - -```bash -# 查看服务状态 -docker-compose ps - -# 查看日志 -docker-compose logs -f jitsi-web # Web服务日志 -docker-compose logs -f jitsi-prosody # XMPP日志 -docker-compose logs -f jitsi-jicofo # Jicofo日志 -docker-compose logs -f jitsi-jvb # JVB日志 - -# 重启服务 -docker-compose restart jitsi-web - -# 停止服务 -docker-compose stop jitsi-web jitsi-prosody jitsi-jicofo jitsi-jvb - -# 删除服务(保留数据) -docker-compose down - -# 删除服务和数据 -docker-compose down -v -rm -rf F:\Project\urbanLifeline\.data\docker\jitsi -``` - ---- - -## 🔍 常见问题排查 - -### 问题1:服务启动失败 - -**症状**: -```bash -docker-compose ps -# 显示 Exit (1) 或 Restarting -``` - -**解决方案**: -```bash -# 查看详细日志 -docker-compose logs jitsi-web - -# 检查端口占用 -netstat -ano | findstr "8280" - -# 删除容器重新启动 -docker-compose down -docker-compose up -d jitsi-web jitsi-prosody jitsi-jicofo jitsi-jvb -``` - -### 问题2:JWT验证失败 - -**症状**:进入会议后立即被踢出,或显示"认证失败" - -**原因**:JWT密钥不匹配 - -**解决方案**: -```bash -# 1. 检查Docker配置 -docker-compose exec jitsi-prosody cat /config/prosody.cfg.lua | grep jwt - -# 2. 检查Java配置 -# 确保 application-dev.yml 中的 jitsi.app.secret 与Docker一致 - -# 3. 重启服务 -docker-compose restart jitsi-prosody -``` - -### 问题3:视频无法连接 - -**症状**:音频正常,但视频黑屏或连接失败 - -**原因**:UDP端口10000被防火墙阻止 - -**解决方案**: -```bash -# Windows防火墙添加规则 -netsh advfirewall firewall add rule name="Jitsi JVB UDP" dir=in action=allow protocol=UDP localport=10000 - -# 或关闭防火墙测试(不推荐生产环境) -``` - -### 问题4:健康检查失败 - -**症状**: -```bash -docker-compose ps -# 显示 (unhealthy) -``` - -**解决方案**: -```bash -# 检查健康检查端点 -curl http://localhost:8280/ -curl http://localhost:8888/about/health # Jicofo -curl http://localhost:8080/about/health # JVB - -# 增加启动等待时间 -# 编辑 docker-compose.yml,修改 start_period: 120s -``` - ---- - -## 🌐 公网部署(可选) - -如果需要从公网访问,需要额外配置: - -### 1. 配置域名和SSL - -```yaml -jitsi-web: - environment: - PUBLIC_URL: https://your-domain.com - ENABLE_LETSENCRYPT: 1 - LETSENCRYPT_DOMAIN: your-domain.com - LETSENCRYPT_EMAIL: your-email@example.com - DISABLE_HTTPS: 0 -``` - -### 2. 配置JVB公网IP - -```yaml -jitsi-jvb: - environment: - DOCKER_HOST_ADDRESS: your-public-ip -``` - -### 3. 开放防火墙端口 - -- **TCP 443**: HTTPS访问 -- **UDP 10000**: WebRTC媒体流 -- **TCP 4443**: WebRTC Fallback(可选) - ---- - -## 🎯 集成到项目 - -你的Java后端已经完全配置好,可以直接使用: - -### 前端Vue调用示例 - -```typescript -import { createVideoMeeting } from '@/api/workcase/meeting' - -// 创建会议 -const res = await createVideoMeeting({ - roomId: 'room-123', - workcaseId: 'WC001', - meetingName: '技术支持会议', - maxParticipants: 10 -}) - -// 在iframe中显示 -const iframeUrl = res.data.iframeUrl -``` - -### 前端UniApp调用示例 - -```typescript -import { workcaseChatAPI } from '@/api/workcase' - -// 创建会议 -const res = await workcaseChatAPI.createVideoMeeting({ - roomId: roomId.value, - workcaseId: workcaseId.value, - meetingName: '工单技术支持', - maxParticipants: 10 -}) - -// 跳转到会议页面 -uni.navigateTo({ - url: `/pages/meeting/MeetingView/MeetingView?meetingUrl=${encodeURIComponent(res.data.iframeUrl)}` -}) -``` - ---- - -## 📈 性能优化(可选) - -### 1. 限制CPU和内存 - -```yaml -jitsi-jvb: - deploy: - resources: - limits: - cpus: '2' - memory: 2G - reservations: - cpus: '1' - memory: 1G -``` - -### 2. 配置视频质量 - -编辑 `.data/docker/jitsi/web/config/config.js`: - -```javascript -var config = { - resolution: 720, - constraints: { - video: { - height: { ideal: 720, max: 720, min: 180 } - } - } -}; -``` - ---- - -## ✅ 检查清单 - -启动前确认: -- [x] Docker Desktop已安装并运行 -- [x] 端口8280、8443、10000未被占用 -- [x] application-dev.yml配置正确 -- [x] JWT密钥在Docker和Java后端一致 - -启动后确认: -- [ ] 4个容器都是Up状态 -- [ ] 访问http://localhost:8280能看到Jitsi界面 -- [ ] Java后端能成功创建会议并生成JWT -- [ ] 前端能正常嵌入iframe并进入会议 - ---- - -## 🆘 获取帮助 - -如遇问题,收集以下信息: -1. Docker服务状态:`docker-compose ps` -2. 服务日志:`docker-compose logs jitsi-web` -3. 健康检查:`curl http://localhost:8280/` -4. Java后端日志中的JWT Token生成情况 - -**祝部署顺利!** 🚀 diff --git a/docs/qrcode.jpg b/docs/qrcode.jpg deleted file mode 100644 index d9a83d61..00000000 Binary files a/docs/qrcode.jpg and /dev/null differ diff --git a/docs/qrcode.png b/docs/qrcode.png deleted file mode 100644 index 3f5205bb..00000000 Binary files a/docs/qrcode.png and /dev/null differ diff --git a/docs/代码重构-视频会议API规范化.md b/docs/代码重构-视频会议API规范化.md deleted file mode 100644 index cb9dfe58..00000000 --- a/docs/代码重构-视频会议API规范化.md +++ /dev/null @@ -1,177 +0,0 @@ -# 代码重构:视频会议 API 规范化 - -## 重构日期 -2025-12-26 - -## 重构原因 -原代码将类型定义和 API 调用混在一个独立的 `meeting.ts` 文件中,不符合项目规范。需要按照以下规范重构: - -1. **类型定义规范**:所有 DTO/VO 类型应放在 `types/workcase/` 目录下 -2. **API 调用规范**:使用 `shared/api` 的 `api` 对象发送请求 -3. **API 组织规范**:按业务模块组织成对象形式(如 `workcaseAPI`、`workcaseChatAPI`) -4. **代码复用规范**:避免重复定义,视频会议属于聊天室模块 - -## 重构内容 - -### 1. 类型定义迁移 - -**原位置**:`api/workcase/meeting.ts`(已删除) - -**新位置**:`types/workcase/chatRoom.ts` - -类型定义已经存在于 `chatRoom.ts` 中,无需创建新文件: -- `TbVideoMeetingDTO` (line 68-88) -- `VideoMeetingVO` (line 220-241) -- `CreateMeetingParam` (line 279-285) - -### 2. API 方法整合 - -**原文件**:`api/workcase/meeting.ts`(已删除) -- 独立的函数式 API 调用 -- 使用 `http.post/get` 发送请求 -- 类型定义和 API 混在一起 - -**新文件**:`api/workcase/workcaseChat.ts`(已更新) - -新增 6 个视频会议方法到 `workcaseChatAPI` 对象(line 227-276): - -```typescript -// ====================== 视频会议管理(Jitsi Meet) ====================== - -async createVideoMeeting(meeting: TbVideoMeetingDTO): Promise> -async getVideoMeetingInfo(meetingId: string): Promise> -async getActiveMeeting(roomId: string): Promise> -async joinVideoMeeting(meetingId: string): Promise> -async startVideoMeeting(meetingId: string): Promise> -async endVideoMeeting(meetingId: string): Promise> -``` - -### 3. 导入语句更新 - -**文件**:`api/workcase/workcaseChat.ts` (line 3-15) - -新增导入: -```typescript -import type { - // ... 现有导入 - TbVideoMeetingDTO, // 新增 - VideoMeetingVO // 新增 -} from '@/types/workcase' -``` - -### 4. 导出配置更新 - -**文件**:`api/workcase/index.ts` - -```typescript -// 移除 -- export * from './meeting' - -// 保留 -export * from './workcase' -export * from './workcaseChat' -``` - -### 5. Vue 组件引用更新 - -**文件**:`components/chatRoom/chatRoom/ChatRoom.vue` - -**修改前**: -```typescript -import { createVideoMeeting, getActiveMeeting, endVideoMeeting } from '@/api/workcase/meeting' - -// 使用 -await createVideoMeeting({ ... }) -await getActiveMeeting(props.roomId) -await endVideoMeeting(currentMeetingId.value) -``` - -**修改后**: -```typescript -import { workcaseChatAPI } from '@/api/workcase' - -// 使用 -await workcaseChatAPI.createVideoMeeting({ ... }) -await workcaseChatAPI.getActiveMeeting(props.roomId) -await workcaseChatAPI.endVideoMeeting(currentMeetingId.value) -``` - -## 重构优势 - -### 1. 符合项目规范 -- ✅ 类型定义集中在 `types/` 目录 -- ✅ API 调用使用 `shared/api` -- ✅ API 按业务模块组织 - -### 2. 避免代码重复 -- ✅ 复用已有的类型定义 -- ✅ 统一的 API 调用风格 - -### 3. 更好的可维护性 -- ✅ 代码组织清晰,职责分明 -- ✅ 类型定义和 API 调用分离 -- ✅ 按业务模块聚合,易于查找 - -### 4. 统一的开发体验 -- ✅ 与其他 API 调用方式一致 -- ✅ 自动类型推断 -- ✅ 统一的错误处理 - -## 受影响的文件 - -### 删除的文件 -- `packages/workcase/src/api/workcase/meeting.ts` - -### 修改的文件 -1. `packages/workcase/src/api/workcase/workcaseChat.ts` - 新增 6 个视频会议方法 -2. `packages/workcase/src/api/workcase/index.ts` - 移除 meeting 导出 -3. `packages/workcase/src/components/chatRoom/chatRoom/ChatRoom.vue` - 更新 API 调用 - -### 保持不变的文件 -- `packages/workcase/src/types/workcase/chatRoom.ts` - 类型定义已存在 -- `packages/workcase_wechat/api/workcase/workcaseChat.ts` - UniApp 端已符合规范 - -## 测试建议 - -1. **Vue Web 端测试** - - 测试创建视频会议功能 - - 测试加入已有会议功能 - - 测试结束会议功能 - - 测试自动检测活跃会议 - -2. **UniApp 端测试** - - 测试 MeetingView 页面导航 - - 测试视频会议页面显示 - - 测试结束会议返回聊天室 - -3. **类型检查** - ```bash - # 运行 TypeScript 类型检查 - npm run type-check - ``` - -## 后续优化建议 - -1. **错误处理增强** - - 添加统一的错误提示 - - 添加会议状态校验 - -2. **用户体验优化** - - 添加会议加载状态提示 - - 添加会议连接失败重试 - -3. **性能优化** - - 会议状态使用 WebSocket 实时同步 - - 离开页面自动结束会议 - -## 参考文档 - -- 项目 API 规范:参考 `workcase.ts` 和 `workcaseChat.ts` -- 类型定义规范:参考 `types/workcase/` 目录 -- Vue 组件规范:参考现有聊天室组件 - ---- - -**重构人员**:Claude Code -**审核状态**:待审核 -**版本**:v1.0 diff --git a/docs/前端完整指南.md b/docs/前端完整指南.md deleted file mode 100644 index 6789211e..00000000 --- a/docs/前端完整指南.md +++ /dev/null @@ -1,563 +0,0 @@ -# 泰豪电源 AI 数智化平台 - 前端完整指南 - -## 📖 目录 - -1. [技术架构](#1-技术架构) -2. [共享组件方案](#2-共享组件方案) -3. [快速开始](#3-快速开始) -4. [开发指南](#4-开发指南) -5. [构建部署](#5-构建部署) -6. [常见问题](#6-常见问题) - ---- - -## 1. 技术架构 - -### 1.1 技术栈 - -**前端框架** -- Vue 3.5+ (` -``` - -**Vue 组件使用** - -```vue - - - -``` - -### 2.3 优势 - -| 特性 | 传统方式 | Import Maps 方案 | -|------|---------|-----------------| -| 代码共享 | ❌ 每个应用打包一份 | ✅ 所有应用共用一份 | -| 构建体积 | ❌ 重复打包 | ✅ 减少 30-50% | -| 依赖管理 | ❌ 每个应用配置 | ✅ 共享服务统一管理 | -| 版本升级 | ❌ 所有应用改 | ✅ 只改共享服务 | -| 浏览器缓存 | ⚠️ 独立缓存 | ✅ 统一缓存 | - ---- - -## 3. 快速开始 - -### 3.1 Docker 环境(推荐) - -```bash -# 1. 启动所有服务 -make up - -# 2. 查看状态 -make ps - -# 3. 访问应用 -open http://localhost -``` - -**访问地址** -- 主应用: http://localhost/ -- 招投标: http://localhost/bidding -- 智能客服: http://localhost/customer-service -- 共享组件: http://localhost/shared/components.js -- API网关: http://localhost/api -- Nacos: http://localhost/nacos - -### 3.2 本地开发 - -```bash -# 1. 安装依赖 -pnpm install - -# 2. 启动所有应用 -pnpm dev - -# 或启动单个应用 -pnpm --filter portal dev -pnpm --filter app-bidding dev -``` - ---- - -## 4. 开发指南 - -### 4.1 创建页面 - -```vue - - - - -``` - -### 4.2 API 调用 - -```typescript -// 使用封装的 API -import { authApi, systemApi } from '@shared/api' - -// GET 请求 -const users = await authApi.getUserList({ page: 1, size: 10 }) - -// POST 请求 -await authApi.createUser({ username: 'test', email: 'test@example.com' }) - -// 直接使用 http -import { http } from '@shared/utils' -const data = await http.get('/custom/endpoint') -``` - -### 4.3 状态管理 - -```typescript -// store/user.ts -import { defineStore } from 'pinia' -import { ref, computed } from 'vue' -import { authApi } from '@shared/api' - -export const useUserStore = defineStore('user', () => { - // State - const userInfo = ref(null) - const permissions = ref([]) - - // Getters - const isLoggedIn = computed(() => !!userInfo.value) - - // Actions - const login = async (loginData) => { - const res = await authApi.login(loginData) - userInfo.value = res.userInfo - permissions.value = res.permissions - } - - return { userInfo, permissions, isLoggedIn, login } -}) -``` - -### 4.4 路由配置 - -```typescript -// router/index.ts -import { createRouter, createWebHistory } from 'vue-router' - -const routes = [ - { - path: '/', - component: () => import('@/layouts/MainLayout.vue'), - children: [ - { - path: 'home', - component: () => import('@/views/home/index.vue'), - meta: { title: '首页' } - } - ] - } -] - -const router = createRouter({ - history: createWebHistory(), - routes -}) - -export default router -``` - -### 4.5 常用命令 - -```bash -# 查看日志 -make logs-portal # 主应用日志 -make logs-gateway # 网关日志 -make logs-shared # 共享包日志 - -# 重启服务 -make restart-portal # 重启主应用 -make restart # 重启所有服务 - -# 进入容器 -make shell-portal # 进入容器调试 - -# 数据库 -make db # 连接数据库 -make db-init # 初始化数据 -``` - ---- - -## 5. 构建部署 - -### 5.1 本地构建 - -```bash -# 构建所有应用 -pnpm build - -# 构建单个应用 -pnpm --filter portal build -pnpm --filter shared build - -# 预览 -pnpm preview -``` - -### 5.2 部署到生产 - -**方式1: Docker 部署** - -```bash -# 构建生产镜像 -docker build -t urban-lifeline-web . - -# 运行 -docker run -p 80:80 urban-lifeline-web -``` - -**方式2: CDN 部署** - -```bash -# 部署共享包到 CDN -cd packages/shared -pnpm build -ossutil cp -r dist/esm/ oss://cdn/shared/v1.0.0/ - -# 部署业务应用 -cd packages/portal -pnpm build -ossutil cp -r dist/ oss://cdn/portal/ -``` - -**方式3: Nginx 静态部署** - -```nginx -server { - listen 80; - server_name taihao.com; - - # 主应用 - location / { - root /var/www/portal/dist; - try_files $uri $uri/ /index.html; - } - - # 共享包 - location /shared/ { - root /var/www/shared/dist; - add_header Access-Control-Allow-Origin "*"; - expires 1y; - } - - # API 代理 - location /api/ { - proxy_pass http://gateway:8080/; - } -} -``` - -### 5.3 环境变量 - -```bash -# .env.development -VITE_API_BASE_URL=http://localhost/api -VITE_SHARED_URL=http://localhost/shared - -# .env.production -VITE_API_BASE_URL=https://api.taihao.com/api -VITE_SHARED_URL=https://cdn.taihao.com/shared/v1.0.0 -``` - -### 5.4 CI/CD - -```yaml -# .github/workflows/deploy.yml -name: Deploy - -on: - push: - branches: [main] - -jobs: - build-and-deploy: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v4 - with: - version: 9 - - - name: Build - run: pnpm install && pnpm build - - - name: Deploy - run: ./scripts/deploy-production.sh -``` - ---- - -## 6. 常见问题 - -### 6.1 为什么使用 Import Maps? - -**优势**: -- ✅ 浏览器原生支持,无需额外库 -- ✅ 真正的运行时共享 -- ✅ 开发体验好(支持 HMR) -- ✅ 减小构建体积 - -**对比 Module Federation**: -- Import Maps 更简单,配置少 -- Module Federation 功能更强大,但复杂 -- 两者可以结合使用 - -### 6.2 如何处理 TypeScript 类型? - -```typescript -// packages/portal/src/types/shared.d.ts -declare module '@shared/components' { - export * from '../../../shared/src/components' -} - -declare module '@shared/utils' { - export * from '../../../shared/src/utils' -} -``` - -### 6.3 如何更新共享组件? - -```bash -# 1. 修改共享组件代码 -vim packages/shared/src/components/UlTable/index.vue - -# 2. 重启共享服务(HMR 自动生效) -make restart-shared - -# 3. 浏览器刷新,所有应用自动获得最新版本 -``` - -### 6.4 生产环境如何缓存? - -```nginx -# Nginx 配置 -location /shared/ { - # 基于版本号的长期缓存 - expires 1y; - add_header Cache-Control "public, immutable"; -} - -# HTML 不缓存 -location ~* \.html$ { - add_header Cache-Control "no-cache"; -} -``` - -### 6.5 如何调试共享组件? - -```bash -# 方式1: 查看网络请求 -浏览器 F12 → Network → 筛选 JS → 查看 /shared/components.js - -# 方式2: 查看日志 -make logs-shared - -# 方式3: 进入容器 -make shell-shared -``` - -### 6.6 为什么不用 Webpack? - -Vite 优势: -- ⚡ 开发启动快(秒级) -- 🔥 HMR 更快 -- 📦 生产构建基于 Rollup(体积更小) -- 🎯 原生 ES Module 支持 - -### 6.7 如何处理样式? - -```vue - - - - - -``` - -共享包会自动处理 CSS 提取和分割。 - -### 6.8 如何添加新的业务应用? - -```bash -# 1. 复制现有应用作为模板 -cp -r packages/portal packages/app-newapp - -# 2. 修改 package.json -{ - "name": "@apps/newapp", - "scripts": { - "dev": "vite --port 3003" - } -} - -# 3. 添加到 pnpm-workspace.yaml(已自动包含) - -# 4. 启动 -pnpm --filter app-newapp dev -``` - ---- - -## 附录 - -### A. 常用脚本 - -```bash -# Makefile 命令 -make up # 启动 -make down # 停止 -make logs # 日志 -make ps # 状态 -make restart # 重启 -make clean # 清理 - -# pnpm 命令 -pnpm dev # 开发 -pnpm build # 构建 -pnpm preview # 预览 -pnpm lint # 检查 -pnpm format # 格式化 -``` - -### B. 目录说明 - -``` -urbanLifeline/ -├── urbanLifelineServ/ # 后端(Java Spring Boot) -├── urbanLifelineWeb/ # 前端(Vue 3 Monorepo) -├── docker-compose.dev.yml # Docker 开发环境 -├── Makefile # 快捷命令 -└── docs/ # 文档 - └── 前端完整指南.md # 📖 本文档 -``` - -### C. 技术支持 - -- 项目文档:`/docs` -- 问题反馈:GitHub Issues -- 开发规范:ESLint + Prettier -- 提交规范:Conventional Commits - ---- - -**Happy Coding! 🚀** - -*最后更新:2025-12-02* diff --git a/docs/功能实现-会议通知消息.md b/docs/功能实现-会议通知消息.md deleted file mode 100644 index 9d73f1d8..00000000 --- a/docs/功能实现-会议通知消息.md +++ /dev/null @@ -1,310 +0,0 @@ -# 功能实现:视频会议预约模式(Reservation Model) - -## 实现日期 -2025-12-26 - -## 功能概述 -实现视频会议"预约+按需创建"架构:用户创建会议预约时不立即创建Jitsi会议室,仅在首个用户在允许入会时间窗口内加入时,通过Redis双检锁机制创建Jitsi会议室。 - -## 架构模型 - -### 预约模式 (Reservation Model) -``` -用户创建会议 → 保存预约信息(scheduled)→ 发送会议通知消息(meetingId) - ↓ -首个用户加入 → 时间窗口校验 → Redis分布式锁 → 创建Jitsi会议室 → 更新状态(ongoing) - ↓ -后续用户加入 → 直接获取已创建的会议室URL -``` - -### 时间窗口规则 -- **提前入会时间**: `start_time - advance` 分钟 -- **允许入会窗口**: `[提前入会时间, end_time]` -- **默认advance**: 5分钟 - -## 实现文件 - -### 后端修改 - -**VideoMeetingServiceImpl.java** -- 位置:`urbanLifelineServ/workcase/src/main/java/org/xyzh/workcase/service/` -- 修改内容: - 1. 新增导入:`TbChatRoomMessageDTO`、`ChatRoomService`、`JSONObject` - 2. 注入依赖:`ChatRoomService` - 3. 修改 `createMeeting()` 方法:插入数据库成功后调用 `sendMeetingNotification()` - 4. 新增私有方法:`sendMeetingNotification()` - -## 详细实现 - -### 1. 依赖注入 - -```java -@Autowired -private ChatRoomService chatRoomService; -``` - -### 2. 调用时机 - -在 `createMeeting()` 方法中,会议记录插入数据库成功后: - -```java -// 8. 插入数据库 -int rows = videoMeetingMapper.insertVideoMeeting(meetingDTO); -if (rows > 0) { - logger.info("视频会议创建成功: meetingId={}, jitsiRoomName={}", - meetingId, jitsiRoomName); - - // 9. 发送会议通知消息到聊天室 - sendMeetingNotification(meetingDTO, userName); - - // 10. 返回VO - VideoMeetingVO meetingVO = new VideoMeetingVO(); - BeanUtils.copyProperties(meetingDTO, meetingVO); - return ResultDomain.success("创建会议成功", meetingVO); -} -``` - -### 3. 消息发送实现 - -**sendMeetingNotification() 方法 (VideoMeetingServiceImpl.java:396-442)** - -```java -/** - * 发送会议通知消息到聊天室 - * @param meetingDTO 会议信息 - * @param creatorName 创建者名称 - */ -private void sendMeetingNotification(TbVideoMeetingDTO meetingDTO, String creatorName) { - try { - logger.info("发送会议通知消息: roomId={}, meetingId={}", - meetingDTO.getRoomId(), meetingDTO.getMeetingId()); - - // 构建消息内容 - TbChatRoomMessageDTO message = new TbChatRoomMessageDTO(); - message.setMessageId(IdUtil.generateUUID()); - message.setRoomId(meetingDTO.getRoomId()); - message.setSenderId(meetingDTO.getCreator()); - message.setSenderType(meetingDTO.getCreatorType()); - message.setSenderName(creatorName); - message.setMessageType("meet"); // 会议类型消息 - message.setContent(meetingDTO.getIframeUrl()); // 会议URL作为内容 - message.setStatus("sent"); - message.setReadCount(0); - message.setSendTime(new Date()); - - // 构建扩展信息(会议详情) - JSONObject contentExtra = new JSONObject(); - contentExtra.put("meetingId", meetingDTO.getMeetingId()); - contentExtra.put("meetingName", meetingDTO.getMeetingName()); - contentExtra.put("jitsiRoomName", meetingDTO.getJitsiRoomName()); - contentExtra.put("iframeUrl", meetingDTO.getIframeUrl()); - contentExtra.put("maxParticipants", meetingDTO.getMaxParticipants()); - contentExtra.put("creatorName", creatorName); - contentExtra.put("workcaseId", meetingDTO.getWorkcaseId()); - message.setContentExtra(contentExtra); - - // 发送消息 - ResultDomain sendResult = chatRoomService.sendMessage(message); - if (sendResult.getSuccess()) { - logger.info("会议通知消息发送成功: messageId={}", message.getMessageId()); - } else { - logger.warn("会议通知消息发送失败: {}", sendResult.getMessage()); - } - } catch (Exception e) { - // 消息发送失败不影响会议创建 - logger.error("发送会议通知消息异常: roomId={}, error={}", - meetingDTO.getRoomId(), e.getMessage(), e); - } -} -``` - -## 消息数据结构 - -### 消息字段 - -| 字段 | 类型 | 说明 | -|-----|------|------| -| messageId | String | 消息ID(UUID) | -| roomId | String | 聊天室ID | -| senderId | String | 发送者ID(会议创建者) | -| senderType | String | 发送者类型(guest/agent) | -| senderName | String | 发送者名称 | -| **messageType** | **String** | **"meet"(会议消息类型)** | -| **content** | **String** | **会议iframe URL** | -| contentExtra | JSONObject | 会议详细信息(见下表) | -| status | String | "sent" | -| readCount | Integer | 0 | -| sendTime | Date | 发送时间 | - -### contentExtra 详细信息 - -```json -{ - "meetingId": "会议ID", - "meetingName": "会议名称", - "jitsiRoomName": "Jitsi房间名", - "iframeUrl": "会议URL", - "maxParticipants": 10, - "creatorName": "创建者名称", - "workcaseId": "工单ID" -} -``` - -## 前端渲染建议 - -### Vue Web 端 - -在 `ChatRoom.vue` 中添加会议消息卡片渲染: - -```vue - - - -``` - -### UniApp 小程序端 - -在 `chatRoom.uvue` 中添加会议消息卡片: - -```vue - - - -``` - -## 设计考虑 - -### 1. 异步发送 -消息发送在独立的 try-catch 块中,失败不影响会议创建流程 - -### 2. 完整信息 -contentExtra 包含会议所有关键信息,前端可灵活使用 - -### 3. 类型明确 -messageType 使用 "meet" 标识会议消息,方便前端过滤和渲染 - -### 4. URL 即内容 -content 字段直接存储会议URL,方便快速访问 - -### 5. 日志追踪 -完整的日志记录,便于问题排查 - -## 测试要点 - -### 1. 会议创建测试 -```bash -POST /urban-lifeline/workcase/chat/meeting/create -{ - "roomId": "test-room-123", - "workcaseId": "WC001", - "meetingName": "技术支持会议", - "maxParticipants": 10 -} -``` - -**预期结果**: -- ✅ 返回会议创建成功 -- ✅ 数据库 tb_video_meeting 表插入会议记录 -- ✅ 数据库 tb_chat_room_message 表插入类型为 "meet" 的消息 -- ✅ 消息的 content 字段包含会议URL -- ✅ 消息的 contentExtra 包含会议详细信息 - -### 2. 前端卡片渲染测试 -- ✅ 聊天消息列表中显示会议卡片 -- ✅ 卡片展示会议名称、发起人、参与人数等信息 -- ✅ 点击"加入会议"按钮能正确跳转 - -### 3. 多人加入测试 -- ✅ 创建者加入会议(主持人权限) -- ✅ 其他成员通过卡片加入会议(普通权限) -- ✅ 非聊天室成员无法加入 - -### 4. 异常情况测试 -- ✅ 消息发送失败不影响会议创建 -- ✅ 会议创建失败不会发送消息 - -## 注意事项 - -1. **消息类型**:messageType 为 "meet",而非 "meeting"(根据用户需求) - -2. **权限控制**: - - 只有聊天室成员才能创建会议 - - 只有聊天室成员才能加入会议 - -3. **事务处理**: - - 会议创建在事务中(@Transactional) - - 消息发送在独立的 try-catch,失败不回滚会议创建 - -4. **前端适配**: - - Web端和小程序端需分别实现会议卡片渲染 - - 建议使用统一的样式和交互 - -5. **扩展性**: - - contentExtra 可根据需要添加更多字段 - - 建议前端做好字段缺失的容错处理 - -## 相关文档 - -- [Jitsi Meet 视频会议集成总结](./项目总结-Jitsi-Meet视频会议功能.md) -- [Docker 部署指南](./Jitsi-Meet-Docker部署指南.md) -- [代码重构 - 视频会议API规范化](./代码重构-视频会议API规范化.md) - ---- - -**实现人员**:Claude Code -**审核状态**:待审核 -**版本**:v1.0 diff --git a/docs/数据库完整指南.md b/docs/数据库完整指南.md deleted file mode 100644 index ad27cd0f..00000000 --- a/docs/数据库完整指南.md +++ /dev/null @@ -1,774 +0,0 @@ -# 泰豪电源 AI 数智化平台 - 数据库完整指南 - -> **更新日期**: 2025-12-02 -> **数据库**: PostgreSQL 16 -> **总表数**: 50张核心业务表 - ---- - -## 📖 目录 - -1. [系统概述](#1-系统概述) -2. [Schema架构](#2-schema架构) -3. [核心模块设计](#3-核心模块设计) -4. [表结构速查](#4-表结构速查) -5. [优化方案](#5-优化方案) -6. [部署与维护](#6-部署与维护) -7. [常用查询示例](#7-常用查询示例) - ---- - -## 1. 系统概述 - -### 1.1 设计理念 - -基于`功能结构.xml`的系统架构,遵循 **"一个底座、多种智能体"** 核心理念,支持四大业务模块: - -1. **资料管理智能化** -2. **招投标自动化** -3. **售后客服智能化** -4. **企业内部知识协同** - -### 1.2 技术选型 - -- **数据库**: PostgreSQL 16 -- **连接池**: HikariCP -- **ORM**: MyBatis-Plus 3.5 -- **迁移工具**: Flyway (可选) - -### 1.3 设计原则 - -- ✅ **模块化**: 按业务模块划分 Schema -- ✅ **规范化**: 统一命名规范和字段设计 -- ✅ **可扩展**: 预留扩展字段和软删除 -- ✅ **高性能**: 合理索引和分区设计 -- ✅ **安全性**: 行级安全和审计日志 - ---- - -## 2. Schema架构 - -### 2.1 Schema划分 - -采用多Schema架构,按业务模块逻辑隔离: - -| Schema | 说明 | 核心表数量 | 用途 | -|--------|------|-----------|------| -| `sys` | 系统基础模块 | 11 | 用户、角色、权限、部门 | -| `file` | 文件管理模块 | 1 | 文件存储与管理 | -| `message` | 消息通知模块 | 4 | 站内信、系统通知 | -| `log` | 日志审计模块 | 1 | 操作日志、审计 | -| `config` | 系统配置模块 | 1 | 系统参数配置 | -| `knowledge` | 知识库管理模块 | 4 | 文档、分段、问答对 | -| `bidding` | 招投标智能体 | 8 | 招投标业务流程 | -| `customer_service` | 智能客服系统 | 9 | 客服、工单、对话 | -| `agent` | 智能体管理 | 11 | 智能体、API、监控 | - -**总计: 50张核心业务表** - -### 2.2 命名规范 - -```sql --- Schema 命名: 小写字母 -CREATE SCHEMA IF NOT EXISTS sys; - --- 表命名: tb_{schema}_{表名} -CREATE TABLE sys.tb_sys_user (...); -CREATE TABLE knowledge.tb_knowledge_document (...); - --- 字段命名: 小写字母 + 下划线 -user_id, create_time, full_name - --- 索引命名: idx_{表名}_{字段名} -CREATE INDEX idx_user_email ON sys.tb_sys_user(email); - --- 外键命名: fk_{表名}_{关联表名} -CONSTRAINT fk_user_dept FOREIGN KEY (dept_id) ... -``` - ---- - -## 3. 核心模块设计 - -### 3.1 系统基础模块 (sys) - -#### 权限体系设计 - -采用 **RBAC (基于角色的访问控制) + ACL (访问控制列表)** 混合模型 - -**核心表**: -- `tb_sys_user` - 用户表 -- `tb_sys_role` - 角色表 -- `tb_sys_permission` - 权限表 -- `tb_sys_dept` - 部门表 -- `tb_sys_acl` - 对象级权限表 -- `tb_sys_user_role` - 用户角色关联表 - -**权限模型**: -``` -用户 (User) - ├─ 部门 (Dept) - 数据隔离 - ├─ 角色 (Role) - │ ├─ 权限 (Permission) - 功能权限 - │ └─ 视图 (View) - 菜单权限 - └─ ACL - 对象级权限(细粒度) -``` - -**设计亮点**: -1. 多租户支持: `dept_path` 字段实现部门级数据隔离 -2. 角色作用域: `scope` 字段区分全局/部门角色 -3. 对象权限: ACL表支持任意对象的细粒度权限 - -#### 核心表结构 - -```sql --- 用户表 -CREATE TABLE sys.tb_sys_user ( - user_id VARCHAR(50) PRIMARY KEY, - username VARCHAR(50) UNIQUE NOT NULL, - password_hash VARCHAR(255) NOT NULL, - email VARCHAR(100) UNIQUE, - phone VARCHAR(20), - wechat_id VARCHAR(100), - status VARCHAR(20) DEFAULT 'active', - create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - deleted BOOLEAN DEFAULT false -); - --- 部门表(树形结构) -CREATE TABLE sys.tb_sys_dept ( - dept_id VARCHAR(50) PRIMARY KEY, - dept_name VARCHAR(100) NOT NULL, - parent_id VARCHAR(50), - dept_path TEXT, -- 路径:/1/2/3/ - sort_order INTEGER DEFAULT 0, - create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - deleted BOOLEAN DEFAULT false, - CONSTRAINT fk_dept_parent FOREIGN KEY (parent_id) - REFERENCES sys.tb_sys_dept(dept_id) -); - --- 角色表 -CREATE TABLE sys.tb_sys_role ( - role_id VARCHAR(50) PRIMARY KEY, - role_name VARCHAR(100) NOT NULL, - role_code VARCHAR(50) UNIQUE NOT NULL, - scope VARCHAR(20) DEFAULT 'global', -- global/dept - owner_dept_id VARCHAR(50), - description TEXT, - create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - deleted BOOLEAN DEFAULT false -); - --- ACL权限表 -CREATE TABLE sys.tb_sys_acl ( - acl_id VARCHAR(50) PRIMARY KEY, - object_type VARCHAR(50) NOT NULL, -- user/dept/document等 - object_id VARCHAR(50) NOT NULL, - principal_type VARCHAR(20) NOT NULL, -- user/role/dept - principal_id VARCHAR(50) NOT NULL, - permission VARCHAR(50) NOT NULL, -- view/edit/delete/admin - create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP -); - --- 索引 -CREATE INDEX idx_user_status ON sys.tb_sys_user(status) WHERE deleted = false; -CREATE INDEX idx_dept_path ON sys.tb_sys_dept USING GIN(dept_path gin_trgm_ops); -CREATE INDEX idx_acl_object ON sys.tb_sys_acl(object_type, object_id); -``` - -### 3.2 知识库管理模块 (knowledge) - -#### 模块概述 - -支持文档管理、向量检索、RAG问答,版本控制。 - -**核心表**: -- `tb_knowledge_document` - 文档主表 -- `tb_knowledge_chunk` - 文档分段表(向量检索) -- `tb_knowledge_qa_pair` - 问答对表 -- `tb_knowledge_file_relation` - 文档文件关联表 - -#### 版本管理设计 - -采用 **简化版本管理** 方案: - -```sql --- 文档表(新增版本字段) -CREATE TABLE knowledge.tb_knowledge_document ( - doc_id VARCHAR(50) PRIMARY KEY, - root_doc_id VARCHAR(50), -- ✨ 根文档ID(版本组标识) - version INTEGER DEFAULT 1, -- ✨ 版本号 - is_current BOOLEAN DEFAULT true, -- ✨ 是否当前版本 - title VARCHAR(500) NOT NULL, - content TEXT, - knowledge_base_id VARCHAR(50), - create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - deleted BOOLEAN DEFAULT false -); - --- 分段表(向量检索) -CREATE TABLE knowledge.tb_knowledge_chunk ( - chunk_id VARCHAR(50) PRIMARY KEY, - doc_id VARCHAR(50) NOT NULL, - chunk_index INTEGER NOT NULL, - content TEXT NOT NULL, - embedding VECTOR(1536), -- ✨ 向量字段(pgvector扩展) - version INTEGER DEFAULT 1, -- ✨ 乐观锁版本 - tokens INTEGER, - create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - CONSTRAINT fk_chunk_doc FOREIGN KEY (doc_id) - REFERENCES knowledge.tb_knowledge_document(doc_id) -); - --- 索引 -CREATE INDEX idx_doc_root_current - ON knowledge.tb_knowledge_document(root_doc_id, is_current) - WHERE deleted = false; - -CREATE INDEX idx_chunk_embedding - ON knowledge.tb_knowledge_chunk - USING ivfflat (embedding vector_cosine_ops) -- ✨ 向量索引 - WITH (lists = 100); -``` - -**版本管理示例**: - -```sql --- 创建新版本 -BEGIN; - --- 1. 标记旧版本为非当前 -UPDATE knowledge.tb_knowledge_document -SET is_current = false -WHERE root_doc_id = 'root_xxx'; - --- 2. 插入新版本 -INSERT INTO knowledge.tb_knowledge_document ( - doc_id, root_doc_id, version, is_current, title, content -) VALUES ( - 'new_doc_id', 'root_xxx', 2, true, '新版本标题', '内容' -); - -COMMIT; - --- 查询当前版本 -SELECT * FROM knowledge.tb_knowledge_document -WHERE root_doc_id = 'root_xxx' AND is_current = true; - --- 查询所有版本 -SELECT version, title, create_time -FROM knowledge.tb_knowledge_document -WHERE root_doc_id = 'root_xxx' -ORDER BY version DESC; -``` - -### 3.3 招投标智能体模块 (bidding) - -#### 核心表 - -```sql --- 招标项目表 -CREATE TABLE bidding.tb_bidding_project ( - project_id VARCHAR(50) PRIMARY KEY, - project_name VARCHAR(500) NOT NULL, - project_code VARCHAR(100), - bidding_org VARCHAR(200), -- 招标单位 - project_type VARCHAR(50), -- 项目类型 - status VARCHAR(50) DEFAULT 'draft', - budget DECIMAL(18,2), - bid_deadline TIMESTAMP, - create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - deleted BOOLEAN DEFAULT false -); - --- 招标文件表 -CREATE TABLE bidding.tb_bidding_document ( - doc_id VARCHAR(50) PRIMARY KEY, - project_id VARCHAR(50) NOT NULL, - doc_type VARCHAR(50), -- tender/technical/commercial - file_id VARCHAR(50), - parsed_content JSONB, -- ✨ 智能解析结果 - create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - CONSTRAINT fk_bdoc_project FOREIGN KEY (project_id) - REFERENCES bidding.tb_bidding_project(project_id) -); - --- 标书模板表 -CREATE TABLE bidding.tb_bidding_template ( - template_id VARCHAR(50) PRIMARY KEY, - template_name VARCHAR(200) NOT NULL, - template_type VARCHAR(50), - content JSONB, -- 模板结构化内容 - variables JSONB, -- 可替换变量 - create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP -); -``` - -### 3.4 智能客服系统模块 (customer_service) - -#### 核心表 - -```sql --- 对话会话表 -CREATE TABLE customer_service.tb_cs_conversation ( - conv_id VARCHAR(50) PRIMARY KEY, - customer_user_id VARCHAR(50), - customer_name VARCHAR(100), - channel VARCHAR(50), -- wechat/web/phone - source VARCHAR(50), -- miniprogram/h5/app - status VARCHAR(50) DEFAULT 'active', - start_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - end_time TIMESTAMP, - satisfaction_score INTEGER -- 满意度评分 -); - --- 对话消息表 -CREATE TABLE customer_service.tb_cs_message ( - message_id VARCHAR(50) PRIMARY KEY, - conv_id VARCHAR(50) NOT NULL, - sender_type VARCHAR(20), -- customer/agent/bot - sender_id VARCHAR(50), - content TEXT, - message_type VARCHAR(50), -- text/image/file - ai_response JSONB, -- AI响应详情 - create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - CONSTRAINT fk_msg_conv FOREIGN KEY (conv_id) - REFERENCES customer_service.tb_cs_conversation(conv_id) -); - --- 工单表 -CREATE TABLE customer_service.tb_cs_work_order ( - order_id VARCHAR(50) PRIMARY KEY, - order_code VARCHAR(100) UNIQUE NOT NULL, - conv_id VARCHAR(50), - customer_user_id VARCHAR(50), - title VARCHAR(500) NOT NULL, - description TEXT, - category VARCHAR(100), - priority VARCHAR(20) DEFAULT 'medium', - status VARCHAR(50) DEFAULT 'pending', - assigned_to VARCHAR(50), - create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - resolve_time TIMESTAMP -); -``` - -### 3.5 智能体管理模块 (agent) - -#### 核心表 - -```sql --- 智能体定义表 -CREATE TABLE agent.tb_agent_definition ( - agent_id VARCHAR(50) PRIMARY KEY, - agent_name VARCHAR(100) NOT NULL, - agent_type VARCHAR(50), -- bidding/cs/knowledge等 - description TEXT, - config JSONB, -- 配置(模型、参数等) - status VARCHAR(20) DEFAULT 'active', - version VARCHAR(20), - create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP -); - --- API调用日志表 -CREATE TABLE agent.tb_agent_api_log ( - log_id VARCHAR(50) PRIMARY KEY, - agent_id VARCHAR(50), - api_endpoint VARCHAR(200), - request_params JSONB, - response_data JSONB, - status_code INTEGER, - duration_ms INTEGER, - create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP -); - --- 智能体监控表(按月分区) -CREATE TABLE agent.tb_agent_monitor ( - monitor_id VARCHAR(50) NOT NULL, - agent_id VARCHAR(50) NOT NULL, - metric_name VARCHAR(100), - metric_value NUMERIC, - timestamp TIMESTAMP NOT NULL, - PRIMARY KEY (monitor_id, timestamp) -) PARTITION BY RANGE (timestamp); - --- 创建分区 -CREATE TABLE agent.tb_agent_monitor_2025_12 - PARTITION OF agent.tb_agent_monitor - FOR VALUES FROM ('2025-12-01') TO ('2026-01-01'); -``` - ---- - -## 4. 表结构速查 - -### 4.1 系统基础模块 (sys) - -| 表名 | 主键 | 核心字段 | 说明 | -|------|------|----------|------| -| `tb_sys_user` | user_id | username, email, phone | 用户表 | -| `tb_sys_user_info` | user_id | avatar, full_name, level | 用户信息表 | -| `tb_sys_dept` | dept_id | name, parent_id, dept_path | 部门表 | -| `tb_sys_role` | role_id | name, scope, owner_dept_id | 角色表 | -| `tb_sys_permission` | permission_id | name, code, module_id | 权限表 | -| `tb_sys_acl` | acl_id | object_type, principal_type | 对象权限表 | - -### 4.2 知识库管理 (knowledge) - -| 表名 | 主键 | 核心字段 | 说明 | -|------|------|----------|------| -| `tb_knowledge_document` | doc_id | title, root_doc_id, version | 文档表 | -| `tb_knowledge_chunk` | chunk_id | doc_id, content, embedding | 分段表 | -| `tb_knowledge_qa_pair` | qa_pair_id | question, answer | 问答对表 | - -### 4.3 招投标 (bidding) - -| 表名 | 主键 | 核心字段 | 说明 | -|------|------|----------|------| -| `tb_bidding_project` | project_id | project_name, status | 招标项目表 | -| `tb_bidding_document` | doc_id | project_id, parsed_content | 招标文件表 | -| `tb_bidding_template` | template_id | template_name, content | 标书模板表 | - -### 4.4 智能客服 (customer_service) - -| 表名 | 主键 | 核心字段 | 说明 | -|------|------|----------|------| -| `tb_cs_conversation` | conv_id | customer_user_id, status | 对话会话表 | -| `tb_cs_message` | message_id | conv_id, content | 对话消息表 | -| `tb_cs_work_order` | order_id | title, status, assigned_to | 工单表 | - ---- - -## 5. 优化方案 - -### 5.1 索引优化 - -```sql --- 1. 复合索引(状态 + 时间查询) -CREATE INDEX idx_project_status_time - ON bidding.tb_bidding_project(status, create_time DESC) - WHERE deleted = false; - --- 2. 部分索引(只索引活跃数据) -CREATE INDEX idx_user_active - ON sys.tb_sys_user(user_id) - WHERE status = 'active' AND deleted = false; - --- 3. GIN索引(全文检索) -CREATE INDEX idx_doc_content_gin - ON knowledge.tb_knowledge_document - USING GIN(to_tsvector('chinese', title || ' ' || content)); - --- 4. BRIN索引(时间序列) -CREATE INDEX idx_log_time_brin - ON log.tb_operation_log - USING BRIN(create_time); -``` - -### 5.2 分区策略 - -```sql --- 按月分区(监控数据) -CREATE TABLE agent.tb_agent_monitor ( - monitor_id VARCHAR(50) NOT NULL, - timestamp TIMESTAMP NOT NULL, - ... - PRIMARY KEY (monitor_id, timestamp) -) PARTITION BY RANGE (timestamp); - --- 自动创建分区脚本 -CREATE OR REPLACE FUNCTION create_monthly_partition() -RETURNS void AS $$ -DECLARE - start_date DATE; - end_date DATE; - partition_name TEXT; -BEGIN - start_date := DATE_TRUNC('month', CURRENT_DATE + INTERVAL '1 month'); - end_date := start_date + INTERVAL '1 month'; - partition_name := 'tb_agent_monitor_' || TO_CHAR(start_date, 'YYYY_MM'); - - EXECUTE format( - 'CREATE TABLE IF NOT EXISTS agent.%I PARTITION OF agent.tb_agent_monitor - FOR VALUES FROM (%L) TO (%L)', - partition_name, start_date, end_date - ); -END; -$$ LANGUAGE plpgsql; -``` - -### 5.3 查询优化 - -```sql --- 使用CTE优化复杂查询 -WITH user_roles AS ( - SELECT ur.user_id, r.role_id, r.role_code - FROM sys.tb_sys_user_role ur - JOIN sys.tb_sys_role r ON ur.role_id = r.role_id - WHERE r.deleted = false -), -user_permissions AS ( - SELECT ur.user_id, p.permission_code - FROM user_roles ur - JOIN sys.tb_sys_role_permission rp ON ur.role_id = rp.role_id - JOIN sys.tb_sys_permission p ON rp.permission_id = p.permission_id -) -SELECT u.username, array_agg(DISTINCT up.permission_code) as permissions -FROM sys.tb_sys_user u -JOIN user_permissions up ON u.user_id = up.user_id -WHERE u.deleted = false -GROUP BY u.user_id, u.username; -``` - -### 5.4 并发控制 - -```sql --- 乐观锁(版本号) -UPDATE knowledge.tb_knowledge_chunk -SET content = '新内容', - version = version + 1 -WHERE chunk_id = 'xxx' - AND version = 1; -- 版本匹配才更新 - --- 悲观锁 -BEGIN; -SELECT * FROM bidding.tb_bidding_project -WHERE project_id = 'xxx' -FOR UPDATE; -- 锁定记录 - --- 更新... -COMMIT; -``` - ---- - -## 6. 部署与维护 - -### 6.1 初始化脚本 - -```bash -# 位置: urbanLifelineServ/.bin/database/postgres/sql/ - -# 完整初始化 -psql -U postgres -d urban_lifeline -f createTableAll.sql - -# 分模块初始化 -psql -U postgres -d urban_lifeline -f createTablePermission.sql -psql -U postgres -d urban_lifeline -f createTableKnowledge.sql -psql -U postgres -d urban_lifeline -f createTableBidding.sql - -# 优化补丁 -psql -U postgres -d urban_lifeline -f optimizations.sql -``` - -### 6.2 备份策略 - -```bash -# 全量备份 -pg_dump -U postgres -d urban_lifeline -F c -f backup_$(date +%Y%m%d).dump - -# 仅备份 Schema -pg_dump -U postgres -d urban_lifeline -s -f schema_backup.sql - -# 仅备份数据 -pg_dump -U postgres -d urban_lifeline -a -f data_backup.sql - -# 还原 -pg_restore -U postgres -d urban_lifeline backup_20251202.dump -``` - -### 6.3 监控指标 - -```sql --- 表大小 -SELECT - schemaname, - tablename, - pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) as size -FROM pg_tables -WHERE schemaname NOT IN ('pg_catalog', 'information_schema') -ORDER BY pg_total_relation_size(schemaname||'.'||tablename) DESC; - --- 索引使用情况 -SELECT - schemaname, tablename, indexname, - idx_scan as index_scans, - idx_tup_read as tuples_read -FROM pg_stat_user_indexes -WHERE idx_scan = 0 -ORDER BY schemaname, tablename; - --- 慢查询 -SELECT - query, - calls, - total_time, - mean_time, - max_time -FROM pg_stat_statements -WHERE mean_time > 1000 -- 超过1秒 -ORDER BY mean_time DESC -LIMIT 10; -``` - ---- - -## 7. 常用查询示例 - -### 7.1 用户权限查询 - -```sql --- 查询用户的所有权限 -SELECT DISTINCT p.permission_code, p.permission_name -FROM sys.tb_sys_user u -JOIN sys.tb_sys_user_role ur ON u.user_id = ur.user_id -JOIN sys.tb_sys_role_permission rp ON ur.role_id = rp.role_id -JOIN sys.tb_sys_permission p ON rp.permission_id = p.permission_id -WHERE u.username = 'admin' - AND u.deleted = false; - --- 查询部门下所有用户 -WITH RECURSIVE dept_tree AS ( - SELECT dept_id FROM sys.tb_sys_dept WHERE dept_id = 'target_dept_id' - UNION ALL - SELECT d.dept_id - FROM sys.tb_sys_dept d - JOIN dept_tree dt ON d.parent_id = dt.dept_id -) -SELECT u.* -FROM sys.tb_sys_user u -JOIN sys.tb_sys_user_dept ud ON u.user_id = ud.user_id -WHERE ud.dept_id IN (SELECT dept_id FROM dept_tree); -``` - -### 7.2 知识库查询 - -```sql --- 向量相似度检索(Top 5) -SELECT - chunk_id, - content, - 1 - (embedding <=> '[0.1, 0.2, ...]'::vector) as similarity -FROM knowledge.tb_knowledge_chunk -WHERE deleted = false -ORDER BY embedding <=> '[0.1, 0.2, ...]'::vector -LIMIT 5; - --- 查询文档的所有版本 -SELECT - version, - title, - create_time, - is_current -FROM knowledge.tb_knowledge_document -WHERE root_doc_id = 'root_xxx' -ORDER BY version DESC; -``` - -### 7.3 招投标查询 - -```sql --- 统计项目状态分布 -SELECT - status, - COUNT(*) as count, - SUM(budget) as total_budget -FROM bidding.tb_bidding_project -WHERE deleted = false -GROUP BY status; - --- 查询即将截止的项目 -SELECT - project_name, - bid_deadline, - EXTRACT(DAY FROM (bid_deadline - NOW())) as days_left -FROM bidding.tb_bidding_project -WHERE status = 'active' - AND bid_deadline > NOW() - AND deleted = false -ORDER BY bid_deadline ASC; -``` - -### 7.4 智能客服查询 - -```sql --- 查询工单处理效率 -SELECT - assigned_to, - COUNT(*) as total_orders, - AVG(EXTRACT(EPOCH FROM (resolve_time - create_time))/3600) as avg_hours, - COUNT(CASE WHEN status = 'resolved' THEN 1 END) as resolved_count -FROM customer_service.tb_cs_work_order -WHERE create_time > NOW() - INTERVAL '30 days' -GROUP BY assigned_to; - --- 查询满意度统计 -SELECT - DATE(start_time) as date, - AVG(satisfaction_score) as avg_satisfaction, - COUNT(*) as total_conversations -FROM customer_service.tb_cs_conversation -WHERE satisfaction_score IS NOT NULL - AND start_time > NOW() - INTERVAL '7 days' -GROUP BY DATE(start_time) -ORDER BY date DESC; -``` - ---- - -## 附录 - -### A. SQL文件清单 - -``` -urbanLifelineServ/.bin/database/postgres/sql/ -├── createTableAll.sql # 完整初始化 -├── createTablePermission.sql # 权限模块 -├── createTableUser.sql # 用户模块 -├── createTableFile.sql # 文件模块 -├── createTableMessage.sql # 消息模块 -├── createTableLog.sql # 日志模块 -├── createTableConfig.sql # 配置模块 -├── createTableKnowledge.sql # 知识库模块 ✨ -├── createTableBidding.sql # 招投标模块 ✨ -├── createTableCustomerService.sql # 智能客服模块 ✨ -├── createTableAgent.sql # 智能体管理模块 ✨ -├── optimizations.sql # 优化补丁 ✨ -├── initDataPermission.sql # 权限初始数据 -├── initDataUser.sql # 用户初始数据 -└── initAll.sql # 完整初始化(表+数据) -``` - -### B. 扩展插件 - -```sql --- 向量检索 -CREATE EXTENSION IF NOT EXISTS vector; - --- 全文检索(中文) -CREATE EXTENSION IF NOT EXISTS zhparser; -CREATE TEXT SEARCH CONFIGURATION chinese (PARSER = zhparser); - --- 模糊匹配 -CREATE EXTENSION IF NOT EXISTS pg_trgm; - --- UUID生成 -CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; -``` - -### C. 性能基准 - -| 指标 | 目标值 | 说明 | -|------|--------|------| -| 单表查询 | < 100ms | 主键/索引查询 | -| 复杂查询 | < 500ms | 多表JOIN | -| 向量检索 | < 200ms | Top-K检索 | -| 写入TPS | > 1000 | 批量插入 | -| 并发连接 | 200+ | HikariCP连接池 | - ---- - -**最后更新**: 2025-12-02 -**维护者**: Urban Lifeline Team diff --git a/docs/网关认证方案.md b/docs/网关认证方案.md deleted file mode 100644 index 903e2064..00000000 --- a/docs/网关认证方案.md +++ /dev/null @@ -1,396 +0,0 @@ -# Gateway 认证方案说明 - -## 问题背景 - -在微服务架构中,如果同时使用 Gateway 和 common-auth 模块,会出现**重复认证**的问题: - -``` -浏览器 → Gateway (AuthGlobalFilter 验证 JWT) - → 微服务 (JwtAuthenticationFilter 再次验证 JWT) ❌ 重复! -``` - -## 解决方案 - -提供两种认证模式,通过配置选择: - -### **模式一:Gateway 统一认证(推荐)** - -Gateway 负责认证,微服务信任 Gateway 传递的用户信息。 - -#### 架构流程 - -``` -浏览器 - ↓ (带 JWT Token) -Nginx (80端口) - ↓ -Gateway (8080端口) - ├─ AuthGlobalFilter: 验证 JWT ✓ - ├─ 提取用户信息 (userId, username) - ├─ 添加到请求头传递给下游 - └─ 路由到微服务 - ↓ -微服务 - └─ GatewayTrustFilter: 从请求头获取用户信息 ✓ -``` - -#### 配置方式 - -**1. Gateway 服务配置** (`gateway/application.yml`) -```yaml -auth: - enabled: true - token-header: Authorization - token-prefix: "Bearer " - auth-paths: - - /auth/login - - /auth/logout - whitelist: - - /actuator/** - - /v3/api-docs/** -``` - -**2. 微服务配置** (`system/application.yml`, `log/application.yml` 等) -```yaml -auth: - enabled: true - gateway-mode: true # 关键:启用 Gateway 模式 -``` - -#### 优点 -- ✅ 避免重复认证,性能更好 -- ✅ 统一认证逻辑,易维护 -- ✅ 微服务之间调用不需要传递 JWT - ---- - -### **模式二:微服务独立认证** - -每个微服务独立验证 JWT,Gateway 不做认证。 - -#### 架构流程 - -``` -浏览器 - ↓ (带 JWT Token) -Nginx - ↓ -Gateway - └─ 直接路由(不验证) - ↓ -微服务 - └─ JwtAuthenticationFilter: 验证 JWT ✓ -``` - -#### 配置方式 - -**1. Gateway 服务配置** -```yaml -auth: - enabled: false # 关键:关闭 Gateway 认证 -``` - -**2. 微服务配置** -```yaml -auth: - enabled: true - gateway-mode: false # 或不配置(默认 false) - token-header: Authorization - token-prefix: "Bearer " -``` - -#### 适用场景 -- 微服务需要直接对外暴露(不经过 Gateway) -- 对安全性要求极高,需要每层都验证 - ---- - -## 配置文件对比 - -### Gateway 服务 (`gateway/application.yml`) - -```yaml -server: - port: 8080 - -spring: - application: - name: gateway-service - - cloud: - gateway: - routes: - - id: auth-service - uri: lb://auth-service - predicates: - - Path=/auth/** - filters: - - StripPrefix=1 - - - id: system-service - uri: lb://system-service - predicates: - - Path=/system/** - filters: - - StripPrefix=1 - -# 认证配置 -auth: - enabled: true # 是否启用认证 - gateway-mode: false # Gateway 本身不需要此配置 - token-header: Authorization - token-prefix: "Bearer " - auth-paths: - - /auth/login - - /auth/logout - - /auth/captcha - - /auth/refresh - whitelist: - - /actuator/** - - /v3/api-docs/** -``` - -### 微服务配置 (Gateway 模式) - -**auth-service/application.yml** -```yaml -server: - port: 8081 - -spring: - application: - name: auth-service - -# 认证配置 -auth: - enabled: true - gateway-mode: true # 关键:信任 Gateway - token-header: Authorization - token-prefix: "Bearer " - whitelist: - - /v3/api-docs/** - - /actuator/** -``` - -**system-service/application.yml** -```yaml -server: - port: 8082 - -spring: - application: - name: system-service - -auth: - enabled: true - gateway-mode: true # 关键:信任 Gateway -``` - ---- - -## 工作原理 - -### Gateway 认证流程 - -**AuthGlobalFilter (Gateway 层)** -```java -1. 检查请求路径是否在白名单 -2. 提取 Authorization 请求头中的 JWT Token -3. 验证 Token 是否过期 -4. 验证 Token 签名是否有效 -5. 提取用户信息 (userId, username) -6. 将用户信息添加到请求头: - - X-User-Id: {userId} - - X-Username: {username} -7. 路由到下游微服务 -``` - -### 微服务信任流程 - -**GatewayTrustFilter (微服务层)** -```java -1. 从请求头获取 Gateway 传递的用户信息: - - X-User-Id - - X-Username -2. 构造 Spring Security 认证对象 -3. 设置到 SecurityContext -4. 设置到 request attributes(供业务代码使用) -``` - ---- - -## 安全考虑 - -### 内网安全 - -采用 Gateway 模式时,需确保: - -1. **微服务不对外暴露** - - 只能通过 Gateway 访问 - - 使用 Kubernetes Network Policy 或防火墙隔离 - -2. **请求头保护** - - Gateway 在转发前清除任何客户端传递的 `X-User-Id` 等头 - - 防止伪造用户身份 - -3. **Gateway 过滤器增强**(可选) - ```java - // 在 Gateway 中清除客户端可能伪造的请求头 - ServerHttpRequest mutatedRequest = request.mutate() - .headers(headers -> { - headers.remove("X-User-Id"); - headers.remove("X-Username"); - }) - .header(AuthContants.USER_ID_ATTRIBUTE, userId) - .header(AuthContants.TOKEN_ATTRIBUTE, token) - .build(); - ``` - ---- - -## 测试验证 - -### 测试 Gateway 模式 - -**1. 登录获取 Token** -```bash -curl -X POST http://localhost/api/auth/login \ - -H "Content-Type: application/json" \ - -d '{"username":"admin","password":"123456"}' - -# 响应 -{ - "code": 200, - "data": { - "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", - "userId": "1001" - } -} -``` - -**2. 使用 Token 访问受保护接口** -```bash -curl -X GET http://localhost/api/system/user/profile \ - -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." -``` - -**3. 查看日志验证单次认证** -``` -Gateway 日志: -[Gateway] Token 验证成功: userId=1001, path=/system/user/profile - -System-Service 日志: -[GatewayTrustFilter] 从 Gateway 获取用户信息: userId=1001, username=admin -``` - ---- - -## 迁移指南 - -### 从独立认证迁移到 Gateway 统一认证 - -**步骤 1**: 更新所有微服务配置 -```yaml -auth: - gateway-mode: true # 添加这一行 -``` - -**步骤 2**: 重启服务(先重启微服务,后重启 Gateway) -```bash -# 重启微服务 -docker-compose restart auth-service system-service log-service - -# 重启 Gateway -docker-compose restart gateway -``` - -**步骤 3**: 验证功能 -- 测试登录 -- 测试受保护接口访问 -- 检查日志确认只认证一次 - ---- - -## 常见问题 - -### Q1: Gateway 模式下,微服务之间如何调用? - -**A**: 微服务间调用不需要传递 JWT Token,直接调用即可。Gateway已经验证过身份。 - -```java -// 微服务 A 调用微服务 B -@Autowired -private RestTemplate restTemplate; - -public void callServiceB() { - // 直接调用,不需要添加 Authorization 头 - String result = restTemplate.getForObject( - "http://service-b/api/xxx", - String.class - ); -} -``` - -### Q2: 如何获取当前登录用户信息? - -**A**: 使用 `@HttpLogin` 注解或从 SecurityContext 获取。 - -```java -// 方式一:使用注解(推荐) -@GetMapping("/profile") -public ResultDomain getProfile(@HttpLogin LoginDomain loginDomain) { - String userId = loginDomain.getUser().getUserId(); - // ... -} - -// 方式二:从 SecurityContext 获取 -Authentication auth = SecurityContextHolder.getContext().getAuthentication(); -String userId = (String) auth.getPrincipal(); -``` - -### Q3: Gateway 模式更安全还是独立认证更安全? - -**A**: 取决于网络拓扑: -- **内网隔离良好**: Gateway 模式更优(性能好,维护简单) -- **微服务直接对外**: 独立认证更安全(每层验证) - ---- - -## 推荐配置 - -### 生产环境推荐 - -```yaml -# Gateway -auth: - enabled: true - gateway-mode: false - -# 所有微服务 -auth: - enabled: true - gateway-mode: true -``` - -### 开发环境(快速调试) - -可以临时关闭认证: - -```yaml -auth: - enabled: false -``` - ---- - -## 总结 - -| 对比项 | Gateway 统一认证 | 微服务独立认证 | -|--------|-----------------|---------------| -| 认证次数 | 1次(仅 Gateway) | N次(每个服务) | -| 性能 | ⭐⭐⭐⭐⭐ 最优 | ⭐⭐⭐ 一般 | -| 维护性 | ⭐⭐⭐⭐⭐ 统一管理 | ⭐⭐⭐ 分散管理 | -| 安全性 | ⭐⭐⭐⭐ 需内网隔离 | ⭐⭐⭐⭐⭐ 多层防护 | -| 推荐场景 | 内网微服务架构 | 微服务对外暴露 | - -**推荐使用 Gateway 统一认证模式!** diff --git a/docs/项目总结-Jitsi-Meet视频会议功能.md b/docs/项目总结-Jitsi-Meet视频会议功能.md deleted file mode 100644 index fc32bce4..00000000 --- a/docs/项目总结-Jitsi-Meet视频会议功能.md +++ /dev/null @@ -1,475 +0,0 @@ -# 🎉 Jitsi Meet 视频会议功能 - 完整实现总结 - -## ✅ 已完成的工作 - -### 一、后端开发(Java Spring Boot) - -#### 1. Service接口层(2个接口) -- ✅ `VideoMeetingService.java` - 视频会议业务接口 -- ✅ `JitsiTokenService.java` - JWT Token服务接口 - -#### 2. Service实现层(2个实现) -- ✅ `VideoMeetingServiceImpl.java` - 核心业务逻辑(约400行) - - 会议创建(验证权限、生成JWT、构建iframe URL) - - 会议权限验证(检查聊天室成员身份) - - 用户专属URL生成(每个用户独立JWT Token) - - 会议状态管理(开始/结束) - - 活跃会议检测 - -- ✅ `JitsiTokenServiceImpl.java` - JWT Token生成服务 - - 符合Jitsi Meet标准的JWT生成 - - iframe URL构建(带配置参数) - - 房间名生成规则 - -#### 3. Controller层(6个REST API) -``` -POST /workcase/chat/meeting/create - 创建会议 -GET /workcase/chat/meeting/{meetingId} - 获取会议信息 -POST /workcase/chat/meeting/{meetingId}/join - 加入会议 -POST /workcase/chat/meeting/{meetingId}/start - 开始会议 -POST /workcase/chat/meeting/{meetingId}/end - 结束会议 -GET /workcase/chat/meeting/room/{roomId}/active - 获取活跃会议 -``` - ---- - -### 二、前端Vue开发 - -#### 1. API封装 -- ✅ `meeting.ts` - 完整的会议API封装(6个方法) - -#### 2. ChatRoom.vue组件增强 -- ✅ 添加roomId、workcaseId Props -- ✅ 实现会议创建逻辑(handleStartMeeting) -- ✅ 实现会议结束逻辑(handleEndMeeting) -- ✅ 实现活跃会议检测(checkActiveMeeting) -- ✅ 会议iframe显示(带头部控制栏) -- ✅ 按钮状态管理(loading、disabled) - -#### 3. 样式优化 -- ✅ 会议容器样式(渐变头部) -- ✅ 关闭按钮样式(半透明效果) -- ✅ 按钮禁用状态 - ---- - -### 三、前端UniApp开发 - -#### 1. MeetingView.uvue页面 -- ✅ 自定义导航栏 -- ✅ web-view全屏显示 -- ✅ 结束会议功能 -- ✅ 退出确认弹窗 - -#### 2. chatRoom.uvue修改 -- ✅ 更新startMeeting函数(调用API创建会议) -- ✅ 跳转到MeetingView页面 - -#### 3. workcaseChat.ts API -- ✅ 添加6个会议相关API方法 - ---- - -### 四、Docker部署配置 - -#### 1. docker-compose.yml -- ✅ 添加4个Jitsi服务(web、prosody、jicofo、jvb) -- ✅ 配置JWT认证 -- ✅ 端口映射(8280、8443、10000/udp) -- ✅ 数据持久化(.data/docker/jitsi) -- ✅ 健康检查配置 -- ✅ 服务依赖关系 - -#### 2. application-dev.yml -- ✅ 添加jitsi配置节 -- ✅ JWT密钥配置 -- ✅ 服务器地址配置 -- ✅ Token有效期配置 - ---- - -### 五、文档和脚本 - -#### 1. 文档 -- ✅ `Jitsi-Meet本地部署指南.md` - npm start方式(开发测试) -- ✅ `Jitsi-Meet-Docker部署指南.md` - Docker方式(生产推荐) -- ✅ `项目总结.md` - 本文档 - -#### 2. 启动脚本 -- ✅ `启动Jitsi视频会议服务.bat` - 一键启动 -- ✅ `停止Jitsi视频会议服务.bat` - 一键停止 - ---- - -## 📂 修改的文件清单 - -### 后端(6个文件) -``` -✅ VideoMeetingService.java (新建) - F:\Project\urbanLifeline\urbanLifelineServ\apis\api-workcase\src\main\java\org\xyzh\api\workcase\service\ - -✅ JitsiTokenService.java (新建) - F:\Project\urbanLifeline\urbanLifelineServ\apis\api-workcase\src\main\java\org\xyzh\api\workcase\service\ - -✅ VideoMeetingServiceImpl.java (新建) - F:\Project\urbanLifeline\urbanLifelineServ\workcase\src\main\java\org\xyzh\workcase\service\ - -✅ JitsiTokenServiceImpl.java (新建) - F:\Project\urbanLifeline\urbanLifelineServ\workcase\src\main\java\org\xyzh\workcase\service\ - -✅ WorkcaseChatContorller.java (修改:添加会议接口) - F:\Project\urbanLifeline\urbanLifelineServ\workcase\src\main\java\org\xyzh\workcase\controller\ - -✅ application-dev.yml (修改:添加jitsi配置) - F:\Project\urbanLifeline\urbanLifelineServ\workcase\src\main\resources\ -``` - -### 前端Vue(3个文件) -``` -✅ meeting.ts (新建) - F:\Project\urbanLifeline\urbanLifelineWeb\packages\workcase\src\api\workcase\ - -✅ ChatRoom.vue (修改:添加会议功能) - F:\Project\urbanLifeline\urbanLifelineWeb\packages\workcase\src\components\chatRoom\chatRoom\ - -✅ ChatRoom.scss (修改:添加会议样式) - F:\Project\urbanLifeline\urbanLifelineWeb\packages\workcase\src\components\chatRoom\chatRoom\ -``` - -### 前端UniApp(3个文件) -``` -✅ MeetingView.uvue (新建) - F:\Project\urbanLifeline\urbanLifelineWeb\packages\workcase_wechat\pages\meeting\MeetingView\ - -✅ chatRoom.uvue (修改:更新startMeeting) - F:\Project\urbanLifeline\urbanLifelineWeb\packages\workcase_wechat\pages\chatRoom\chatRoom\ - -✅ workcaseChat.ts (修改:添加会议API) - F:\Project\urbanLifeline\urbanLifelineWeb\packages\workcase_wechat\api\workcase\ -``` - -### Docker配置(2个文件) -``` -✅ docker-compose.yml (修改:添加4个Jitsi服务) - F:\Project\urbanLifeline\urbanLifelineServ\.bin\docker\urbanlifeline\ - -✅ application-dev.yml (修改:添加jitsi配置) - F:\Project\urbanLifeline\urbanLifelineServ\workcase\src\main\resources\ -``` - -### 文档和脚本(5个文件) -``` -✅ Jitsi-Meet本地部署指南.md -✅ Jitsi-Meet-Docker部署指南.md -✅ 项目总结.md -✅ 启动Jitsi视频会议服务.bat -✅ 停止Jitsi视频会议服务.bat -``` - -**总计:19个文件(12个新建,7个修改)** - ---- - -## 🚀 快速开始(3步搞定) - -### 步骤1:启动Jitsi Meet服务 - -**方法A:使用启动脚本(推荐)** -```bash -# 双击运行 -F:\Project\urbanLifeline\启动Jitsi视频会议服务.bat -``` - -**方法B:手动启动** -```bash -cd F:\Project\urbanLifeline\urbanLifelineServ\.bin\docker\urbanlifeline -docker-compose up -d jitsi-web jitsi-prosody jitsi-jicofo jitsi-jvb -``` - -**验证**:浏览器打开 http://localhost:8280/ - ---- - -### 步骤2:启动Java后端 - -```bash -# 确保配置正确 -# application-dev.yml 中的 jitsi 配置已自动添加 - -# 启动后端服务 -# 使用你的IDE或命令行启动 workcase-service -``` - -**验证**:访问 http://localhost:8180/swagger-ui.html 查看会议接口 - ---- - -### 步骤3:启动前端并测试 - -#### Vue前端测试 -```bash -# 启动Vue前端 -npm run dev - -# 在聊天室页面点击"发起会议"按钮 -# 应该能看到Jitsi Meet会议界面 -``` - -#### UniApp测试 -```bash -# 使用HBuilderX打开项目 -# 运行到小程序/App -# 在聊天室点击"发起会议" -# 跳转到全屏会议页面 -``` - ---- - -## 🔑 核心特性 - -### 1. 安全性 -- ✅ JWT Token身份验证(每个用户独立Token) -- ✅ 聊天室成员权限校验 -- ✅ Token有效期控制(2小时) -- ✅ 主持人权限区分(客服=主持人) - -### 2. 用户体验 -- ✅ 页面刷新后会议不丢失(活跃会议检测) -- ✅ 会议创建loading状态 -- ✅ 按钮禁用状态(会议进行中不可重复创建) -- ✅ 会议头部控制栏(显示状态+关闭按钮) -- ✅ UniApp独立会议页面(可切换聊天/会议) - -### 3. 扩展性 -- ✅ 支持主持人权限 -- ✅ 支持Jitsi配置项扩展 -- ✅ 预留会议参与者记录功能 -- ✅ Docker部署,易于扩展 - ---- - -## ⚙️ 重要配置说明 - -### JWT密钥配置 - -**Docker配置**(docker-compose.yml): -```yaml -JWT_APP_ID: urbanLifeline -JWT_APP_SECRET: your-secret-key-change-in-production -``` - -**Java后端配置**(application-dev.yml): -```yaml -jitsi: - app: - id: urbanLifeline # 必须与Docker一致 - secret: your-secret-key-change-in-production # 必须与Docker一致 -``` - -⚠️ **生产环境必须修改密钥**: -1. 生成强随机字符串(至少32位) -2. 同时修改Docker和Java配置 -3. 重启Jitsi服务和Java后端 - ---- - -## 🧪 测试步骤 - -### 1. 测试Jitsi服务 -```bash -# 访问Jitsi主页 -http://localhost:8280/ - -# 测试创建房间(应被拦截,需要JWT) -http://localhost:8280/test-room -``` - -### 2. 测试后端接口 -```bash -# 使用Postman或curl测试 -POST http://localhost:8180/urban-lifeline/workcase/chat/meeting/create -Content-Type: application/json -Authorization: Bearer - -{ - "roomId": "test-room-123", - "workcaseId": "WC001", - "meetingName": "测试会议", - "maxParticipants": 10 -} - -# 响应应包含带JWT的iframeUrl -{ - "code": 0, - "data": { - "meetingId": "xxx", - "iframeUrl": "http://localhost:8280/workcase_WC001_xxx?jwt=eyJhbGc..." - } -} -``` - -### 3. 测试前端集成 -- Vue: 在聊天室点击"发起会议" -- UniApp: 在聊天室点击"发起会议" -- 验证会议iframe能正常显示 -- 验证多人能同时加入会议 - ---- - -## 🔧 常见问题 - -### Q1: Docker启动失败? -**A**: 检查端口占用和Docker状态 -```bash -# 检查Docker -docker info - -# 检查端口 -netstat -ano | findstr "8280" -netstat -ano | findstr "10000" - -# 查看日志 -docker-compose logs jitsi-web -``` - -### Q2: JWT验证失败? -**A**: 确保密钥一致 -```bash -# 检查Docker配置 -docker-compose exec jitsi-prosody cat /config/prosody.cfg.lua | grep jwt - -# 检查Java配置 -cat application-dev.yml | grep -A 5 "jitsi:" - -# 密钥必须完全一致 -``` - -### Q3: 视频连接不上? -**A**: 检查UDP端口10000 -```bash -# Windows防火墙 -netsh advfirewall firewall add rule name="Jitsi JVB" dir=in action=allow protocol=UDP localport=10000 - -# 或临时关闭防火墙测试 -``` - -### Q4: 前端iframe显示空白? -**A**: 检查跨域和URL -```bash -# 浏览器控制台查看错误 -# 确保iframeUrl是http://localhost:8280开头 -# 检查JWT Token是否正确生成 -``` - ---- - -## 📊 项目结构 - -``` -urbanLifeline/ -├── .data/docker/jitsi/ # Jitsi数据目录 -│ ├── web/ -│ ├── prosody/ -│ ├── jicofo/ -│ └── jvb/ -├── docs/ # 文档目录 -│ ├── Jitsi-Meet本地部署指南.md -│ ├── Jitsi-Meet-Docker部署指南.md -│ └── 项目总结.md -├── urbanLifelineServ/ -│ ├── .bin/docker/urbanlifeline/ -│ │ └── docker-compose.yml # 包含Jitsi配置 -│ ├── apis/api-workcase/ -│ │ └── src/main/java/org/xyzh/api/workcase/ -│ │ └── service/ -│ │ ├── VideoMeetingService.java -│ │ └── JitsiTokenService.java -│ └── workcase/ -│ ├── src/main/java/org/xyzh/workcase/ -│ │ ├── controller/WorkcaseChatContorller.java -│ │ └── service/ -│ │ ├── VideoMeetingServiceImpl.java -│ │ └── JitsiTokenServiceImpl.java -│ └── src/main/resources/ -│ └── application-dev.yml -├── urbanLifelineWeb/ -│ └── packages/ -│ ├── workcase/ -│ │ └── src/ -│ │ ├── api/workcase/meeting.ts -│ │ └── components/chatRoom/chatRoom/ -│ │ ├── ChatRoom.vue -│ │ └── ChatRoom.scss -│ └── workcase_wechat/ -│ ├── api/workcase/workcaseChat.ts -│ └── pages/ -│ ├── chatRoom/chatRoom/chatRoom.uvue -│ └── meeting/MeetingView/MeetingView.uvue -├── 启动Jitsi视频会议服务.bat -└── 停止Jitsi视频会议服务.bat -``` - ---- - -## 🎯 下一步建议 - -### 短期优化 -1. **会议录制功能** - - 配置Jibri录制组件 - - 存储录制文件到MinIO - - 提供录制回放功能 - -2. **会议统计** - - 记录参与者加入/离开时间 - - 生成会议时长报告 - - 导出会议数据 - -3. **界面优化** - - 自定义Jitsi Meet界面主题 - - 添加品牌Logo - - 优化移动端体验 - -### 长期规划 -1. **生产部署** - - 配置域名和SSL证书 - - 配置公网IP和防火墙 - - 负载均衡和高可用 - -2. **功能增强** - - 屏幕共享优化 - - 虚拟背景 - - 会议白板功能 - - AI转录字幕 - -3. **监控告警** - - Prometheus监控 - - Grafana仪表板 - - 告警通知 - ---- - -## ✨ 总结 - -### 已实现功能 -✅ 完整的Jitsi Meet视频会议功能 -✅ JWT认证和权限控制 -✅ Docker一键部署 -✅ 前后端完整集成 -✅ Vue和UniApp双端支持 -✅ 详细的文档和脚本 - -### 技术亮点 -🌟 每个用户独立JWT Token(安全性高) -🌟 活跃会议检测(用户体验好) -🌟 Docker部署(易于维护) -🌟 微服务架构(易于扩展) - -### 项目价值 -💡 真正的企业级视频会议解决方案 -💡 完全自主可控,无第三方依赖 -💡 可扩展性强,支持二次开发 -💡 开发效率高,5分钟即可部署 - ---- - -**开发完成!祝使用愉快!** 🎉 diff --git a/修改点.md b/修改点.md deleted file mode 100644 index ede63519..00000000 --- a/修改点.md +++ /dev/null @@ -1,4 +0,0 @@ -1. createTableWorkcase.sql 修改了tb_chat_room 增加了device_code字段。修改相关dto\vo\xml。 -2. WorkcaseChatController.java 修改创建聊天室的接口,增加了deviceCode字段必传。 -3. 修改workcase/types/workcase/chatRoom.ts里的dto和vo。修改workcase_wechat/types/workcase/chatRoom.ts的dto和vo -4. 修改workcase_wechat/pages/index/index.uvue。新增const deviceCode = ref('');只有这个有值时,才让用户创建聊天室和工单(工单自动填入表单),否则弹窗让用户填写 \ No newline at end of file diff --git a/功能结构.xml b/功能结构.xml deleted file mode 100644 index d07e5105..00000000 --- a/功能结构.xml +++ /dev/null @@ -1,1085 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/江西城市生命线-可交互原型/frontend/index.html b/江西城市生命线-可交互原型/frontend/index.html deleted file mode 100644 index ea8e8246..00000000 --- a/江西城市生命线-可交互原型/frontend/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - AI数智化平台 - - -
- - - diff --git a/江西城市生命线-可交互原型/frontend/package-lock.json b/江西城市生命线-可交互原型/frontend/package-lock.json deleted file mode 100644 index ff0ee6bb..00000000 --- a/江西城市生命线-可交互原型/frontend/package-lock.json +++ /dev/null @@ -1,2196 +0,0 @@ -{ - "name": "urbanmind-frontend", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "urbanmind-frontend", - "version": "1.0.0", - "dependencies": { - "@element-plus/icons-vue": "^2.3.1", - "axios": "^1.6.2", - "element-plus": "^2.4.4", - "pinia": "^2.1.7", - "vue": "^3.3.11", - "vue-router": "^4.2.5" - }, - "devDependencies": { - "@vitejs/plugin-vue": "^4.5.2", - "sass": "^1.69.5", - "vite": "^5.0.10" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", - "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", - "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.5" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/types": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", - "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.28.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@ctrl/tinycolor": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz", - "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/@element-plus/icons-vue": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.3.2.tgz", - "integrity": "sha512-OzIuTaIfC8QXEPmJvB4Y4kw34rSXdCJzxcD1kFStBvr8bK6X1zQAYDo0CNMjojnfTqRQCJ0I7prlErcoRiET2A==", - "license": "MIT", - "peerDependencies": { - "vue": "^3.2.0" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@floating-ui/core": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz", - "integrity": "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==", - "license": "MIT", - "dependencies": { - "@floating-ui/utils": "^0.2.10" - } - }, - "node_modules/@floating-ui/dom": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.4.tgz", - "integrity": "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==", - "license": "MIT", - "dependencies": { - "@floating-ui/core": "^1.7.3", - "@floating-ui/utils": "^0.2.10" - } - }, - "node_modules/@floating-ui/utils": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", - "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", - "license": "MIT" - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "license": "MIT" - }, - "node_modules/@parcel/watcher": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", - "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "dependencies": { - "detect-libc": "^1.0.3", - "is-glob": "^4.0.3", - "micromatch": "^4.0.5", - "node-addon-api": "^7.0.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.5.1", - "@parcel/watcher-darwin-arm64": "2.5.1", - "@parcel/watcher-darwin-x64": "2.5.1", - "@parcel/watcher-freebsd-x64": "2.5.1", - "@parcel/watcher-linux-arm-glibc": "2.5.1", - "@parcel/watcher-linux-arm-musl": "2.5.1", - "@parcel/watcher-linux-arm64-glibc": "2.5.1", - "@parcel/watcher-linux-arm64-musl": "2.5.1", - "@parcel/watcher-linux-x64-glibc": "2.5.1", - "@parcel/watcher-linux-x64-musl": "2.5.1", - "@parcel/watcher-win32-arm64": "2.5.1", - "@parcel/watcher-win32-ia32": "2.5.1", - "@parcel/watcher-win32-x64": "2.5.1" - } - }, - "node_modules/@parcel/watcher-android-arm64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", - "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", - "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", - "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", - "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", - "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm-musl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", - "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", - "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", - "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", - "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", - "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", - "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-ia32": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", - "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-x64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", - "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@popperjs/core": { - "name": "@sxzz/popperjs-es", - "version": "2.11.7", - "resolved": "https://registry.npmjs.org/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz", - "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.3.tgz", - "integrity": "sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.3.tgz", - "integrity": "sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.3.tgz", - "integrity": "sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.3.tgz", - "integrity": "sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.3.tgz", - "integrity": "sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.3.tgz", - "integrity": "sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.3.tgz", - "integrity": "sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.3.tgz", - "integrity": "sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.3.tgz", - "integrity": "sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.3.tgz", - "integrity": "sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.3.tgz", - "integrity": "sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.3.tgz", - "integrity": "sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.3.tgz", - "integrity": "sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.3.tgz", - "integrity": "sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.3.tgz", - "integrity": "sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.3.tgz", - "integrity": "sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.3.tgz", - "integrity": "sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.3.tgz", - "integrity": "sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.3.tgz", - "integrity": "sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.3.tgz", - "integrity": "sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.3.tgz", - "integrity": "sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.3.tgz", - "integrity": "sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ==", - "license": "MIT" - }, - "node_modules/@types/lodash-es": { - "version": "4.17.12", - "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz", - "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", - "license": "MIT", - "dependencies": { - "@types/lodash": "*" - } - }, - "node_modules/@types/web-bluetooth": { - "version": "0.0.16", - "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", - "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==", - "license": "MIT" - }, - "node_modules/@vitejs/plugin-vue": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.6.2.tgz", - "integrity": "sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "peerDependencies": { - "vite": "^4.0.0 || ^5.0.0", - "vue": "^3.2.25" - } - }, - "node_modules/@vue/compiler-core": { - "version": "3.5.25", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.25.tgz", - "integrity": "sha512-vay5/oQJdsNHmliWoZfHPoVZZRmnSWhug0BYT34njkYTPqClh3DNWLkZNJBVSjsNMrg0CCrBfoKkjZQPM/QVUw==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.28.5", - "@vue/shared": "3.5.25", - "entities": "^4.5.0", - "estree-walker": "^2.0.2", - "source-map-js": "^1.2.1" - } - }, - "node_modules/@vue/compiler-dom": { - "version": "3.5.25", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.25.tgz", - "integrity": "sha512-4We0OAcMZsKgYoGlMjzYvaoErltdFI2/25wqanuTu+S4gismOTRTBPi4IASOjxWdzIwrYSjnqONfKvuqkXzE2Q==", - "license": "MIT", - "dependencies": { - "@vue/compiler-core": "3.5.25", - "@vue/shared": "3.5.25" - } - }, - "node_modules/@vue/compiler-sfc": { - "version": "3.5.25", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.25.tgz", - "integrity": "sha512-PUgKp2rn8fFsI++lF2sO7gwO2d9Yj57Utr5yEsDf3GNaQcowCLKL7sf+LvVFvtJDXUp/03+dC6f2+LCv5aK1ag==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.28.5", - "@vue/compiler-core": "3.5.25", - "@vue/compiler-dom": "3.5.25", - "@vue/compiler-ssr": "3.5.25", - "@vue/shared": "3.5.25", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.21", - "postcss": "^8.5.6", - "source-map-js": "^1.2.1" - } - }, - "node_modules/@vue/compiler-ssr": { - "version": "3.5.25", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.25.tgz", - "integrity": "sha512-ritPSKLBcParnsKYi+GNtbdbrIE1mtuFEJ4U1sWeuOMlIziK5GtOL85t5RhsNy4uWIXPgk+OUdpnXiTdzn8o3A==", - "license": "MIT", - "dependencies": { - "@vue/compiler-dom": "3.5.25", - "@vue/shared": "3.5.25" - } - }, - "node_modules/@vue/devtools-api": { - "version": "6.6.4", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz", - "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", - "license": "MIT" - }, - "node_modules/@vue/reactivity": { - "version": "3.5.25", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.25.tgz", - "integrity": "sha512-5xfAypCQepv4Jog1U4zn8cZIcbKKFka3AgWHEFQeK65OW+Ys4XybP6z2kKgws4YB43KGpqp5D/K3go2UPPunLA==", - "license": "MIT", - "dependencies": { - "@vue/shared": "3.5.25" - } - }, - "node_modules/@vue/runtime-core": { - "version": "3.5.25", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.25.tgz", - "integrity": "sha512-Z751v203YWwYzy460bzsYQISDfPjHTl+6Zzwo/a3CsAf+0ccEjQ8c+0CdX1WsumRTHeywvyUFtW6KvNukT/smA==", - "license": "MIT", - "dependencies": { - "@vue/reactivity": "3.5.25", - "@vue/shared": "3.5.25" - } - }, - "node_modules/@vue/runtime-dom": { - "version": "3.5.25", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.25.tgz", - "integrity": "sha512-a4WrkYFbb19i9pjkz38zJBg8wa/rboNERq3+hRRb0dHiJh13c+6kAbgqCPfMaJ2gg4weWD3APZswASOfmKwamA==", - "license": "MIT", - "dependencies": { - "@vue/reactivity": "3.5.25", - "@vue/runtime-core": "3.5.25", - "@vue/shared": "3.5.25", - "csstype": "^3.1.3" - } - }, - "node_modules/@vue/server-renderer": { - "version": "3.5.25", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.25.tgz", - "integrity": "sha512-UJaXR54vMG61i8XNIzTSf2Q7MOqZHpp8+x3XLGtE3+fL+nQd+k7O5+X3D/uWrnQXOdMw5VPih+Uremcw+u1woQ==", - "license": "MIT", - "dependencies": { - "@vue/compiler-ssr": "3.5.25", - "@vue/shared": "3.5.25" - }, - "peerDependencies": { - "vue": "3.5.25" - } - }, - "node_modules/@vue/shared": { - "version": "3.5.25", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.25.tgz", - "integrity": "sha512-AbOPdQQnAnzs58H2FrrDxYj/TJfmeS2jdfEEhgiKINy+bnOANmVizIEgq1r+C5zsbs6l1CCQxtcj71rwNQ4jWg==", - "license": "MIT" - }, - "node_modules/@vueuse/core": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.13.0.tgz", - "integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==", - "license": "MIT", - "dependencies": { - "@types/web-bluetooth": "^0.0.16", - "@vueuse/metadata": "9.13.0", - "@vueuse/shared": "9.13.0", - "vue-demi": "*" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@vueuse/metadata": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.13.0.tgz", - "integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@vueuse/shared": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.13.0.tgz", - "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==", - "license": "MIT", - "dependencies": { - "vue-demi": "*" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/async-validator": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz", - "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==", - "license": "MIT" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "license": "MIT" - }, - "node_modules/axios": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz", - "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==", - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.4", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/csstype": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", - "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", - "license": "MIT" - }, - "node_modules/dayjs": { - "version": "1.11.19", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", - "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", - "license": "MIT" - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/element-plus": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.12.0.tgz", - "integrity": "sha512-M9YLSn2np9OnqrSKWsiXvGe3qnF8pd94+TScsHj1aTMCD+nSEvucXermf807qNt6hOP040le0e5Aft7E9ZfHmA==", - "license": "MIT", - "dependencies": { - "@ctrl/tinycolor": "^3.4.1", - "@element-plus/icons-vue": "^2.3.2", - "@floating-ui/dom": "^1.0.1", - "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7", - "@types/lodash": "^4.17.20", - "@types/lodash-es": "^4.17.12", - "@vueuse/core": "^9.1.0", - "async-validator": "^4.2.5", - "dayjs": "^1.11.19", - "lodash": "^4.17.21", - "lodash-es": "^4.17.21", - "lodash-unified": "^1.0.3", - "memoize-one": "^6.0.0", - "normalize-wheel-es": "^1.2.0" - }, - "peerDependencies": { - "vue": "^3.2.0" - } - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "license": "MIT" - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/form-data": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", - "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/immutable": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.4.tgz", - "integrity": "sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "license": "MIT" - }, - "node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", - "license": "MIT" - }, - "node_modules/lodash-unified": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/lodash-unified/-/lodash-unified-1.0.3.tgz", - "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==", - "license": "MIT", - "peerDependencies": { - "@types/lodash-es": "*", - "lodash": "*", - "lodash-es": "*" - } - }, - "node_modules/magic-string": { - "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/memoize-one": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", - "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", - "license": "MIT" - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/node-addon-api": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", - "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/normalize-wheel-es": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz", - "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==", - "license": "BSD-3-Clause" - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pinia": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.3.1.tgz", - "integrity": "sha512-khUlZSwt9xXCaTbbxFYBKDc/bWAGWJjOgvxETwkTN7KRm66EeT1ZdZj6i2ceh9sP2Pzqsbc704r2yngBrxBVug==", - "license": "MIT", - "dependencies": { - "@vue/devtools-api": "^6.6.3", - "vue-demi": "^0.14.10" - }, - "funding": { - "url": "https://github.com/sponsors/posva" - }, - "peerDependencies": { - "typescript": ">=4.4.4", - "vue": "^2.7.0 || ^3.5.11" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.11", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "license": "MIT" - }, - "node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/rollup": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.3.tgz", - "integrity": "sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "1.0.8" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.53.3", - "@rollup/rollup-android-arm64": "4.53.3", - "@rollup/rollup-darwin-arm64": "4.53.3", - "@rollup/rollup-darwin-x64": "4.53.3", - "@rollup/rollup-freebsd-arm64": "4.53.3", - "@rollup/rollup-freebsd-x64": "4.53.3", - "@rollup/rollup-linux-arm-gnueabihf": "4.53.3", - "@rollup/rollup-linux-arm-musleabihf": "4.53.3", - "@rollup/rollup-linux-arm64-gnu": "4.53.3", - "@rollup/rollup-linux-arm64-musl": "4.53.3", - "@rollup/rollup-linux-loong64-gnu": "4.53.3", - "@rollup/rollup-linux-ppc64-gnu": "4.53.3", - "@rollup/rollup-linux-riscv64-gnu": "4.53.3", - "@rollup/rollup-linux-riscv64-musl": "4.53.3", - "@rollup/rollup-linux-s390x-gnu": "4.53.3", - "@rollup/rollup-linux-x64-gnu": "4.53.3", - "@rollup/rollup-linux-x64-musl": "4.53.3", - "@rollup/rollup-openharmony-arm64": "4.53.3", - "@rollup/rollup-win32-arm64-msvc": "4.53.3", - "@rollup/rollup-win32-ia32-msvc": "4.53.3", - "@rollup/rollup-win32-x64-gnu": "4.53.3", - "@rollup/rollup-win32-x64-msvc": "4.53.3", - "fsevents": "~2.3.2" - } - }, - "node_modules/sass": { - "version": "1.94.2", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.94.2.tgz", - "integrity": "sha512-N+7WK20/wOr7CzA2snJcUSSNTCzeCGUTFY3OgeQP3mZ1aj9NMQ0mSTXwlrnd89j33zzQJGqIN52GIOmYrfq46A==", - "dev": true, - "license": "MIT", - "dependencies": { - "chokidar": "^4.0.0", - "immutable": "^5.0.2", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=14.0.0" - }, - "optionalDependencies": { - "@parcel/watcher": "^2.4.1" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/vite": { - "version": "5.4.21", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz", - "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "^0.21.3", - "postcss": "^8.4.43", - "rollup": "^4.20.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/vue": { - "version": "3.5.25", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.25.tgz", - "integrity": "sha512-YLVdgv2K13WJ6n+kD5owehKtEXwdwXuj2TTyJMsO7pSeKw2bfRNZGjhB7YzrpbMYj5b5QsUebHpOqR3R3ziy/g==", - "license": "MIT", - "dependencies": { - "@vue/compiler-dom": "3.5.25", - "@vue/compiler-sfc": "3.5.25", - "@vue/runtime-dom": "3.5.25", - "@vue/server-renderer": "3.5.25", - "@vue/shared": "3.5.25" - }, - "peerDependencies": { - "typescript": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/vue-demi": { - "version": "0.14.10", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", - "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", - "hasInstallScript": true, - "license": "MIT", - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } - } - }, - "node_modules/vue-router": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.6.3.tgz", - "integrity": "sha512-ARBedLm9YlbvQomnmq91Os7ck6efydTSpRP3nuOKCvgJOHNrhRoJDSKtee8kcL1Vf7nz6U+PMBL+hTvR3bTVQg==", - "license": "MIT", - "dependencies": { - "@vue/devtools-api": "^6.6.4" - }, - "funding": { - "url": "https://github.com/sponsors/posva" - }, - "peerDependencies": { - "vue": "^3.5.0" - } - } - } -} diff --git a/江西城市生命线-可交互原型/frontend/package.json b/江西城市生命线-可交互原型/frontend/package.json deleted file mode 100644 index 05a740a1..00000000 --- a/江西城市生命线-可交互原型/frontend/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "urbanmind-frontend", - "version": "1.0.0", - "private": true, - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build", - "preview": "vite preview" - }, - "dependencies": { - "axios": "^1.6.2", - "vue": "^3.3.11", - "vue-router": "^4.2.5", - "pinia": "^2.1.7", - "@element-plus/icons-vue": "^2.3.1", - "element-plus": "^2.4.4" - }, - "devDependencies": { - "@vitejs/plugin-vue": "^4.5.2", - "sass": "^1.69.5", - "vite": "^5.0.10" - } -} diff --git a/江西城市生命线-可交互原型/frontend/public/avatar.svg b/江西城市生命线-可交互原型/frontend/public/avatar.svg deleted file mode 100644 index b537ce1d..00000000 --- a/江西城市生命线-可交互原型/frontend/public/avatar.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/江西城市生命线-可交互原型/frontend/public/favicon.svg b/江西城市生命线-可交互原型/frontend/public/favicon.svg deleted file mode 100644 index 0064d6fc..00000000 --- a/江西城市生命线-可交互原型/frontend/public/favicon.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/江西城市生命线-可交互原型/frontend/public/logo.jpg b/江西城市生命线-可交互原型/frontend/public/logo.jpg deleted file mode 100644 index 18b5da66..00000000 Binary files a/江西城市生命线-可交互原型/frontend/public/logo.jpg and /dev/null differ diff --git a/江西城市生命线-可交互原型/frontend/src/App.vue b/江西城市生命线-可交互原型/frontend/src/App.vue deleted file mode 100644 index 05e892fd..00000000 --- a/江西城市生命线-可交互原型/frontend/src/App.vue +++ /dev/null @@ -1,47 +0,0 @@ - - - - - diff --git a/江西城市生命线-可交互原型/frontend/src/api/project.js b/江西城市生命线-可交互原型/frontend/src/api/project.js deleted file mode 100644 index 033ee110..00000000 --- a/江西城市生命线-可交互原型/frontend/src/api/project.js +++ /dev/null @@ -1,221 +0,0 @@ -/** - * 项目管理 API 服务 - */ - -import axios from 'axios' - -const API_BASE_URL = import.meta.env.VITE_API_BASE_URL || '/api' - -// 创建 axios 实例 -const apiClient = axios.create({ - baseURL: API_BASE_URL, - timeout: 10000, - headers: { - 'Content-Type': 'application/json' - } -}) - -// 请求拦截器 -apiClient.interceptors.request.use( - config => { - // 可以在这里添加 token - const token = localStorage.getItem('token') - if (token) { - config.headers.Authorization = `Bearer ${token}` - } - return config - }, - error => { - return Promise.reject(error) - } -) - -// 响应拦截器 -apiClient.interceptors.response.use( - response => { - return response.data - }, - error => { - console.error('API Error:', error) - return Promise.reject(error) - } -) - -/** - * 项目管理 API - */ -export const projectApi = { - /** - * 获取项目列表 - * @param {Object} params - 查询参数 - * @returns {Promise} - */ - getProjects(params = {}) { - return apiClient.get('/projects', { params }) - }, - - /** - * 获取项目详情 - * @param {Number} projectId - 项目ID - * @returns {Promise} - */ - getProjectDetail(projectId) { - return apiClient.get(`/projects/${projectId}`) - }, - - /** - * 创建项目 - * @param {Object} data - 项目数据 - * @returns {Promise} - */ - createProject(data) { - return apiClient.post('/projects', data) - }, - - /** - * 更新项目 - * @param {Number} projectId - 项目ID - * @param {Object} data - 项目数据 - * @returns {Promise} - */ - updateProject(projectId, data) { - return apiClient.put(`/projects/${projectId}`, data) - }, - - /** - * 删除项目 - * @param {Number} projectId - 项目ID - * @returns {Promise} - */ - deleteProject(projectId) { - return apiClient.delete(`/projects/${projectId}`) - }, - - /** - * 更新文件提交信息 - * @param {Number} projectId - 项目ID - * @param {Object} data - 提交信息 - * @returns {Promise} - */ - updateSubmission(projectId, data) { - return apiClient.put(`/projects/${projectId}/submission`, data) - }, - - /** - * 标记为已提交 - * @param {Number} projectId - 项目ID - * @param {Object} data - 提交确认信息 - * @returns {Promise} - */ - markAsSubmitted(projectId, data) { - return apiClient.post(`/projects/${projectId}/submit`, data) - }, - - /** - * 更新开标信息 - * @param {Number} projectId - 项目ID - * @param {Object} data - 开标信息 - * @returns {Promise} - */ - updateBiddingInfo(projectId, data) { - return apiClient.put(`/projects/${projectId}/bidding`, data) - }, - - /** - * 上传开标媒体文件 - * @param {Number} projectId - 项目ID - * @param {FormData} formData - 文件数据 - * @returns {Promise} - */ - uploadBiddingMedia(projectId, formData) { - return apiClient.post(`/projects/${projectId}/bidding/media`, formData, { - headers: { - 'Content-Type': 'multipart/form-data' - } - }) - }, - - /** - * 更新结果公示 - * @param {Number} projectId - 项目ID - * @param {Object} data - 结果信息 - * @returns {Promise} - */ - updateResult(projectId, data) { - return apiClient.put(`/projects/${projectId}/result`, data) - }, - - /** - * 添加经验总结 - * @param {Number} projectId - 项目ID - * @param {Object} data - 经验总结 - * @returns {Promise} - */ - addExperience(projectId, data) { - return apiClient.post(`/projects/${projectId}/experience`, data) - }, - - /** - * 归档项目 - * @param {Number} projectId - 项目ID - * @param {Object} data - 归档信息 - * @returns {Promise} - */ - archiveProject(projectId, data) { - return apiClient.post(`/projects/${projectId}/archive`, data) - }, - - /** - * 导出项目信息 - * @param {Number} projectId - 项目ID - * @returns {Promise} - */ - exportProject(projectId) { - return apiClient.get(`/projects/${projectId}/export`, { - responseType: 'blob' - }) - }, - - /** - * 下载文件 - * @param {Number} projectId - 项目ID - * @param {String} fileType - 文件类型 - * @returns {Promise} - */ - downloadFile(projectId, fileType) { - return apiClient.get(`/projects/${projectId}/files/${fileType}`, { - responseType: 'blob' - }) - } -} - -/** - * 文件上传辅助函数 - * @param {File} file - 文件对象 - * @param {String} type - 文件类型 - * @returns {FormData} - */ -export function createFileFormData(file, type) { - const formData = new FormData() - formData.append('file', file) - formData.append('type', type) - return formData -} - -/** - * 下载文件辅助函数 - * @param {Blob} blob - 文件数据 - * @param {String} filename - 文件名 - */ -export function downloadBlob(blob, filename) { - const url = window.URL.createObjectURL(blob) - const link = document.createElement('a') - link.href = url - link.download = filename - document.body.appendChild(link) - link.click() - document.body.removeChild(link) - window.URL.revokeObjectURL(url) -} - -export default projectApi diff --git a/江西城市生命线-可交互原型/frontend/src/components/Sidebar.vue b/江西城市生命线-可交互原型/frontend/src/components/Sidebar.vue deleted file mode 100644 index 13a68e26..00000000 --- a/江西城市生命线-可交互原型/frontend/src/components/Sidebar.vue +++ /dev/null @@ -1,269 +0,0 @@ - - - - - diff --git a/江西城市生命线-可交互原型/frontend/src/components/UserPanel.vue b/江西城市生命线-可交互原型/frontend/src/components/UserPanel.vue deleted file mode 100644 index a048b6ba..00000000 --- a/江西城市生命线-可交互原型/frontend/src/components/UserPanel.vue +++ /dev/null @@ -1,79 +0,0 @@ - - - - - diff --git a/江西城市生命线-可交互原型/frontend/src/components/project/BiddingInfo.vue b/江西城市生命线-可交互原型/frontend/src/components/project/BiddingInfo.vue deleted file mode 100644 index beba0c18..00000000 --- a/江西城市生命线-可交互原型/frontend/src/components/project/BiddingInfo.vue +++ /dev/null @@ -1,804 +0,0 @@ - - - - - diff --git a/江西城市生命线-可交互原型/frontend/src/components/project/FileSubmission.vue b/江西城市生命线-可交互原型/frontend/src/components/project/FileSubmission.vue deleted file mode 100644 index e2382eff..00000000 --- a/江西城市生命线-可交互原型/frontend/src/components/project/FileSubmission.vue +++ /dev/null @@ -1,599 +0,0 @@ - - - - - diff --git a/江西城市生命线-可交互原型/frontend/src/components/project/ProjectDetail.vue b/江西城市生命线-可交互原型/frontend/src/components/project/ProjectDetail.vue deleted file mode 100644 index 05c863d8..00000000 --- a/江西城市生命线-可交互原型/frontend/src/components/project/ProjectDetail.vue +++ /dev/null @@ -1,277 +0,0 @@ - - - - - diff --git a/江西城市生命线-可交互原型/frontend/src/components/project/README.md b/江西城市生命线-可交互原型/frontend/src/components/project/README.md deleted file mode 100644 index cdfee349..00000000 --- a/江西城市生命线-可交互原型/frontend/src/components/project/README.md +++ /dev/null @@ -1,227 +0,0 @@ -# 项目管理组件使用说明 - -## 组件概述 - -本目录包含招标助手系统的项目管理功能组件,实现了进行中项目的三个核心功能模块: - -1. **文件提交模块** (`FileSubmission.vue`) -2. **开标信息模块** (`BiddingInfo.vue`) -3. **结果公示模块** (`ResultAnnouncement.vue`) -4. **项目详情主组件** (`ProjectDetail.vue`) - -## 组件结构 - -``` -components/project/ -├── ProjectDetail.vue # 项目详情主组件 -├── FileSubmission.vue # 文件提交模块 -├── BiddingInfo.vue # 开标信息模块 -├── ResultAnnouncement.vue # 结果公示模块 -└── README.md # 本文件 -``` - -## 使用方法 - -### 1. 在 BiddingView.vue 中集成 - -在 `BiddingView.vue` 的项目详情部分引入 `ProjectDetail` 组件: - -```vue - - - -``` - -### 2. 单独使用各个子组件 - -如果需要单独使用某个功能模块: - -```vue - - - -``` - -## 组件 Props - -### ProjectDetail - -| 参数 | 类型 | 必填 | 说明 | -|------|------|------|------| -| project | Object | 是 | 项目对象 | - -### FileSubmission / BiddingInfo / ResultAnnouncement - -| 参数 | 类型 | 必填 | 说明 | -|------|------|------|------| -| project | Object | 是 | 项目对象 | - -## 组件 Events - -### ProjectDetail - -| 事件名 | 参数 | 说明 | -|--------|------|------| -| back | - | 返回项目列表 | -| update | - | 项目信息已更新 | - -### FileSubmission / BiddingInfo / ResultAnnouncement - -| 事件名 | 参数 | 说明 | -|--------|------|------| -| update | - | 模块信息已更新 | - -## 数据结构 - -### 项目对象 (Project) - -```javascript -{ - id: Number, // 项目ID - name: String, // 项目名称 - client: String, // 招标单位 - status: String, // 项目状态: ongoing/pending/won/lost/failed - progress: String, // 当前进度: 信息提取/文件准备/文件提交/开标/评标/结果公示 - createTime: String, // 创建时间 - // ... 其他字段 -} -``` - -## API 接口 - -项目管理相关的 API 接口已在 `src/api/project.js` 中定义: - -```javascript -import { projectApi } from '@/api/project' - -// 获取项目详情 -const project = await projectApi.getProjectDetail(projectId) - -// 更新文件提交信息 -await projectApi.updateSubmission(projectId, data) - -// 更新开标信息 -await projectApi.updateBiddingInfo(projectId, data) - -// 更新结果公示 -await projectApi.updateResult(projectId, data) -``` - -## 功能特性 - -### 文件提交模块 - -- ✅ 展示商务标、技术标、报价文件详细信息 -- ✅ 文件预览、下载、重新生成 -- ✅ 关键时间节点时间轴展示 -- ✅ 提交前检查清单(7项) -- ✅ 完成度进度条 -- ✅ 标记为已提交功能 - -### 开标信息模块 - -- ✅ 开标时间倒计时提醒 -- ✅ 开标地点地图导航 -- ✅ 参会人员信息管理 -- ✅ 开标流程时间轴 -- ✅ 开标记录详细展示 -- ✅ 所有投标单位报价对比表 -- ✅ 现场照片/视频上传 - -### 结果公示模块 - -- ✅ 三种结果类型切换(中标/未中标/流标) -- ✅ **中标情况**: - - 公示信息、中标详情 - - 综合得分展示 - - 合同签订信息 - - 项目执行进度跟踪 -- ✅ **未中标情况**: - - 得分差距分析 - - 失败原因总结 - - 改进建议列表 -- ✅ **流标情况**: - - 流标原因分析 - - 后续处理方案 - - 保证金退还状态 - -## 样式定制 - -所有组件都使用 SCSS 编写样式,支持自定义主题色: - -```scss -// 主色调 -$primary-color: #7c3aed; -$success-color: #10b981; -$warning-color: #f59e0b; -$danger-color: #ef4444; - -// 可以在组件中覆盖这些变量 -``` - -## 注意事项 - -1. **Element Plus 依赖**: 组件依赖 Element Plus UI 库,确保已正确安装 -2. **图标组件**: 使用 Element Plus Icons,需要单独引入 -3. **响应式设计**: 组件已适配不同屏幕尺寸 -4. **数据模拟**: 当前使用模拟数据,实际使用时需连接后端 API -5. **权限控制**: 某些操作可能需要权限验证 - -## 开发计划 - -- [ ] 添加文件上传进度显示 -- [ ] 实现实时倒计时功能 -- [ ] 添加数据导出为 Excel 功能 -- [ ] 实现地图导航集成 -- [ ] 添加消息通知提醒 -- [ ] 优化移动端显示 - -## 更新日志 - -### v1.0.0 (2024-12-08) -- ✅ 完成文件提交模块 -- ✅ 完成开标信息模块 -- ✅ 完成结果公示模块 -- ✅ 完成项目详情主组件 -- ✅ 创建 API 服务文件 - -## 技术支持 - -如有问题,请联系开发团队或查看项目文档。 diff --git a/江西城市生命线-可交互原型/frontend/src/components/project/ResultAnnouncement.vue b/江西城市生命线-可交互原型/frontend/src/components/project/ResultAnnouncement.vue deleted file mode 100644 index 047896fa..00000000 --- a/江西城市生命线-可交互原型/frontend/src/components/project/ResultAnnouncement.vue +++ /dev/null @@ -1,1028 +0,0 @@ - - - - - diff --git a/江西城市生命线-可交互原型/frontend/src/components/project/开标信息编辑功能说明.md b/江西城市生命线-可交互原型/frontend/src/components/project/开标信息编辑功能说明.md deleted file mode 100644 index 10fe0c9a..00000000 --- a/江西城市生命线-可交互原型/frontend/src/components/project/开标信息编辑功能说明.md +++ /dev/null @@ -1,405 +0,0 @@ -# 开标信息编辑功能说明 - -## 📝 功能概述 - -开标会议信息现已支持完整的编辑功能,用户可以自定义开标时间、地点、参会人员等信息。 - -## ✨ 新增功能 - -### 1. **编辑开标时间** 📅 - -**日期选择**: -- 使用日期选择器选择开标日期 -- 格式:YYYY-MM-DD -- 宽度:200px - -**时间选择**: -- 使用时间选择器选择开标时间 -- 格式:HH:mm:ss -- 宽度:150px - -### 2. **编辑开标地点** 📍 - -**可编辑字段**: -- **地址**: 文本输入框(300px) -- **联系电话**: 文本输入框(200px) -- **备注**: 多行文本框(2行,300px) - -**删除的功能**: -- ❌ 查看地图按钮 -- ❌ 一键导航按钮 - -### 3. **编辑参会人员** 👥 - -**编辑功能**: -- 每个参会人员可编辑姓名和电话 -- 姓名输入框:120px -- 电话输入框:150px - -**删除功能**: -- 每个参会人员旁边有"删除"按钮 -- 点击删除会弹出确认对话框 -- 确认后删除该参会人员 - -**添加功能**: -- 底部有"添加参会人员"按钮 -- 点击后添加新的空白参会人员 -- 默认角色为"参会人员" - -## 🎨 界面布局 - -### 开标时间区域 -``` -📅 开标时间 -├─ 日期: [日期选择器: 2024-12-15] -├─ 时间: [时间选择器: 09:30:00] -├─ 倒计时: [还剩6天2小时15分钟] -└─ 状态: [🟡 待开标] -``` - -### 开标地点区域 -``` -📍 开标地点 -├─ 地址: [输入框: XX市公共资源交易中心3楼开标室A] -├─ 联系电话: [输入框: 0791-88888888] -└─ 备注: [文本框: 需携带法人授权委托书原件及身份证] -``` - -### 参会人员区域 -``` -👥 参会人员 -├─ 投标代表: [姓名: 张三] [电话: 13800138000] [删除] -├─ 技术负责人: [姓名: 李四] [电话: 13900139000] [删除] -├─ 备选人员: [姓名: 王五] [电话: 13700137000] [删除] -└─ [+ 添加参会人员] -``` - -## 💻 代码实现 - -### 模板结构 - -```vue - -
- 日期: - -
- -
- 时间: - -
- - -
- 地址: - -
- - -
- {{ person.role }}: -
- - - 删除 -
-
- - - 添加参会人员 - -``` - -### 数据结构 - -```javascript -const biddingInfo = ref({ - dateValue: '2024-12-15', // 日期选择器绑定值 - timeValue: '09:30:00', // 时间选择器绑定值 - countdown: '还剩6天2小时15分钟', - statusText: '待开标', - - location: { - address: 'XX市公共资源交易中心3楼开标室A', - phone: '0791-88888888', - note: '需携带法人授权委托书原件及身份证' - }, - - attendees: [ - { role: '投标代表', name: '张三', phone: '13800138000' }, - { role: '技术负责人', name: '李四', phone: '13900139000' }, - { role: '备选人员', name: '王五', phone: '13700137000' } - ] -}) -``` - -### 核心方法 - -#### 1. 添加参会人员 -```javascript -const addPerson = () => { - biddingInfo.value.attendees.push({ - role: '参会人员', - name: '', - phone: '' - }) - ElMessage.success('已添加参会人员,请填写信息') -} -``` - -#### 2. 删除参会人员 -```javascript -const removePerson = (index) => { - ElMessageBox.confirm('确定要删除这个参会人员吗?', '提示', { - confirmButtonText: '确定', - cancelButtonText: '取消', - type: 'warning' - }).then(() => { - biddingInfo.value.attendees.splice(index, 1) - ElMessage.success('删除成功') - }).catch(() => { - ElMessage.info('已取消删除') - }) -} -``` - -## 🎨 样式实现 - -```scss -.info-item { - &.editable-person { - .person-inputs { - display: flex; - align-items: center; - gap: 12px; - flex: 1; - } - } -} -``` - -## 🔄 已删除的功能 - -### 地图导航功能 -```javascript -// ❌ 已删除 -const viewMap = () => { - ElMessage.info('打开地图查看开标地点') -} - -const navigate = () => { - ElMessage.info('启动导航到开标地点') -} -``` - -**删除原因**: -- 简化界面,减少不必要的功能 -- 用户可以直接复制地址使用第三方地图应用 - -## 📊 组件导入变更 - -### 新增导入 -```javascript -import { ElMessageBox } from 'element-plus' -import { Delete, Plus } from '@element-plus/icons-vue' -``` - -### 删除导入 -```javascript -// ❌ 已删除 -import { Location, Position } from '@element-plus/icons-vue' -``` - -## 🎯 使用场景 - -### 场景 1: 修改开标时间 -项目经理收到通知,开标时间延期。 - -**操作步骤**: -1. 点击日期选择器,选择新的日期 -2. 点击时间选择器,选择新的时间 -3. 系统自动更新倒计时 - -### 场景 2: 更新开标地点 -开标地点临时变更。 - -**操作步骤**: -1. 在地址输入框中修改新地址 -2. 更新联系电话 -3. 在备注中添加变更说明 - -### 场景 3: 调整参会人员 -技术负责人临时有事,需要更换。 - -**操作步骤**: -1. 找到"技术负责人"行 -2. 修改姓名和电话 -3. 或点击"删除"按钮移除 -4. 点击"添加参会人员"添加新人员 - -### 场景 4: 增加参会人员 -需要增加一名备用人员。 - -**操作步骤**: -1. 点击"添加参会人员"按钮 -2. 填写新人员的姓名 -3. 填写新人员的电话 - -## ⚠️ 注意事项 - -### 1. 数据验证 -建议添加数据验证: - -```javascript -const addPerson = () => { - // 检查是否有未填写完整的人员 - const hasEmpty = biddingInfo.value.attendees.some( - p => !p.name || !p.phone - ) - - if (hasEmpty) { - ElMessage.warning('请先完成当前人员信息的填写') - return - } - - biddingInfo.value.attendees.push({ - role: '参会人员', - name: '', - phone: '' - }) -} -``` - -### 2. 电话号码格式 -建议添加电话号码格式验证: - -```javascript -const validatePhone = (phone) => { - const phoneReg = /^1[3-9]\d{9}$/ - return phoneReg.test(phone) -} -``` - -### 3. 最少参会人员 -建议至少保留一名参会人员: - -```javascript -const removePerson = (index) => { - if (biddingInfo.value.attendees.length <= 1) { - ElMessage.warning('至少需要保留一名参会人员') - return - } - // ... 删除逻辑 -} -``` - -### 4. 保存提示 -修改后建议添加保存按钮: - -```vue - - 保存修改 - -``` - -## 🚀 后续优化建议 - -### 1. 角色选择 -为参会人员添加角色下拉选择: - -```vue - - - - - - -``` - -### 2. 批量导入 -支持从 Excel 批量导入参会人员: - -```vue - - 批量导入 - -``` - -### 3. 历史记录 -记录开标信息的修改历史: - -```javascript -const history = ref([]) - -const saveBiddingInfo = () => { - history.value.push({ - time: new Date(), - data: JSON.parse(JSON.stringify(biddingInfo.value)) - }) -} -``` - -### 4. 自动提醒 -根据开标时间自动设置提醒: - -```javascript -watch(() => biddingInfo.value.dateValue, (newDate) => { - // 自动设置提前1天、3小时、30分钟的提醒 - setReminders(newDate) -}) -``` - -## 📸 效果对比 - -### 修改前 -``` -📍 开标地点 -地址: XX市公共资源交易中心3楼开标室A -联系电话: 0791-88888888 -导航: [查看地图] [一键导航] ← 删除 -备注: 需携带法人授权委托书原件及身份证 - -👥 参会人员 -投标代表: 张三 (13800138000) ← 不可编辑 -技术负责人: 李四 (13900139000) -备选人员: 王五 (13700137000) -``` - -### 修改后 -``` -📍 开标地点 -地址: [输入框] ← 可编辑 -联系电话: [输入框] -备注: [文本框] - -👥 参会人员 -投标代表: [姓名] [电话] [删除] ← 可编辑、可删除 -技术负责人: [姓名] [电话] [删除] -备选人员: [姓名] [电话] [删除] -[+ 添加参会人员] ← 可添加 -``` - ---- - -**版本**: v1.4.0 -**更新时间**: 2024-12-08 -**功能状态**: ✅ 已实现 -**适用模块**: BiddingInfo.vue diff --git a/江西城市生命线-可交互原型/frontend/src/components/project/投标单位报价编辑功能说明.md b/江西城市生命线-可交互原型/frontend/src/components/project/投标单位报价编辑功能说明.md deleted file mode 100644 index 49962fe6..00000000 --- a/江西城市生命线-可交互原型/frontend/src/components/project/投标单位报价编辑功能说明.md +++ /dev/null @@ -1,428 +0,0 @@ -# 投标单位报价编辑功能说明 - -## 📝 功能概述 - -开标记录中的"所有投标单位报价"表格现已支持完整的编辑功能,用户可以添加、编辑、删除投标单位信息,并标记我方单位。 - -## ✨ 新增功能 - -### 1. **编辑投标单位信息** ✏️ - -**可编辑字段**: -- **排名**: 数字输入框(1-99) -- **投标单位**: 文本输入框 -- **报价金额**: 数字输入框(精度2位小数,步长1000) -- **工期(天)**: 数字输入框(1-999) - -### 2. **添加投标单位** ➕ - -**操作方式**: -- 点击表格右上角的"添加投标单位"按钮 -- 自动添加新行,排名自动递增 -- 填写单位名称、报价金额、工期 - -**默认值**: -```javascript -{ - rank: 自动递增, - company: '', - price: 0, - workDays: 60, - isOur: false -} -``` - -### 3. **删除投标单位** 🗑️ - -**操作方式**: -- 点击每行的"删除"按钮 -- 弹出确认对话框 -- 确认后删除该投标单位 -- 自动重新排序(rank 重新计算) - -### 4. **标记为我方** 🏷️ - -**操作方式**: -- 点击"标记为我方"按钮 -- 自动清除其他单位的我方标记 -- 标记当前单位为我方 -- 我方单位名称和报价高亮显示 - -**视觉效果**: -- 单位名称:紫色加粗(#7c3aed) -- 报价金额:红色加粗(#ef4444) -- 按钮文字:显示"我方"并禁用 - -### 5. **保存开标记录** 💾 - -**操作方式**: -- 点击"保存开标记录"按钮 -- 验证所有单位信息是否完整 -- 保存成功后触发更新事件 - -**验证规则**: -- 单位名称不能为空 -- 报价金额必须大于0 - -## 🎨 界面布局 - -### 表格头部 -``` -所有投标单位报价 [+ 添加投标单位] -``` - -### 表格内容 -``` -┌────┬──────────────┬────────┬────────┬──────────────┐ -│排名│ 投标单位 │报价金额│工期(天)│ 操作 │ -├────┼──────────────┼────────┼────────┼──────────────┤ -│ 1 │[输入框] │[数字] │[数字] │[标记][删除] │ -│ 2 │[输入框] │[数字] │[数字] │[标记][删除] │ -│ 3 │[输入框]★ │[数字]★ │[数字] │[我方][删除] │ -└────┴──────────────┴────────┴────────┴──────────────┘ -★ = 我方单位高亮显示 -``` - -### 操作按钮 -``` -[✓ 保存开标记录] [📥 下载开标记录表] -``` - -## 💻 代码实现 - -### 模板结构 - -```vue -
- -
-

所有投标单位报价

- 添加投标单位 -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
- - 保存开标记录 - - - 下载开标记录表 - -
-``` - -### 核心方法 - -#### 1. 添加投标单位 -```javascript -const addBidder = () => { - const newRank = biddingInfo.value.record.allBidders.length + 1 - biddingInfo.value.record.allBidders.push({ - rank: newRank, - company: '', - price: 0, - workDays: 60, - isOur: false - }) - ElMessage.success('已添加投标单位,请填写信息') -} -``` - -#### 2. 删除投标单位 -```javascript -const removeBidder = (index) => { - ElMessageBox.confirm('确定要删除这个投标单位吗?', '提示', { - confirmButtonText: '确定', - cancelButtonText: '取消', - type: 'warning' - }).then(() => { - biddingInfo.value.record.allBidders.splice(index, 1) - // 重新排序 - biddingInfo.value.record.allBidders.forEach((bidder, idx) => { - bidder.rank = idx + 1 - }) - ElMessage.success('删除成功') - }) -} -``` - -#### 3. 标记为我方 -```javascript -const markAsOur = (index) => { - // 先清除所有的我方标记 - biddingInfo.value.record.allBidders.forEach(bidder => { - bidder.isOur = false - }) - // 标记当前为我方 - biddingInfo.value.record.allBidders[index].isOur = true - ElMessage.success('已标记为我方') -} -``` - -#### 4. 保存开标记录 -```javascript -const saveBiddingRecord = () => { - // 验证数据 - const hasEmpty = biddingInfo.value.record.allBidders.some( - b => !b.company || b.price <= 0 - ) - - if (hasEmpty) { - ElMessage.warning('请完整填写所有投标单位信息') - return - } - - ElMessage.success('开标记录已保存') - emit('update') -} -``` - -## 🎨 样式实现 - -### 表头样式 -```scss -.table-header { - display: flex; - justify-content: space-between; - align-items: center; - margin-bottom: 16px; -} -``` - -### 我方单位高亮 -```scss -// 单位名称高亮 -:deep(.our-company-input) { - .el-input__inner { - color: #7c3aed; // 紫色 - font-weight: 600; - } -} - -// 报价金额高亮 -:deep(.our-price-input) { - input { - color: #ef4444; // 红色 - font-weight: 600; - } -} -``` - -### 数字输入框 -```scss -:deep(.el-input-number) { - width: 100%; // 填满单元格 -} -``` - -## 🎯 使用场景 - -### 场景 1: 录入开标结果 -开标会议结束后,需要录入所有投标单位的报价信息。 - -**操作步骤**: -1. 点击"添加投标单位"按钮8次(假设8家单位) -2. 依次填写每家单位的名称、报价、工期 -3. 找到我方单位,点击"标记为我方" -4. 点击"保存开标记录" - -### 场景 2: 修正错误信息 -发现某家单位的报价录入错误。 - -**操作步骤**: -1. 找到对应的单位行 -2. 修改报价金额 -3. 点击"保存开标记录" - -### 场景 3: 删除无效单位 -某家单位临时弃标,需要删除。 - -**操作步骤**: -1. 找到对应的单位行 -2. 点击"删除"按钮 -3. 确认删除 -4. 系统自动重新排序 -5. 点击"保存开标记录" - -### 场景 4: 调整排名 -根据最终评分调整排名顺序。 - -**操作步骤**: -1. 修改各单位的排名数字 -2. 点击"保存开标记录" - -## ⚠️ 注意事项 - -### 1. 数据验证 -保存时会验证: -- 单位名称不能为空 -- 报价金额必须大于0 - -### 2. 自动排序 -删除单位后会自动重新排序,确保排名连续。 - -### 3. 唯一我方 -同时只能有一个单位被标记为"我方",标记新的会自动清除旧的。 - -### 4. 报价格式 -报价金额支持两位小数,步长为1000元。 - -## 🚀 后续优化建议 - -### 1. 批量导入 -支持从 Excel 批量导入投标单位信息: - -```vue - - 批量导入 - -``` - -### 2. 自动排序 -根据报价金额自动排序: - -```javascript -const autoSort = () => { - biddingInfo.value.record.allBidders.sort((a, b) => a.price - b.price) - biddingInfo.value.record.allBidders.forEach((bidder, idx) => { - bidder.rank = idx + 1 - }) -} -``` - -### 3. 数据导出 -导出为 Excel 格式: - -```javascript -const exportToExcel = () => { - // 使用 xlsx 库导出 - const data = biddingInfo.value.record.allBidders.map(b => ({ - '排名': b.rank, - '投标单位': b.company, - '报价金额': b.price, - '工期': b.workDays - })) - // ... 导出逻辑 -} -``` - -### 4. 历史对比 -对比上次开标记录: - -```javascript -const compareWithHistory = () => { - // 显示与历史记录的差异 -} -``` - -### 5. 价格区间验证 -验证报价是否在合理区间: - -```javascript -const validatePrice = (price) => { - const controlPrice = biddingInfo.value.record.controlPrice - if (price > controlPrice) { - ElMessage.warning('报价超过控制价') - } -} -``` - -## 📸 效果对比 - -### 修改前 -``` -所有投标单位报价 - -排名 | 投标单位 | 报价金额 | 工期 ------|----------|----------|------ - 1 | XX公司 | ¥2,650,000 | 55 - 2 | XX公司 | ¥2,750,000 | 60 - 3 | 我方 | ¥2,850,000 | 60 ← 只读显示 -``` - -### 修改后 -``` -所有投标单位报价 [+ 添加投标单位] - -排名 | 投标单位 | 报价金额 | 工期 | 操作 ------|----------|----------|------|------------- - [1] | [输入框] | [数字] | [60] | [标记][删除] - [2] | [输入框] | [数字] | [60] | [标记][删除] - [3] | [输入框]★| [数字]★ | [60] | [我方][删除] ← 可编辑 - -[✓ 保存开标记录] [📥 下载开标记录表] -``` - -## 🔄 按钮变更 - -### 删除的按钮 -- ❌ "查看详细记录" - -### 新增的按钮 -- ✅ "添加投标单位" -- ✅ "保存开标记录" -- ✅ "标记为我方" -- ✅ "删除"(每行) - ---- - -**版本**: v1.5.0 -**更新时间**: 2024-12-08 -**功能状态**: ✅ 已实现 -**适用模块**: BiddingInfo.vue diff --git a/江西城市生命线-可交互原型/frontend/src/components/project/更新日志.md b/江西城市生命线-可交互原型/frontend/src/components/project/更新日志.md deleted file mode 100644 index 1364c8a1..00000000 --- a/江西城市生命线-可交互原型/frontend/src/components/project/更新日志.md +++ /dev/null @@ -1,185 +0,0 @@ -# 项目管理组件更新日志 - -## v1.1.0 (2024-12-08) - -### 🎨 界面优化 - -#### FileSubmission.vue - 文件提交模块 - -**变更内容**: - -1. **删除报价文件部分** - - 移除了报价文件的展示区域 - - 删除了相关的数据定义 (`priceDoc`) - - 删除了"修改报价"功能 (`modifyPrice`) - -2. **调整状态显示布局** - - 将状态标签从详情列表中移到标题旁边 - - 状态标签尺寸从 `small` 改为 `large` - - 添加了 `doc-header` 容器,使标题和状态在同一行 - - 在标题和详情之间添加了分隔线 - -**视觉效果**: -``` -之前: -┌─────────────────────────────┐ -│ 📑 商务标书 │ -│ │ -│ 文件名称: xxx.pdf │ -│ 生成时间: 2024-12-08 │ -│ 文件大小: 15.6 MB │ -│ 页数: 85页 │ -│ 状态: [已完成] │ -│ │ -│ [预览] [下载] [重新生成] │ -└─────────────────────────────┘ - -现在: -┌─────────────────────────────┐ -│ 📑 商务标书 [已完成] │ -│ ─────────────────────────── │ -│ 文件名称: xxx.pdf │ -│ 生成时间: 2024-12-08 │ -│ 文件大小: 15.6 MB │ -│ 页数: 85页 │ -│ │ -│ [预览] [下载] [重新生成] │ -└─────────────────────────────┘ -``` - -**样式变更**: -- 新增 `.doc-header` 样式 - - `display: flex` - 横向布局 - - `justify-content: space-between` - 两端对齐 - - `border-bottom: 2px solid #e5e7eb` - 底部分隔线 - - `padding-bottom: 12px` - 底部内边距 - -**数据结构变更**: -```javascript -// 删除 -const priceDoc = ref({ - fileName: '某数据中心发电机组采购-报价表.xlsx', - generateTime: '2024-12-09 10:20:15', - fileSize: '2.1 MB', - amount: '¥2,850,000.00', - status: '已完成' -}) - -// 删除 -const modifyPrice = () => { - ElMessage.info('打开报价修改对话框') -} -``` - -### 📊 影响范围 - -**受影响的功能**: -- ✅ 文件提交模块 - 界面优化 -- ⚠️ 报价文件相关功能 - 已移除 - -**不受影响的功能**: -- ✅ 商务标书展示和操作 -- ✅ 技术标书展示和操作 -- ✅ 时间节点展示 -- ✅ 检查清单功能 -- ✅ 提交功能 - -### 🔄 迁移指南 - -如果您的代码中引用了报价文件相关功能,请进行以下调整: - -1. **移除报价文件引用** -```javascript -// 删除这些引用 -priceDoc.value -modifyPrice() -``` - -2. **更新文档数量** -```javascript -// 之前: 3个文件(商务标、技术标、报价文件) -// 现在: 2个文件(商务标、技术标) -``` - -3. **更新检查清单** -```javascript -// 如果检查清单中包含"报价文件核对",建议移除或调整 -``` - -### 🎯 优化效果 - -**优点**: -1. ✅ 界面更简洁,状态一目了然 -2. ✅ 减少了冗余信息 -3. ✅ 状态标签更突出 -4. ✅ 视觉层次更清晰 - -**注意事项**: -1. ⚠️ 如果业务需要报价文件,需要在其他地方展示 -2. ⚠️ 确保后端API不再返回报价文件数据 -3. ⚠️ 更新相关文档和测试用例 - -### 📝 文件变更清单 - -**修改的文件**: -- `FileSubmission.vue` (模板、脚本、样式) - -**修改的行数**: -- 删除: ~50 行 -- 新增: ~15 行 -- 修改: ~10 行 - -**代码差异**: -```diff -- 报价文件展示区域 (HTML) -- priceDoc 数据定义 (JavaScript) -- modifyPrice 函数 (JavaScript) -+ doc-header 容器 (HTML) -+ doc-header 样式 (CSS) -``` - -### 🧪 测试建议 - -1. **视觉测试** - - 检查状态标签是否正确显示在标题旁边 - - 确认分隔线是否正常显示 - - 验证标签尺寸是否合适 - -2. **功能测试** - - 测试预览、下载、重新生成按钮 - - 确认没有报价相关的错误 - - 验证其他功能正常工作 - -3. **响应式测试** - - 测试不同屏幕尺寸下的显示效果 - - 确保移动端显示正常 - -### 📸 截图对比 - -**优化前**: -- 状态标签在详情列表中 -- 报价文件占用额外空间 -- 信息密集度高 - -**优化后**: -- 状态标签在标题旁边,更醒目 -- 移除报价文件,界面更简洁 -- 信息层次更清晰 - ---- - -## v1.0.0 (2024-12-08) - -### 🎉 初始版本 - -- ✅ 实现文件提交模块 -- ✅ 实现开标信息模块 -- ✅ 实现结果公示模块 -- ✅ 集成到 BiddingView 页面 -- ✅ 完成文档编写 - ---- - -**维护者**: Cascade AI Assistant -**更新时间**: 2024-12-08 -**版本**: v1.1.0 diff --git a/江西城市生命线-可交互原型/frontend/src/components/project/检查清单编辑功能说明.md b/江西城市生命线-可交互原型/frontend/src/components/project/检查清单编辑功能说明.md deleted file mode 100644 index cc02bd39..00000000 --- a/江西城市生命线-可交互原型/frontend/src/components/project/检查清单编辑功能说明.md +++ /dev/null @@ -1,332 +0,0 @@ -# 检查清单编辑功能说明 - -## 📝 功能概述 - -文件提交模块的"提交前检查清单"现已支持完整的编辑功能,用户可以自定义检查项内容。 - -## ✨ 新增功能 - -### 1. **编辑检查项** ✏️ - -**操作方式**: -- 鼠标悬停在检查项上,显示"编辑"按钮 -- 点击"编辑"按钮 -- 检查项文本变为可编辑的输入框 -- 修改内容后按 `Enter` 或点击外部区域保存 - -**特点**: -- ✅ 即时编辑,无需额外对话框 -- ✅ 支持键盘快捷键(Enter 保存) -- ✅ 自动失焦保存 - -### 2. **删除检查项** 🗑️ - -**操作方式**: -- 鼠标悬停在检查项上,显示"删除"按钮 -- 点击"删除"按钮 -- 弹出确认对话框 -- 确认后删除该检查项 - -**特点**: -- ✅ 二次确认,防止误删 -- ✅ 自动更新完成度进度 -- ✅ 同步移除已勾选状态 - -**安全机制**: -```javascript -// 删除时会同时: -1. 从检查清单中移除 -2. 从已勾选项中移除 -3. 重新计算完成度 -``` - -### 3. **添加检查项** ➕ - -**操作方式**: -- 点击检查清单底部的"添加检查项"按钮 -- 在弹出的对话框中输入检查项内容 -- 设置是否为必须项(开关) -- 点击"确定"添加 - -**特点**: -- ✅ 支持自定义检查项内容 -- ✅ 可设置必须/非必须 -- ✅ 字数限制(最多50字) -- ✅ 实时显示字数统计 - -**对话框字段**: -| 字段 | 类型 | 说明 | -|------|------|------| -| 检查项 | 文本输入 | 最多50字,显示字数统计 | -| 是否必须 | 开关 | 开启后显示"必须"标签 | - -## 🎨 界面设计 - -### 检查项布局 - -``` -┌─────────────────────────────────────────────────┐ -│ ☑ 商务标完整性检查 [必须] [编辑] [删除] │ -│ ☑ 技术标完整性检查 [必须] [编辑] [删除] │ -│ ☑ 保证金缴纳凭证 [必须] [编辑] [删除] │ -│ ☐ 授权委托书签字盖章 [编辑] [删除] │ -│ │ -│ [+ 添加检查项] │ -└─────────────────────────────────────────────────┘ -``` - -### 交互效果 - -**默认状态**: -- 编辑/删除按钮半透明(opacity: 0.6) - -**鼠标悬停**: -- 背景色变浅 -- 编辑/删除按钮完全显示(opacity: 1) - -**编辑状态**: -- 文本变为输入框 -- 输入框宽度 300px -- 自动聚焦 - -## 🔧 技术实现 - -### 数据结构 - -```javascript -const checklistItems = ref([ - { - id: 1, - label: '商务标完整性检查', - required: true, // 是否必须 - editing: false // 是否正在编辑 - }, - // ... -]) -``` - -### 核心方法 - -#### 1. 编辑检查项 -```javascript -const editItem = (item) => { - item.editing = true // 切换为编辑状态 -} -``` - -#### 2. 删除检查项 -```javascript -const deleteItem = (id) => { - ElMessageBox.confirm('确定要删除这个检查项吗?', '提示', { - confirmButtonText: '确定', - cancelButtonText: '取消', - type: 'warning' - }).then(() => { - // 从列表中删除 - const index = checklistItems.value.findIndex(item => item.id === id) - checklistItems.value.splice(index, 1) - - // 从已选中项中移除 - const checkedIndex = checkedItems.value.indexOf(id) - checkedItems.value.splice(checkedIndex, 1) - - ElMessage.success('删除成功') - }) -} -``` - -#### 3. 添加检查项 -```javascript -const addNewItem = () => { - if (!newItemForm.value.label.trim()) { - ElMessage.warning('请输入检查项内容') - return - } - - checklistItems.value.push({ - id: nextItemId++, - label: newItemForm.value.label, - required: newItemForm.value.required, - editing: false - }) - - ElMessage.success('添加成功') - showAddItemDialog.value = false -} -``` - -## 📊 完成度计算 - -完成度会根据检查项的增删自动更新: - -```javascript -const checklistProgress = computed(() => { - return Math.round( - (checkedItems.value.length / checklistItems.value.length) * 100 - ) -}) -``` - -**示例**: -- 总共 7 项检查项 -- 已勾选 5 项 -- 完成度 = 5 / 7 × 100% ≈ 71% - -## 🎯 使用场景 - -### 场景 1: 自定义检查项 -项目经理可以根据不同项目的特点,添加特定的检查项。 - -**示例**: -``` -原有检查项: -- 商务标完整性检查 -- 技术标完整性检查 - -新增检查项: -- 环保资质证明 -- 安全生产许可证 -- 项目经理证书 -``` - -### 场景 2: 修改检查项描述 -根据实际情况,调整检查项的描述更加准确。 - -**示例**: -``` -修改前: 授权委托书签字盖章 -修改后: 法人授权委托书签字并加盖公章 -``` - -### 场景 3: 删除不适用的检查项 -某些检查项可能不适用于当前项目,可以删除。 - -**示例**: -``` -删除: 纸质文件打印装订 -原因: 本项目仅需电子投标 -``` - -## ⚠️ 注意事项 - -### 1. 数据持久化 -当前实现使用前端状态管理,刷新页面后修改会丢失。 - -**建议**: -- 集成后端 API,保存到数据库 -- 或使用 localStorage 本地存储 - -### 2. 必须项限制 -标记为"必须"的检查项建议不允许删除,或删除时给予警告。 - -**改进方案**: -```javascript -const deleteItem = (id) => { - const item = checklistItems.value.find(i => i.id === id) - - if (item.required) { - ElMessageBox.confirm( - '这是必须项,删除可能影响提交,确定要删除吗?', - '警告', - { type: 'warning' } - ).then(() => { - // 执行删除 - }) - } else { - // 正常删除 - } -} -``` - -### 3. 字数限制 -检查项内容限制在 50 字以内,确保界面美观。 - -### 4. ID 管理 -新增检查项使用递增 ID,确保唯一性。 - -```javascript -let nextItemId = 8 // 从现有最大 ID + 1 开始 -``` - -## 🎨 样式特点 - -### 1. 悬停效果 -```scss -.checklist-item { - &:hover { - background: #f3f4f6; // 背景变浅 - - .item-actions { - opacity: 1; // 按钮完全显示 - } - } -} -``` - -### 2. 添加按钮 -```scss -.add-item-btn { - width: 100%; - border-style: dashed; // 虚线边框 - - &:hover { - border-color: #7c3aed; // 紫色边框 - color: #7c3aed; // 紫色文字 - } -} -``` - -### 3. 操作按钮 -```scss -.item-actions { - opacity: 0.6; // 默认半透明 - transition: opacity 0.2s; // 平滑过渡 -} -``` - -## 📸 效果展示 - -### 默认状态 -- 检查项正常显示 -- 操作按钮半透明 - -### 悬停状态 -- 背景色变浅 -- 操作按钮完全显示 - -### 编辑状态 -- 文本变为输入框 -- 可直接修改内容 - -### 添加对话框 -- 简洁的表单界面 -- 字数统计提示 -- 必须项开关 - -## 🚀 后续优化建议 - -1. **拖拽排序** - - 支持拖拽调整检查项顺序 - - 使用 `vue-draggable` 库 - -2. **批量操作** - - 批量删除 - - 批量设置必须项 - -3. **模板功能** - - 保存常用检查清单为模板 - - 快速应用模板 - -4. **历史记录** - - 记录修改历史 - - 支持撤销/重做 - -5. **权限控制** - - 不同角色有不同编辑权限 - - 普通用户只能查看,管理员可编辑 - ---- - -**版本**: v1.2.0 -**更新时间**: 2024-12-08 -**功能状态**: ✅ 已实现 diff --git a/江西城市生命线-可交互原型/frontend/src/components/project/流程步骤条说明.md b/江西城市生命线-可交互原型/frontend/src/components/project/流程步骤条说明.md deleted file mode 100644 index 6aa215a0..00000000 --- a/江西城市生命线-可交互原型/frontend/src/components/project/流程步骤条说明.md +++ /dev/null @@ -1,353 +0,0 @@ -# 项目流程步骤条说明 - -## 📍 功能概述 - -在文件提交模块顶部添加了项目信息头部和流程步骤条,清晰展示当前项目所处的阶段。 - -## 🎨 界面布局 - -### 1. 项目信息头部 - -``` -┌─────────────────────────────────────────────┐ -│ 某数据中心发电机组采购项目 │ -│ 创建时间:2024-11-20 09:30:00 [进行中] │ -└─────────────────────────────────────────────┘ -``` - -**特点**: -- 🎨 渐变紫色背景(#667eea → #764ba2) -- 📝 显示项目名称 -- 📅 显示创建时间 -- 🏷️ 显示项目状态标签 - -### 2. 流程步骤条 - -``` -招标信息提取 → 撰写投标文件 → 文件提交 → 开标 → 结果公示 - (完成) (完成) (进行中) (待进行) (待进行) - ✓ ✓ ⟳ 4 5 -``` - -**5个步骤**: -1. **招标信息提取** - 已完成 ✓ -2. **撰写投标文件** - 已完成 ✓ -3. **文件提交** - 进行中 ⟳ (当前) -4. **开标** - 待进行 -5. **结果公示** - 待进行 - -## 🎯 步骤状态 - -### 已完成步骤 -- **图标**: 绿色对勾 ✓ -- **颜色**: #10b981 (绿色) -- **描述**: "已完成" - -### 进行中步骤 (当前) -- **图标**: 紫色旋转加载图标 ⟳ -- **颜色**: #7c3aed (紫色) -- **描述**: "进行中" -- **动画**: 持续旋转 - -### 待进行步骤 -- **图标**: 数字序号 -- **颜色**: 默认灰色 -- **描述**: "待进行" - -## 💻 代码实现 - -### 模板结构 - -```vue - -``` - -### 样式实现 - -```scss -// 项目信息头部 -.project-header { - background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); - padding: 24px 32px; - border-radius: 12px; - margin-bottom: 24px; - color: white; - - h2 { - font-size: 24px; - font-weight: 600; - margin: 0 0 12px 0; - } - - .project-meta { - display: flex; - align-items: center; - gap: 16px; - font-size: 14px; - opacity: 0.95; - } -} - -// 流程步骤卡片 -.timeline-card { - margin-bottom: 24px; - - .project-timeline-header { - margin-bottom: 20px; - - h3 { - font-size: 18px; - font-weight: 600; - color: #1f2937; - margin: 0; - } - } - - :deep(.el-steps) { - .el-step__title { - font-size: 14px; - font-weight: 500; - } - - .el-step__description { - font-size: 12px; - } - - .el-step.is-process { - .el-step__title { - color: #7c3aed; - font-weight: 600; - } - } - - .rotating { - animation: rotate 2s linear infinite; - } - } -} - -// 旋转动画 -@keyframes rotate { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} -``` - -## 🎨 视觉效果 - -### 项目头部 -- **背景**: 渐变紫色(从 #667eea 到 #764ba2) -- **文字**: 白色 -- **圆角**: 12px -- **内边距**: 24px 32px - -### 步骤条 -- **对齐**: 居中对齐 -- **当前步骤**: 紫色高亮 -- **完成步骤**: 绿色对勾 -- **待进行**: 灰色数字 - -### 动画效果 -- **旋转图标**: 2秒一圈,无限循环 -- **平滑过渡**: 所有状态变化都有过渡效果 - -## 📊 步骤索引说明 - -```javascript -:active="2" // 当前激活的步骤索引(从0开始) -``` - -**索引对应**: -- 0 = 招标信息提取 -- 1 = 撰写投标文件 -- 2 = 文件提交 ← 当前 -- 3 = 开标 -- 4 = 结果公示 - -## 🔄 其他模块适配 - -### BiddingInfo.vue (开标信息) -```vue - - - - - - -``` - -### ResultAnnouncement.vue (结果公示) -```vue - - - - - - -``` - -## 💡 使用建议 - -### 1. 动态步骤索引 -根据项目实际进度动态设置 `active` 值: - -```javascript -const currentStepIndex = computed(() => { - const stepMap = { - '招标信息提取': 0, - '撰写投标文件': 1, - '文件提交': 2, - '开标': 3, - '结果公示': 4 - } - return stepMap[project.value.progress] || 0 -}) -``` - -### 2. 步骤点击跳转 -可以为步骤添加点击事件,实现快速跳转: - -```vue - - -``` - -### 3. 响应式设计 -在移动端可以使用垂直步骤条: - -```vue - - -``` - -## 🎯 优化建议 - -### 1. 步骤时间显示 -在描述中显示完成时间: - -```vue - - -``` - -### 2. 进度百分比 -在头部显示整体进度: - -```vue -
- 创建时间:{{ project.createTime }} - 整体进度:60% - -
-``` - -### 3. 步骤详情提示 -鼠标悬停显示步骤详情: - -```vue - - - -``` - -## 📸 效果预览 - -### 完整界面 -``` -┌─────────────────────────────────────────────────┐ -│ 某数据中心发电机组采购项目 │ -│ 创建时间:2024-11-20 09:30:00 [进行中] │ -└─────────────────────────────────────────────────┘ - -┌─────────────────────────────────────────────────┐ -│ 项目流程 │ -│ │ -│ ✓ ✓ ⟳ 4 5 │ -│ 招标信息 撰写投标 文件提交 开标 结果公示 │ -│ 提取 文件 │ -│ 已完成 已完成 进行中 待进行 待进行 │ -└─────────────────────────────────────────────────┘ - -┌─────────────────────────────────────────────────┐ -│ 已生成标书文件 │ -│ ... │ -└─────────────────────────────────────────────────┘ -``` - ---- - -**版本**: v1.3.0 -**更新时间**: 2024-12-08 -**功能状态**: ✅ 已实现 -**适用模块**: FileSubmission.vue diff --git a/江西城市生命线-可交互原型/frontend/src/components/project/集成示例.md b/江西城市生命线-可交互原型/frontend/src/components/project/集成示例.md deleted file mode 100644 index 2cbafb3c..00000000 --- a/江西城市生命线-可交互原型/frontend/src/components/project/集成示例.md +++ /dev/null @@ -1,335 +0,0 @@ -# 项目管理模块集成示例 - -## 在 BiddingView.vue 中集成项目详情组件 - -### 步骤 1: 导入组件 - -在 `BiddingView.vue` 的 ` -``` - -## 测试步骤 - -1. **启动开发服务器** - ```bash - cd frontend - npm run dev - ``` - -2. **访问页面** - - 打开浏览器访问 `http://localhost:5173` - - 进入招标助手系统 - - 点击左侧导航"项目管理" → "进行中项目" - -3. **测试功能** - - 点击任意项目卡片进入详情 - - 切换不同 Tab 查看各个模块 - - 测试文件提交模块的检查清单 - - 测试开标信息模块的报价对比表 - - 测试结果公示模块的三种结果类型切换 - -## 注意事项 - -1. **确保依赖已安装** - ```bash - npm install element-plus @element-plus/icons-vue - ``` - -2. **检查路径** - - 确保组件路径正确: `@/components/project/ProjectDetail.vue` - - 如果使用相对路径,根据实际情况调整 - -3. **样式冲突** - - 新组件的样式使用了 `scoped`,不会影响现有样式 - - 如有冲突,可以调整组件内的样式 - -4. **数据对接** - - 当前使用模拟数据 - - 实际使用时需要对接后端 API - - 参考 `src/api/project.js` 中的接口定义 - -## 后续优化建议 - -1. **性能优化** - - 使用虚拟滚动处理大量项目列表 - - 懒加载项目详情数据 - -2. **用户体验** - - 添加加载状态提示 - - 添加错误处理和重试机制 - - 实现数据缓存 - -3. **功能扩展** - - 添加项目搜索和筛选 - - 实现项目排序功能 - - 添加批量操作功能 - -4. **移动端适配** - - 优化移动端布局 - - 添加触摸手势支持 diff --git a/江西城市生命线-可交互原型/frontend/src/components/workflow/WorkflowEditor.vue b/江西城市生命线-可交互原型/frontend/src/components/workflow/WorkflowEditor.vue deleted file mode 100644 index 072cebce..00000000 --- a/江西城市生命线-可交互原型/frontend/src/components/workflow/WorkflowEditor.vue +++ /dev/null @@ -1,618 +0,0 @@ - - - - - diff --git a/江西城市生命线-可交互原型/frontend/src/main.js b/江西城市生命线-可交互原型/frontend/src/main.js deleted file mode 100644 index 5d8c9791..00000000 --- a/江西城市生命线-可交互原型/frontend/src/main.js +++ /dev/null @@ -1,20 +0,0 @@ -import { createApp } from 'vue' -import { createPinia } from 'pinia' -import ElementPlus from 'element-plus' -import 'element-plus/dist/index.css' -import * as ElementPlusIconsVue from '@element-plus/icons-vue' -import App from './App.vue' -import router from './router' -import './styles/main.scss' - -const app = createApp(App) - -// Register all Element Plus icons -for (const [key, component] of Object.entries(ElementPlusIconsVue)) { - app.component(key, component) -} - -app.use(createPinia()) -app.use(router) -app.use(ElementPlus) -app.mount('#app') diff --git a/江西城市生命线-可交互原型/frontend/src/router/index.js b/江西城市生命线-可交互原型/frontend/src/router/index.js deleted file mode 100644 index 4de0ba0b..00000000 --- a/江西城市生命线-可交互原型/frontend/src/router/index.js +++ /dev/null @@ -1,62 +0,0 @@ -import { createRouter, createWebHistory } from 'vue-router' -import ChatView from '@/views/ChatView.vue' - -const routes = [ - { - path: '/', - name: 'chat', - component: ChatView - }, - { - path: '/knowledge', - name: 'knowledge', - component: () => import('@/views/KnowledgeView.vue') - }, - { - path: '/apps', - name: 'apps', - component: () => import('@/views/AppsView.vue') - }, - { - path: '/workflow', - name: 'workflow', - component: () => import('@/views/WorkflowView.vue') - }, - { - path: '/service', - name: 'service', - component: () => import('@/views/ServiceView.vue') - }, - { - path: '/bidding', - name: 'bidding', - component: () => import('@/views/BiddingView.vue') - }, - { - path: '/hazard', - name: 'hazard', - component: () => import('@/views/HazardView.vue') - }, - { - path: '/emergency', - name: 'emergency', - component: () => import('@/views/EmergencyView.vue') - }, - { - path: '/profile', - name: 'profile', - component: () => import('@/views/ProfileView.vue') - }, - { - path: '/admin', - name: 'admin', - component: () => import('@/views/AdminView.vue') - } -] - -const router = createRouter({ - history: createWebHistory(), - routes -}) - -export default router diff --git a/江西城市生命线-可交互原型/frontend/src/stores/agent.js b/江西城市生命线-可交互原型/frontend/src/stores/agent.js deleted file mode 100644 index 39640050..00000000 --- a/江西城市生命线-可交互原型/frontend/src/stores/agent.js +++ /dev/null @@ -1,91 +0,0 @@ -import { defineStore } from 'pinia' -import { ref, computed } from 'vue' - -export const useAgentStore = defineStore('agent', () => { - // 智能体列表 - const agents = ref([ - { - id: 'default', - name: '泰豪AI助手', - description: '通用AI智能助手,可以回答各类问题', - icon: '🤖', - color: '#7c3aed', - category: 'office', - usage: 25000 - }, - { - id: 'xiaohongshu', - name: '小红书文案生成', - description: '一键生成爆款小红书文案,支持多种风格,自动添加热门话题标签', - icon: '📕', - color: '#ff2442', - category: 'content', - usage: 12580 - }, - { - id: 'contract', - name: '泰豪合同助手', - description: '智能合同审核、条款分析、风险提示,提高合同处理效率', - icon: '📄', - color: '#7c3aed', - category: 'business', - usage: 8320 - }, - { - id: 'video', - name: '泰豪短视频助手', - description: '短视频脚本创作、文案优化、热门话题推荐', - icon: '🎬', - color: '#10b981', - category: 'content', - usage: 5640 - }, - { - id: 'email', - name: '邮件写作助手', - description: '商务邮件、会议邀请、工作汇报等各类邮件智能生成', - icon: '✉️', - color: '#6366f1', - category: 'office', - usage: 7230 - }, - { - id: 'translate', - name: '多语言翻译', - description: '支持中英日韩等多语言互译,专业术语精准翻译', - icon: '🌐', - color: '#14b8a6', - category: 'office', - usage: 11200 - } - ]) - - // 当前选中的智能体ID - const currentAgentId = ref('default') - - // 当前智能体 - const currentAgent = computed(() => { - return agents.value.find(a => a.id === currentAgentId.value) || agents.value[0] - }) - - // 设置当前智能体 - const setCurrentAgent = (agentId) => { - const agent = agents.value.find(a => a.id === agentId) - if (agent) { - currentAgentId.value = agentId - } - } - - // 添加新智能体 - const addAgent = (agent) => { - agents.value.push(agent) - } - - return { - agents, - currentAgentId, - currentAgent, - setCurrentAgent, - addAgent - } -}) diff --git a/江西城市生命线-可交互原型/frontend/src/stores/chat.js b/江西城市生命线-可交互原型/frontend/src/stores/chat.js deleted file mode 100644 index 75653635..00000000 --- a/江西城市生命线-可交互原型/frontend/src/stores/chat.js +++ /dev/null @@ -1,99 +0,0 @@ -import { defineStore } from 'pinia' -import { ref } from 'vue' -import axios from 'axios' - -const api = axios.create({ - baseURL: '/api', - timeout: 30000 -}) - -export const useChatStore = defineStore('chat', () => { - const messages = ref([]) - const isLoading = ref(false) - const currentSession = ref(null) - - // Mock responses for when backend is not available - const mockResponses = { - '城市生命线': '城市生命线是指城市中维持城市正常运转的关键基础设施系统,包括供水、供电、供气、通信、交通等系统。这些系统如同城市的"生命线",一旦发生故障,将对城市运行和居民生活产生重大影响。', - '关键设施': '城市生命线关键设施包括:\n1. 供水系统:水厂、管网、加压站\n2. 供电系统:变电站、配电网\n3. 供气系统:门站、调压站、管网\n4. 通信系统:基站、光纤网络\n5. 交通系统:道路、桥梁、隧道', - '消防安全': '消防安全隐患常见问题及处理措施:\n1. 消防通道堵塞 - 立即清理,保持畅通\n2. 灭火器过期 - 及时更换检修\n3. 电气线路老化 - 专业检测更换\n4. 易燃物品堆放 - 规范存储管理\n5. 消防设施损坏 - 定期检查维护', - '排水': '如何平衡排水能力和生态环境保护:\n1. 采用海绵城市理念,增加透水面积\n2. 建设生态调蓄池,减缓雨水径流\n3. 推广透水铺装,促进雨水下渗\n4. 保护自然水系,维护生态平衡\n5. 雨污分流改造,提高污水处理效率' - } - - const getMockResponse = (input) => { - for (const [key, value] of Object.entries(mockResponses)) { - if (input.includes(key)) { - return value - } - } - return `您好!关于"${input}"的问题,我正在为您查询相关资料。作为城市生命线智能助手,我可以帮助您:\n\n1. 查询城市生命线相关知识\n2. 识别潜在安全隐患\n3. 编制应急预案\n4. 撰写公文报告\n\n请问还有什么可以帮助您的?` - } - - const sendMessage = async (content) => { - isLoading.value = true - try { - const response = await api.post('/chat/send', { - content, - role: 'user', - sessionId: currentSession.value - }) - return response.data - } catch (error) { - console.log('Backend not available, using mock response') - // Return mock response when backend is not available - return { - id: Date.now().toString(), - content: getMockResponse(content), - role: 'assistant', - timestamp: new Date().toISOString() - } - } finally { - isLoading.value = false - } - } - - const getHistory = async () => { - try { - const response = await api.get('/chat/history') - messages.value = response.data - return response.data - } catch (error) { - console.log('Backend not available') - return [] - } - } - - const getSuggestions = async () => { - try { - const response = await api.get('/chat/suggestions') - return response.data - } catch (error) { - return [ - '城市生命线关键设施有哪些?', - '消防安全隐患常见问题以及处理措施有哪些?', - '如何平衡排水能力和生态环境保护?' - ] - } - } - - const newChat = async () => { - try { - await api.post('/chat/new') - messages.value = [] - currentSession.value = Date.now().toString() - } catch (error) { - messages.value = [] - currentSession.value = Date.now().toString() - } - } - - return { - messages, - isLoading, - currentSession, - sendMessage, - getHistory, - getSuggestions, - newChat - } -}) diff --git a/江西城市生命线-可交互原型/frontend/src/stores/workflow.js b/江西城市生命线-可交互原型/frontend/src/stores/workflow.js deleted file mode 100644 index 002abb27..00000000 --- a/江西城市生命线-可交互原型/frontend/src/stores/workflow.js +++ /dev/null @@ -1,140 +0,0 @@ -import { defineStore } from 'pinia' -import { ref, computed } from 'vue' - -export const useWorkflowStore = defineStore('workflow', () => { - // 节点列表 - const nodes = ref([]) - - // 连接线列表 - const connections = ref([]) - - // 选中的节点ID - const selectedNodeId = ref(null) - - // 节点ID计数器 - let nodeIdCounter = 1 - - // 节点类型定义 - const nodeTypes = [ - { type: 'start', label: '开始', icon: '▶', color: '#10b981', category: 'control' }, - { type: 'end', label: '结束', icon: '⏹', color: '#ef4444', category: 'control' }, - { type: 'llm', label: 'LLM 模型', icon: '🤖', color: '#7c3aed', category: 'ai' }, - { type: 'knowledge', label: '知识库', icon: '📚', color: '#3b82f6', category: 'ai' }, - { type: 'condition', label: '条件判断', icon: '⋔', color: '#f59e0b', category: 'logic' }, - { type: 'code', label: '代码执行', icon: '{ }', color: '#6366f1', category: 'logic' }, - { type: 'http', label: 'HTTP 请求', icon: '🌐', color: '#14b8a6', category: 'integration' }, - { type: 'variable', label: '变量赋值', icon: '𝑥=', color: '#8b5cf6', category: 'logic' }, - { type: 'template', label: '模板转换', icon: '📝', color: '#ec4899', category: 'transform' }, - { type: 'loop', label: '循环', icon: '↻', color: '#f97316', category: 'logic' } - ] - - // 添加节点 - const addNode = (type, position) => { - const nodeType = nodeTypes.find(n => n.type === type) - if (!nodeType) return null - - const newNode = { - id: `node_${nodeIdCounter++}`, - type: type, - label: nodeType.label, - icon: nodeType.icon, - color: nodeType.color, - x: position.x, - y: position.y, - width: 180, - height: 60, - inputs: type !== 'start' ? [{ id: 'in_1', label: '输入' }] : [], - outputs: type !== 'end' ? [{ id: 'out_1', label: '输出' }] : [] - } - - nodes.value.push(newNode) - return newNode - } - - // 更新节点位置 - const updateNodePosition = (nodeId, x, y) => { - const node = nodes.value.find(n => n.id === nodeId) - if (node) { - node.x = x - node.y = y - } - } - - // 删除节点 - const deleteNode = (nodeId) => { - const index = nodes.value.findIndex(n => n.id === nodeId) - if (index > -1) { - nodes.value.splice(index, 1) - // 删除相关连接 - connections.value = connections.value.filter( - c => c.sourceNodeId !== nodeId && c.targetNodeId !== nodeId - ) - } - if (selectedNodeId.value === nodeId) { - selectedNodeId.value = null - } - } - - // 添加连接 - const addConnection = (sourceNodeId, sourcePortId, targetNodeId, targetPortId) => { - // 检查是否已存在相同连接 - const exists = connections.value.some( - c => c.sourceNodeId === sourceNodeId && - c.sourcePortId === sourcePortId && - c.targetNodeId === targetNodeId && - c.targetPortId === targetPortId - ) - if (exists) return null - - const newConnection = { - id: `conn_${Date.now()}`, - sourceNodeId, - sourcePortId, - targetNodeId, - targetPortId - } - connections.value.push(newConnection) - return newConnection - } - - // 删除连接 - const deleteConnection = (connectionId) => { - const index = connections.value.findIndex(c => c.id === connectionId) - if (index > -1) { - connections.value.splice(index, 1) - } - } - - // 选中节点 - const selectNode = (nodeId) => { - selectedNodeId.value = nodeId - } - - // 清空画布 - const clearCanvas = () => { - nodes.value = [] - connections.value = [] - selectedNodeId.value = null - nodeIdCounter = 1 - } - - // 获取节点 - const getNode = (nodeId) => { - return nodes.value.find(n => n.id === nodeId) - } - - return { - nodes, - connections, - selectedNodeId, - nodeTypes, - addNode, - updateNodePosition, - deleteNode, - addConnection, - deleteConnection, - selectNode, - clearCanvas, - getNode - } -}) diff --git a/江西城市生命线-可交互原型/frontend/src/styles/main.scss b/江西城市生命线-可交互原型/frontend/src/styles/main.scss deleted file mode 100644 index 752bc42e..00000000 --- a/江西城市生命线-可交互原型/frontend/src/styles/main.scss +++ /dev/null @@ -1,72 +0,0 @@ -* { - margin: 0; - padding: 0; - box-sizing: border-box; -} - -html, body { - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; - font-size: 14px; - line-height: 1.5; - color: #333; - background-color: #f5f5f5; -} - -:root { - --primary-color: #7c3aed; - --primary-light: #a78bfa; - --primary-dark: #5b21b6; - --sidebar-bg: #4a1d7e; - --sidebar-hover: rgba(255, 255, 255, 0.1); - --sidebar-active: rgba(255, 255, 255, 0.2); - --text-white: #ffffff; - --text-gray: #9ca3af; - --border-color: #e5e7eb; - --card-bg: #ffffff; - --shadow: 0 2px 8px rgba(0, 0, 0, 0.1); -} - -// Scrollbar styles -::-webkit-scrollbar { - width: 6px; - height: 6px; -} - -::-webkit-scrollbar-track { - background: transparent; -} - -::-webkit-scrollbar-thumb { - background: #d1d5db; - border-radius: 3px; - - &:hover { - background: #9ca3af; - } -} - -// Input styles -input, textarea { - font-family: inherit; - font-size: inherit; -} - -// Button reset -button { - border: none; - background: none; - cursor: pointer; - font-family: inherit; - font-size: inherit; -} - -// Link reset -a { - text-decoration: none; - color: inherit; -} - -// List reset -ul, ol { - list-style: none; -} diff --git a/江西城市生命线-可交互原型/frontend/src/views/AdminView.vue b/江西城市生命线-可交互原型/frontend/src/views/AdminView.vue deleted file mode 100644 index 3b1669b2..00000000 --- a/江西城市生命线-可交互原型/frontend/src/views/AdminView.vue +++ /dev/null @@ -1,4051 +0,0 @@ - - - - - diff --git a/江西城市生命线-可交互原型/frontend/src/views/AgentChatView.vue b/江西城市生命线-可交互原型/frontend/src/views/AgentChatView.vue deleted file mode 100644 index 94fb5305..00000000 --- a/江西城市生命线-可交互原型/frontend/src/views/AgentChatView.vue +++ /dev/null @@ -1,453 +0,0 @@ - - - - - diff --git a/江西城市生命线-可交互原型/frontend/src/views/AppsView.vue b/江西城市生命线-可交互原型/frontend/src/views/AppsView.vue deleted file mode 100644 index a4b4225c..00000000 --- a/江西城市生命线-可交互原型/frontend/src/views/AppsView.vue +++ /dev/null @@ -1,473 +0,0 @@ - - - - - diff --git a/江西城市生命线-可交互原型/frontend/src/views/BiddingView.vue b/江西城市生命线-可交互原型/frontend/src/views/BiddingView.vue deleted file mode 100644 index da51dbff..00000000 --- a/江西城市生命线-可交互原型/frontend/src/views/BiddingView.vue +++ /dev/null @@ -1,18847 +0,0 @@ - - - - - diff --git a/江西城市生命线-可交互原型/frontend/src/views/ChatView.vue b/江西城市生命线-可交互原型/frontend/src/views/ChatView.vue deleted file mode 100644 index b3dc4596..00000000 --- a/江西城市生命线-可交互原型/frontend/src/views/ChatView.vue +++ /dev/null @@ -1,899 +0,0 @@ - - - - - diff --git a/江西城市生命线-可交互原型/frontend/src/views/EmergencyView.vue b/江西城市生命线-可交互原型/frontend/src/views/EmergencyView.vue deleted file mode 100644 index 28392b0c..00000000 --- a/江西城市生命线-可交互原型/frontend/src/views/EmergencyView.vue +++ /dev/null @@ -1,179 +0,0 @@ - - - - - diff --git a/江西城市生命线-可交互原型/frontend/src/views/HazardView.vue b/江西城市生命线-可交互原型/frontend/src/views/HazardView.vue deleted file mode 100644 index fe7acb85..00000000 --- a/江西城市生命线-可交互原型/frontend/src/views/HazardView.vue +++ /dev/null @@ -1,180 +0,0 @@ - - - - - diff --git a/江西城市生命线-可交互原型/frontend/src/views/KnowledgeView.vue b/江西城市生命线-可交互原型/frontend/src/views/KnowledgeView.vue deleted file mode 100644 index d96e2fd3..00000000 --- a/江西城市生命线-可交互原型/frontend/src/views/KnowledgeView.vue +++ /dev/null @@ -1,202 +0,0 @@ - - - - - diff --git a/江西城市生命线-可交互原型/frontend/src/views/ProfileView.vue b/江西城市生命线-可交互原型/frontend/src/views/ProfileView.vue deleted file mode 100644 index eccafce0..00000000 --- a/江西城市生命线-可交互原型/frontend/src/views/ProfileView.vue +++ /dev/null @@ -1,276 +0,0 @@ - - - - - diff --git a/江西城市生命线-可交互原型/frontend/src/views/ServiceView.vue b/江西城市生命线-可交互原型/frontend/src/views/ServiceView.vue deleted file mode 100644 index 373d743b..00000000 --- a/江西城市生命线-可交互原型/frontend/src/views/ServiceView.vue +++ /dev/null @@ -1,2017 +0,0 @@ - - - - - diff --git a/江西城市生命线-可交互原型/frontend/src/views/WorkflowView.vue b/江西城市生命线-可交互原型/frontend/src/views/WorkflowView.vue deleted file mode 100644 index 715654e0..00000000 --- a/江西城市生命线-可交互原型/frontend/src/views/WorkflowView.vue +++ /dev/null @@ -1,88 +0,0 @@ - - - - - diff --git a/江西城市生命线-可交互原型/frontend/vite.config.js b/江西城市生命线-可交互原型/frontend/vite.config.js deleted file mode 100644 index 15a286ae..00000000 --- a/江西城市生命线-可交互原型/frontend/vite.config.js +++ /dev/null @@ -1,28 +0,0 @@ -import { defineConfig } from 'vite' -import vue from '@vitejs/plugin-vue' -import { resolve } from 'path' - -export default defineConfig({ - plugins: [vue()], - resolve: { - alias: { - '@': resolve(__dirname, 'src') - } - }, - define: { - __VUE_OPTIONS_API__: true, - __VUE_PROD_DEVTOOLS__: true, - __VUE_PROD_HYDRATION_MISMATCH_DETAILS__: true - }, - - server: { - port: 5173, - allowedHosts:['.trycloudflare.com','.ngrok-free.app','.cpolar.top','.cpolar.cn'], - proxy: { - '/api': { - target: 'http://localhost:8080', - changeOrigin: true - } - } - } -})