feat: 租户管理体系建设 CRUD + 各业务模块接入 tenant_id
1. 新增 Tenant 模型(tenants 表),支持租户创建、重命名、删除 2. 新增 /api/tenants CRUD 蓝图,default 租户不可删除 3. 数据库初始化时自动创建默认租户记录 4. Dashboard 新增租户管理标签页(创建/编辑/删除租户) 5. 各业务模块写入数据时正确传递 tenant_id: - realtime_chat: create_session 和 _save_conversation 支持 tenant_id - dialogue_manager: _save_conversation 和 create_work_order 支持 tenant_id - conversation_history: save_conversation 支持 tenant_id - workorder_sync: sync_from_feishu 支持 tenant_id - websocket_server: create_session 传递 tenant_id - HTTP chat API: create_session 传递 tenant_id - feishu_sync API: 同步时传递 tenant_id - workorders API: 创建工单时传递 tenant_id 6. 网页对话入口添加租户选择器 7. 知识库搜索按租户隔离(realtime_chat 中 _search_knowledge 传递 tenant_id) 8. 初始化时自动加载租户列表填充选择器
This commit is contained in:
@@ -439,6 +439,10 @@
|
||||
<i class="fas fa-sliders-h"></i>
|
||||
系统设置
|
||||
</a>
|
||||
<a class="nav-link" href="#tenant-management" data-tab="tenant-management">
|
||||
<i class="fas fa-building"></i>
|
||||
租户管理
|
||||
</a>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
@@ -568,6 +572,13 @@
|
||||
<h5><i class="fas fa-cog me-2"></i>对话控制</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="mb-3">
|
||||
<label class="form-label">租户</label>
|
||||
<select class="form-select" id="chat-tenant-id">
|
||||
<option value="default">默认租户</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label">用户ID</label>
|
||||
<input type="text" class="form-control" id="user-id" value="user_001">
|
||||
@@ -2187,6 +2198,76 @@
|
||||
</div>
|
||||
|
||||
<!-- 模态框 -->
|
||||
<!-- 租户管理标签页 -->
|
||||
<div id="tenant-management-tab" class="tab-content" style="display: none;">
|
||||
<div class="row mb-4">
|
||||
<div class="col-md-8">
|
||||
<div class="card">
|
||||
<div class="card-header d-flex justify-content-between align-items-center">
|
||||
<h5><i class="fas fa-building me-2"></i>租户管理</h5>
|
||||
<button class="btn btn-primary btn-sm" onclick="dashboard.showCreateTenantModal()">
|
||||
<i class="fas fa-plus me-1"></i>新建租户
|
||||
</button>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div id="tenant-list">
|
||||
<div class="loading-spinner">
|
||||
<i class="fas fa-spinner fa-spin"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5><i class="fas fa-info-circle me-2"></i>说明</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p class="text-muted">租户代表不同的市场或业务单元。每个租户拥有独立的知识库、对话历史和工单数据。</p>
|
||||
<ul class="text-muted small">
|
||||
<li>创建租户后,可在各业务模块中选择租户</li>
|
||||
<li>默认租户不可删除</li>
|
||||
<li>可为每个租户配置独立的飞书应用和机器人</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 创建/编辑租户模态框 -->
|
||||
<div class="modal fade" id="tenantModal" tabindex="-1">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="tenantModalTitle">新建租户</h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<input type="hidden" id="tenant-edit-id">
|
||||
<div class="mb-3" id="tenant-id-group">
|
||||
<label class="form-label">租户标识 (tenant_id)</label>
|
||||
<input type="text" class="form-control" id="tenant-id-input" placeholder="如 market_a(创建后不可修改)">
|
||||
<div class="form-text">唯一标识,建议使用英文和下划线</div>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label">租户名称</label>
|
||||
<input type="text" class="form-control" id="tenant-name-input" placeholder="如 市场A">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label">描述</label>
|
||||
<textarea class="form-control" id="tenant-desc-input" rows="2" placeholder="可选"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">取消</button>
|
||||
<button type="button" class="btn btn-primary" onclick="dashboard.saveTenant()">保存</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 创建工单模态框 -->
|
||||
<div class="modal fade" id="createWorkOrderModal" tabindex="-1">
|
||||
<div class="modal-dialog">
|
||||
|
||||
Reference in New Issue
Block a user