From e4d40007abaa29f3bce42de27d9d21bb848f61e4 Mon Sep 17 00:00:00 2001 From: amzxyz Date: Thu, 11 Dec 2025 12:51:16 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=A0=BC=E5=BC=8F=E5=8C=96=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lua/input_statistics.lua | 40 ++++++++++++++++++---------------------- wanxiang_algebra.yaml | 2 +- 2 files changed, 19 insertions(+), 23 deletions(-) diff --git a/lua/input_statistics.lua b/lua/input_statistics.lua index ad1c847..e5e628e 100644 --- a/lua/input_statistics.lua +++ b/lua/input_statistics.lua @@ -1,8 +1,7 @@ +-- amzxyz@https://github.com/amzxyz/rime_wanxiang -- input_stats.lua -- Rime 统计增强版 (LevelDB / 滚动时间窗口 / 效率仪表盘 / 汉字提纯) -- 维度升级:1, 2, 3, 4, ≥5 字独立统计 --- UI优化:综合数据田字格布局,峰值与均速分开显示 --- 逻辑更新:增加平台信息清洗函数 (去除 git hash) local userdb = require("lib/userdb") local rime_api = rime_api @@ -12,22 +11,18 @@ local db = userdb.LevelDb("lua/stats") -- 硬编码信息 local schema_name = "万象拼音" --- 注意:这里只获取原始名称,清洗逻辑下放给 process_platform_info local raw_software_name = rime_api.get_distribution_code_name() -- ----------------------------------------------------------------------------- -- 平台信息处理中心 --- 在这里添加你所有的字符串清洗/替换逻辑 -- ----------------------------------------------------------------------------- local function process_platform_info(name, ver) name = name or "" ver = ver or "" - - -- 1. 清洗 Trime/Rime 版本号中的 git hash - -- 目标:将 "v3.3.7-48-gda909f96" 变为 "v3.3.7-48" - -- 逻辑:匹配连字符+g+一串字母数字,并替换为空 + -- 1. 清洗版本号:去除第二个"-"及其后的内容 (例如 -gda909f96) ver = ver:gsub("^(.-%-[^%-]+)%-.*$", "%1") - -- 2. 可以在这里修改平台名称 + + -- 2. 平台名称本地化 if name == "Weasel" then name = "小狼毫" end if name == "trime" then name = "同文输入法" end @@ -214,11 +209,11 @@ local function format_summary(title, data) local phrase_rate = 0 if data.len > 0 then phrase_rate = (data.len - data.l1) / data.len * 100 end - -- 估算均速 (优化算法,防止溢出峰值) + -- 估算均速 local estimated_avg_spd = 0 if data.cnt > 0 then estimated_avg_spd = math.floor(data.len / ((data.cnt * 2) / 60)) - if estimated_avg_spd > data.spd then estimated_avg_spd = math.floor(data.spd * 0.8) end -- 修正为峰值的80%更合理 + if estimated_avg_spd > data.spd then estimated_avg_spd = math.floor(data.spd * 0.8) end if estimated_avg_spd == 0 and data.len > 0 then estimated_avg_spd = data.len end end @@ -228,11 +223,10 @@ local function format_summary(title, data) local p4 = (data.l4 / data.cnt) * 100 local p_gt4 = (data.l_gt4 / data.cnt) * 100 - -- 获取原始版本号 local raw_ver = rime_api.get_distribution_version() or "" - -- 【调用】清洗函数处理平台和版本信息 local clean_name, clean_ver = process_platform_info(raw_software_name, raw_ver) + -- 在此处使用 math.floor(),因为 %d 不能接受浮点数 return string.format( "※ %s统计 · 效率仪表盘\n" .. "───────────────\n" .. @@ -253,15 +247,16 @@ local function format_summary(title, data) "───────────────\n" .. "◉ 方案:%s\n" .. "◉ 平台:%s %s", - title, data.len, data.cnt, - data.spd, estimated_avg_spd, + title, + math.floor(data.len), math.floor(data.cnt), + math.floor(data.spd), math.floor(estimated_avg_spd), avg_code, phrase_rate, - p1, draw_bar(p1), - p2, draw_bar(p2), - p3, draw_bar(p3), - p4, draw_bar(p4), - p_gt4, draw_bar(p_gt4), - schema_name, clean_name, clean_ver -- 使用清洗后的变量 + math.floor(p1), draw_bar(p1), + math.floor(p2), draw_bar(p2), + math.floor(p3), draw_bar(p3), + math.floor(p4), draw_bar(p4), + math.floor(p_gt4), draw_bar(p_gt4), + schema_name, clean_name, clean_ver ) end @@ -302,6 +297,7 @@ local function fini(env) env.stat_notifier:disconnect() env.stat_notifier = nil end + -- 重新部署时关闭数据库,释放文件锁 if db and db:loaded() then db:close() end @@ -327,7 +323,7 @@ local function translator(input, seg, env) elseif input == "/ztj" then title = "七日"; data = aggregate_stats(7) elseif input == "/ytj" then title = "卅日"; data = aggregate_stats(30) elseif input == "/ntj" then title = "本年"; data = aggregate_stats(365) - elseif input == "/ttj" then title = "生涯"; data = aggregate_stats(0) + elseif input == "/tj" then title = "生涯"; data = aggregate_stats(0) end if data then diff --git a/wanxiang_algebra.yaml b/wanxiang_algebra.yaml index 9d8fda2..c76d0b6 100644 --- a/wanxiang_algebra.yaml +++ b/wanxiang_algebra.yaml @@ -1107,7 +1107,7 @@ pro: - xform/ui(\d)(;.*)$/Ⓥ$1$2/ - xform/ou(\d)(;.*)$/Ⓑ$1$2/ - xform/in(\d)(;.*)$/Ⓝ$1$2/ - - xform/[iu]a(\d)(;.*)$/$1Ⓦ$2/ + - xform/[iu]a(\d)(;.*)$/Ⓦ$1$2/ - xform/(.+)ao(\d)(;.*)$/$1Ⓚ$2$3/ - xform/(.+)ai(\d)(;.*)$/$1Ⓛ$2$3/ - xform/(.+)ei(\d)(;.*)$/$1Ⓩ$2$3/