fix: move CRUD json to json/, keep models/ for DB defs

This commit is contained in:
yumoqing 2026-07-24 13:35:13 +08:00
parent 93fa95ea69
commit 796df405b4
15 changed files with 114 additions and 299 deletions

View File

@ -1,30 +0,0 @@
{
"summary": [
{
"name": "document_chunks",
"title": "文档分片",
"primary": ["id"]
}
],
"fields": [
{"name": "id", "title": "ID", "type": "str", "length": 32},
{"name": "doc_id", "title": "文档ID", "type": "str", "length": 32},
{"name": "kb_id", "title": "知识库ID", "type": "str", "length": 32},
{"name": "chunk_index", "title": "分片序号", "type": "int", "default": 0},
{"name": "chunk_type", "title": "分片类型", "type": "str", "length": 32},
{"name": "content", "title": "文本内容", "type": "text", "length": 65535},
{"name": "description", "title": "描述", "type": "text", "length": 65535},
{"name": "vector_id", "title": "向量库ID", "type": "str", "length": 128},
{"name": "start_offset", "title": "起始偏移", "type": "int", "default": 0},
{"name": "end_offset", "title": "结束偏移", "type": "int", "default": 0},
{"name": "time_start", "title": "时间起始(秒)", "type": "float", "length": 10, "dec": 3},
{"name": "time_end", "title": "时间结束(秒)", "type": "float", "length": 10, "dec": 3},
{"name": "metadata", "title": "元数据JSON", "type": "text", "length": 2000},
{"name": "created_at", "title": "创建时间", "type": "datetime"}
],
"indexes": [
{"name": "idx_chunk_doc", "idxtype": "index", "idxfields": ["doc_id"]},
{"name": "idx_chunk_kb", "idxtype": "index", "idxfields": ["kb_id"]},
{"name": "idx_chunk_vector", "idxtype": "index", "idxfields": ["vector_id"]}
]
}

View File

@ -1,37 +1,25 @@
{
"summary": [
{
"name": "documents",
"title": "文档",
"primary": ["id"]
"tblname": "documents",
"params": {
"title": "文档管理",
"browserfields": [
{"field": "file_name", "title": "文件名", "width": "25%"},
{"field": "file_type", "title": "类型", "width": "10%"},
{"field": "file_size", "title": "大小", "width": "10%"},
{"field": "chunk_count", "title": "分片数", "width": "8%"},
{"field": "status", "title": "状态", "width": "10%"},
{"field": "kb_id", "title": "知识库", "width": "17%"},
{"field": "created_at", "title": "上传时间", "width": "20%"}
],
"editfields": [
{"field": "file_name", "uitype": "Text", "required": true},
{"field": "kb_id", "uitype": "Text", "required": true},
{"field": "file_type", "uitype": "Text"}
],
"searchfields": ["file_name"],
"sort": "created_at desc",
"data_filter": {
"org_id": "{{userorgid}}"
}
],
"fields": [
{"name": "id", "title": "ID", "type": "str", "length": 32},
{"name": "kb_id", "title": "知识库ID", "type": "str", "length": 32},
{"name": "file_name", "title": "文件名", "type": "str", "length": 255},
{"name": "file_type", "title": "文件类型", "type": "str", "length": 32},
{"name": "file_size", "title": "文件大小", "type": "int", "default": 0},
{"name": "file_path", "title": "文件路径", "type": "str", "length": 500},
{"name": "mime_type", "title": "MIME类型", "type": "str", "length": 128},
{"name": "chunk_count", "title": "分片数", "type": "int", "default": 0},
{"name": "embed_dim", "title": "向量维度", "type": "int", "default": 1024},
{"name": "metadata", "title": "元数据JSON", "type": "text", "length": 4000},
{"name": "status", "title": "状态", "type": "str", "length": 16, "default": "pending"},
{"name": "error_msg", "title": "错误信息", "type": "text", "length": 2000},
{"name": "org_id", "title": "所属机构", "type": "str", "length": 32},
{"name": "created_by", "title": "创建人", "type": "str", "length": 32},
{"name": "created_at", "title": "创建时间", "type": "datetime"},
{"name": "updated_at", "title": "更新时间", "type": "datetime"}
],
"codes": [
{"field": "file_type", "table": "appcodes_kv", "valuefield": "k", "textfield": "v", "cond": "parentid='file_type'"},
{"field": "status", "table": "appcodes_kv", "valuefield": "k", "textfield": "v", "cond": "parentid='doc_status'"},
{"field": "kb_id", "table": "knowledge_bases", "valuefield": "id", "textfield": "name"}
],
"indexes": [
{"name": "idx_doc_kb", "idxtype": "index", "idxfields": ["kb_id"]},
{"name": "idx_doc_org", "idxtype": "index", "idxfields": ["org_id"]},
{"name": "idx_doc_status", "idxtype": "index", "idxfields": ["status"]}
]
}
}

View File

@ -1,33 +1,26 @@
{
"summary": [
{
"name": "engine_configs",
"title": "引擎配置",
"primary": ["id"]
}
],
"fields": [
{"name": "id", "title": "ID", "type": "str", "length": 32},
{"name": "org_id", "title": "机构ID", "type": "str", "length": 32, "nullable": "yes"},
{"name": "engine_type", "title": "引擎类型", "type": "str", "length": 32},
{"name": "engine_name", "title": "引擎名称", "type": "str", "length": 64},
{"name": "endpoint_url", "title": "服务地址", "type": "str", "length": 255},
{"name": "api_key", "title": "API密钥", "type": "str", "length": 255},
{"name": "model_name", "title": "模型名称", "type": "str", "length": 128},
{"name": "config_json", "title": "扩展配置JSON", "type": "text", "length": 4000},
{"name": "is_default", "title": "是否默认", "type": "int", "default": 0},
{"name": "priority", "title": "优先级", "type": "int", "default": 0},
{"name": "status", "title": "状态", "type": "str", "length": 16, "default": "active"},
{"name": "health_check_at", "title": "最近健康检查", "type": "datetime"},
{"name": "created_at", "title": "创建时间", "type": "datetime"},
{"name": "updated_at", "title": "更新时间", "type": "datetime"}
],
"codes": [
{"field": "engine_type", "table": "appcodes_kv", "valuefield": "k", "textfield": "v", "cond": "parentid='engine_type'"},
{"field": "status", "table": "appcodes_kv", "valuefield": "k", "textfield": "v", "cond": "parentid='engine_status'"}
],
"indexes": [
{"name": "idx_eng_type", "idxtype": "index", "idxfields": ["engine_type", "is_default"]},
{"name": "idx_eng_org", "idxtype": "index", "idxfields": ["org_id", "engine_type"]}
]
"tblname": "engine_configs",
"params": {
"title": "引擎配置",
"browserfields": [
{"field": "engine_type", "title": "引擎类型", "width": "15%"},
{"field": "engine_name", "title": "名称", "width": "15%"},
{"field": "endpoint_url", "title": "服务地址", "width": "25%"},
{"field": "model_name", "title": "模型", "width": "15%"},
{"field": "is_default", "title": "默认", "width": "8%"},
{"field": "status", "title": "状态", "width": "10%"},
{"field": "org_id", "title": "机构", "width": "12%"}
],
"editfields": [
{"field": "engine_type", "uitype": "Text", "required": true},
{"field": "engine_name", "uitype": "Text", "required": true},
{"field": "endpoint_url", "uitype": "Text"},
{"field": "api_key", "uitype": "Text"},
{"field": "model_name", "uitype": "Text"},
{"field": "is_default", "uitype": "Text"},
{"field": "config_json", "uitype": "Text"}
],
"searchfields": ["engine_type", "engine_name", "endpoint_url"],
"sort": "engine_type, priority desc"
}
}

View File

@ -1,35 +0,0 @@
{
"summary": [
{
"name": "entities",
"title": "实体",
"primary": ["id"]
}
],
"fields": [
{"name": "id", "title": "ID", "type": "str", "length": 32},
{"name": "kb_id", "title": "知识库ID", "type": "str", "length": 32},
{"name": "name", "title": "实体名", "type": "str", "length": 255},
{"name": "entity_type", "title": "实体类型", "type": "str", "length": 64},
{"name": "description", "title": "描述", "type": "text", "length": 2000},
{"name": "graph_node_id", "title": "图节点ID", "type": "str", "length": 128},
{"name": "source_doc_ids", "title": "来源文档ID列表", "type": "text", "length": 2000},
{"name": "face_embedding_id", "title": "人脸特征ID", "type": "str", "length": 128},
{"name": "voice_embedding_id", "title": "声纹特征ID", "type": "str", "length": 128},
{"name": "metadata", "title": "元数据JSON", "type": "text", "length": 2000},
{"name": "org_id", "title": "所属机构", "type": "str", "length": 32},
{"name": "created_at", "title": "创建时间", "type": "datetime"},
{"name": "updated_at", "title": "更新时间", "type": "datetime"}
],
"codes": [
{"field": "entity_type", "table": "appcodes_kv", "valuefield": "k", "textfield": "v", "cond": "parentid='entity_type'"},
{"field": "kb_id", "table": "knowledge_bases", "valuefield": "id", "textfield": "name"}
],
"indexes": [
{"name": "idx_entity_kb", "idxtype": "index", "idxfields": ["kb_id"]},
{"name": "idx_entity_name", "idxtype": "index", "idxfields": ["kb_id", "name"]},
{"name": "idx_entity_type", "idxtype": "index", "idxfields": ["kb_id", "entity_type"]},
{"name": "idx_entity_face", "idxtype": "index", "idxfields": ["face_embedding_id"]},
{"name": "idx_entity_voice", "idxtype": "index", "idxfields": ["voice_embedding_id"]}
]
}

View File

@ -1,29 +0,0 @@
{
"summary": [
{
"name": "entity_relations",
"title": "实体关系",
"primary": ["id"]
}
],
"fields": [
{"name": "id", "title": "ID", "type": "str", "length": 32},
{"name": "kb_id", "title": "知识库ID", "type": "str", "length": 32},
{"name": "subject_id", "title": "主体实体ID", "type": "str", "length": 32},
{"name": "object_id", "title": "客体实体ID", "type": "str", "length": 32},
{"name": "relation_type", "title": "关系类型", "type": "str", "length": 64},
{"name": "description", "title": "关系描述", "type": "text", "length": 2000},
{"name": "graph_edge_id", "title": "图边ID", "type": "str", "length": 128},
{"name": "source_chunk_ids", "title": "来源分片ID列表", "type": "text", "length": 2000},
{"name": "org_id", "title": "所属机构", "type": "str", "length": 32},
{"name": "created_at", "title": "创建时间", "type": "datetime"}
],
"codes": [
{"field": "kb_id", "table": "knowledge_bases", "valuefield": "id", "textfield": "name"}
],
"indexes": [
{"name": "idx_rel_kb", "idxtype": "index", "idxfields": ["kb_id"]},
{"name": "idx_rel_subject", "idxtype": "index", "idxfields": ["subject_id"]},
{"name": "idx_rel_object", "idxtype": "index", "idxfields": ["object_id"]}
]
}

View File

@ -1,32 +1,26 @@
{
"summary": [
{
"name": "knowledge_bases",
"title": "知识库",
"primary": ["id"]
"tblname": "knowledge_bases",
"params": {
"title": "知识库管理",
"browserfields": [
{"field": "name", "title": "名称", "width": "20%"},
{"field": "description", "title": "描述", "width": "30%"},
{"field": "doc_count", "title": "文档数", "width": "10%"},
{"field": "total_size", "title": "大小", "width": "10%"},
{"field": "embedding_engine", "title": "向量引擎", "width": "15%"},
{"field": "created_at", "title": "创建时间", "width": "15%"}
],
"editfields": [
{"field": "name", "uitype": "Text", "required": true},
{"field": "description", "uitype": "Text"},
{"field": "embedding_engine", "uitype": "Text", "default": "clip-vith14"},
{"field": "vdb_collection", "uitype": "Text"},
{"field": "graph_name", "uitype": "Text"}
],
"searchfields": ["name", "description"],
"sort": "created_at desc",
"data_filter": {
"org_id": "{{userorgid}}"
}
],
"fields": [
{"name": "id", "title": "ID", "type": "str", "length": 32},
{"name": "name", "title": "名称", "type": "str", "length": 100},
{"name": "description", "title": "描述", "type": "text", "length": 2000},
{"name": "org_id", "title": "所属机构", "type": "str", "length": 32},
{"name": "embedding_engine", "title": "向量化引擎", "type": "str", "length": 64, "default": "clip-vith14"},
{"name": "vdb_collection", "title": "向量库集合名", "type": "str", "length": 128},
{"name": "graph_name", "title": "图名称", "type": "str", "length": 128},
{"name": "doc_count", "title": "文档数", "type": "int", "default": 0},
{"name": "chunk_count", "title": "分片数", "type": "int", "default": 0},
{"name": "total_size", "title": "总大小(字节)", "type": "int", "default": 0},
{"name": "status", "title": "状态", "type": "str", "length": 16, "default": "active"},
{"name": "created_by", "title": "创建人", "type": "str", "length": 32},
{"name": "created_at", "title": "创建时间", "type": "datetime"},
{"name": "updated_at", "title": "更新时间", "type": "datetime"}
],
"codes": [
{"field": "status", "table": "appcodes_kv", "valuefield": "k", "textfield": "v", "cond": "parentid='kb_status'"}
],
"indexes": [
{"name": "idx_kb_org", "idxtype": "index", "idxfields": ["org_id"]},
{"name": "idx_kb_name", "idxtype": "unique", "idxfields": ["org_id", "name"]}
]
}
}

View File

@ -1,28 +0,0 @@
{
"summary": [
{
"name": "media_tags",
"title": "媒体标签关联",
"primary": ["id"]
}
],
"fields": [
{"name": "id", "title": "ID", "type": "str", "length": 32},
{"name": "kb_id", "title": "知识库ID", "type": "str", "length": 32},
{"name": "media_type", "title": "媒体类型", "type": "str", "length": 32},
{"name": "media_id", "title": "媒体ID", "type": "str", "length": 32},
{"name": "tag_id", "title": "标签ID", "type": "str", "length": 32},
{"name": "created_at", "title": "创建时间", "type": "datetime"}
],
"codes": [
{"field": "media_type", "table": "appcodes_kv", "valuefield": "k", "textfield": "v", "cond": "parentid='media_type'"},
{"field": "tag_id", "table": "tags", "valuefield": "id", "textfield": "name"},
{"field": "kb_id", "table": "knowledge_bases", "valuefield": "id", "textfield": "name"}
],
"indexes": [
{"name": "idx_mt_media", "idxtype": "index", "idxfields": ["media_type", "media_id"]},
{"name": "idx_mt_tag", "idxtype": "index", "idxfields": ["tag_id"]},
{"name": "idx_mt_kb", "idxtype": "index", "idxfields": ["kb_id"]},
{"name": "idx_mt_unique", "idxtype": "unique", "idxfields": ["media_type", "media_id", "tag_id"]}
]
}

View File

@ -1,34 +1,28 @@
{
"summary": [
{
"name": "subscriptions",
"title": "租户订阅",
"primary": ["id"]
}
],
"fields": [
{"name": "id", "title": "ID", "type": "str", "length": 32},
{"name": "org_id", "title": "机构ID", "type": "str", "length": 32},
{"name": "plan_name", "title": "套餐名称", "type": "str", "length": 64},
{"name": "disk_quota_bytes", "title": "磁盘配额(字节)", "type": "int", "default": 1073741824},
{"name": "disk_used_bytes", "title": "已用磁盘(字节)", "type": "int", "default": 0},
{"name": "doc_quota", "title": "文档数配额", "type": "int", "default": 1000},
{"name": "doc_used", "title": "已用文档数", "type": "int", "default": 0},
{"name": "kb_quota", "title": "知识库数配额", "type": "int", "default": 10},
{"name": "kb_used", "title": "已用知识库数", "type": "int", "default": 0},
{"name": "api_call_quota", "title": "API调用配额(月)", "type": "int", "default": 10000},
{"name": "api_call_used", "title": "已用API调用(月)", "type": "int", "default": 0},
{"name": "start_date", "title": "开始日期", "type": "date"},
{"name": "end_date", "title": "结束日期", "type": "date"},
{"name": "status", "title": "状态", "type": "str", "length": 16, "default": "active"},
{"name": "created_at", "title": "创建时间", "type": "datetime"},
{"name": "updated_at", "title": "更新时间", "type": "datetime"}
],
"codes": [
{"field": "status", "table": "appcodes_kv", "valuefield": "k", "textfield": "v", "cond": "parentid='sub_status'"}
],
"indexes": [
{"name": "idx_sub_org", "idxtype": "unique", "idxfields": ["org_id"]},
{"name": "idx_sub_status", "idxtype": "index", "idxfields": ["status"]}
]
"tblname": "subscriptions",
"params": {
"title": "订阅管理",
"browserfields": [
{"field": "org_id", "title": "机构", "width": "15%"},
{"field": "plan_name", "title": "套餐", "width": "15%"},
{"field": "disk_quota_bytes", "title": "磁盘配额", "width": "12%"},
{"field": "disk_used_bytes", "title": "已用磁盘", "width": "12%"},
{"field": "doc_used", "title": "文档数", "width": "10%"},
{"field": "start_date", "title": "开始", "width": "12%"},
{"field": "end_date", "title": "结束", "width": "12%"},
{"field": "status", "title": "状态", "width": "12%"}
],
"editfields": [
{"field": "org_id", "uitype": "Text", "required": true},
{"field": "plan_name", "uitype": "Text", "required": true},
{"field": "disk_quota_bytes", "uitype": "Text", "default": "1073741824"},
{"field": "doc_quota", "uitype": "Text"},
{"field": "kb_quota", "uitype": "Text"},
{"field": "api_call_quota", "uitype": "Text"},
{"field": "start_date", "uitype": "Text"},
{"field": "end_date", "uitype": "Text"}
],
"searchfields": ["org_id", "plan_name"],
"sort": "created_at desc"
}
}

View File

@ -1,24 +1,22 @@
{
"summary": [
{
"name": "tags",
"title": "标签",
"primary": ["id"]
"tblname": "tags",
"params": {
"title": "标签管理",
"browserfields": [
{"field": "name", "title": "标签名", "width": "25%"},
{"field": "color", "title": "颜色", "width": "15%"},
{"field": "kb_id", "title": "知识库", "width": "30%"},
{"field": "created_at", "title": "创建时间", "width": "30%"}
],
"editfields": [
{"field": "name", "uitype": "Text", "required": true, "label": "标签名"},
{"field": "kb_id", "uitype": "Text", "required": true, "label": "知识库ID"},
{"field": "color", "uitype": "Text", "default": "#3b82f6", "label": "颜色(#hex)"}
],
"searchfields": ["name"],
"sort": "created_at desc",
"data_filter": {
"org_id": "{{userorgid}}"
}
],
"fields": [
{"name": "id", "title": "ID", "type": "str", "length": 32},
{"name": "kb_id", "title": "知识库ID", "type": "str", "length": 32},
{"name": "name", "title": "标签名", "type": "str", "length": 64},
{"name": "color", "title": "颜色", "type": "str", "length": 16, "default": "#3b82f6"},
{"name": "org_id", "title": "所属机构", "type": "str", "length": 32},
{"name": "created_at", "title": "创建时间", "type": "datetime"}
],
"codes": [
{"field": "kb_id", "table": "knowledge_bases", "valuefield": "id", "textfield": "name"}
],
"indexes": [
{"name": "idx_tag_kb", "idxtype": "index", "idxfields": ["kb_id"]},
{"name": "idx_tag_name", "idxtype": "unique", "idxfields": ["kb_id", "name"]}
]
}
}

View File

@ -1,30 +0,0 @@
{
"summary": [
{
"name": "usage_logs",
"title": "用量日志",
"primary": ["id"]
}
],
"fields": [
{"name": "id", "title": "ID", "type": "str", "length": 32},
{"name": "org_id", "title": "机构ID", "type": "str", "length": 32},
{"name": "kb_id", "title": "知识库ID", "type": "str", "length": 32},
{"name": "operation", "title": "操作类型", "type": "str", "length": 32},
{"name": "bytes_delta", "title": "磁盘变化(字节)", "type": "int", "default": 0},
{"name": "bytes_total", "title": "累计磁盘", "type": "int", "default": 0},
{"name": "api_calls", "title": "API调用数", "type": "int", "default": 1},
{"name": "engine_type", "title": "引擎类型", "type": "str", "length": 32},
{"name": "tokens_used", "title": "Token消耗", "type": "int", "default": 0},
{"name": "cost_estimate", "title": "预估费用", "type": "float", "length": 20, "dec": 4},
{"name": "detail", "title": "详情JSON", "type": "text", "length": 2000},
{"name": "created_at", "title": "创建时间", "type": "datetime"}
],
"codes": [
{"field": "operation", "table": "appcodes_kv", "valuefield": "k", "textfield": "v", "cond": "parentid='usage_op'"}
],
"indexes": [
{"name": "idx_usage_org", "idxtype": "index", "idxfields": ["org_id", "created_at"]},
{"name": "idx_usage_kb", "idxtype": "index", "idxfields": ["kb_id"]}
]
}