Migrate AI Hint feed generation

Bring dynamic hint generation into the account service while preserving the legacy key.osglab.com deployment for existing clients.
This commit is contained in:
Rocky
2026-08-21 15:17:15 +08:00
parent d0abe27623
commit 454ba8ddc5
40 changed files with 2838 additions and 10 deletions
@@ -44,6 +44,9 @@ class DeploymentConsistencyTest : FunSpec({
val migration = root.read(
"src/main/resources/db/migration/V22__official_content_management.sql",
)
val hintFeedMigration = root.read(
"src/main/resources/db/migration/V24__hint_feed_generation.sql",
)
val privileges = root.read("docs/mysql-minimum-privileges.sql")
val smokePrivileges = root.read("deploy/smoke/runtime-grants.sql")
@@ -52,6 +55,9 @@ class DeploymentConsistencyTest : FunSpec({
migration shouldContain "CREATE TABLE official_skill_localizations"
migration shouldContain "CREATE TABLE official_hint_packs"
migration shouldContain "locale IN ('zh', 'en')"
hintFeedMigration shouldContain "CREATE TABLE hint_feed_settings"
hintFeedMigration shouldContain "CREATE TABLE hint_feed_generation_state"
hintFeedMigration shouldContain "generation_interval_hours BETWEEN 1 AND 168"
openApi shouldContain "schemaVersion: { type: integer, const: 1 }"
openApi shouldContain "pattern: \"^official\\\\."
openApi shouldContain "Cache-Control: { schema: { type: string, const: \"public,max-age=300\" } }"
@@ -70,6 +76,8 @@ class DeploymentConsistencyTest : FunSpec({
grants shouldContain "official_skills"
grants shouldContain "official_skill_localizations"
grants shouldContain "official_hint_packs"
grants shouldContain "hint_feed_settings"
grants shouldContain "hint_feed_generation_state"
}
}
@@ -387,6 +395,9 @@ private val EXPECTED_PUBLIC_PATHS = setOf(
"/v1/admin/content/skills/{id}",
"/v1/admin/content/skills/{id}/enable",
"/v1/admin/content/skills/{id}/disable",
"/v1/admin/content/hints/generation/settings",
"/v1/admin/content/hints/generation/status",
"/v1/admin/content/hints/generation/regenerate",
"/v1/admin/content/hints/{locale}",
"/v1/admin/auth/session",
"/v1/admin/auth/login",