From fde510803ec7942312d6c32ea0881d7d81b242b1 Mon Sep 17 00:00:00 2001
From: Miyamizu-MitsuhaSang <2510681107@qq.com>
Date: Sun, 17 Aug 2025 16:19:53 +0800
Subject: [PATCH] =?UTF-8?q?settings.py:=20-=E6=9B=B4=E6=96=B0=E7=94=A8?=
=?UTF-8?q?=E6=88=B7=E5=90=8D=EF=BC=88=E7=94=B1=E4=BA=8E=E6=95=B0=E6=8D=AE?=
=?UTF-8?q?=E5=BA=93=E8=BF=9E=E6=8E=A5=E6=9B=B4=E6=96=B0=EF=BC=89=20-?=
=?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BA=86=E5=A4=9A=E6=95=B0=E6=8D=AE=E5=BA=93?=
=?UTF-8?q?=E8=BF=9E=E6=8E=A5=EF=BC=88=E9=A2=84=E7=95=99prod=5Fdb=E5=A4=87?=
=?UTF-8?q?=E7=94=A8=EF=BC=89=20backfill=5Fsearch=5Ftext.py:=20-=E7=BB=9F?=
=?UTF-8?q?=E4=B8=80=E5=9B=9E=E5=A1=ABsearch=5Ftext=E8=84=9A=E6=9C=AC=20si?=
=?UTF-8?q?gnals.py:=20-=E5=90=8E=E7=BB=AD=E5=8A=A0=E5=85=A5=E5=86=85?=
=?UTF-8?q?=E5=AE=B9=E6=97=B6=E8=87=AA=E5=8A=A8=E5=A4=84=E7=90=86text?=
=?UTF-8?q?=E4=B8=BAsearch=5Ftext=20./scripts:=20-=E6=95=B0=E6=8D=AE?=
=?UTF-8?q?=E5=BA=93=E5=AF=BC=E5=85=A5=E8=84=9A=E6=9C=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.idea/dict_server.iml | 2 +-
.idea/misc.xml | 2 +-
app/api/users.py | 4 +-
app/models/fr.py | 116 ++------------------------------
app/models/jp.py | 4 +-
app/models/signals.py | 41 +++++++++++
app/schemas/admin_schemas.py | 18 ++---
app/utils/textnorm.py | 23 +++++++
main.py | 1 +
scripts/DictTable_20250811.xlsx | Bin 0 -> 346171 bytes
scripts/__init__.py | 0
scripts/backfill_search_text.py | 17 +++++
scripts/update_fr.py | 103 ++++++++++++++++++++++++++++
settings.py | 19 ++----
14 files changed, 210 insertions(+), 140 deletions(-)
create mode 100644 app/models/signals.py
create mode 100644 app/utils/textnorm.py
create mode 100644 scripts/DictTable_20250811.xlsx
create mode 100644 scripts/__init__.py
create mode 100644 scripts/backfill_search_text.py
create mode 100644 scripts/update_fr.py
diff --git a/.idea/dict_server.iml b/.idea/dict_server.iml
index 5305fe2..53b48ab 100644
--- a/.idea/dict_server.iml
+++ b/.idea/dict_server.iml
@@ -4,7 +4,7 @@
-
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index dbda99f..1b75482 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -3,5 +3,5 @@
-
+
\ No newline at end of file
diff --git a/app/api/users.py b/app/api/users.py
index 7f34085..c99f7e8 100644
--- a/app/api/users.py
+++ b/app/api/users.py
@@ -6,7 +6,7 @@ import redis.asyncio as redis
from app.models.base import ReservedWords, User, Language
from app.utils.security import verify_password, hash_password, validate_password, validate_username, get_current_user
-from settings import SECRET_KEY
+from settings import settings
from app.core.redis import get_redis
from app.schemas.user_schemas import UserIn, UserOut, UpdateUserRequest, UserLoginRequest
@@ -67,7 +67,7 @@ async def user_login(user_in: UserLoginRequest):
"is_admin": user.is_admin,
}
- token = jwt.encode(payload, SECRET_KEY, algorithm="HS256")
+ token = jwt.encode(payload, settings.SECRET_KEY, algorithm="HS256")
return {
"access_token": token,
diff --git a/app/models/fr.py b/app/models/fr.py
index 42825ac..60e7eb3 100644
--- a/app/models/fr.py
+++ b/app/models/fr.py
@@ -12,42 +12,17 @@ sheet_name_fr = "法英中释义"
class WordlistFr(Model):
id = fields.IntField(pk=True)
- language = fields.CharField(max_length=20, description="单词语种")
text = fields.CharField(max_length=40, unique=True, description="单词")
- definitions = fields.ReverseRelation("DefinitionFr")
- attachments = fields.ReverseRelation("AttachmentsFr")
+ definitions: fields.ReverseRelation["DefinitionFr"]
+ attachments: fields.ReverseRelation["AttachmentFr"]
+ freq = fields.IntField() # 词频排序用
+ search_text = fields.CharField(max_length=255, index=True) # 检索字段
# attachment = fields.ForeignKeyField("models.Attachment", related_name="wordlists", on_delete=fields.CASCADE)
# source = fields.CharField(max_length=20, description="", null=True)
class Meta:
table = "wordlist_fr"
- T = TypeVar("T", bound=Model)
-
- @classmethod
- async def update_or_create(cls: Type[T], **kwargs) -> Tuple[T, bool]:
- print("传入参数为:", kwargs)
- if not kwargs:
- raise ValueError("必须提供至少一个字段作为参数")
-
- created: bool = False
-
- # 使用 kwargs 中第一个字段作为查找条件
- first_key = next(iter(kwargs))
- lookup = {first_key: kwargs[first_key]}
-
- word = await cls.filter(**lookup).first() # 参数展开语法
- if word:
- for k, v in kwargs.items():
- if k != first_key:
- setattr(word, k, v)
- await word.save()
- else:
- await cls.create(**kwargs)
- created = True
-
- return word, created
-
class AttachmentFr(Model):
id = fields.IntField(pk=True)
@@ -63,91 +38,10 @@ class AttachmentFr(Model):
class DefinitionFr(Model):
id = fields.IntField(pk=True)
word = fields.ForeignKeyField("models.WordlistFr", related_name="definitions", on_delete=fields.CASCADE)
- pos = fields.CharEnumField(PosEnumFr, max_length=30) # ✅ 把词性放在释义层面
+ pos = fields.CharEnumField(PosEnumFr, max_length=30, null=True) # ✅ 把词性放在释义层面
meaning = fields.TextField(description="单词释义") # 如:“学习”
example = fields.TextField(null=True, description="单词例句")
eng_explanation = fields.TextField(null=True, description="English explanation")
class Meta:
table = "definitions_fr"
-
- @classmethod
- async def init_from_xlsx(
- cls,
- filepath: str,
- sheet_name: str
- ):
- """
- Initiate the database from xlsx file. Only read in data without checking
- whether the content already exists.
- :param filepath: receive both relative or absolute path
- :param sheet_name: specific sheet name inside the .xlsx file
- :return: None
- """
- df = pd.read_excel(filepath, sheet_name=sheet_name, na_filter=True)
- df.columns = [col.strip() for col in df.columns]
- df.dropna(how="all", inplace=True)
-
- # create_cnt = 0
- DEF_COUNT = 1
-
- for row in df.itertuples():
- word = row.单词
- cls_word = await WordlistFr.filter(text=word).first()
- if cls_word is None:
- print(f"未找到 word: {word}")
- continue
- pos = getattr(row, f"词性{DEF_COUNT}")
- if pd.isna(pos):
- continue
- meaning = getattr(row, f"中文释义{DEF_COUNT}")
- eng_exp = getattr(row, f"英语释义{DEF_COUNT}")
- await DefinitionFr.create(
- part_of_speech=pos,
- meaning=meaning,
- eng_explanation=eng_exp,
- word=cls_word
- )
-
- # TODO revise the function (check update or create by id)
- @classmethod
- async def update_or_create_meaning(
- cls,
- word_obj,
- target_language_obj,
- part_of_speech: str,
- meaning: str,
- example: str = None,
- eng_explanation: str = None,
- ) -> tuple["DefinitionFr", bool]:
- """
- 查询某个单词是否已有该释义(依据四元组作为唯一标识),存在则更新,不存在则新增。
- 返回:(对象, 是否为新创建)
- """
- query = {
- "word": word_obj,
- "target_language": target_language_obj,
- "part_of_speech": part_of_speech,
- "meaning": meaning
- }
-
- obj = await cls.filter(**query).first()
- created = False
-
- if obj:
- # 可更新其他字段
- obj.example = example
- obj.eng_explanation = eng_explanation
- await obj.save()
- else:
- obj = await cls.create(
- word=word_obj,
- target_language=target_language_obj,
- part_of_speech=part_of_speech,
- meaning=meaning,
- example=example,
- eng_explanation=eng_explanation,
- )
- created = True
-
- return obj, created
diff --git a/app/models/jp.py b/app/models/jp.py
index 671c925..a43b398 100644
--- a/app/models/jp.py
+++ b/app/models/jp.py
@@ -16,8 +16,8 @@ sheet_name_jp = "日汉释义"
class WordlistJp(Model):
id = fields.IntField(pk=True)
text = fields.CharField(max_length=40, description="单词")
- definitions = fields.ReverseRelation("DefinitionJp")
- attachments = fields.ReverseRelation("AttachmentsJp")
+ definitions : fields.ReverseRelation["DefinitionJp"]
+ attachments : fields.ReverseRelation["AttachmentJp"]
class Meta:
table = "wordlist_jp"
diff --git a/app/models/signals.py b/app/models/signals.py
new file mode 100644
index 0000000..75c113c
--- /dev/null
+++ b/app/models/signals.py
@@ -0,0 +1,41 @@
+from tortoise.signals import pre_save
+from tortoise import BaseDBAsyncClient
+from typing import Optional
+
+from app.utils.textnorm import normalize_text
+from app.models.fr import WordlistFr
+
+
+@pre_save(WordlistFr)
+async def wordlist_fr_pre_save(
+ sender: type[WordlistFr],
+ instance: WordlistFr,
+ using_db: BaseDBAsyncClient,
+ update_fields: Optional[list[str]]
+) -> None:
+ """
+ 仅当 text 变更时,同步 search_text。
+ - 新建:总是写入 search_text
+ - 修改:只有当 text 在本次更新范围内,或 text 实际发生变化时才更新
+ - 若调用方用了 update_fields,只包含 text,则自动把 'search_text' 追加进去,确保写回
+ """
+ desired = normalize_text(instance.text or "")
+ # 不变则不写,减少无谓 UPDATE
+ if instance.search_text == desired:
+ return
+
+ # 情况 1:完整更新(没有传 update_fields)
+ if update_fields is None:
+ instance.search_text = desired
+ return # ✅ 会写入
+
+ # 情况 2:部分更新——只有当这次确实更新了 text,才同步 search_text
+ if "text" in update_fields:
+ instance.search_text = desired
+ # update_fields 可能是 tuple,转成 list 再补充
+ fields = list(update_fields)
+ if "search_text" not in fields:
+ fields.append("search_text")
+ # 交还给 ORM:确保此次 UPDATE 包含 search_text
+ instance._update_fields = fields
+ # 否则(这次没更 text),不动 search_text
diff --git a/app/schemas/admin_schemas.py b/app/schemas/admin_schemas.py
index e8c5dfd..18c911e 100644
--- a/app/schemas/admin_schemas.py
+++ b/app/schemas/admin_schemas.py
@@ -3,10 +3,6 @@ from enum import Enum
from pydantic import BaseModel, validator, field_validator, Field
from typing import Optional, Literal, List
-from tortoise.exceptions import DoesNotExist
-
-from app.models.fr import WordlistFr
-
class PosEnumFr(str, Enum):
# noun
@@ -21,6 +17,10 @@ class PosEnumFr(str, Enum):
v_i = "v.i."
v_pr = "v.pr."
v_t_i = "v.t./v.i."
+ v_t_dir = "v.t.dir."
+ v_t_ind = "v.t.ind."
+ v_t_pr = "v.t.(v.pr.)"
+ v_i_ind = "v.t.ind./v.i."
adj = "adj." # adj
adv = "adv." # adv
@@ -29,6 +29,8 @@ class PosEnumFr(str, Enum):
conj = "conj."
interj = "interj."
chauff = "chauff"
+ art = "art."
+
class PosEnumJp(str, Enum):
@@ -55,18 +57,18 @@ class CreateWord(BaseModel):
@classmethod
@field_validator("eng_explanation")
def validate_eng_explanation(cls, v):
- if cls.language is "jp" and v:
+ if cls.language == "jp" and v:
raise ValueError("Japanese word has no English explanation")
- if cls.language is "fr" and v is None or v == "":
+ if cls.language == "fr" and v is None or v == "":
raise ValueError("French word must have English explanation")
return v
@classmethod
@field_validator("pos")
def validate_pos(cls, v):
- if cls.language is "fr" and v not in PosEnumFr:
+ if cls.language == "fr" and v not in PosEnumFr:
raise ValueError("Pos is not a valid type")
- if cls.language is "jp" and v not in PosEnumJp:
+ if cls.language == "jp" and v not in PosEnumJp:
raise ValueError("Pos is not a valid type")
return v
diff --git a/app/utils/textnorm.py b/app/utils/textnorm.py
new file mode 100644
index 0000000..92cbe4e
--- /dev/null
+++ b/app/utils/textnorm.py
@@ -0,0 +1,23 @@
+import re
+import unicodedata
+
+
+def normalize_text(s: str) -> str:
+ """
+ 规范化字符串,用于搜索/存储 search_text
+ - Unicode 标准化
+ - 去除重音符号(é -> e)
+ - 转小写
+ - 去掉前后空格,多空格合并
+ """
+ if not s:
+ return ""
+ # 1. Unicode 标准化(NFKD 拆分)
+ s = unicodedata.normalize("NFKD", s)
+ # 2. 去掉音标/重音符
+ s = "".join(ch for ch in s if not unicodedata.combining(ch))
+ # 3. 转小写
+ s = s.lower()
+ # 4. 去掉首尾空格 & 合并多个空格
+ s = re.sub(r"\s+", " ", s.strip())
+ return s
diff --git a/main.py b/main.py
index 8b6f502..4eccc35 100644
--- a/main.py
+++ b/main.py
@@ -8,6 +8,7 @@ from settings import TORTOISE_ORM
from app.api.users import users_router
from app.api.admin.router import admin_router
from app.core.redis import init_redis_pool
+import app.models.signals
@asynccontextmanager
diff --git a/scripts/DictTable_20250811.xlsx b/scripts/DictTable_20250811.xlsx
new file mode 100644
index 0000000000000000000000000000000000000000..03db959fb55d32a817901e248aa626bd45751546
GIT binary patch
literal 346171
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