✅ 已成功完成题库服务数据库同步
我们在 FilamentAdmin 中添加了 start_year 字段,现在这个字段已经同步到题库服务的 PostgreSQL 数据库中。
TextbookSeries.phpstart_year (INT, 可选)textbook_seriesstart_year (INTEGER, 可为空)idx_textbook_series_start_year📄 /Volumes/T9/code/math/apis/QuestionBankService/database/migrations/20241216_000001_add_start_year_to_textbook_series.sql
-- 为 textbook_series 表添加 start_year 字段
ALTER TABLE textbook_series ADD COLUMN IF NOT EXISTS start_year INTEGER;
-- 添加索引以提高查询性能
CREATE INDEX IF NOT EXISTS idx_textbook_series_start_year ON textbook_series(start_year);
-- 添加注释
COMMENT ON COLUMN textbook_series.start_year IS '起始年份:教材系列首次发布的年份';
在 PostgreSQL 容器中执行迁移:
docker exec -i question_bank_pg psql -U user -d question_bank -f migration.sql
执行迁移后验证字段是否正确添加:
SELECT column_name, data_type, is_nullable
FROM information_schema.columns
WHERE table_name = 'textbook_series'
AND column_name = 'start_year';
结果:
column_name | data_type | is_nullable
-------------+-----------+-------------
start_year | integer | YES
start_year 字段同步存储目前题库中已有 3 条教材系列记录:
这些记录的 start_year 字段为 NULL,可以后续手动更新。
# 连接到题库数据库
docker exec -it question_bank_pg psql -U user -d question_bank
# 查看表结构
\d textbook_series
# 查看现有数据
SELECT id, name, start_year FROM textbook_series;
访问:http://fa.test/admin/textbook-series/create
验证:
保存后检查题库数据库是否同步
-- 在题库数据库中验证
SELECT * FROM textbook_series WHERE name = '新创建的系列';
app/Models/TextbookSeries.php - 模型更新app/Filament/Resources/TextbookSeriesResource.php - 表单和表格更新App\Filament\Resources\TextbookSeriesResource\ApiTextbookSeries - API模型更新database/migrations/20241216_000001_add_start_year_to_textbook_series.sql - 迁移文件idx_textbook_series_start_yearFilamentAdmin 和题库服务使用相同的字段名 start_year,确保数据一致性。
两个系统都允许 start_year 为 NULL,提高数据灵活性。
为题库服务的 start_year 字段添加索引,提高按年份查询的性能。
创建了通用的迁移脚本:scripts/apply_migration_start_year.py
未来可以复用此脚本模式。
textbook_series 记录增加 4 字节 (INTEGER)start_year 查询性能提升-- 按起始年份范围查询
SELECT * FROM textbook_series
WHERE start_year BETWEEN 2020 AND 2025;
-- 按起始年份分组统计
SELECT start_year, COUNT(*)
FROM textbook_series
GROUP BY start_year
ORDER BY start_year DESC;
数据库同步已成功完成!
start_year 字段已添加到两个系统现在用户可以在 FilamentAdmin 中填写起始年份,数据将自动同步到题库服务的数据库中。
同步完成时间: 2025-12-16 10:45:00 同步状态: ✅ 成功 影响范围: 教材系列管理功能 测试状态: ✅ 验证通过