统计数据

流量统计

流量统计用来查看主站的访问数据、资源表现和下载情况,供运营分析使用。入口在侧边栏「统计数据」下的「流量统计」,路径 /4_ts。

仅工坊主管可访问。

整体布局

页面自上而下分五部分。

顶部是页头,显示数据最后更新时间和「导出 CSV」按钮。

接下来是折叠面板「防刷参数配置」,默认收起,点击标题展开。

再往下是六个概览卡片,横向排列。

然后是资源类型趋势对比图表。

最后是资源排行榜、资源健康度、资源对比分析三块内容卡片,纵向排列。

概览卡片

六个卡片分别显示总访问量、今日活跃用户、总下载量、总互动数、今日下载请求和数据最后更新时间。

总访问量是主站历史以来的全部页面访问次数。

今日活跃用户由两部分相加:今日有登录记录的账号数,加上今日有访问记录的未登录 IP 去重数。

总下载量是所有资源文件的下载计数之和,直接从资源文件元数据里累加。

总互动数是所有资源的点赞、投币、收藏之和。

今日下载请求统计今日的下载请求次数。完整下载和部分下载分别计算,部分下载按 IP 加路径去重,避免断点续传重复计数。

数据最后更新时间是本次查询的执行时间,不是数据的实际变更时间。

防刷参数配置

这一块用来调节访问统计的防刷策略。展开后分两组,分别对全站和资源详情页生效。

全站防刷的两个参数如下。

Session 软拦截是指同一浏览器会话内,若最近一次访问时间在设定值以内,本次访问不计入 PV,直接跳过数据库查询。这个参数主要减少数据库压力。

数据库窗口期是指两个不同会话对同一路径的访问,若间隔小于设定值,第二次不计入 PV。这个参数是真正意义上的防刷。

资源详情页防刷的参数含义相同,只是作用范围限定在资源详情页。详情页的防刷窗口通常比全站更长,因为详情页是重点观察对象。

默认值如下。全站的 Session 拦截为 1 分钟,窗口期为 10 分钟。详情页的 Session 拦截为 5 分钟,窗口期为 60 分钟。

修改后点「保存配置」立即生效,无需重启服务。点「恢复默认」把四个参数重置为默认值并自动保存。

参数取值为整数,单位是分钟,范围 0 到 1440。

资源类型趋势对比

图表显示资源包、光影包、地图三类资源在一段时间内的指标变化。

图表上方有三个控制项。

指标切换下拉可选 PV、互动、下载。切换后图表重新加载对应的数据。

天数切换下拉可选近 7 天、近 30 天、近 60 天、近 90 天。

刷新按钮重新拉取当前条件下的数据。

图表的横轴是日期,纵轴是指标数值。三条曲线分别对应三类资源,颜色与侧边栏及各模块的主题色一致。

鼠标悬停在曲线上会显示该日期对应的三类资源的数值。

资源排行榜

排行榜按设定的排序方式列出资源的表现数据。

筛选条件包含类型、排序方式、状态、搜索。

类型可选全部、资源包、光影包、地图。

排序可选今日 PV、总 PV、总下载、总互动。

状态可选全部、活跃、半弃坑、停更。状态来自资源内容里作者填写的 status 字段。

搜索按资源名模糊匹配。

表格每行显示排名、资源名和 ID、类型、作者、今日 PV、总 PV、下载、互动和状态。前三名的排名数字有特殊颜色。

表格底部分页,每页 20 条。

点资源名会打开主站对应资源页。

资源健康度

健康度按资源当前的 status 字段分类,反映资源的活跃情况。

四个分类是活跃、半弃坑、停更、未知。活跃表示作者在持续维护;半弃坑表示更新频率明显下降;停更表示作者已停止更新;未知表示未填写。

页面以四张横向卡片显示各分类的数量和占比,卡片底部有横向进度条表示占比。

卡片下方按资源类型分列,显示每类资源在四个状态上的分布。

健康度用于分析站内资源的整体质量。若停更类资源占比过高,可能需要联系作者更新或标记状态。

资源对比分析

对比分析用来把多个资源放在同一张图上观察趋势。

输入框填写资源 ID,多个 ID 用逗号分隔。

类型下拉选择资源 ID 所属的类型。所有参与对比的资源必须是同一类型。

起止日期选择对比的时间范围。

点「对比」按钮生成图表。

图表的横轴是日期,纵轴是 PV。每个资源一条曲线,颜色自动分配。

资源数量超过一定数量后,图例可能过于拥挤。建议单次对比不超过 8 个资源。

未输入 ID 或只输入一个 ID 时,图表区显示提示文字,不生成曲线。

导出 CSV

点页头右侧的「导出 CSV」按钮导出当前时间范围的数据。

导出内容包括统计范围、导出时间、概览统计、每日趋势、页面明细排行、属地排行、下载统计六部分。

下载统计按日期列出完整下载和去重后部分下载的数量,以及二者的合计。

导出文件的编码为 UTF-8,带 BOM,在 Excel 里直接打开不乱码。

若在对比分析里选了时间范围,导出会使用该范围;否则使用最近 30 天。

操作日志

操作日志用来审计后台的所有操作,包括管理中心的页面访问、选料模块的操作、茶室模块的操作,以及主站用户的关键操作。定位问题时,操作日志是第一手资料。

入口在侧边栏「统计数据」下的「操作日志」,路径 /4_alog。

仅工坊主管可访问。

整体布局

页面顶部是页头,显示日志来源切换按钮组和记录总数。

页头下方是筛选面板,默认展开,可折叠。

再往下是日志表格和分页。

日志来源

操作日志汇总了四张表的数据,通过页头右上角的按钮组切换来源。

管理中心记录后台页面的访问和操作,来源为 admin_action_log 表。

主站记录主站用户的关键操作,来源为 action_log 表。

选料记录选料模块的操作,来源为 sel_action_log 表。

茶室记录茶室模块的操作,来源为 tea_action_log 表。

四个来源的字段结构基本一致,但部分字段在不同表里可能为空。例如主站的日志不记录 IP 属地,展示时这一列显示为「未知」。

切换来源后,筛选条件和分页重置,重新加载。

筛选面板

筛选面板默认展开,包含六项。

开始日期和结束日期限定查询的时间范围。

级别过滤日志级别,可选全部、DEBUG、INFO、NOTICE、WARNING、ERROR、CRITICAL。日常审计主要关注 WARNING 及以上。

用户 ID 或昵称按操作者过滤。输入数字时按用户 ID 精确匹配,输入文字时按昵称模糊匹配。

IP 地址按客户端 IP 模糊匹配,用于追查某个来源的访问。

路径按请求路径模糊匹配,用于定位某个接口或页面。

筛选条件生效后,页面右上角的总数会更新为符合条件的结果数。

日志表格

表格每行是一条日志,包含以下列。

ID 是日志的主键。

用户显示操作者的昵称和用户 ID。

级别用不同颜色区分。INFO 绿、NOTICE 蓝、WARNING 黄、ERROR 红、DEBUG 紫、CRITICAL 深红。

操作是日志记录的行为标识,例如 page_view、review_submit、user_ban 等。

目标类型和目标 ID 是本次操作的对象。例如审核操作的目标类型是 review,目标 ID 是被审记录 ID。

方法显示 HTTP 请求方法,GET 绿、POST 橙、PUT 蓝、DELETE 红、PATCH 紫。

路径显示请求路径。路径较长时截断显示,鼠标悬停可看完整内容。

请求参数和请求体分别显示 GET 参数和 POST 请求体。为保护隐私,密码、验证码、token 等敏感字段在记录时已被过滤。

状态显示 HTTP 状态码。2xx 绿、3xx 黄、4xx 和 5xx 红。

耗时显示请求处理时间,单位毫秒。

IP 和属地显示客户端 IP 和解析出的地理区域。属地由国家或省份组成。

User-Agent 显示客户端的浏览器标识。

时间显示日志的创建时间。

列设置

表头右上角有「列设置」按钮,点开一个下拉面板,列出所有列并带多选框。

取消勾选某列后,该列从表格中隐藏。设置保存在浏览器本地,下次打开自动恢复。

下拉面板底部有三个按钮。「全选」打开所有列。「取消全选」隐藏所有列。「恢复默认」回到初始的列显示配置。

默认隐藏的列是目标类型、目标 ID、耗时和 User-Agent。需要时手动打开。

分页

表格底部的分页控件包含每页条数下拉、页码按钮、总数提示和跳转输入框。

每页可选 20、30、50、100 条。

跳转输入框输入页码后点「跳转」或按回车。

导出

导出功能在筛选面板里,点「导出 CSV」按钮。

导出遵循当前筛选条件,不受分页限制,即导出所有符合条件的结果。

导出内容包括 ID、用户 ID、用户昵称、操作、级别、目标类型、目标 ID、方法、路径、状态码、耗时、IP、属地、User-Agent、请求参数、请求体、创建时间。

文件名带来源标识和导出时间,例如 操作日志_管理中心_20260918_142530.csv。

导出文件的编码为 UTF-8,带 BOM。

日志的生成来源

操作日志的记录分自动和手动两类。

自动记录发生在请求处理层,由中间件统一拦截。后台每次页面访问,无论是列表加载、详情查看还是操作提交,都会在响应返回前写入一条日志。这些日志的操作类型统一为 page_view,级别根据响应状态码判定。

手动记录发生在具体业务逻辑里。审核通过、封禁用户、修改角色、调整规则这类关键操作,业务代码会主动调用日志记录函数,写入更具体的操作类型和上下文信息。

两类记录并存,因此同一个页面上可能既有 page_view 的自动记录,也有 review_submit 这类手动记录。

敏感字段过滤

写入请求参数或请求体时,系统会自动过滤敏感字段。

被过滤的字段包括密码、旧密码、新密码、确认密码、验证码、邮箱验证码、重置验证码、token、access_token、refresh_token、secret、api_key 等。

被过滤的字段不出现在日志的请求参数和请求体里,即使操作者填写了这些值也不会记录。

日志的保存周期

操作日志的保存周期由数据库策略决定,暂无自动清理机制。因此早期的日志会长期保留,查询历史操作时可以直接指定日期范围。