-
- ErpClient: thin HTTP client to ERP xlyEntry; dev-login (/checklogin admin) mints+caches a real session token, auto re-login on session expiry (code=-2); reads getBusinessDataByFormcustomId (read-only params only, never bUpdate) - ErpReadTool.readFormData(formId,moduleId): reads a form's real rows, renders Chinese column labels from viw_kg_field_dict, first 10 rows + total count - wired into the agent (tools = findForms + readFormData); system prompt now describes the findForms->readFormData flow (still read-only, writes still 'under development') - application-saaslocal.yml: erp.baseurl -> local xlyEntry :8697 + dev-login creds Verified: '我们有多少客户' -> agent finds the form, reads 92 real customers, renders a clean Chinese table (name/category/salesperson/tax).
-
- ReActAgent: AiServices streaming tool-loop (replaces 8-scene SceneSelector path) - AgentConfig: single agent = streaming Ollama(qwen2.5:14b) + KgQueryTool + per-conversation memory + L1-domain system prompt - SystemPromptService: injects L1 domain map (viw_kg_domain) into system prompt; degrades gracefully if KG views missing - KgQueryTool.findForms: read-only form-catalog lookup over local viw_ai_useful_forms (global metadata, no tenant) — interim formId resolver - AgentChatController: POST /api/agent/chat SSE stream ({type:token|reset|done|error}); reset drops pre-tool-call narration - chat.html: consume the new SSE endpoint (streamed), per-page conversationId, drop TTS-borrow path - application-saaslocal.yml: add to worktree (was master-only untracked -> profile silently hit remote DB) Verified running (saaslocal, :8099): streaming chat, tool loop returns real forms, write requests correctly report 'under development'. -
…tions, standalone chat page, always user-present, designated model cloud/local, shared-DB multi-brand); backups recorded; formId deferred; refresh open-items
-
…rminal + reconcile on reconnect; manual stays sync
-
… terminal (no chaining), validate-only
-
…oposeWrite ends turn on draft
-
…nistic /op/{id}/confirm endpoint (not a tool) -
…lt); ERP real-time exec via /ai/execStaging + two link modes
-
…on dropped, form-level only via sAuthsId; Query security simplified
-
…Ai authorization layer; Read not permission-safe + param whitelist; invoke not backend-safe
-
…oseWrite covers mutating button-actions
-
… ERP procs, Query = ad-hoc-only
-
…; NL2SQL security pending investigation
-
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).