英语语法两书全覆盖:213 知识点
- 提取 DK《English for Everyone Grammar Guide》与 Murphy《English Grammar in Use》完整目录,去重融合成 144 个补充知识点,与既有 69 核心课合计 213 - 补充课为中文为主六步课文(目标/规则/例句/易错/即时练习/知识卡),按 A1-C1 标注难度,归入入门/基础/进阶三档 - point_id 放宽到 191 以容纳长 slug Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
d84d827202
commit
f5d810215f
@@ -0,0 +1,51 @@
|
||||
// 增量种子:把 extra/batch0-3.json 的补充课文写入 grammar_point(不重复,序号续接)
|
||||
import fs from "node:fs";
|
||||
import path from "node:path";
|
||||
import { sql, eq } from "drizzle-orm";
|
||||
import { drizzle } from "drizzle-orm/mysql2";
|
||||
import mysql from "mysql2/promise";
|
||||
import { grammarPoints } from "../src/db/schema";
|
||||
|
||||
type Extra = { id: string; title: string; cefr: string; difficulty: number; summary: string; md: string };
|
||||
|
||||
const levelOf = (cefr: string) =>
|
||||
cefr === "A1" ? { level: "starter", name: "入门" } : cefr === "A2" ? { level: "base", name: "基础" } : { level: "pro", name: "进阶" };
|
||||
|
||||
async function main() {
|
||||
const conn = await mysql.createConnection(process.env.DATABASE_URL!);
|
||||
const db = drizzle(conn);
|
||||
|
||||
const [mx] = await db.select({ m: sql<number>`COALESCE(MAX(seq),0)` }).from(grammarPoints);
|
||||
let seq = mx.m;
|
||||
|
||||
const existing = new Set((await db.select({ pointId: grammarPoints.pointId }).from(grammarPoints)).map((r) => r.pointId));
|
||||
|
||||
let added = 0;
|
||||
for (const f of ["batch0.json", "batch1.json", "batch2.json", "batch3.json"]) {
|
||||
const p = path.join(process.cwd(), "src/content/grammar/extra", f);
|
||||
if (!fs.existsSync(p)) continue;
|
||||
const arr = JSON.parse(fs.readFileSync(p, "utf8")) as Extra[];
|
||||
for (const e of arr) {
|
||||
if (existing.has(e.id)) continue;
|
||||
seq += 1;
|
||||
const lv = levelOf(e.cefr);
|
||||
await db.insert(grammarPoints).values({
|
||||
pointId: e.id,
|
||||
level: lv.level,
|
||||
levelName: lv.name,
|
||||
title: e.title,
|
||||
difficulty: e.difficulty || 1,
|
||||
summary: e.summary,
|
||||
prereq: "[]",
|
||||
md: e.md,
|
||||
seq,
|
||||
});
|
||||
added++;
|
||||
}
|
||||
}
|
||||
const [tot] = await db.select({ n: sql<number>`COUNT(*)` }).from(grammarPoints);
|
||||
console.log("新增补充课:", added, "| 总知识点:", tot.n);
|
||||
await conn.end();
|
||||
}
|
||||
|
||||
main();
|
||||
Reference in New Issue
Block a user