即时学习图书馆
使用和整合
图书馆暴露出两个独立的消耗成分:
LearningManagement——使学习管理全屏(镜树,学习,访问,改变历史).TeachMePlugin- 使 教我吧 教给我 弹出,一个AI辅助规则/学习创建界面. 可以自己搭车,任何地方.
安装 :
npm install @e-llm-studio/instant-learning
图书馆的工作没有创意工作空间. 它的内置范围树和
共享原件 @e-llm-studio/prompt-editor 默认使用。 主机可以覆盖
当需要特定主机行为时, 任一组件:
import {
CreativeWorkspaceAdapterProvider,
LearningManagement,
} from '@e-llm-studio/instant-learning';
<CreativeWorkspaceAdapterProvider value={{ TreeSidebar, AIPromptEditor }}>
<LearningManagement {...props} />
</CreativeWorkspaceAdapterProvider>
此适配器可选 。 在单簧管, cw-core 提供它从
组成根,因此即时学习和创造性工作空间保持独立.
1. 联合国. LearningManagement
渲染学习管理屏. 用这个 @tanstack/react-query 内部,所以 必须包裹在 QueryClientProvider 由消费者.
导入样本使用( S)
import LearningManagement from '@e-llm-studio/instant-learning';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
const queryClient = new QueryClient();
function App() {
return (
<QueryClientProvider client={queryClient}>
<LearningManagement
userDetails={userDetails} // logged-in user + access token
llmStudioUrl="https://devllmstudio.creativeworkspace.ai"
audacyBackendUrl="https://dev-audacy-traffic-manager.techo.camp"
config={config} // runtime config (BASE_URL, ASSISTANT_NAME, …)
rbacConfig={rbacConfig} // RBAC / AppSec identifiers
auditLogConfig={{ configId: '6a1825e9fb722c37637b9490' }}
ilLabels={{
setupLabel: 'Learning Setup',
ruleTitle: 'Learning Title',
ruleDescriptionTitle: 'Learning Description',
}}
app_integration_id="019eb639-8eca-715a-95c1-efe0ee237ecc"
backwardCompatibility={false}
cognitiveCompareCompatibility={false}
modeDetails={{
activeModeName: 'Instant Learning Mode',
modeNameFromURL: 'Instant Learning Mode',
submodeNameFromURL: '',
}}
/>
</QueryClientProvider>
);
}
道具
| Prop | 类型 | 需求 | 说明 |
|---|---|---|---|
userDetails | User | ✅ | 登录用户对象 。 必须包括 accessToken (用于所有 API 调用并作为 GraphQL ) userDetails (第1款). |
llmStudioUrl | string | ✅ | LLM Studio的基础URL;用于分级,IL实例和规则API. |
audacyBackendUrl | string | ✅ | 客户端/产品后端的基础URL. |
config | object (单位:千美元)any(中文(简体) ) | ✅ | 规则创建流程所消耗的运行时配置( E)BASE_URL, (中文(简体) ), BASE_WEBSOCKET_URL, (中文(简体) ), ASSISTANT_NAME, (中文(简体) ), ORGANIZATION_NAME, (中文(简体) ), CHAT_TITLE, (中文(简体) ), SOCKET_TIMEOUT(见a/c.5/49/70,附件). |
rbacConfig | RbacConfig | ✅ | 非洲区域局/阿普塞克识别标志: applicationName, (中文(简体) ), applicationId, (中文(简体) ), moduleId, (中文(简体) ), applicationModuleId, (中文(简体) ), applicationResourceId, (中文(简体) ), appsecRbacUrl, (中文(简体) ), appsecBaseUrl。驱动权限解析. |
auditLogConfig | AuditLogConfig | ✅ | 审计日志配置 - { configId: string }。 。 。 . |
ilLabels | { setupLabel; ruleTitle; ruleDescriptionTitle } | ✅ | 规则设置格式的标签覆盖( 需要全部三个字符串) . |
app_integration_id | string | * 可选* | 用于加载每个集成远程 JSON 配置的集成上下文( Q)dt()编号 :dtt() )和范围化的API调用. *在非后向相容模式中有效要求——没有它,远程配置不会加载. |
backwardCompatibility | boolean | 备选 | 启用遗留模式( 遗留创建模式, 遗留继承 API) 。 默认 false。 。 。 . |
cognitiveCompareCompatibility | boolean | 备选 | 允许认知对比行为. 默认 false。 。 。 . |
modeId | string | 备选 | 模式标识符传递到布局/规则内容. |
modeDetails | { activeModeName; modeNameFromURL; submodeNameFromURL } | 备选 | 用于基模命名的活性模式元数据. |
说明: 何时
backwardCompatibility={false},屏幕从远程配置中读取其标签/对话框app_integration_id使用dt()帮手 缺少的密钥会回到内置默认值 .
2. 联合国. TeachMePlugin
提供人工智能协助 教我吧 教给我 创造规则弹出。 与 LearningManagement,这个 自行提供 QueryClientProvider 内部 不需要额外包装.
导入样本使用( S)
import TeachMePlugin from '@e-llm-studio/instant-learning';
// Required config fields for TeachMePlugin
const configuration = {
BASE_URL: 'https://devllmstudio.creativeworkspace.ai',
BASE_WEBSOCKET_URL: 'wss://devllmstudio.creativeworkspace.ai/graphql',
ORGANIZATION_NAME: 'techolution',
ASSISTANT_NAME: 'preview',
};
function CreateLearningButton({ open, setOpen, token }) {
return (
<TeachMePlugin
app_integration_id="019ecbcf-98c9-71bb-a663-ea962085c118"
isOpen={open}
onClose={() => setOpen(false)}
token={token} // bearer token for API calls
mode="ADD" // "ADD" | "EDIT"
config={configuration} // required runtime config (see table below)
pluginPayload={{
initialScope: 'global', // {scope} value for titles
ruleSet: selectedRuleSet, // optional ruleset context
// renderer-specific context (Radio Traffic, etc.):
editingRule: null,
editingTier: null,
editingVariants: null,
// optionally inline the config instead of remote-loading:
// teachMe: { teachMe, template, learningManagement, agents },
// tiers: [...],
}}
/>
);
}
道具
| Prop | 类型 | 需求 | 说明 |
|---|---|---|---|
isOpen | boolean | ✅ | 控制弹出能见度. |
onClose | () => void | ✅ | 当对话框要求关闭时调用 . |
token | string | ✅ | API电话的接听器. |
mode | "ADD" | "EDIT" | ✅ | 弹出是否正在创建新的学习或编辑已有的学习 . |
config | object | ✅ | 聊天/聊天的运行时间配置 。 见 所需经费 config 字段 见下文. |
app_integration_id | string | * 可选* | 确定正确的渲染器模板和远程配置。 * 只能选择后相匹配模式;否则需要加载模板/配置. |
pluginPayload | Record<string, any> | 备选 | 自由形式数据直接传递到活性渲染器. 识别密钥 : initialScope (单位:千美元){scope} 数值, ruleSet, (中文(简体) ), tiers (直接设置等级)和 teachMe (单位:千美元){ teachMe, template, learningManagement, agents } 以内置配置代替远程装入。 任何其他密钥都会被传送到渲染器上(例如. editingRule, (中文(简体) ), editingTier, (中文(简体) ), editingVariants, (中文(简体) ), focusedVariantIndex, (中文(简体) ), triggerAddVariant, (中文(简体) ), triggerFixGaps, (中文(简体) ), copiedRule, (中文(简体) ), initialDraftMessage, (中文(简体) ), modeId) (中文(简体) ). |
| 外地 | 类型 | 需求 | 说明 |
|---|---|---|---|
BASE_URL | string | ✅ | LLM Studio Base URL;用于聊天/REST呼叫. |
BASE_WEBSOCKET_URL | string | ✅ | WebSocket (GraphQL) 直播聊天所使用的端点. |
ORGANIZATION_NAME | string | ✅ | 助手的组织标识符 . |
ASSISTANT_NAME | string | ✅ | 授权"教导我"的助手的名字. |
const configuration = {
BASE_URL: 'https://devllmstudio.creativeworkspace.ai',
BASE_WEBSOCKET_URL: 'wss://devllmstudio.creativeworkspace.ai/graphql',
ORGANIZATION_NAME: 'techolution',
ASSISTANT_NAME: 'preview',
};
模板分辨率 : 制造器从
template键pluginPayload.teachMe.template或远程配置)通过TemplateRegistry。未知值返回到"Default"。关于注册和完整的配置,见下文v17更改日志条目.
配置参考
两者 LearningManagement 财务报告和审定财务报表 TeachMePlugin 为: 完全由标签驱动。UI文本——标题、按钮、对话框副本、占位符——来自装入的 JSON 配置 appIntegrationId (或通过 pluginPayload.teachMe) (中文(简体) ). 值在运行时与 dt() (语文)和 dtt() 帮助者(TeachMe);任何缺失的密钥会回落到内置默认值,所以您只需要覆盖您想要更改的内容.
高层结构
{
"template": "Default",
"agents": { "LearningTerm": "Instruction" },
"teachMe": { "...": "TeachMe popup labels" },
"learningManagement": { "...": "Learning Management screen labels" }
}
| 密钥 | 类型 | 需求 | 说明 |
|---|---|---|---|
template | string | ✅ | 铸出者钥. 必须 用于应用任何自定义;必须与 TemplateRegistry 键"Default", (中文(简体) ), "Radio Traffic Learning", (中文(简体) ), "Guidelines"(中文(简体) ). 未知值返回到 "Default"。 。 。 . |
agents.LearningTerm | string | ❌ | 跨UI(如. "Instruction", (中文(简体) ), "Guideline") (中文(简体) ). |
teachMe | object | ❌ | 给老师的标签 见 teachMe 字段。 。 。 . |
learningManagement | object | ❌ | 学习管理屏幕的标签(图至 LMSConfig) (中文(简体) ). 见 learningManagement 字段。 。 。 . |
值支持的占位符 : {scope} 编号 : {scope_name} 编号 : {parent} (名称), {count} 编号 : {N} (计数), {variant_name} (同意/拒绝对话框), {rule_title} (可操作/残疾对话框). 它们在运行时被插入.
QQ 完整配置 JSON( 复制- 复制启动器) ——点击以扩展
{
"template": "Default",
"agents": {
"LearningTerm": "Instruction"
},
"teachMe": {
"welcomeMessage": "Hi! 👋 I'm your Instant Learning Concierge.",
"welcomeMessageSubtitle": "I can help you create and manage instructions.\nSelect an option below or type your requirement.",
"actions": [
{ "label": "Add new instruction", "value": "I would want to add a new Instruction" },
{ "label": "Update an instruction", "value": "I would want to edit an existing instruction" }
],
"chatTitle": "Teach Me ILOTJ - {scope} - Add Instruction",
"chatTitleEdit": "Teach Me ILOTJ - {scope} - Edit Instruction",
"chatTextareaPlaceholder": "Tell me about the instruction you want to create",
"formTitle": "Add Instruction",
"setupLabel": "Configure your IL",
"ruleTitle": "Main Instruction Name",
"scopeLabel": "Define Scope",
"tierLabel": "Select Tiers",
"ruleDescriptionTitle": "Explanation of the instruction",
"whenToApplyTitle": "Trigger Events (When to Apply)",
"addWhenToApplyBtnLabel": "Add WTA",
"whenNotToApplyTitle": "Exclusion Events (When NOT to Apply)",
"addWhenNotToApplyBtnLabel": "Add WNTA",
"configTitle": "Advanced Settings",
"saveBtnLabel": "Save Instruction",
"saveBtnLoadingLabel": "Saving Instruction...",
"showScope": false,
"showConfiguration": false
},
"learningManagement": {
"pageTitle": "Instruction Management",
"middleDrawer": {
"scope": "Scope",
"addScope": "Add Scope",
"addSubScope": "Add Subscope",
"subScope": "Subscope",
"treeMenu": {
"search": "Search for scopes",
"submenu": {
"learnings": "Instructions",
"access": "Access",
"changeHistory": "Change History"
},
"contextMenu": {
"addScope": "Add Scope",
"rename": "Rename",
"delete": "Delete {scope}",
"addSubScope": "Add SubScope"
}
},
"addScopeDialog": {
"title": "Add Scope",
"globalTitle": "Add Global Scope",
"subScopeTitle": "Add Subscope",
"subtitle": "This scope will be created under {parent} and will inherit its Learnings by default.",
"globalSubtitle": "This global scope defines base learnings that apply across all scopes.",
"subScopeSubtitle": "This subscope will be created under {parent} and will inherit its Learnings by default.",
"scopeName": "Scope Name",
"submitButton": "Create Scope",
"cancel": "Cancel",
"learningApprovalSettings": {
"title": "Instruction Approval Settings",
"approvalRequired": {
"title": "Approval Required before Publishing",
"subtitle": "Learnings require approval before publishing"
},
"publishWithoutApproval": {
"title": "Publish Without Approval",
"subtitle": "Instructions can be published directly"
}
}
},
"scopeDisplayLimit": {
"enabled": "true",
"count": "3",
"compactView": "true",
"applyToLevels": "",
"viewMoreText": "show {count} more...",
"title": "Stations",
"description": "Manage the stations assigned to the {scope} scope.",
"searchPlaceholder": "Search station...",
"onboardBtn": "Onboard a station",
"viewText": "View"
}
},
"learnings": {
"header": {
"title": "{scope} Instructions",
"exportButton": "Export",
"addNewLearningButton": "Add New Instruction"
},
"tier": {
"showTierHeader": true,
"tierHeader": "Tier",
"subtitle": "These are the system-wide instructions applied across all documents.",
"tierHeaderNoOfLearnings": "Instructions",
"deleteDialog": {
"title": "Delete Tier {N}?",
"description": "This will permanently delete all rules and variants under this tier, including any inherited rules. This action cannot be undone.",
"cancel": "Cancel",
"submit": "Yes, Delete"
},
"learning": {
"inheritance": "Inheritance",
"actions": {
"disable": "Disable",
"enable": "Enable",
"approve": "Approve All",
"reject": "Reject All",
"delete": "Delete"
},
"approveDialog": {
"title": "Approve Guideline",
"desc": "{variant_name} will be published and become active within the selected scope after approval.",
"footer": "Take a moment to check the configuration before moving forward.",
"cancel": "Cancel",
"approveLearning": "Approve Guideline"
},
"rejectDialog": {
"title": "Reject Guideline",
"desc": "{variant_name} will not be published or applied within the selected scope. You can provide feedback before rejecting.",
"feedbackTitle": "Feedback",
"feedbackPlaceholder": "Add feedback or reason for rejection",
"deleteCheckboxLabel": "Also delete this guideline",
"cancel": "Cancel",
"rejectLearning": "Reject Guideline"
},
"deleteDialog": {
"title": "Delete",
"desc": "Are you sure you want to delete this rule? This action cannot be undone.",
"warningText": "This will permanently delete the rule configuration.",
"cancelText": "Cancel",
"deleteText": "Delete"
}
}
}
},
"emptyStateLearning": {
"title": "No instructions have been added !",
"desc": "Start by adding instructions that should apply across all documents.",
"createNewLearning": "Create New Instruction",
"createGlobalScope": "Create Global Scope",
"noAccessTitle": "Access Restricted",
"noAccessDesc": "You do not have access for this application.",
"requestAccessButton": "Request Access",
"requestSentButton": "Request Sent"
}
}
}
teachMe 字段
驱动 Teach Me 弹出式的 LHS (发光, 动作快, 格式标签). 通过 dtt()。 。 。 .
"teachMe": {
"welcomeMessage": "Hi! 👋 I'm your Instant Learning Concierge.",
"welcomeMessageSubtitle": "I can help you create and manage instructions.\nSelect an option below or type your requirement.",
"actions": [
{ "label": "Add new instruction", "value": "I would want to add a new Instruction" },
{ "label": "Update an instruction", "value": "I would want to edit an existing instruction" }
],
"chatTitle": "Teach Me ILOTJ - {scope} - Add Instruction",
"chatTitleEdit": "Teach Me ILOTJ - {scope} - Edit Instruction",
"chatTextareaPlaceholder": "Tell me about the instruction you want to create",
"formTitle": "Add Instruction",
"setupLabel": "Configure your IL",
"ruleTitle": "Main Instruction Name",
"scopeLabel": "Define Scope",
"tierLabel": "Select Tiers",
"ruleDescriptionTitle": "Explanation of the instruction",
"whenToApplyTitle": "Trigger Events (When to Apply)",
"addWhenToApplyBtnLabel": "Add WTA",
"whenNotToApplyTitle": "Exclusion Events (When NOT to Apply)",
"addWhenNotToApplyBtnLabel": "Add WNTA",
"configTitle": "Advanced Settings",
"saveBtnLabel": "Save Instruction",
"saveBtnLoadingLabel": "Saving Instruction...",
"showScope": false,
"showConfiguration": false
}
| 外地 | 类型 | 说明 | 默认 |
|---|---|---|---|
welcomeMessage | string | 主打问候在聊天的顶端. | "Hi! 👋 I'm your Instant Learning Concierge." |
welcomeMessageSubtitle | string | 副标题下打招呼。 支助 标记 财务报告和审定财务报表 \n 换行. | "How would you like to get started?…" |
actions | Array<{ label, value }> | 快速动作按钮. label 是按钮文本; value 是在单击时发送给代理服务器的消息. | 6 个默认动作 |
chatTitle | string | 弹出标题 添加 模式。 支助 {scope}。 。 。 . | "Teach Me OTJ - {scope} - Add Learning" |
chatTitleEdit | string | 弹出标题 编辑 模式。 支助 {scope}。 。 。 . | "Teach Me OTJ - {scope} - Edit Learning" |
chatTextareaPlaceholder | string | 免费聊天文本区的占位符 . | "Tell me more about this learning.." |
formTitle | string | 内置规则格式部分的标题. | "Rule setup" |
setupLabel | string | 设置/配置区域的标签 . | "Configure your IL" |
ruleTitle | string | 规则/学习名称字段的标签 . | "Main Rule Name" |
scopeLabel | string | 瞄准镜选择器的标签 . | "Define Scope" |
tierLabel | string | 分级选择器的标签 . | "Select Tiers" |
ruleDescriptionTitle | string | 描述字段的标签 . | "Learning Explanation" |
whenToApplyTitle | string | 触发事件的标题 . | "Trigger Events (When to Apply)" |
addWhenToApplyBtnLabel | string | 按钮以添加"何时应用"条目. | "Add WTA" |
whenNotToApplyTitle | string | 排除事件的标题. | "Exclusion Events (When NOT to Apply)" |
addWhenNotToApplyBtnLabel | string | 按钮以添加"当不应用时"条目. | "Add WNTA" |
configTitle | string | 高级设置区域的标题 . | "Advanced Settings" |
saveBtnLabel | string | 保存按钮标签 . | "Save Rule" |
saveBtnLoadingLabel | string | 保存时保存按钮标签 . | "Saving Rule..." |
showScope | boolean | 是否显示范围选择部分 . | false |
showConfiguration | boolean | 是否显示高级配置部分 . | false |
learningManagement 字段
地图到 LMSConfig 并驱动学习管理屏幕。 通过 dt()下文按地区分类.
页中抽屉( M)
"learningManagement": {
"pageTitle": "Instruction Management",
"middleDrawer": {
"scope": "Scope",
"addScope": "Add Scope",
"addSubScope": "Add Subscope",
"subScope": "Subscope",
"treeMenu": {
"search": "Search for scopes",
"submenu": { "learnings": "Instructions", "access": "Access", "changeHistory": "Change History" },
"contextMenu": { "addScope": "Add Scope", "rename": "Rename", "delete": "Delete {scope}", "addSubScope": "Add SubScope" }
},
"addScopeDialog": {
"title": "Add Scope",
"subtitle": "This scope will be created under {parent} and will inherit its Learnings by default.",
"scopeName": "Scope Name",
"submitButton": "Create Scope",
"cancel": "Cancel",
"learningApprovalSettings": {
"title": "Instruction Approval Settings",
"approvalRequired": { "title": "Approval Required before Publishing", "subtitle": "Learnings require approval before publishing" },
"publishWithoutApproval": { "title": "Publish Without Approval", "subtitle": "Instructions can be published directly" }
}
},
"scopeDisplayLimit": {
"enabled": "true",
"count": "3",
"compactView": "true",
"applyToLevels": "",
"viewMoreText": "show {count} more...",
"title": "Stations",
"description": "Manage the stations assigned to the {scope} scope.",
"searchPlaceholder": "Search station...",
"onboardBtn": "Onboard a station",
"viewText": "View"
}
}
}
字段(路径 middleDrawer(中文(简体) ) | 类型 | 说明 |
|---|---|---|
pageTitle (兄弟的中间拖拉机) | string | 在 LMS 标题中显示标题 . |
scope | string | 当前范围的标题. |
addScope 编号 : addSubScope 编号 : subScope | string | 用于添加镜,添加子镜按钮和子镜节点的标签. |
treeMenu.search | string | 搜索范围树输入的占位符 . |
treeMenu.submenu.{learnings, access, changeHistory} | string | 树子菜单标签. |
treeMenu.contextMenu.{addScope, rename, delete, addSubScope} | string | 右键单击上下文菜单动作 . delete 支持 {scope}。 。 。 . |
addScopeDialog.title 编号 : globalTitle 编号 : subScopeTitle | string | 创建范围/ 全球范围/ 子范围的对话框标题 . subScopeTitle 打开对话框时使用 childType="SUBSCOPE"; 倒计时 middleDrawer.addSubScope 如果未设置. |
addScopeDialog.subtitle 编号 : globalSubtitle 编号 : subScopeSubtitle | string | 对话框字幕. 支助 {parent}。 。 。 . |
addScopeDialog.scopeName 编号 : subScopeName | string | 瞄准镜名称字段/子瞄准镜名称字段的标签 . subScopeName 倒计时 middleDrawer.subScope + " Name" 如果未设置. |
addScopeDialog.submitButton 编号 : cancel | string | 对话框动作按钮 . |
addScopeDialog.learningApprovalSettings.title | string | 审批设置部分标题. |
…approvalRequired.{title, subtitle} | string | 复制“ 需要批准” 选项 . |
…publishWithoutApproval.{title, subtitle} | string | 复制"未经批准推出"选项. |
scopeDisplayLimit.enabled | string (单位:千美元)"true"编号 :"false"(中文(简体) ) | 切换每个级别显示限制. |
scopeDisplayLimit.count | string (数目) | 崩溃前要显示多少项 . |
scopeDisplayLimit.compactView | string (单位:千美元)"true"编号 :"false"(中文(简体) ) | 启用压缩渲染 . |
scopeDisplayLimit.applyToLevels | string | JSON 阵列 1- 指数级以限制,例如. "[1,2]"。空 = 所有级别. |
scopeDisplayLimit.viewMoreText | string | "再看"切换文本. 支助 {count}。 。 。 . |
scopeDisplayLimit.title | string | 取而代之的是标题中的"Stations". 支助 {scope}。 。 。 . |
scopeDisplayLimit.description | string | 站名下方描述. 支助 {scope}。 。 。 . |
scopeDisplayLimit.searchPlaceholder | string | 车站搜索占位符. |
scopeDisplayLimit.onboardBtn | string | "一站上"按钮标签. |
scopeDisplayLimit.viewText | string | 每站"View"按钮标签. |
学习、层次和对话框
"learnings": {
"header": { "title": "{scope} Instructions", "exportButton": "Export", "addNewLearningButton": "Add New Instruction" },
"tier": {
"showTierHeader": true,
"tierHeader": "Tier",
"subtitle": "These are the system-wide instructions applied across all documents.",
"tierHeaderNoOfLearnings": "Instructions",
"deleteDialog": { "title": "Delete Tier {N}?", "description": "This will permanently delete all rules…", "cancel": "Cancel", "submit": "Yes, Delete" },
"learning": {
"inheritance": "Inheritance",
"actions": { "disable": "Disable", "enable": "Enable", "approve": "Approve All", "reject": "Reject All", "delete": "Delete" },
"approveDialog": { "title": "Approve Guideline", "desc": "{variant_name} will be published…", "footer": "Take a moment to check…", "cancel": "Cancel", "approveLearning": "Approve Guideline" },
"rejectDialog": { "title": "Reject Guideline", "desc": "{variant_name} will not be published…", "feedbackTitle": "Feedback", "feedbackPlaceholder": "Add feedback…", "deleteCheckboxLabel": "Also delete this guideline", "cancel": "Cancel", "rejectLearning": "Reject Guideline" },
"deleteDialog": { "title": "Delete", "desc": "Are you sure…", "warningText": "This will permanently delete…", "cancelText": "Cancel", "deleteText": "Delete" }
}
}
}
字段(路径 learnings(中文(简体) ) | 类型 | 说明 |
|---|---|---|
header.title | string | 学习页标题. 支助 {scope}。 。 。 . |
header.exportButton | string | 导出按钮标签 . |
header.addNewLearningButton | string | "添加新学习"按钮标签. |
tier.showTierHeader | boolean | 是否显示分级标题区域 . |
tier.tierHeader | string | 等级标题 . |
tier.subtitle | string | 第一级字幕/说明. |
tier.tierHeaderNoOfLearnings | string | 学习的文字 计数标签. |
tier.deleteDialog.{title, description, cancel, submit} | string | 分级删除对话框副本 . title 支持 {N}。 。 。 . |
tier.learning.inheritance | string | 继承指标标签 . |
tier.learning.actions.{disable, enable, approve, reject, delete} | string | 学习动作标签. |
tier.learning.approveDialog.{title, desc, footer, cancel, approveLearning} | string | 批准对话框副本 . desc 支持 {variant_name}。 。 。 . |
tier.learning.rejectDialog.{title, desc, feedbackTitle, feedbackPlaceholder, deleteCheckboxLabel, cancel, rejectLearning} | string | 拒绝对话框副本 . desc 支持 {variant_name}。 。 。 . |
tier.learning.deleteDialog.{title, desc, warningText, cancelText, deleteText} | string | 单一学习删除对话框副本 . |
空状态
"emptyStateLearning": {
"title": "No instructions have been added !",
"desc": "Start by adding instructions that should apply across all documents.",
"createNewLearning": "Create New Instruction",
"createGlobalScope": "Create Global Scope",
"noAccessTitle": "Access Restricted",
"noAccessDesc": "You do not have access for this application.",
"requestAccessButton": "Request Access",
"requestSentButton": "Request Sent"
}
| 外地 | 类型 | 需求 | 说明 |
|---|---|---|---|
title | string | ✅ | 空状态正向. |
desc | string | ✅ | 空态描述 . |
createNewLearning | string | ✅ | CTA来创造学习. |
createGlobalScope | string | ✅ | CTA创建全球范围. |
noAccessTitle | string | ❌ | 用户无法访问时的标题 . |
noAccessDesc | string | ❌ | 用户无法访问时描述 . |
requestAccessButton | string | ❌ | "请求访问"按钮标签. |
requestSentButton | string | ❌ | "请求发送"国标. |
更改日志
1.3.0-阿尔法.31-2026年6月10日
- 隐藏“ 复制到水平” 选项 - 学习管理屏幕中隐藏了蒂尔协议人 - 设计来自 ILKB 配置的 Max 雇佣公司及其用户界面变化
1.3.0-阿尔法.31-2026年6月10日
从 AI 更改中保存后向兼容性支持
1.3.0-α.21-2026,6月8日 (中文(简体) )
权限——基于联盟的访问解决方案
- 联盟模式:当一个用户在同一资源上拥有多个角色(如被继承的组角色+直接指派)时,所有角色的权限被合并. 如果有任何角色给予许可,用户拥有.
- 删除数字 :
ROLE_HIERARCHY, (中文(简体) ),getRolePrecedence(), (中文(简体) ),resolveHighestRolePerResource(),则resolvedData存储域都不见了. hasPermission()财务报告和审定财务报表hasApplicationAccess()现在与生为敌accessData通过新的内部getUnionPermissionsForResource()帮助构建Set用于匹配记录的所有权限.fetchPermissions()不再调用解析器——只存储原始API响应.
1.3.0-α.20-2026,6月8日 (中文(简体) )
教会我弹出——LHS自定义通过 dtt()
- 聊天标题: 用于添加和编辑模式的配置
teachMe.chatTitle财务报告和审定财务报表teachMe.chatTitleEdit两种支持{scope}占位符,在运行时替换为选定的范围名称. - 欢迎留言: 通过配置式问候
teachMe.welcomeMessage。通过teachMe.welcomeMessageSubtitle装满 标记 通过下列方式提供的支助:ReactMarkdown。 。 。 . - 动作按钮: 可通过配置
teachMe.actions数组——每个条目有一个label(按钮文本)和value(点击时向代理发送消息). - 文本区域占位符: 可通过配置
teachMe.textareaPlaceholder。 。 。 . - 后向兼容性: 支持 TeachMe 弹出自定义
backwardCompatibility旗帜.
此版本中添加的密钥 :
| JSON 键 | 默认 |
|---|---|
teachMe.chatTitle | "Teach Me OTJ - {scope} - Add Learning" |
teachMe.chatTitleEdit | "Teach Me OTJ - {scope} - Edit Learning" |
teachMe.welcomeMessageSubtitle | "How would you like to get started?..." |
teachMe.actions | 矩阵 { label, value } 在v17中,见JSON样本 |
teachMe.textareaPlaceholder | "Tell me more about this learning.." |
1.3.0-α.19-2026年6月6日,农历六月六日
- 认知比较工具: 更新了与视觉变化的比较
- 图QL 参数数字 :
userDetails对象现在作为 GraphQL 参数传递
1.3.0-α.18 - 2026年6月6日 (中文(简体) )
补丁修补:删除所有标签的下划线
1.3.0-α.17 - 2026年6月6日 (中文(简体) )
不向后兼容支持
-
教会我渲染者: 添加了值类型 json 支持来渲染 TeachMe 弹出并创建规则 .
可配置的用户界面
dtt()——"TeachMe"弹出中所有LHS标签都是由驱动的value_type_config.teachMe已装入 JSON 每架appIntegrationId并在运行时解决dtt()帮手.支持的密钥 :
JSON 键 默认 teachMe.welcomeMessage"Hi! 👋 I'm your Instant Learning Concierge."teachMe.formTitle"Rule setup"teachMe.setupLabel"Configure your IL"teachMe.ruleTitle"Main Rule Name"teachMe.scopeLabel"Define Scope"teachMe.tierLabel"Select Tiers"teachMe.ruleDescriptionTitle"Learning Explanation"teachMe.whenToApplyTitle"Trigger Events (When to Apply)"teachMe.addWhenToApplyBtnLabel"Add WTA"teachMe.whenNotToApplyTitle"Exclusion Events (When NOT to Apply)"teachMe.addWhenNotToApplyBtnLabel"Add WNTA"teachMe.configTitle"Advanced Settings"teachMe.saveBtnLabel"Save Rule"teachMe.saveBtnLoadingLabel"Saving Rule..."teachMe.showConfigurationfalseteachMe.showScopefalse完整样本
value_type_config贾森:
{
"template": "Default",
"teachMe": {
"welcomeMessage": "Hi! 👋 I'm your Instant Learning Concierge.",
"welcomeMessageSubtitle": "How would you like to get started?\nYou can select an option below or **describe the rule** you'd like to create.",
"actions": [
{ "label": "Separation rule", "value": "I would want to add a separation rule" },
{ "label": "Max priority rule", "value": "I would want to set a max priority rule" },
{ "label": "Break code matching", "value": "I would want to add a break code matching rule" },
{ "label": "Inventory code matching", "value": "I would want to add a inventory window matching rule" },
{ "label": "Enter a rule description", "value": "I want to add a rule description" },
{ "label": "Tester Genie", "value": "Loading prompt..." }
],
"chatTitle": "Teach Me OTJ - {scope} - Add Learning",
"chatTitleEdit": "Teach Me OTJ - {scope} - Edit Learning",
"formTitle": "Rule Setup",
"setupLabel": "Configure your IL",
"ruleTitle": "Main Rule Name",
"scopeLabel": "Define Scope",
"tierLabel": "Select Tiers",
"ruleDescriptionTitle": "Learning Explanation",
"whenToApplyTitle": "Trigger Events (When to Apply)",
"addWhenToApplyBtnLabel": "Add WTA",
"whenNotToApplyTitle": "Exclusion Events (When NOT to Apply)",
"addWhenNotToApplyBtnLabel": "Add WNTA",
"configTitle": "Advanced Settings",
"saveBtnLabel": "Save Rule",
"saveBtnLoadingLabel": "Saving Rule...",
"textareaPlaceholder": "Tell me more about this learning..",
"showConfiguration": false,
"showScope": false
},
"learningManagement": {}
}
⚠️ 重要编号:
template键在根部value_type_config必须 规定任何JSON自定义生效。 没有它,系统会回到通过value_type_name从 API 中,配置值不能被应用.{ "template": "Default" }值必须与在
TemplateRegistry数字 :
template价值渲染器 "Default"DefaultTeachMeRenderer"Radio Traffic Learning"RadioTrafficLearningRenderer"Guidelines"GuidelinesTeachMeRenderer对于自定义插件,请使用您注册的确切密钥
TemplateRegistry内TeachMePlugin.tsx数字 :export const TemplateRegistry: Record<string, React.FC<TeachMeWrapperProps>> = { "Default": DefaultTeachMeRenderer, "Radio Traffic Learning": RadioTrafficLearningRenderer, "Guidelines": GuidelinesTeachMeRenderer, "Your Template Name": YourCustomRenderer, // ← use this exact string in "template" };如果提供
template值在TemplateRegistry,系统自动返回到"Default"。 。 。 .
-
学习管理设计师: 添加了值类型json支持来渲染学习管理屏幕,并从同一角度创建规则.
可配置的用户界面
dt()LMS 用户界面由远程 JSON 配置驱动
appIntegrationId。每个标签、按钮文本和对话框副本在运行时通过dt()帮助者而不是被硬码.dt()——在任何地方读取配置值
function dt(
path: string, // dot-notation key into LMSConfig
fallback?: string, // returned when key is missing
params?: Record<string, string | number> // fills {placeholder} tokens in the value
): string
- 从Zustand商店直接读取(无钩子-在React组件外工作).
- 回返
fallback ?? path当未找到密钥或配置未加载时.
实例:
dt('pageTitle')
// → value of lmsConfig.pageTitle
dt('middleDrawer.addScope', 'Add Scope')
// → config value or fallback 'Add Scope'
dt('learnings.tier.deleteDialog.title', 'Delete {N} learnings', { N: 3 })
// → "Delete 3 learnings" (placeholder replaced)
dt('learnings.tier.learning.approveDialog.desc', undefined, { variant_name: 'Rule A' })
// → config string with {variant_name} replaced by "Rule A"
1.3.0-α.16 - 2026年6月5日,美国
- 范围 管理: 在 AddScopeModal 和相关 API 端点中添加了对创建和删除范围的支持
- 覆盖历史: 获取覆盖历史时包含应用集成Id,以确保正确的集成上下文
- 规则检索: 通过 RulesId 获取规则时添加了应用程序集成Id支持
- 删除范围: 站台范围固定删除逻辑,以便在类型=站台时将相关站台正确删除
1.3.0-α.15-2026年6月5日,农历六月五日
- 教我的发条: 已修改的默认 Teach Me 渲染器——从通用渲染器切换为无线电交通值类型渲染器,支持规则创建流程
1.3.0-α.14-2026年6月5日,纽约
- IL 模式 - 范围创建数字 :
parentScopeId现在在从儿童节点创建出一个新的范围时,正确接收了父母范围的ID(全球ID),而不是总是null - 自动后退: 添加可选链条(
?.继续userDetails.accessToken防止在重新装入时发生相撞 - 访问科: 隐藏 Access 部分的固定逻辑——它现在总是可见的,不管它是什么
backwardCompatibility旗帜
阿尔法发布命令
创建第一个α版本( 如 0.1. 0- alpha. 0)
npm 版本预发 -- preid=alpha
增加α版本(例如:0.1.0-α.1)
npm 版本预发 -- preid=alpha
在 Alpha 标签下发布软件包
npm 发布 -- tag alpha
安装特定的 Alpha 版本
npm 安装@e-llm-studio/[email protected] 互联网档案馆的存檔,存档日期2013-12-21