4e574ac64a7464e642b92496906a23fa314d2877
新增 /user/insights,让箱主第一次能看到「有多少人来过我的箱、提问处理得怎么样」。 数据来源: - 新表 box_views:一行 = 一访客×一天×一箱,views 累加,唯一索引 (user_id, viewed_on, visitor)。刻意不内嵌 dbutil.Model —— 软删除 + 唯一索引 会让被删行永久占槽,且删过的槽位再也插不进去。 - 访客标识 = HMAC(日盐, IP) 前 32 hex:同日可去重(UV 准)、跨日不可关联(隐私)。 代价是近 7/30 天 UV = 各日 UV 之和,页面上已写明口径。 写入是异步的:buffered channel 512 + 2s 批量 flush,队列满即丢(统计尽力而为, 不该因为记一笔访问就拖慢页面)。过滤箱主本人、空 UA、爬虫 UA、预取请求。 密钥复用 server.xsrf_key;每日清理 400 天前的明细。 页面(纯 CSS 画图,不引图表库): - 今日/近 7 天/近 30 天 KPI + 上周对比 - 30 天 PV/UV 双柱趋势、24 小时时段分布 - 提问处理漏斗 + 回答率进度条 + 自动结论 聚合层 internal/db/box_analytics.go 复用 analyticsDialectFor 的时区处理, 与全站 stats 分开(那个不含单箱维度、按自然日缓存)。 测试:box_views 4 项(含「同批同键先内存合并」——PG 的 ON CONFLICT 不允许 同条 INSERT 二次命中同一行)、insights 的 pct/窗口切分/visitorID/爬虫过滤。
狼的提问箱
匿名提问箱 / Anonymous Question Box
基于原版NekoBox做了一些微小的修改。主要体现在:
- 率先引入二维码访问,同时增加更多自定义可行性,方便自行创作。
- 添加探索页面,允许用户自行选择添加标签并展示,为陌生人提问创造可能。
- 稍微调整了屏蔽词策略。
截图
QRcode
Commit with picture
Explorer
安装
需求
从源码编译
git clone https://github.com/tamakyi/TamaBox.git
cd TamaBox
go build -o TamaBox
编辑配置文件
cp conf/app.sample.ini conf/app.ini
运行
./TamaBox web
架构
NekoBox 使用 GitHub Actions 进行持续集成和部署。
当用户访问 NekoBox 时,请求将会被发送至阿里云 CDN,CDN 的访问日志将会被实时推送到阿里云日志服务 (SLS)。日志数据将在 SLS 中存储 180 天,用于审计。
用户的信息、提问和回答将被存储在 MySQL 数据库中。
用户的会话、CSRF 令牌和电子邮件验证令牌将被暂时存储在 Redis 中。
用户的整个请求和响应链路将被上传到 Uptrace 用于调试。这些数据将被储存 30 天。管理员可以使用用户提供的 TraceID
来追踪查询指定的请求。
当用户提交提问时,问题的内容将被发送到七牛文本审查服务进行审查。如果提问内容存在问题,该内容将被发送到阿里云文本审查服务进行二次审查。 如果内容审查仍未通过,该提问将被拒绝发送。这是由于七牛文本审查服务不是很准确,一些非冒犯性的内容可能被七牛文本审查误报。
当用户收到新的提问时,阿里云邮件服务(DM)会向用户的邮箱发送一封邮件。
你可以在主页查看 NekoBox 的更新日志,也欢迎访问赞助页面来打钱支持 NekoBox。 更新日志和赞助商名单存储在独立部署的 Pocketbase 服务中。
开源协议
MIT License
备注
- 基于原版Nekobox修改,基本与原版无异,主要是添加了个人主页二维码和首页统计数,并修改了部分适合自己的参数。
Languages
Go
66.6%
HTML
26.5%
Python
4.3%
CSS
1.4%
Shell
1.1%






