-
- ai_op_queue: staging table for AI write ops (draft|confirmed|executed|failed|cancelled) - ProposeWriteTool.proposeUpdate(entity, record, field, newValue): self-resolves the entity master table (excludes viw_* report views), resolves field via 字段字典, locates the unique record + old value, stages a DRAFT to ai_op_queue — DOES NOT execute; returns a proposal - ErpClient.updateForm: executes via ERP addUpdateDelBusinessData with the frontend-compatible payload {data:[{sTable,name:master,column:[{handleType:update,sId,field:value}]}]} - OpController: deterministic (non-LLM) POST /op/{id}/confirm (executes + writes back status) / cancel / GET pending - AgentChatController.onToolExecuted: on proposeUpdate, attach conversation + push write_proposal SSE - chat.html: confirm/cancel card + result echo - system prompt: proposeUpdate flow; never claim a write is done before confirm Verified end-to-end: '把必胜客简称改成必胜客中国' -> proposal card -> confirm -> ERP update -> DB changed; cancel -> DB unchanged. Nothing executes without explicit user confirm. -
Roll L2 flow up to domain->domain adjacency (11 domains) with anchor forms, form/tool counts, and the matching AI-agent scene. This is the coarse L1 tier meant to live in the agent system prompt for routing; L2/L3 stay as on-demand tools. Domains align to ai_agent's 8 business 智能体 (+ 基础资料/设备/其他 -> ERP代理人).
-
Materialize each form's L2 neighbors (upstream/downstream documents) and L3 neighbors (referenced entity tables) so the retriever can expand a vector-recalled form-card into a subgraph context via a single JOIN. 702 forms have downstream, 476 upstream, 1467 reference entity tables.
-
Map 业务中文名 -> real column -> table (38342 mappings, 6075 terms, 539 tables), ranked by form-usage for same-name disambiguation, with FK target (sFkTable/sFkKey) attached from viw_kg_edge_ref so NL2SQL knows the join. This is the field-dictionary half of the GraphRAG package.
-
Assemble one structured, embeddable text card per form (1748) merging node metadata, upstream/downstream document names, and the field 中文名 list. export_form_cards.sh emits JSONL for vector-store ingestion (group_concat_max_len raised to avoid truncating 269-field forms). Generated corpus is gitignored — regenerate deterministically via script.
-
Parse gdsconfigformslave.sRelation (comma-separated field&table&pk&display hops) into FK edges: src_table.field -> tgt_table.pk, with the set of display columns each FK surfaces aggregated per edge. 1597 distinct FK edges / 368 source tables / 109 target tables (mostly ele*/sis* master data). Provides the join dictionary for NL2SQL grounding.
-
One row per useful form enriched with business domain (L1, derived from normalized data-source prefix + AI-scene override), data source/exec type, and upstream/downstream flow counts from viw_kg_edge_flow. 857 forms participate in document flow; 63 back an AI tool; 92% domain-classified.
-
Materialize source-form -->generate--> target-form flow edges from the low-code config. Resolves BtnCopyTo.<Action>.sActiveId to the target gdsmodule exactly as Sp_Ai_AddCommonAfterNew does (sActiveId is the real target; the .ActXxx suffix is only a label). 411 distinct edges / 405 (src,tgt) pairs / 51 self-loops; 404 endpoints hit viw_ai_useful_forms. Captures full order-to-cash and procure-to-pay chains plus cross-domain (order->workorder, quote->process-card).