454ba8ddc5
Bring dynamic hint generation into the account service while preserving the legacy key.osglab.com deployment for existing clients.
43 lines
1.7 KiB
Markdown
43 lines
1.7 KiB
Markdown
# AI Hint Feed migration and coexistence
|
|
|
|
## Boundary
|
|
|
|
`key.osglab.com` remains the legacy AI Hint Feed for installed clients that still
|
|
use that origin. This repository must not:
|
|
|
|
- change the `key.osglab.com` DNS record;
|
|
- redirect `key.osglab.com` to `account.osglab.com`;
|
|
- reuse or delete the legacy container, image, settings file, or data volume;
|
|
- require the legacy service to call this account service.
|
|
|
|
The migrated generator runs independently inside OSGAccountServer and publishes:
|
|
|
|
- `https://account.osglab.com/v1/content/hints/manifest`
|
|
- `https://account.osglab.com/v1/content/hints/{locale}`
|
|
- `https://account.osglab.com/hints/manifest.json`
|
|
- `https://account.osglab.com/hints/hints-{locale}.json`
|
|
|
|
## Safe rollout
|
|
|
|
1. Back up the legacy `settings.json`, `manifest.json`, `hints-zh.json`, and
|
|
`hints-en.json` from its persistent volume.
|
|
2. Deploy OSGAccountServer with `HINT_FEED_ENABLED=false`.
|
|
3. Apply Flyway migration `V24__hint_feed_generation.sql` and the matching
|
|
runtime grants.
|
|
4. Use the protected admin console to review generation settings and run one
|
|
manual generation.
|
|
5. Verify both v1 and legacy paths on `account.osglab.com`, including ETag/304.
|
|
6. Set `HINT_FEED_ENABLED=true` only after the generated packs are accepted.
|
|
7. Point only new client releases at `account.osglab.com`. Existing clients may
|
|
continue to use `key.osglab.com`.
|
|
|
|
## Rollback
|
|
|
|
Disable `HINT_FEED_ENABLED` to stop scheduled generation. Published packs remain
|
|
available from MySQL and manual publishing remains available. No rollback step
|
|
depends on or modifies `key.osglab.com`.
|
|
|
|
Provider credentials such as `TOPHUB_API_KEY` stay in environment-backed secret
|
|
storage. They are never written to the generation settings table or returned to
|
|
the admin browser.
|