From d4a8f59fd8a26a288c0694487b239f3918eeb5bb Mon Sep 17 00:00:00 2001 From: csf123321 Date: Fri, 27 Mar 2026 13:04:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=89=8D=E7=AB=AF=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E7=BC=96=E8=AF=91=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/requirements.txt | Bin 2246 -> 0 bytes backend/test.py | 27 ----------- backend/test1.py | 57 ------------------------ backend/test_main.http | 34 -------------- frontend/src/components/ThemeToggle.vue | 1 - frontend/src/views/RevisionsView.vue | 14 +++--- frontend/src/views/SearchView.vue | 11 ++--- 7 files changed, 13 insertions(+), 131 deletions(-) delete mode 100644 backend/requirements.txt delete mode 100644 backend/test.py delete mode 100644 backend/test1.py delete mode 100644 backend/test_main.http diff --git a/backend/requirements.txt b/backend/requirements.txt deleted file mode 100644 index 9db89a9cd168414e084a11b640d338ef4c16cd7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2246 zcmai#PjAyu5XAS4#79Y0CvAZPhh7ntihANyrAeBkZIWU;rQyQ^^V{)@69ht*tJJ%1 zc6Rp9`}K1i%h*H{t7zjnp7h^ceAIIuCsFA=jkob8#$p*zMMm9<;VkMz8Kn;#hZ%R0mR3mj zdchhh(l9R41F!SWZ=oz|ahWNXLFQE}|8Zvj;|L!%$~H_aUvz2^wz=v zr{u`#i;Owd*+$W7d0~b12fbGJUT3h5rIDGVP^Ad20x`&m+=)|Iz<{iJoJKh4?7AH1 z?^ttjnCV$3TAOUZF&2>)id^k;s8TmGd=C|PyZZOrv7#ci%gVrQ$NzRWeW=|9< zwkq>-FR<;%} z>h~PFn!`$LSQWG3ivIKzqFJ5N?6quoJw(??bIx7DCasL@ze zeij=x^h8*mvoa^ecO!*SW*Of9eI-QUx CJwWvU diff --git a/backend/test.py b/backend/test.py deleted file mode 100644 index 42d436b..0000000 --- a/backend/test.py +++ /dev/null @@ -1,27 +0,0 @@ -import os - - -def print_tree(root, prefix=""): - items = sorted( - name for name in os.listdir(root) - if name != "__pycache__" - ) - total = len(items) - - for i, name in enumerate(items): - path = os.path.join(root, name) - is_last = (i == total - 1) - - connector = "└── " if is_last else "├── " - print(prefix + connector + name) - - if os.path.isdir(path): - extension = " " if is_last else "│ " - print_tree(path, prefix + extension) - - -root_dir = r"E:\ScnuProject\InsightRadar\backend\app" -print(os.path.basename(root_dir) + "/") -print_tree(root_dir) - - diff --git a/backend/test1.py b/backend/test1.py deleted file mode 100644 index 194177e..0000000 --- a/backend/test1.py +++ /dev/null @@ -1,57 +0,0 @@ -# from dotenv import load_dotenv -# import os -# import time -# -# print("step 1: loading env") -# load_dotenv() -# -# hf_token = os.getenv("HF_TOKEN") -# print("step 2:", "HF_TOKEN loaded" if hf_token else "No token") -# -# print("step 3: importing sentence-transformers") -# from sentence_transformers import SentenceTransformer -# -# print("step 4: start loading model") -# t0 = time.time() -# model = SentenceTransformer(r"E:\Models\bge-m3", local_files_only=True, device="cuda") -# print(f"step 5: model loaded in {time.time() - t0:.2f}s") -# -# print("step 6: importing sklearn/numpy") -# from sklearn.metrics.pairwise import cosine_similarity -# import numpy as np -# -# titles = [ -# # A组:同品牌同产品,但含义不同 -# "苹果发布新款iPhone,影像系统再次升级", -# "苹果推出全新iPhone,摄像头性能进一步增强", -# "苹果回应新款iPhone发热问题:将通过系统更新修复", -# "苹果下调部分旧款iPhone售价,新机型并未参与促销", -# -# # B组:看起来都像“苹果新闻”,但主题已变 -# "苹果公司股价上涨,市值再创新高", -# "苹果供应链承压,部分零部件厂商下调全年预期", -# "苹果被曝缩减Vision产品产量,市场需求不及预期", -# "苹果发布新款MacBook,并未更新iPhone产品线", -# -# # C组:同样是“发布/推出”,但主体不同 -# "华为发布新款手机,影像能力进一步提升", -# "小米推出全新手机,影像系统迎来升级", -# "OPPO发布年度旗舰机型,主打夜景拍摄", -# ] -# -# print("step 7: start encoding") -# t1 = time.time() -# embeddings = model.encode( -# titles, -# normalize_embeddings=True, -# show_progress_bar=True, -# batch_size=16 -# ) -# print(f"step 8: encode done in {time.time() - t1:.2f}s") -# -# sim = cosine_similarity(embeddings) -# print(np.round(sim, 4)) -# -import secrets - -print(secrets.token_urlsafe(64)) diff --git a/backend/test_main.http b/backend/test_main.http deleted file mode 100644 index 65ff565..0000000 --- a/backend/test_main.http +++ /dev/null @@ -1,34 +0,0 @@ -# Health -GET http://127.0.0.1:8000/ -Accept: application/json - -### -# Send register verification code -POST http://127.0.0.1:8000/api/v1/auth/register/send-code -Content-Type: application/json - -{ - "email": "demo@example.com" -} - -### -# Register by verification code -POST http://127.0.0.1:8000/api/v1/auth/register -Content-Type: application/json - -{ - "email": "demo@example.com", - "password": "DemoPass123", - "verification_code": "123456", - "nickname": "demo_user" -} - -### -# Login -POST http://127.0.0.1:8000/api/v1/auth/login -Content-Type: application/json - -{ - "email": "demo@example.com", - "password": "DemoPass123" -} diff --git a/frontend/src/components/ThemeToggle.vue b/frontend/src/components/ThemeToggle.vue index f010353..912142b 100644 --- a/frontend/src/components/ThemeToggle.vue +++ b/frontend/src/components/ThemeToggle.vue @@ -26,7 +26,6 @@ function handleToggle(event: MouseEvent) { Math.max(y, innerHeight - y) ) - // @ts-expect-error: TypeScript 类型可能较旧,忽略 startViewTransition 报错 const transition = document.startViewTransition(() => { themeStore.toggleTheme() }) diff --git a/frontend/src/views/RevisionsView.vue b/frontend/src/views/RevisionsView.vue index a28acda..b0844e7 100644 --- a/frontend/src/views/RevisionsView.vue +++ b/frontend/src/views/RevisionsView.vue @@ -88,8 +88,8 @@ const revisionChains = computed(() => { // 组内按时间升序 items.sort((a, b) => safeParseTime(a.created_at) - safeParseTime(b.created_at)) - const first = items[0] - const last = items[items.length - 1] + const first = items[0]! + const last = items[items.length - 1]! // 拼接标题链,避免相邻记录重复 const titles: string[] = [first.previous_headline] @@ -107,13 +107,13 @@ const revisionChains = computed(() => { chains.push({ event_id, - source_name: first.source_name, + source_name: first.source_name!, titles, change_times, - first_at: first.created_at, - last_at: last.created_at, + first_at: first.created_at!, + last_at: last.created_at!, change_count: items.length, - url: first.url, + url: first.url!, }) } @@ -242,7 +242,7 @@ onMounted(loadRevisions)

{{ title }}

- {{ formatTime(chain.change_times[idx]) }} + {{ formatTime(chain.change_times[idx] ?? '') }}
diff --git a/frontend/src/views/SearchView.vue b/frontend/src/views/SearchView.vue index e0b8679..edce50a 100644 --- a/frontend/src/views/SearchView.vue +++ b/frontend/src/views/SearchView.vue @@ -6,6 +6,7 @@ import { searchEventsTimeline } from '@/api/events' import type { SearchTimelineResponse } from '@/types/event' import UnifiedEventCard from '@/components/UnifiedEventCard.vue' import CustomSelect from '@/components/CustomSelect.vue' +import type { ApexOptions } from 'apexcharts' const keyword = ref('') const searchResult = ref(null) @@ -56,7 +57,7 @@ const filteredEvents = computed(() => { }) // 热度时间线图表配置。 -const chartOptions = ref({ +const chartOptions = ref({ chart: { type: 'area', height: 350, @@ -66,12 +67,12 @@ const chartOptions = ref({ }, animations: { enabled: true, - easing: 'easeinout', + // easing: 'easeinout', speed: 800, }, // 点击图表数据点:切换选中时间,再次点击则取消筛选 events: { - markerClick: function(event: any, chartContext: any, { dataPointIndex }: any) { + markerClick: function(event: unknown, chartContext: unknown, { dataPointIndex }: never) { if (searchResult.value && searchResult.value.timeline[dataPointIndex]) { const clickedTime = searchResult.value.timeline[dataPointIndex].time_label if (selectedTimeLabel.value === clickedTime) { @@ -368,7 +369,7 @@ async function handleSearch() { gap: 24px; align-items: stretch; position: relative; - z-index: 10; + z-index: 10; } .search-box { @@ -378,7 +379,7 @@ async function handleSearch() { flex-direction: column; justify-content: center; position: relative; - z-index: 2; + z-index: 2; } .tips-box {