refactor: sync running-container source back to repo for reproducible docker compose build; remove dead code (orphan pipeline.py + 104 stale files from iterative dev) and drop unused app/ mirror dir
This commit is contained in:
1 parent
1346fbbd4b
commit
5d7f32db0a
138 files changed
+12846
-84248
No files matched your search
@@ -1,23 +0,0 @@
|
||||
-- G2: Code Execution Worker - Database Migration
|
||||
-- Creates code_exec_tasks table for tracking code execution tasks
|
||||
|
||||
CREATE TABLE IF NOT EXISTS code_exec_tasks (
|
||||
id VARCHAR(36) NOT NULL PRIMARY KEY COMMENT 'Task ID (UUID short)',
|
||||
language VARCHAR(20) NOT NULL DEFAULT 'python' COMMENT 'Programming language',
|
||||
code_preview VARCHAR(500) DEFAULT '' COMMENT 'First 200 chars of code for preview',
|
||||
status ENUM('running','completed','error','failed','cancelled') NOT NULL DEFAULT 'running' COMMENT 'Execution status',
|
||||
timeout_sec INT NOT NULL DEFAULT 30 COMMENT 'Timeout in seconds',
|
||||
exit_code INT DEFAULT NULL COMMENT 'Process exit code',
|
||||
execution_time_ms FLOAT DEFAULT 0 COMMENT 'Execution time in milliseconds',
|
||||
stdout MEDIUMTEXT COMMENT 'Standard output (max 50KB)',
|
||||
stderr MEDIUMTEXT COMMENT 'Standard error (max 50KB)',
|
||||
error_msg VARCHAR(2048) DEFAULT NULL COMMENT 'Error message if failed',
|
||||
truncated TINYINT(1) NOT NULL DEFAULT 0 COMMENT 'Whether output was truncated',
|
||||
created_at DATETIME NOT NULL COMMENT 'Task creation time',
|
||||
completed_at DATETIME DEFAULT NULL COMMENT 'Task completion time',
|
||||
INDEX idx_language (language),
|
||||
INDEX idx_status (status),
|
||||
INDEX idx_created_at (created_at),
|
||||
INDEX idx_lang_status (language, status)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
COMMENT='Code execution task records';
|
||||
@@ -1,62 +0,0 @@
|
||||
-- Phase G4: Distribution Builder - Database Migration
|
||||
-- Execute: docker exec -i qihu-aiflow-mysql mysql -uroot -ppwd2026 aiflow < mig_g4_distribution.sql
|
||||
|
||||
-- Table: distributions (发行版配置)
|
||||
CREATE TABLE IF NOT EXISTS `distributions` (
|
||||
`id` VARCHAR(64) NOT NULL,
|
||||
`name` VARCHAR(255) NOT NULL COMMENT '发行版名称',
|
||||
`description` TEXT COMMENT '发行版描述',
|
||||
`brand_name` VARCHAR(255) DEFAULT NULL COMMENT '品牌名称',
|
||||
`brand_logo_url` VARCHAR(1024) DEFAULT NULL COMMENT '品牌 Logo URL',
|
||||
`brand_color` VARCHAR(7) DEFAULT '#6366f1' COMMENT '品牌主色',
|
||||
`system_prompt` TEXT COMMENT '系统提示词',
|
||||
`provider` VARCHAR(100) DEFAULT 'siliconflow' COMMENT 'LLM 提供商',
|
||||
`model` VARCHAR(200) DEFAULT 'deepseek-ai/DeepSeek-V4-Flash' COMMENT '默认模型',
|
||||
`mcp_extensions` JSON COMMENT '捆绑的 MCP 扩展配置 [{id, name, cmd, args, envs, type, timeout}]',
|
||||
`workflow_ids` JSON COMMENT '捆绑的工作流 ID 列表 ["wf-001", "wf-002"]',
|
||||
`knowledge_base_ids` JSON COMMENT '捆绑的知识库 ID 列表',
|
||||
`agent_ids` JSON COMMENT '捆绑的 Agent ID 列表',
|
||||
`features` JSON COMMENT '功能特性 ["code_exec", "knowledge_search", "agent_collab"]',
|
||||
`config_json` JSON COMMENT '完整配置 JSON',
|
||||
`status` VARCHAR(20) NOT NULL DEFAULT 'draft' COMMENT '状态: draft/active/archived',
|
||||
`version` VARCHAR(20) DEFAULT '1.0.0' COMMENT '版本号',
|
||||
`download_count` INT DEFAULT 0 COMMENT '下载次数',
|
||||
`size_bytes` BIGINT DEFAULT 0 COMMENT '包大小(字节)',
|
||||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
INDEX `idx_distributions_status` (`status`),
|
||||
INDEX `idx_distributions_created` (`created_at`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- Table: distribution_licenses (发行版许可证)
|
||||
CREATE TABLE IF NOT EXISTS `distribution_licenses` (
|
||||
`id` VARCHAR(64) NOT NULL,
|
||||
`distribution_id` VARCHAR(64) NOT NULL COMMENT '关联发行版',
|
||||
`org_name` VARCHAR(255) NOT NULL COMMENT '被授权组织名称',
|
||||
`licensee_email` VARCHAR(255) DEFAULT NULL COMMENT '被授权人邮箱',
|
||||
`license_key` VARCHAR(128) NOT NULL COMMENT '许可证密钥 (HMAC-SHA256)',
|
||||
`features` JSON COMMENT '授权功能列表',
|
||||
`max_users` INT DEFAULT 10 COMMENT '最大用户数',
|
||||
`max_executions` INT DEFAULT 10000 COMMENT '最大执行次数',
|
||||
`usage_count` INT DEFAULT 0 COMMENT '已使用次数',
|
||||
`expiry_date` DATE DEFAULT NULL COMMENT '过期日期 (NULL=永不过期)',
|
||||
`status` VARCHAR(20) NOT NULL DEFAULT 'active' COMMENT '状态: active/revoked/expired',
|
||||
`metadata_json` JSON COMMENT '自定义元数据',
|
||||
`first_used_at` DATETIME DEFAULT NULL COMMENT '首次使用时间',
|
||||
`last_used_at` DATETIME DEFAULT NULL COMMENT '最后使用时间',
|
||||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_license_key` (`license_key`),
|
||||
INDEX `idx_licenses_distribution` (`distribution_id`),
|
||||
INDEX `idx_licenses_status` (`status`),
|
||||
INDEX `idx_licenses_expiry` (`expiry_date`),
|
||||
INDEX `idx_licenses_org` (`org_name`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- Insert seed data: sample distributions
|
||||
INSERT INTO `distributions` (`id`, `name`, `description`, `brand_name`, `brand_color`, `provider`, `model`, `features`, `status`) VALUES
|
||||
('distro-starter', 'Starter Edition', '基础版发行包,适合个人开发者和小团队', 'AI Starter', '#6366f1', 'siliconflow', 'deepseek-ai/DeepSeek-V4-Flash', '["chat", "code_exec"]', 'active'),
|
||||
('distro-enterprise', 'Enterprise Edition', '企业版发行包,包含完整 MCP 生态 + Agent 协作', 'AI Enterprise', '#f59e0b', 'siliconflow', 'deepseek-ai/DeepSeek-V4-Flash', '["chat", "code_exec", "knowledge_search", "agent_collab"]', 'active'),
|
||||
('distro-devops', 'DevOps Edition', 'DevOps 专用发行包,CI/CD + 代码审查 + 部署', 'AI DevOps', '#10b981', 'siliconflow', 'deepseek-ai/DeepSeek-V4-Flash', '["chat", "code_exec", "automation", "webhook"]', 'active');
|
||||
@@ -1,89 +0,0 @@
|
||||
-- Phase G5: Local Agent / Privacy Mode — Database Migration
|
||||
-- Tables: privacy_configs, offline_licenses, kb_sync_states, usage_reports
|
||||
-- Also: ALTER distributions ADD COLUMN privacy_mode
|
||||
|
||||
-- 1. Privacy Configurations (per-user privacy settings)
|
||||
CREATE TABLE IF NOT EXISTS privacy_configs (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
user_id VARCHAR(64) NOT NULL,
|
||||
agent_id VARCHAR(64) DEFAULT NULL COMMENT 'FK to market_apps.id',
|
||||
privacy_mode ENUM('local', 'cloud', 'hybrid') NOT NULL DEFAULT 'cloud',
|
||||
local_llm_provider VARCHAR(64) DEFAULT NULL COMMENT 'ollama/vllm/localai',
|
||||
local_llm_model VARCHAR(128) DEFAULT NULL,
|
||||
local_llm_endpoint VARCHAR(256) DEFAULT NULL COMMENT 'http://localhost:11434',
|
||||
data_retention_days INT NOT NULL DEFAULT 30 COMMENT 'Local data retention period',
|
||||
anonymize_usage TINYINT(1) NOT NULL DEFAULT 1,
|
||||
sync_knowledge_bases JSON DEFAULT NULL COMMENT 'KB IDs to sync locally',
|
||||
sync_frequency ENUM('realtime', 'hourly', 'daily', 'manual') NOT NULL DEFAULT 'daily',
|
||||
last_sync_at DATETIME DEFAULT NULL,
|
||||
status ENUM('active', 'inactive', 'error') NOT NULL DEFAULT 'active',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
INDEX idx_privacy_user (user_id),
|
||||
INDEX idx_privacy_agent (agent_id),
|
||||
INDEX idx_privacy_mode (privacy_mode)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 2. Offline Licenses
|
||||
CREATE TABLE IF NOT EXISTS offline_licenses (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
license_key VARCHAR(256) NOT NULL UNIQUE COMMENT 'JWT token',
|
||||
user_id VARCHAR(64) NOT NULL,
|
||||
agent_id BIGINT DEFAULT NULL,
|
||||
device_fingerprint VARCHAR(256) DEFAULT NULL COMMENT 'SHA256 of machine-id + MAC',
|
||||
issued_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
expires_at DATETIME NOT NULL,
|
||||
last_validated_at DATETIME DEFAULT NULL,
|
||||
max_offline_days INT NOT NULL DEFAULT 7,
|
||||
is_active TINYINT(1) NOT NULL DEFAULT 1,
|
||||
revoked_reason VARCHAR(512) DEFAULT NULL,
|
||||
status ENUM('active', 'expired', 'revoked', 'pending') NOT NULL DEFAULT 'active',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
INDEX idx_ol_user (user_id),
|
||||
INDEX idx_ol_license (license_key),
|
||||
INDEX idx_ol_status (status),
|
||||
INDEX idx_ol_expires (expires_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 3. Knowledge Base Sync States
|
||||
CREATE TABLE IF NOT EXISTS kb_sync_states (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
user_id VARCHAR(64) NOT NULL,
|
||||
knowledge_base_id BIGINT NOT NULL COMMENT 'FK to knowledge_bases.id',
|
||||
local_version INT NOT NULL DEFAULT 0,
|
||||
remote_version INT NOT NULL DEFAULT 0,
|
||||
last_sync_at DATETIME DEFAULT NULL,
|
||||
sync_status ENUM('synced', 'syncing', 'pending', 'conflict', 'failed') NOT NULL DEFAULT 'pending',
|
||||
total_docs INT NOT NULL DEFAULT 0,
|
||||
synced_docs INT NOT NULL DEFAULT 0,
|
||||
sync_direction ENUM('push', 'pull', 'bidirectional') NOT NULL DEFAULT 'pull',
|
||||
error_message VARCHAR(1024) DEFAULT NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
INDEX idx_kbs_user (user_id),
|
||||
INDEX idx_kbs_kb (knowledge_base_id),
|
||||
INDEX idx_kbs_status (sync_status),
|
||||
UNIQUE KEY uk_user_kb (user_id, knowledge_base_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 4. Usage Reports (anonymized)
|
||||
CREATE TABLE IF NOT EXISTS usage_reports (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
user_hash VARCHAR(64) NOT NULL COMMENT 'SHA256 anonymized user ID',
|
||||
report_type ENUM('daily', 'weekly', 'monthly', 'realtime') NOT NULL DEFAULT 'daily',
|
||||
metrics JSON NOT NULL COMMENT 'Aggregated usage metrics',
|
||||
period_start DATETIME NOT NULL,
|
||||
period_end DATETIME NOT NULL,
|
||||
is_anonymized TINYINT(1) NOT NULL DEFAULT 1,
|
||||
submitted_at DATETIME DEFAULT NULL COMMENT 'When local agent submitted',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
INDEX idx_ur_hash (user_hash),
|
||||
INDEX idx_ur_type (report_type),
|
||||
INDEX idx_ur_period (period_start, period_end)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 5. Add privacy_mode to distributions table
|
||||
ALTER TABLE distributions
|
||||
ADD COLUMN IF NOT EXISTS privacy_mode ENUM('local', 'cloud', 'hybrid') NOT NULL DEFAULT 'cloud'
|
||||
COMMENT 'Deployment mode for distribution' AFTER status;
|
||||
@@ -1,66 +0,0 @@
|
||||
-- Phase 4: IM Bot Integration - Migration SQL
|
||||
-- Creates: im_bot_routes, im_bot_langbot_config, im_bot_daily_stats
|
||||
-- Alters: channels.platform ENUM to add personal_wechat, wecom
|
||||
|
||||
-- 1. Extend channels platform ENUM to include personal_wechat and wecom
|
||||
ALTER TABLE channels
|
||||
MODIFY COLUMN platform ENUM(
|
||||
'feishu', 'wechat', 'dingtalk', 'whatsapp', 'telegram', 'slack',
|
||||
'personal_wechat', 'wecom'
|
||||
) NOT NULL;
|
||||
|
||||
-- 2. IM Bot Routing Rules - map channels to agents with filters
|
||||
CREATE TABLE IF NOT EXISTS im_bot_routes (
|
||||
id VARCHAR(36) NOT NULL PRIMARY KEY,
|
||||
channel_id VARCHAR(36) NOT NULL COMMENT 'FK to channels.id',
|
||||
agent_id VARCHAR(64) DEFAULT NULL COMMENT 'FK to market_apps.id (VARCHAR(36))',
|
||||
route_name VARCHAR(100) NOT NULL DEFAULT 'default',
|
||||
match_type ENUM('all', 'keyword', 'regex', 'sender') NOT NULL DEFAULT 'all',
|
||||
match_pattern TEXT DEFAULT NULL COMMENT 'Keyword list or regex pattern',
|
||||
priority INT NOT NULL DEFAULT 0 COMMENT 'Higher = matched first',
|
||||
fallback_agent_id VARCHAR(64) DEFAULT NULL,
|
||||
is_active TINYINT(1) NOT NULL DEFAULT 1,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
INDEX idx_route_channel (channel_id),
|
||||
INDEX idx_route_agent (agent_id),
|
||||
INDEX idx_route_active (is_active, priority)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 3. LangBot Gateway Configuration
|
||||
CREATE TABLE IF NOT EXISTS im_bot_langbot_config (
|
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
name VARCHAR(100) NOT NULL DEFAULT 'default',
|
||||
gateway_url VARCHAR(500) NOT NULL COMMENT 'LangBot API base URL',
|
||||
api_key VARCHAR(255) DEFAULT NULL COMMENT 'LangBot REST API key',
|
||||
webhook_secret VARCHAR(255) DEFAULT NULL COMMENT 'HMAC-SHA256 signing secret',
|
||||
bot_uuid VARCHAR(100) DEFAULT NULL COMMENT 'LangBot HTTP Bot UUID',
|
||||
callback_url VARCHAR(500) DEFAULT NULL COMMENT 'Our callback URL for LangBot responses',
|
||||
sync_channels TINYINT(1) NOT NULL DEFAULT 0 COMMENT 'Auto-sync channels to LangBot',
|
||||
status ENUM('active', 'inactive', 'error') NOT NULL DEFAULT 'inactive',
|
||||
last_sync_at DATETIME DEFAULT NULL,
|
||||
last_error TEXT DEFAULT NULL,
|
||||
config_json JSON DEFAULT NULL COMMENT 'Additional LangBot configuration',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 4. Daily Statistics per Channel
|
||||
CREATE TABLE IF NOT EXISTS im_bot_daily_stats (
|
||||
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
channel_id VARCHAR(36) NOT NULL,
|
||||
stat_date DATE NOT NULL,
|
||||
messages_in INT NOT NULL DEFAULT 0,
|
||||
messages_out INT NOT NULL DEFAULT 0,
|
||||
unique_users INT NOT NULL DEFAULT 0,
|
||||
avg_response_time_ms INT NOT NULL DEFAULT 0,
|
||||
error_count INT NOT NULL DEFAULT 0,
|
||||
tokens_used INT NOT NULL DEFAULT 0,
|
||||
UNIQUE KEY uk_channel_date (channel_id, stat_date),
|
||||
INDEX idx_stat_date (stat_date)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 5. Insert default LangBot config
|
||||
INSERT INTO im_bot_langbot_config (name, gateway_url, status)
|
||||
VALUES ('default', 'http://localhost:5300', 'inactive')
|
||||
ON DUPLICATE KEY UPDATE name = name;
|
||||
Reference in new issue
Block a user