fix(api): 修复节点流量限额共享统计与父子显隐联动

统一节点流量统计与限额展示口径,节点详情新增昨日流量,
并让今日、昨日和本月使用清晰的半开时间窗口聚合

同 machine_id 或同 host 的节点现在共享当前账期已用流量,
管理端优先使用后端 traffic_limit_snapshot 展示月额度状态,
mi-node 下发的 current_used 也改为共享账期统计

新增 parent_auto_hidden 标记与父节点显隐联动服务,父节点
因自动上线或流量限额变为不可展示时会隐藏当前显示的子节点,
恢复时只恢复这批自动隐藏的子节点,避免覆盖手动操作
This commit is contained in:
yinjianm
2026-04-29 02:24:57 +08:00
parent 922e86070d
commit e847252e12
27 changed files with 2078 additions and 47 deletions
@@ -0,0 +1,44 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('v2_server', function (Blueprint $table) {
if (!Schema::hasColumn('v2_server', 'parent_auto_hidden')) {
$table->boolean('parent_auto_hidden')
->default(false)
->after('gfw_auto_action_at')
->comment('Hidden automatically because parent node is unavailable');
}
if (!Schema::hasColumn('v2_server', 'parent_auto_action_at')) {
$table->unsignedBigInteger('parent_auto_action_at')
->nullable()
->after('parent_auto_hidden')
->comment('Last parent visibility sync action timestamp');
}
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('v2_server', function (Blueprint $table) {
foreach (['parent_auto_hidden', 'parent_auto_action_at'] as $column) {
if (Schema::hasColumn('v2_server', $column)) {
$table->dropColumn($column);
}
}
});
}
};