AWK TLD机器人
AWK TLD BOT是ERP和商业应用程序的可嵌入AI数据库助手。它允许用户用乌尔都语或英语提问,生成安全的只读SQL,查询连接的PostgreSQL数据库,并返回包含表、KPI、图表、见解和ERP操作的答案。
它做什么
- 使用一个嵌入到另一个应用程序中 `` 标签。
- 作为浮动聊天小部件打开,由
/widget和public/embed.js. - 使用per-app API密钥对小部件请求进行身份验证。
- 通过脚本属性支持租户/用户上下文。
- 使用连接的应用程序数据库URL和AI提供商设置。
- 在运行之前生成并验证仅SELECT SQL。
- 自动检测结果视图:KPI、表格、折线图、条形图、堆叠图或饼图。
- 将ERP操作发送回主机应用程序
awktld:action事件。 - 支持语音输入和浏览器文本转语音(如果可用)。
技术栈
- Next.js应用路由器
- 反应
- 棱镜
- PostgreSQL
- NextAuth
- Recharts
- Gemini、OpenAI、Anthropic、LM Studio和Ollama提供商结构
重要文件
public/embed.js-脚本粘贴到外部应用程序中。app/widget/page.tsx-iframe聊天界面。app/api/ai/route.ts-AI到SQL、SQL保护、DB查询、响应整形。app/api/widget/register/route.ts-连接应用注册API。app/dashboard/widget-sites/page.tsx-用于创建小部件应用程序的仪表板UI。lib/sql-guard.ts-SQL清理和只读安全检查。lib/memory/schema-loader.ts-连接数据库模式缓存。prisma/schema.prisma-用户、会话、连接的应用程序和聊天记录。
环境变量
创建 .env.local:
DATABASE_URL="postgresql://USER:PASSWORD@HOST:PORT/DATABASE?sslmode=require"
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_SECRET="replace-with-a-secure-secret"
GEMINI_API_KEY=""
OPENAI_API_KEY=""
ANTHROPIC_API_KEY=""每个应用程序的Gemini密钥也可以从Connected Apps仪表板存储。
本地开发
npm install
npm run dev打开:
http://localhost:3000生产建设
npm run build
npm start构建运行 prisma generate 第一。如果Prisma无法覆盖中的文件 node_modules/.prisma/client,关闭任何正在运行的Node/Next进程,然后重试。
嵌入到另一个应用程序中
从以下位置创建连接的应用程序 /dashboard/widget-sites,然后在之前粘贴生成的代码段 `` 在主机ERP中:
脚本属性
data-api-key-所需的已连接应用程序API密钥。data-widget-mode-erpERP安全行为或general.data-tenant-id-可选租户/公司/工作区id。data-user-id-可选的当前ERP用户id。data-user-email-可选的当前ERP用户电子邮件。
主机应用程序操作事件
小部件可以向宿主应用程序发送操作。听他们这样说:
window.addEventListener("awktld:action", (event) => {
const action = event.detail;
if (action.type === "navigate") {
window.location.href = action.href;
}
if (action.type === "open_record") {
console.log("Open record:", action.entity, action.id, action.payload);
}
});支持的操作类型:
navigateopen_recordshow_summaryclarify
安全须知
- API请求需要连接的应用API密钥。
- SQL会被清理和阻止,除非它以
SELECT. - 危险的SQL关键字,如
DROP,DELETE,INSERT,UPDATE,以及ALTER被封锁。 - 如果连接的架构有匹配的列,ERP模式可以应用租户/用户范围。
- 不要在前端代码中暴露数据库URL或AI密钥。
- 仅将生产机密存储在环境变量或受保护的数据库字段中。
当前生产状态
已证实的:
npm run build通过。app/widget/page.tsx,app/api/widget/register/route.ts,以及public/embed.js单独通过ESLint。
在将整个仓库称为完全生产清洁之前的已知工作:
- 满的
npm run lint仍然报告旧文件中存在的问题,主要是any类型、JSX文本转义和React钩子lint规则。 middleware.tsNext.js警告说,中间件约定已被弃用,取而代之的是proxy.package.json#prismaPrisma警告说,这种配置样式将在Prisma 7中删除。
部署检查表
- 集
DATABASE_URL,NEXTAUTH_URL,以及NEXTAUTH_SECRET. - 对生产数据库运行Prisma迁移。
- 至少创建一个管理员/用户帐户。
- 将每个ERP注册为互联应用程序。
- 添加连接的数据库后重建架构。
- 在主机ERP中测试生成的嵌入代码段。
- 确认多租户数据库的租户/用户范围。
- 跑
npm run build在部署之前。
