Add AI news risk analysis and dashboard
Analyze news revisions with independent model settings, evidence-backed risk ratings, event grouping, and rolling market outlooks. Add a default homepage, archival history, pending-result refresh, and isolated regression coverage. Keep analysis disabled until explicitly enabled. Require a separately authorized schema migration before deployment and preserve compatibility with the previous six-service instance.
This commit is contained in:
1 parent
549b818e95
commit
4f43ca8b57
31 files changed
+1521
-18
No files matched your search
@@ -82,6 +82,22 @@ class BuildTests(unittest.TestCase):
|
||||
|
||||
|
||||
class RecoveryTests(unittest.TestCase):
|
||||
def test_six_service_rollback_removes_new_worker_and_checks_previous_services(self):
|
||||
with tempfile.TemporaryDirectory() as temporary:
|
||||
directory = Path(temporary)
|
||||
ci.save(directory / 'deployment.pending.json', {})
|
||||
services = [name for name in deploy.SERVICES if name != 'news-risk']
|
||||
previous = {'images': {part: {'digest': 'synthetic'} for part in ci.IMAGES}}
|
||||
compose = 'services:\n' + ''.join(f' {name}:\n image: synthetic\n' for name in services)
|
||||
with patch.object(deploy, 'run', return_value='') as run, \
|
||||
patch.object(deploy, 'validate_images'), patch.object(deploy, 'health') as health:
|
||||
deploy.restore(directory, {'previous': previous, 'previous_compose': compose, 'previous_running': services})
|
||||
update = next(call.args for call in run.call_args_list if 'up' in call.args)
|
||||
self.assertIn('--remove-orphans', update)
|
||||
self.assertNotIn('news-risk', update)
|
||||
self.assertEqual(health.call_args.args[2], services)
|
||||
self.assertFalse((directory / 'deployment.pending.json').exists())
|
||||
|
||||
def test_pending_write_failure_never_pauses_trader(self):
|
||||
with tempfile.TemporaryDirectory() as temporary:
|
||||
directory = Path(temporary)
|
||||
|
||||
Reference in new issue
Block a user