restore admin helper chain and stabilize seo routes

This commit is contained in:
root
2026-04-15 18:51:27 +08:00
parent bd073c6795
commit 7fff1a9944
24 changed files with 2293 additions and 41 deletions

View File

@@ -0,0 +1,49 @@
<?php
use think\migration\Migrator;
use think\migration\db\Column;
class CreateSeoExternalSnapshotTable extends Migrator
{
public function up()
{
$Table = $this->table('seo_external_snapshot', ['id' => false]);
$Table
->addColumn(Column::integer('id')->setUnsigned()->setIdentity(true)->setComment('主键'))
->addColumn(Column::integer('domain_id')->setUnsigned()->setDefault(0)->setComment('站点ID'))
->addColumn(Column::string('host', 255)->setDefault('')->setComment('站点域名'))
->addColumn(Column::string('provider', 100)->setDefault('')->setComment('数据提供方'))
->addColumn(Column::string('snapshot_type', 50)->setDefault('')->setComment('快照类型'))
->addColumn(Column::string('scope', 20)->setDefault('host')->setComment('粒度 host/keyword'))
->addColumn(Column::string('keyword', 255)->setDefault('')->setComment('关键词'))
->addColumn(Column::string('device', 20)->setDefault('')->setComment('设备 pc/mobile'))
->addColumn(Column::string('metric_date', 20)->setDefault('')->setComment('指标日期'))
->addColumn(Column::integer('queried_at')->setDefault(0)->setComment('采集时间'))
->addColumn(Column::string('source', 50)->setDefault('push_api')->setComment('来源'))
->addColumn(Column::string('status', 30)->setDefault('')->setComment('状态'))
->addColumn(Column::string('indexed_status', 30)->setDefault('')->setComment('收录状态'))
->addColumn(Column::string('result_count_text', 255)->setDefault('')->setComment('收录结果文本'))
->addColumn(Column::string('baidu_pc_ip_range', 50)->setDefault('')->setComment('百度PC来路区间'))
->addColumn(Column::string('baidu_mobile_ip_range', 50)->setDefault('')->setComment('百度移动来路区间'))
->addColumn(Column::integer('pc_keyword_count')->setDefault(0)->setComment('PC词数'))
->addColumn(Column::integer('mobile_keyword_count')->setDefault(0)->setComment('移动词数'))
->addColumn(Column::integer('rank_value')->setDefault(0)->setComment('关键词排名'))
->addColumn(Column::integer('search_volume')->setDefault(0)->setComment('搜索量'))
->addColumn(Column::text('payload')->setNullable(true)->setComment('扩展数据JSON'))
->addColumn(Column::string('snapshot_signature', 64)->setDefault('')->setComment('快照签名'))
->addColumn(Column::integer('created_at')->setDefault(0)->setComment('创建时间'))
->addColumn(Column::integer('updated_at')->setDefault(0)->setComment('更新时间'))
->addIndex(['id'], ['type' => 'primary'])
->addIndex(['snapshot_signature'])
->addIndex(['host', 'provider', 'metric_date'])
->addIndex(['host', 'scope'])
->addIndex(['keyword'])
->setComment('站外SEO历史快照表')
->create();
}
public function down()
{
$this->table('seo_external_snapshot')->drop()->save();
}
}

View File

@@ -0,0 +1,26 @@
<?php
use think\migration\Migrator;
class OptimizeSeoExternalSnapshotIndexes extends Migrator
{
public function up()
{
$this->table('seo_external_snapshot')
->addIndex(['provider', 'snapshot_type', 'scope', 'metric_date'], ['name' => 'idx_provider_type_scope_date'])
->addIndex(['snapshot_type', 'scope', 'metric_date'], ['name' => 'idx_type_scope_date'])
->addIndex(['host', 'snapshot_type', 'metric_date'], ['name' => 'idx_host_type_date'])
->addIndex(['host', 'keyword', 'device', 'metric_date'], ['name' => 'idx_host_keyword_device_date'])
->update();
}
public function down()
{
$this->table('seo_external_snapshot')
->removeIndexByName('idx_provider_type_scope_date')
->removeIndexByName('idx_type_scope_date')
->removeIndexByName('idx_host_type_date')
->removeIndexByName('idx_host_keyword_device_date')
->update();
}
}