fix: 直接辅助支持大写辅助

This commit is contained in:
amzxyz
2025-12-11 12:19:38 +08:00
parent 5b8e37855d
commit 15626355c2
4 changed files with 308 additions and 761 deletions

View File

@@ -1,16 +1,38 @@
-- github.com/amzxyz
-- input_stats.lua
-- Rime 统计增强版 (LevelDB / 滚动时间窗口 / 效率仪表盘 / 汉字提纯)
-- 维度升级1, 2, 3, 4, ≥5 字独立统计
-- UI优化综合数据田字格布局峰值与均速分开显示
-- 逻辑更新:增加平台信息清洗函数 (去除 git hash)
local userdb = require("lib/userdb")
-- 初始化数据库
local rime_api = rime_api
-- 1. 初始化数据库
local db = userdb.LevelDb("lua/stats")
-- 硬编码信息
local schema_name = "万象拼音"
local software_name = rime_api.get_distribution_code_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+一串字母数字,并替换为空
ver = ver:gsub("^(.-%-[^%-]+)%-.*$", "%1")
-- 2. 可以在这里修改平台名称
if name == "Weasel" then name = "小狼毫" end
if name == "trime" then name = "同文输入法" end
return name, ver
end
-- -----------------------------------------------------------------------------
-- 汉字识别核心逻辑
@@ -192,16 +214,12 @@ 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
-- 估算均速 (Average Speed)
-- 由于没有记录精确的打字时长,这里用一个经验公式估算:
-- 假设每次上屏平均耗时 1.5 - 2 秒左右,以此倒推一个大概的“均速”用于展示
-- 公式:字数 / (次数 * 2秒 / 60)
-- 估算均速 (优化算法,防止溢出峰值)
local estimated_avg_spd = 0
if data.cnt > 0 then
estimated_avg_spd = math.floor(data.len / ((data.cnt * 2) / 60))
-- 修正:如果估算值超过峰值,说明上屏间隔极短(连打),则取峰值的 60%
if estimated_avg_spd > data.spd then estimated_avg_spd = math.floor(data.spd * 0.6) end
if estimated_avg_spd == 0 and data.len > 0 then estimated_avg_spd = data.len end -- 极少字数保底
if estimated_avg_spd > data.spd then estimated_avg_spd = math.floor(data.spd * 0.8) end -- 修正为峰值的80%更合理
if estimated_avg_spd == 0 and data.len > 0 then estimated_avg_spd = data.len end
end
local p1 = (data.l1 / data.cnt) * 100
@@ -209,37 +227,41 @@ local function format_summary(title, data)
local p3 = (data.l3 / data.cnt) * 100
local p4 = (data.l4 / data.cnt) * 100
local p_gt4 = (data.l_gt4 / data.cnt) * 100
local ver = rime_api.get_distribution_version() or ""
-- 获取原始版本号
local raw_ver = rime_api.get_distribution_version() or ""
-- 【调用】清洗函数处理平台和版本信息
local clean_name, clean_ver = process_platform_info(raw_software_name, raw_ver)
return string.format(
"※ %s统计 · 效率仪表盘\n" ..
"───────────────────\n" ..
"───────────────\n" ..
"📊 综合数据\n" ..
" 总字数:%d\t上屏:%d\n" ..
" 峰值速:%d\t均速:%d\n" ..
"───────────────────\n" ..
" 总字数:%d \t 上屏:%d\n" ..
" 峰值速:%d \t 均速:%d\n" ..
"───────────────\n" ..
"⚡ 核心效率\n" ..
" 平均编码:%.2f 键/字\n" ..
" 词组连打:%.1f %%\n" ..
"───────────────────\n" ..
"───────────────\n" ..
"📈 字词分布\n" ..
" [1] %3d%% %s\n" ..
" [2] %3d%% %s\n" ..
" [3] %3d%% %s\n" ..
" [4] %3d%% %s\n" ..
" [≥5] %2d%% %s\n" ..
"───────────────────\n" ..
"───────────────\n" ..
"◉ 方案:%s\n" ..
"◉ 平台:%s %s",
title, data.len, data.cnt,
data.spd, estimated_avg_spd, -- 峰值与均速并排
data.spd, 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), -- 改为 ≥5
schema_name, software_name, ver
p_gt4, draw_bar(p_gt4),
schema_name, clean_name, clean_ver -- 使用清洗后的变量
)
end