共享底座 platform/
全产品共享的 Go monorepo 底座(module zy_action),按职责分层:治理核心 / AI 核心 / 数据核心 / 调度核心 / 运维核心 / 基础类型。底座只抽多实现处的接口(LLMProvider、Connector、VectorStore),单一实现业务逻辑直白实现。
底座五大关键机制
1. Connector 工厂 allow-list + ExecWrite 写执行
platform/connector/factory.go:CreateConnector 默认仅放行 MYSQL / SQLSERVER / POSTGRESQL 三类基础数据库;其余类型(如 SQLITE)需 AllowAdvancedTypes("SQLITE") 显式授权(多次调用为累加语义)。这是"高级数据库访问许可"门槛,防止未授权类型被随意接入。
连接器接口在只读查询之上增加写执行能力(ExecWrite),供 Foundry Action 写路径回写源系统使用(写权限治理见 Foundry 写路径)。当前已注册实现:POSTGRESQL、SQLITE(纯 Go glebarez 驱动)。
2. Audit 泛化事件模型(ref_type / ref_id / step_type)
platform/audit/audit.go:AuditService.LogEventRef 在基础事件上追加三列泛化引用,供各产品统一落底座审计,例如 Foundry Action 写路径:
LogEventRef(ctx, userID, eventType,
refType = "ontology_action", // 引用类型
refID = "update_order_status", // 引用对象(api_name)
stepType = "ACTION_EXECUTE", // 流水线步骤
actionDetails, result)
语义分层:audit 记"人做了什么操作"(含 who/when/prior state),Gotham 另设 event_log 记"系统事件流"(互补不替代)。异步队列(4 worker)落库,不阻塞业务。
3. LLM 网关降级链(deepseek → qwen → local_rule)
platform/llm/:在 LLMService 接口之上增量构建多 Provider 路由(不新建第二套路由层)。Gateway 维护:多 Provider 池(带权重)、配置驱动路由表(task → 降级链)、健康检查 + 熔断(CircuitBreaker)、用量/成本统计(UsageRecorder)。
| Provider | Kind | 角色 |
|---|---|---|
| deepseek-v4-flash | openai_compatible | 主力(默认模型) |
| qwen(dashscope qwen-plus) | openai_compatible | 备用国产降级 |
| local_rule | local_rule | 本地规则兜底(无网络调用) |
熔断时返回降级结果并置 degraded=true(契约③)。
4. Vector 三后端自动降级(milvus → turbovec → disk)+ V5 增强
platform/vector/factory.go:NewVectorStore 按配置选择后端,milvus/turbovec 先做 Health 检查,失败自动降级为 disk 并打警告日志,保证单机无外部服务也能跑通。disk 实现为磁盘向量引擎(余弦相似度 Top-K 检索)。V5(B5-4)接口增 UpsertBatch / QueryWithFilter / DeleteByDoc / Count 四方法并三实现补齐,支撑知识索引批量写入、文档级删除与检索过滤。
5. 国密 SM3 / SM2(emmansun/gmsm,CGO_ENABLED=0 兼容)
platform/crypto/:内建国密实现(emmansun/gmsm v0.44.1,纯 Go,兼容 CGO_ENABLED=0)。SM3:内容哈希/digest(Apollo bundle 文件校验、单调版本判据);SM2:签名与验签(bundle 整体签名、signer 公钥指纹)。设计上支持 mode: guomi/standard 双模式,Swift 全链路 P5 落地。
V5 新增底座能力(2026-08-29/30)
6. 统一调度器 scheduler / 异步任务系统 task / 资源 URI resource
platform/scheduler/:消除各产品自建 cron 欠账,scheduler_jobs(注册表,name UNIQUE/spec/enabled/next_run_at)+ scheduler_runs(运行记录)双表;支持 Register/Unregister/Enable/Start/Stop/RunOnce/ListJobs/ListRuns,6 段/5 段 spec 与 @every/@daily 描述符,SkipIfStillRunning 防重入 + panic recover。AIP 工作流 cron、Foundry 管道 cron_expr、审计归档、记忆清理、CDC 轮询等全部迁移接入。
platform/task/:异步任务系统,tasks 表五态(queued/running/success/failed/cancelled)+ progress/result JSON;Submit/Restore/Cancel/Get/List/RegisterRunner/Stop,worker 池默认并发 5,进度回调节流(500ms/Δ0.01);服务重启自动恢复中断任务。元数据导入、评测运行、数据管道、数据接入等长耗时操作全部任务化。REST:AIP /api/v1/tasks、Foundry /api/v1/system/tasks(gin 通配符冲突规避)。
platform/resource/:跨产品统一资源 URI(14 类 kind,<kind>://<product>/<id>[?sub] 格式),Parse/Generate/FileSafeName/IsValidKind 纯函数,为跨产品互操作打基础。
7. CDC 数据变更捕获与事件订阅(platform/cdc)
cdc_watchers + cdc_events 双表:轮询比对(首轮 snapshot;COUNT+max(watermark) 比对 → insert/update 检出;delete 摘要降级;无水位列仅 COUNT),EventBus Subscribe/Publish(落表 + 内存分发),调度经 scheduler(@every Ns 钳制 5s)。REST:/api/v1/cdc/watchers CRUD + poll + /api/v1/cdc/events,挂 AIP/Foundry/Gotham 三产品。Foundry 流规则(stream)即消费 CDC 事件触发动作。
8. Vector 向量增强(批量写入 / 过滤 / 删除 / 计数)
platform/vector 接口新增 4 方法(UpsertBatch / QueryWithFilter / DeleteByDoc / Count),三实现补齐:disk 全功能(元数据过滤、边界感知 uri 前缀删除)、milvus 原生 filter + 降级标注、turbovec 批量/搜索 filter/count/delete_by_doc 新端点。消费适配:AIP knowledge 索引批量写入、文档重索引 DeleteByDoc(doc://aip/<id> 前缀)、NLQ metadata 通道 QueryWithFilter(data_source 过滤)。
9. License 授权自检(platform/license)
GET /api/v1/license/info 返回机器码 + 有效期(force=1 强制在线重校验,否则 TTL 缓存);PUT /api/v1/license/auth-key(admin)写 AUTH_KEY 并清缓存。AIP 过期按宽限档(6h+随机 2h)/硬关档(20min+随机 10min)自动关停并结束其它产品进程;Swift 独立内建授权自检:启动立即校验 + 每 30 分钟在线校验(nonce+crypt_data 协议),不满足优雅退出本产品不影响其它产品。
10. 可观测性 monitoring / 通知中心 notify / 会话记忆
monitoring(foundry 包,AIP 同款):轻量 Prometheus 文本格式 /metrics(无鉴权)——HTTP 请求量/时延、LLM 网关命中与熔断状态、task 队列深度、scheduler 运行计数;gin 中间件 + BootstrapSummary 启动自检日志(tables_migrated/llm_routes/scheduler_jobs/task_queue)。notify:统一通知中心 Hub/Channel/Send,内置 emailChannel,AIP 注册 feishu 渠道;GET /notify/channels、POST /notify/send。会话记忆(AIP nlq):anl_conversation_memory 表 + Context/Append,编排器注入记忆上下文,GET|DELETE /chat/sessions/:sid/memory + GET /chat/sessions。
TestOpenAPIContractRoutes 对 openapi spec 与 gin 路由双向对拍,白名单未扩大。底座包逐个详解
config — 配置加载
- 职责:YAML 配置 + 环境变量加载 + 密钥处理;无 config.yaml 时 LLM key 从环境变量读取;SECRET_KEY 过弱自动 fallback 补默认值(防配置归零/Token 立即过期)。
- 关键类型:
Config(Server/Database/LLM/VectorStore/Audit 等子配置),VectorStoreConfig{Backend, MilvusURI, TurbovecURL, DiskPath}。 - 要点:基于 viper;demo 演示服务器默认端口在 cmd 层固定(AIP 18080)。
database — 统一数据库访问与自动迁移
- 职责:PostgreSQL / SQLite 统一访问(GORM)+ AutoMigrate 自动迁移。bootstrap 逻辑:PG 优先(
chatbi_action_dev,DB_* 环境变量),连接失败自动降级 SQLite(各产品 temp/*_platform.db)。 - 要点:GORM struct 需固定
TableName(),避免 DropTable 与 GORM 表名不一致;SQLite 需先 ensureDir 创建目录(否则 "unable to open database file")。
logger — 结构化日志
- 职责:log/slog 结构化日志 + trace_id;lumberjack 滚动落盘
logs/app.log(单文件最大 10MB、保留 5 份、28 天)。 - 要点:Gotham 图存储等模块注入
plog.Logger保持 trace 贯通。
settings — 系统设置存取
- 职责:系统级设置键值存储(SettingRepository),供 RLS 策略判定等读取。
security — 认证安全与行/列级安全
- 职责:JWT Token 解析(
ParseToken)、口令校验、AuthorizeUser真实 RBAC 授权、RLS/CLS 行/列级安全注入、PII 脱敏。 - 要点:写操作不适用 SQL 改写(对 DELETE/UPDATE 做 WHERE 级 RLS 注入会静默扩大/缩小影响范围),写侧走 Foundry Action 写路径安全流水线(记录级权限,非 SQL 改写)。
auth — 认证服务
- 职责:
AuthService:注册/登录(POST /api/v1/auth/register|login)、Token 签发;login 返回 Bearer token 供后续 JWT 鉴权。 - V5(B3-6):TOTP 双因子认证(RFC 6238,hmac-sha1 + Base32,30s 窗口 ±1)——setup→verify-enable→登录要求
totp_code(MFA_REQUIRED错误码)→disable;表auth_mfa_secrets。
rbac — 角色权限控制
- 职责:
RBACService:用户-角色-权限关联、资源级权限判定(IsUserAdmin等)、操作审计联动;预留 ABAC 扩展点(Gotham 在其上做基础门)。
audit — 统一操作审计
- 职责:
AuditService:LogEvent/LogEventRef(泛化 ref 三列)+GetAuditLogs;异步队列 worker 落库。 - 要点:泛化事件模型(ref_type/ref_id/step_type)供 AIP(NLQ_QUERY、ai_decision 分步)、Foundry(ACTION_EXECUTE、MCP_TOOL_CALL)、Apollo(DEPLOYMENT_SYNC/DRIFT_*)、Gotham(ABAC trace)统一落底座。V5(B3-7):审计归档任务
audit:archive(0 3 * * * 归档超 90 天)+GET|PUT /audit/archive-config。
llm — LLM 网关
- 职责:多 Provider 路由/降级/熔断/成本统计。文件:types / client / provider / circuit_breaker / gateway / service / usage / handler。
- 接口:
Provider(Name/Kind/Available/CheckHealth/Chat/ChatSimple/Stream/ModelName/BaseURL/Cost);LLMService之上Gateway增量实现;GatewayOptions{MaxFailures, Cooldown, ProviderCost}。 - REST:
POST /api/v1/llm/chat(契约③,Swift 风控/Apollo 告警诊断消费)。
connector — 连接器工厂
- 职责:
Connector接口(查询/写执行)+ 工厂CreateConnector;allow-list 白名单 +AllowAdvancedTypes显式授权 +RegisterConnector注册实现。 - 已实现:POSTGRESQL、SQLITE(glebarez 纯 Go,测试含 exec_write、sqlite_integration)。
- 要点:
ConnectorProvider按数据源 id 建连接器,供 Foundry 语义查询真实执行与 Action 回写共用。
datasource — 数据源与元数据服务
- 职责:
DataSourceService(数据源 CRUD/测试)、MetadataGenerationService(LLM 生成表/列语义元数据)、ConnectorCacheService(5 分钟连接器缓存)、DataCatalogService(统一元数据目录)。 - 要点:导入元数据前按
table_schema_id清理旧 columns/tables,防止残留表名误导 RAG;AIP 演示数据由 bootstrap 重建 demo SQLite。
vector — 统一向量引擎
- 职责:
VectorStore接口抽象,三后端milvus(RESTful 客户端,默认)/turbovec(自研 server)/disk(磁盘保底);milvus/turbovec Health 失败自动降级 disk。 - 要点:Milvus 本机不可用时自动落到 disk,保证单机无外部服务可跑通。
crypto — 国密算法
- 职责:SM3 哈希、SM2 签名/验签(emmansun/gmsm,纯 Go,兼容
CGO_ENABLED=0);mode: guomi/standard双模式设计。 - 消费方:Apollo bundle 签名验签与 signer 指纹、Gotham 连接配置加密(AES-256-GCM)、Swift 星上全链路(P5)。
ierr — 统一错误模型
- 职责:
InsightLinkError{Code, Status, Detail};各产品 server 统一errorResponse将 ierr 转 HTTP JSON(AIP 用{error, code},Foundry/Apollo/Gotham 用{code, error})。
model — GORM 数据模型
- 职责:平台表模型(User / Role / UserRole / RolePermission / RowLevelSecurityPolicy / AuditLog / DataSource / DataCatalog 等)。
domain — 领域对象
- 职责:跨层领域类型,如
ConnectionConfigSchema(连接器配置 Schema,供工厂创建实例)。
repository — 仓储层
- 职责:
crud包,GORM 数据访问:NewUserRepository / NewRoleRepository / NewAuditLogRepository / NewSettingRepository等,各产品 server 注入使用。
license — 授权与关停调度
- 职责:机器码 + 有效期展示;
ShutdownScheduler幂等调度授权过期自动关停(宽限档 6h+随机2h / 硬关档 20min+随机10min),到点由 AIP 结束其它产品进程后退出,保留 gateway。 - 要点:AUTH_KEY 仅在 AIP 配置校验;
/license/info返回 shutdown_scheduled / deadline / tier / reason(force=1强制在线重校验)。V5(B5-5 / Swift):Swift 独立内建授权自检(启动立即校验 + 每 30 分钟在线校验,nonce+crypt_data 协议,不满足优雅退出本产品);PUT /license/auth-key(admin)写密钥并清缓存。
mailer — SMTP 邮件发送
- 职责:纯标准库
net/smtp+crypto/tls邮件发送(SSL 465 / STARTTLS 25·587 / 明文,超时重试、HTML UTF-8、header 防注入),供工作流send_notification的 email 渠道与/email/test使用。
目录结构与分层
action/platform/
├── ierr/ model/ domain/ repository/ # 基础类型与仓储
├── config/ database/ logger/ settings/ # 运维核心
├── security/ auth/ rbac/ audit/ # 治理核心(含 auth TOTP MFA)
├── llm/ # AI 核心:网关降级链
├── connector/ datasource/ # 数据核心
├── vector/ # 向量引擎三后端(V5 批量/过滤/删除/计数)
├── scheduler/ task/ resource/ # V5 调度核心:统一调度/异步任务/资源 URI
├── cdc/ # V5 数据变更捕获与事件订阅
├── notify/ # V5 通知中心
├── license/ # 授权与关停调度(含 Swift 周期自检)
├── mailer/ # SMTP 邮件发送
└── crypto/ # 国密 SM3/SM2
/api/v1 再上 UI)。