网站架构地图
系统架构、搜索规则与 Base44 平台限制说明
网站架构概览
核心实体与页面结构
核心数据实体
Video (视频)
- • youtube_id (唯一键)
- • title, category, date
- • is_internal (内部/公开)
- • tags, description
TranscriptSegment (字幕)
- • video_key (关联 youtube_id)
- • start_sec, end_sec, text
- • lang (语言标识)
- • is_internal (继承自视频)
- • import_batch_id (批次 ID)
User (用户)
- • email, full_name
- • role (admin / user)
- • 内置实体,自动创建
主要页面
首页 (Home)
视频库 (VideoLibrary)
字幕检索 (TranscriptSearch)
视频详情 (VideoDetail)
视频管理 (VideoManagement) - 管理员
内部入口 (InternalPortal) - 已移除
搜索功能规则
字幕检索的实现逻辑
前端搜索 (TranscriptSearch 页面)
- • 使用
base44.entities.TranscriptSegment.filter() - • 不支持文本模糊搜索或全文检索
- • 只能基于精确字段匹配:
{ video_key, is_internal } - • 实际文本搜索在前端通过 JavaScript 过滤完成:
segments.filter(s => s.text.toLowerCase().includes(searchQuery.toLowerCase()) )
限制:Base44 平台不支持数据库级别的文本模糊搜索(如 SQL 的 LIKE、MongoDB 的 $regex),所有文本搜索需在前端处理。
批量删除规则与限制
Base44 平台的 deleteMany 使用规范
✅ 支持的删除方式
基于公共字段条件
// ✅ 正确:基于字段条件
await base44.entities.TranscriptSegment.deleteMany({
video_key: "abc123",
lang: "zh",
is_internal: true
});
// ✅ 循环批量删除大数据集
while (true) {
const result = await deleteMany({ video_key, lang });
if (result.deleted === 0) break;
}❌ 不支持的操作符
MongoDB 风格的查询操作符
// ❌ 错误:不支持 $in
await deleteMany({ id: { $in: [1, 2, 3] } });
// ❌ 错误:不支持 $or
await deleteMany({ $or: [{ lang: "zh" }, { lang: "en" }] });
// ❌ 错误:不支持 $gt, $lt 等
await deleteMany({ start_sec: { $gt: 100 } });
// ❌ 错误:不支持 $regex
await deleteMany({ text: { $regex: /关键词/ } });实际应用场景
后端函数:bulkDeleteTranscripts.js
- • 接收参数:
video_id, lang, is_internal - • 构建条件:
where = { video_key, lang } - • 循环删除:每次调用
deleteMany(where)直到无记录 - • 支持预览模式:
preview: true仅统计不删除
性能建议:
- • 记录数 < 5,000:直接单次 deleteMany 即可
- • 记录数 > 5,000:使用循环分批删除(每批自动处理)
- • 删除条件必须基于已建立索引的字段(如 video_key)以提升性能
Base44 平台核心限制
开发时必须了解的约束条件
查询操作符限制
不支持 MongoDB 风格的操作符($in, $or, $gt, $lt, $gte, $lte, $ne, $regex 等)
文本搜索限制
数据库层面不支持全文检索或模糊搜索,需在前端 JavaScript 中实现文本过滤
支持的查询方式
仅支持精确字段匹配,如 { video_key: "abc", lang: "zh" }
批量操作策略
使用公共字段条件 + 循环调用 deleteMany,每次自动处理一批直到全部删除
