From dfb731516d0cb0dfe4cba44e546e58d819d43473 Mon Sep 17 00:00:00 2001 From: Leonxie Date: Fri, 23 Jan 2026 14:26:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96hashtag=E5=82=A8=E5=AD=98?= =?UTF-8?q?=E6=96=B9=E5=BC=8F=EF=BC=8C=E6=B7=BB=E5=8A=A0=E8=BF=9D=E7=A6=81?= =?UTF-8?q?=E8=AF=8D=E6=A3=80=E6=B5=8B=E5=8A=9F=E8=83=BD=EF=BC=8C=E6=B3=A8?= =?UTF-8?q?=E6=84=8F=E6=AD=A4commit=E5=AF=B9=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E7=BB=93=E6=9E=84=E5=AD=98=E5=9C=A8=E7=A0=B4=E5=9D=8F=E6=80=A7?= =?UTF-8?q?=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back/__pycache__/main.cpython-314.pyc | Bin 0 -> 22555 bytes back/main.py | 52 +++++++++++++++++++++---- front/src/components/CreatePost.tsx | 2 +- front/src/components/StatusDisplay.tsx | 1 + 4 files changed, 46 insertions(+), 9 deletions(-) create mode 100644 back/__pycache__/main.cpython-314.pyc diff --git a/back/__pycache__/main.cpython-314.pyc b/back/__pycache__/main.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..eebc52e71ca69c6b51dc42c5a30b381cc8506e42 GIT binary patch literal 22555 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 IPxRLR1NC_=5&!@I literal 0 HcmV?d00001 diff --git a/back/main.py b/back/main.py index 5df142f..a8bcb3e 100644 --- a/back/main.py +++ b/back/main.py @@ -44,7 +44,6 @@ class Submission(db.Model): __tablename__ = 'submissions' id = db.Column(db.Integer, primary_key=True, autoincrement=True) content = db.Column(db.Text, nullable=False) - hashtopic = db.Column(db.Text) # JSON string identity_token = db.Column(db.String(36), nullable=True) status = db.Column(db.String(20), default='Pending') created_at = db.Column(db.DateTime, default=lambda: datetime.now()) @@ -58,13 +57,19 @@ class Comment(db.Model): id = db.Column(db.Integer, primary_key=True, autoincrement=True) submission_id = db.Column(db.Integer, db.ForeignKey('submissions.id'), nullable=False) content = db.Column(db.Text, nullable=False) - hashtopic = db.Column(db.Text) # JSON string identity_token = db.Column(db.String(36), nullable=True) created_at = db.Column(db.DateTime, default=lambda: datetime.now()) upvotes = db.Column(db.Integer, default=0) downvotes = db.Column(db.Integer, default=0) parent_comment_id = db.Column(db.Integer, db.ForeignKey('comments.id'), nullable=True) +class Hashtag(db.Model): + __tablename__ = 'hashtags' + id = db.Column(db.Integer, primary_key=True, autoincrement=True) + type = db.Column(db.Integer, nullable=False) # 0: Submission, 1: Comment + target_id = db.Column(db.Integer, nullable=False) + name = db.Column(db.String(255), nullable=False) + class DenyWord(db.Model): __tablename__ = 'deny_words' id = db.Column(db.Integer, primary_key=True, autoincrement=True) @@ -88,6 +93,17 @@ def load_config(): except Exception as e: print(f"Warning: Failed to load settings: {e}") +def load_deny_words(): + global DENY_WORDS_CACHE + with app.app_context(): + try: + words = db.session.query(DenyWord.word).all() + # words 是 list of tuples [('word1',), ('word2',)] + DENY_WORDS_CACHE = [w[0] for w in words] + print(f"Loaded {len(DENY_WORDS_CACHE)} deny words.") + except Exception as e: + print(f"Warning: Failed to load deny words: {e}") + # --- 用户普通api端点 --- @app.route('/api/settings', methods=['GET']) def get_settings(): @@ -185,10 +201,9 @@ def submit_post(): identity_token = data.get('identity') - # 违禁词检测 - deny_words = DenyWord.query.all() - for dw in deny_words: - if dw.word in content: + # 违禁词检测 (使用内存缓存) + for word in DENY_WORDS_CACHE: + if word in content: return jsonify({"code": 2005, "data": "提交内容包含违禁词"}) # Identity 验证 @@ -201,13 +216,23 @@ def submit_post(): # 保存 new_post = Submission( content=content, - hashtopic=json.dumps(hashtopic) if hashtopic else '[]', identity_token=identity_token, status='Pending' if NEED_AUDIT else 'Pass' ) db.session.add(new_post) db.session.commit() + # 保存 Hashtags + if hashtopic: + for tag in hashtopic: + new_tag = Hashtag( + type=0, # 0 for Submission + target_id=new_post.id, + name=tag + ) + db.session.add(new_tag) + db.session.commit() + code = 1002 if new_post.status == 'Pending' else 1001 return jsonify({"code": code, "data": {"id": new_post.id}}) except Exception as e: @@ -243,12 +268,22 @@ def submit_comment(): new_comment = Comment( submission_id=submission_id, content=content, - hashtopic=json.dumps(hashtopic) if hashtopic else '[]', identity_token=identity_token ) db.session.add(new_comment) db.session.commit() + # 保存 Hashtags + if hashtopic: + for tag in hashtopic: + new_tag = Hashtag( + type=1, # 1 for Comment + target_id=new_comment.id, + name=tag + ) + db.session.add(new_tag) + db.session.commit() + return jsonify({"code": 1000, "data": ""}) except Exception as e: return jsonify({"code": 2003, "data": f"评论失败: {str(e)}"}) @@ -337,4 +372,5 @@ def get_statics(): if __name__ == '__main__': init_db() load_config() + load_deny_words() app.run(debug=True, port=5000) diff --git a/front/src/components/CreatePost.tsx b/front/src/components/CreatePost.tsx index 63d72ee..caa860b 100644 --- a/front/src/components/CreatePost.tsx +++ b/front/src/components/CreatePost.tsx @@ -1,6 +1,6 @@ // 我草,react-md-editor这么好用,无语了,早知道v1也用这个编辑器了..... // 不过居然没有汉化...有点可惜 -// 我撤回刚才那句话,编辑器有提供中文指令集,我是sb。 +// 我撤回刚才那句话,编辑器有提供中文指令集,我是sb,没发现。 import React, { useState, useEffect, useRef, useCallback } from 'react'; import MDEditor from '@uiw/react-md-editor'; // 引入中文指令集 diff --git a/front/src/components/StatusDisplay.tsx b/front/src/components/StatusDisplay.tsx index 00d04e5..6b20342 100644 --- a/front/src/components/StatusDisplay.tsx +++ b/front/src/components/StatusDisplay.tsx @@ -1,3 +1,4 @@ +// v1的时候就连统计信息也5秒获取一次,不妥,所以改成逻辑触发刷新 import React, { useState, useEffect, useCallback } from 'react'; import { makeStyles,