Phase 8 Task 4: AI 能力增强

- 创建 ai_manager.py - AI 能力增强管理模块
  - 自定义模型训练(领域特定实体识别)
  - 多模态大模型集成(GPT-4V、Claude 3、Gemini、Kimi-VL)
  - 智能摘要与问答(基于知识图谱的 RAG)
  - 预测性分析(趋势预测、异常检测、实体增长、关系演变)

- 更新 schema.sql - 添加 AI 能力增强相关数据库表
  - custom_models, training_samples
  - multimodal_analyses
  - kg_rag_configs, rag_queries
  - smart_summaries
  - prediction_models, prediction_results

- 更新 main.py - 添加 30+ 个 AI 相关 API 端点
  - 自定义模型管理(创建、训练、预测)
  - 多模态分析
  - 知识图谱 RAG
  - 智能摘要
  - 预测模型(创建、训练、预测、反馈)

- 创建 test_phase8_task4.py - 测试脚本
- 更新 README.md 和 STATUS.md
This commit is contained in:
OpenClaw Bot
2026-02-26 00:10:10 +08:00
parent 911e891451
commit c38f3eb467
6 changed files with 3785 additions and 177 deletions

View File

@@ -1406,3 +1406,320 @@ CREATE INDEX IF NOT EXISTS idx_retention_tenant ON data_retention_policies(tenan
CREATE INDEX IF NOT EXISTS idx_retention_type ON data_retention_policies(resource_type);
CREATE INDEX IF NOT EXISTS idx_retention_jobs_policy ON data_retention_jobs(policy_id);
CREATE INDEX IF NOT EXISTS idx_retention_jobs_status ON data_retention_jobs(status);
-- ============================================
-- Phase 8 Task 7: 全球化与本地化
-- ============================================
-- 翻译表
CREATE TABLE IF NOT EXISTS translations (
id TEXT PRIMARY KEY,
key TEXT NOT NULL,
language TEXT NOT NULL,
value TEXT NOT NULL,
namespace TEXT DEFAULT 'common',
context TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
is_reviewed INTEGER DEFAULT 0,
reviewed_by TEXT,
reviewed_at TIMESTAMP,
UNIQUE(key, language, namespace)
);
-- 语言配置表
CREATE TABLE IF NOT EXISTS language_configs (
code TEXT PRIMARY KEY,
name TEXT NOT NULL,
name_local TEXT NOT NULL,
is_rtl INTEGER DEFAULT 0,
is_active INTEGER DEFAULT 1,
is_default INTEGER DEFAULT 0,
fallback_language TEXT,
date_format TEXT,
time_format TEXT,
datetime_format TEXT,
number_format TEXT,
currency_format TEXT,
first_day_of_week INTEGER DEFAULT 1,
calendar_type TEXT DEFAULT 'gregorian'
);
-- 数据中心表
CREATE TABLE IF NOT EXISTS data_centers (
id TEXT PRIMARY KEY,
region_code TEXT NOT NULL UNIQUE,
name TEXT NOT NULL,
location TEXT NOT NULL,
endpoint TEXT NOT NULL,
status TEXT DEFAULT 'active',
priority INTEGER DEFAULT 1,
supported_regions TEXT DEFAULT '[]',
capabilities TEXT DEFAULT '{}',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 租户数据中心映射表
CREATE TABLE IF NOT EXISTS tenant_data_center_mappings (
id TEXT PRIMARY KEY,
tenant_id TEXT NOT NULL UNIQUE,
primary_dc_id TEXT NOT NULL,
secondary_dc_id TEXT,
region_code TEXT NOT NULL,
data_residency TEXT DEFAULT 'regional',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (tenant_id) REFERENCES tenants(id) ON DELETE CASCADE,
FOREIGN KEY (primary_dc_id) REFERENCES data_centers(id),
FOREIGN KEY (secondary_dc_id) REFERENCES data_centers(id)
);
-- 本地化支付方式表
CREATE TABLE IF NOT EXISTS localized_payment_methods (
id TEXT PRIMARY KEY,
provider TEXT NOT NULL UNIQUE,
name TEXT NOT NULL,
name_local TEXT DEFAULT '{}',
supported_countries TEXT DEFAULT '[]',
supported_currencies TEXT DEFAULT '[]',
is_active INTEGER DEFAULT 1,
config TEXT DEFAULT '{}',
icon_url TEXT,
display_order INTEGER DEFAULT 0,
min_amount REAL,
max_amount REAL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 国家配置表
CREATE TABLE IF NOT EXISTS country_configs (
code TEXT PRIMARY KEY,
code3 TEXT NOT NULL,
name TEXT NOT NULL,
name_local TEXT DEFAULT '{}',
region TEXT NOT NULL,
default_language TEXT NOT NULL,
supported_languages TEXT DEFAULT '[]',
default_currency TEXT NOT NULL,
supported_currencies TEXT DEFAULT '[]',
timezone TEXT NOT NULL,
calendar_type TEXT DEFAULT 'gregorian',
date_format TEXT,
time_format TEXT,
number_format TEXT,
address_format TEXT,
phone_format TEXT,
vat_rate REAL,
is_active INTEGER DEFAULT 1
);
-- 时区配置表
CREATE TABLE IF NOT EXISTS timezone_configs (
id TEXT PRIMARY KEY,
timezone TEXT NOT NULL UNIQUE,
utc_offset TEXT NOT NULL,
dst_offset TEXT,
country_code TEXT NOT NULL,
region TEXT NOT NULL,
is_active INTEGER DEFAULT 1
);
-- 货币配置表
CREATE TABLE IF NOT EXISTS currency_configs (
code TEXT PRIMARY KEY,
name TEXT NOT NULL,
name_local TEXT DEFAULT '{}',
symbol TEXT NOT NULL,
decimal_places INTEGER DEFAULT 2,
decimal_separator TEXT DEFAULT '.',
thousands_separator TEXT DEFAULT ',',
is_active INTEGER DEFAULT 1
);
-- 租户本地化设置表
CREATE TABLE IF NOT EXISTS localization_settings (
id TEXT PRIMARY KEY,
tenant_id TEXT NOT NULL UNIQUE,
default_language TEXT DEFAULT 'en',
supported_languages TEXT DEFAULT '["en"]',
default_currency TEXT DEFAULT 'USD',
supported_currencies TEXT DEFAULT '["USD"]',
default_timezone TEXT DEFAULT 'UTC',
default_date_format TEXT,
default_time_format TEXT,
default_number_format TEXT,
calendar_type TEXT DEFAULT 'gregorian',
first_day_of_week INTEGER DEFAULT 1,
region_code TEXT DEFAULT 'global',
data_residency TEXT DEFAULT 'regional',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (tenant_id) REFERENCES tenants(id) ON DELETE CASCADE
);
-- 本地化相关索引
CREATE INDEX IF NOT EXISTS idx_translations_key ON translations(key);
CREATE INDEX IF NOT EXISTS idx_translations_lang ON translations(language);
CREATE INDEX IF NOT EXISTS idx_translations_ns ON translations(namespace);
CREATE INDEX IF NOT EXISTS idx_dc_region ON data_centers(region_code);
CREATE INDEX IF NOT EXISTS idx_dc_status ON data_centers(status);
CREATE INDEX IF NOT EXISTS idx_tenant_dc ON tenant_data_center_mappings(tenant_id);
CREATE INDEX IF NOT EXISTS idx_payment_provider ON localized_payment_methods(provider);
CREATE INDEX IF NOT EXISTS idx_payment_active ON localized_payment_methods(is_active);
CREATE INDEX IF NOT EXISTS idx_country_region ON country_configs(region);
CREATE INDEX IF NOT EXISTS idx_tz_country ON timezone_configs(country_code);
CREATE INDEX IF NOT EXISTS idx_locale_settings_tenant ON localization_settings(tenant_id);
-- ============================================
-- Phase 8 Task 4: AI 能力增强
-- ============================================
-- 自定义模型表
CREATE TABLE IF NOT EXISTS custom_models (
id TEXT PRIMARY KEY,
tenant_id TEXT NOT NULL,
name TEXT NOT NULL,
description TEXT,
model_type TEXT NOT NULL, -- custom_ner, multimodal, summarization, prediction
status TEXT DEFAULT 'pending', -- pending, training, ready, failed, archived
training_data TEXT DEFAULT '{}',
hyperparameters TEXT DEFAULT '{}',
metrics TEXT DEFAULT '{}',
model_path TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
trained_at TIMESTAMP,
created_by TEXT NOT NULL,
FOREIGN KEY (tenant_id) REFERENCES tenants(id) ON DELETE CASCADE
);
-- 训练样本表
CREATE TABLE IF NOT EXISTS training_samples (
id TEXT PRIMARY KEY,
model_id TEXT NOT NULL,
text TEXT NOT NULL,
entities TEXT DEFAULT '[]', -- JSON: [{"start": 0, "end": 5, "label": "PERSON", "text": "..."}]
metadata TEXT DEFAULT '{}',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (model_id) REFERENCES custom_models(id) ON DELETE CASCADE
);
-- 多模态分析表
CREATE TABLE IF NOT EXISTS multimodal_analyses (
id TEXT PRIMARY KEY,
tenant_id TEXT NOT NULL,
project_id TEXT NOT NULL,
provider TEXT NOT NULL, -- gpt-4-vision, claude-3, gemini-pro-vision, kimi-vl
input_type TEXT NOT NULL, -- image, video, audio, mixed
input_urls TEXT DEFAULT '[]',
prompt TEXT NOT NULL,
result TEXT DEFAULT '{}',
tokens_used INTEGER DEFAULT 0,
cost REAL DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (tenant_id) REFERENCES tenants(id) ON DELETE CASCADE,
FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
);
-- 知识图谱 RAG 配置表
CREATE TABLE IF NOT EXISTS kg_rag_configs (
id TEXT PRIMARY KEY,
tenant_id TEXT NOT NULL,
project_id TEXT NOT NULL,
name TEXT NOT NULL,
description TEXT,
kg_config TEXT DEFAULT '{}', -- 知识图谱配置
retrieval_config TEXT DEFAULT '{}', -- 检索配置
generation_config TEXT DEFAULT '{}', -- 生成配置
is_active INTEGER DEFAULT 1,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (tenant_id) REFERENCES tenants(id) ON DELETE CASCADE,
FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
);
-- RAG 查询记录表
CREATE TABLE IF NOT EXISTS rag_queries (
id TEXT PRIMARY KEY,
rag_id TEXT NOT NULL,
query TEXT NOT NULL,
context TEXT DEFAULT '{}',
answer TEXT NOT NULL,
sources TEXT DEFAULT '[]',
confidence REAL DEFAULT 0,
tokens_used INTEGER DEFAULT 0,
latency_ms INTEGER DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (rag_id) REFERENCES kg_rag_configs(id) ON DELETE CASCADE
);
-- 智能摘要表
CREATE TABLE IF NOT EXISTS smart_summaries (
id TEXT PRIMARY KEY,
tenant_id TEXT NOT NULL,
project_id TEXT NOT NULL,
source_type TEXT NOT NULL, -- transcript, entity, project
source_id TEXT NOT NULL,
summary_type TEXT NOT NULL, -- extractive, abstractive, key_points, timeline
content TEXT NOT NULL,
key_points TEXT DEFAULT '[]',
entities_mentioned TEXT DEFAULT '[]',
confidence REAL DEFAULT 0,
tokens_used INTEGER DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (tenant_id) REFERENCES tenants(id) ON DELETE CASCADE,
FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
);
-- 预测模型表
CREATE TABLE IF NOT EXISTS prediction_models (
id TEXT PRIMARY KEY,
tenant_id TEXT NOT NULL,
project_id TEXT NOT NULL,
name TEXT NOT NULL,
prediction_type TEXT NOT NULL, -- trend, anomaly, entity_growth, relation_evolution
target_entity_type TEXT,
features TEXT DEFAULT '[]',
model_config TEXT DEFAULT '{}',
accuracy REAL,
last_trained_at TIMESTAMP,
prediction_count INTEGER DEFAULT 0,
is_active INTEGER DEFAULT 1,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (tenant_id) REFERENCES tenants(id) ON DELETE CASCADE,
FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
);
-- 预测结果表
CREATE TABLE IF NOT EXISTS prediction_results (
id TEXT PRIMARY KEY,
model_id TEXT NOT NULL,
prediction_type TEXT NOT NULL,
target_id TEXT,
prediction_data TEXT DEFAULT '{}',
confidence REAL DEFAULT 0,
explanation TEXT,
actual_value TEXT,
is_correct INTEGER,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (model_id) REFERENCES prediction_models(id) ON DELETE CASCADE
);
-- AI 能力增强相关索引
CREATE INDEX IF NOT EXISTS idx_custom_models_tenant ON custom_models(tenant_id);
CREATE INDEX IF NOT EXISTS idx_custom_models_type ON custom_models(model_type);
CREATE INDEX IF NOT EXISTS idx_custom_models_status ON custom_models(status);
CREATE INDEX IF NOT EXISTS idx_training_samples_model ON training_samples(model_id);
CREATE INDEX IF NOT EXISTS idx_multimodal_tenant ON multimodal_analyses(tenant_id);
CREATE INDEX IF NOT EXISTS idx_multimodal_project ON multimodal_analyses(project_id);
CREATE INDEX IF NOT EXISTS idx_kg_rag_tenant ON kg_rag_configs(tenant_id);
CREATE INDEX IF NOT EXISTS idx_kg_rag_project ON kg_rag_configs(project_id);
CREATE INDEX IF NOT EXISTS idx_rag_queries_rag ON rag_queries(rag_id);
CREATE INDEX IF NOT EXISTS idx_smart_summaries_tenant ON smart_summaries(tenant_id);
CREATE INDEX IF NOT EXISTS idx_smart_summaries_project ON smart_summaries(project_id);
CREATE INDEX IF NOT EXISTS idx_prediction_models_tenant ON prediction_models(tenant_id);
CREATE INDEX IF NOT EXISTS idx_prediction_models_project ON prediction_models(project_id);
CREATE INDEX IF NOT EXISTS idx_prediction_results_model ON prediction_results(model_id);