from __future__ import annotations

import unittest

from backend.features.sentiment.engine import _adaptive_score, _confirmed_phase


class SentimentEngineTests(unittest.TestCase):
    def test_adaptive_score_uses_latest_250_observations(self):
        history = [0.0] * 50 + [100.0] * 250
        self.assertEqual(_adaptive_score(50.0, 50.0, history), 12.5)

    def test_ice_must_repair_before_fermentation(self):
        phase, reason = _confirmed_phase(
            {"phase": "冰点"},
            score=70,
            day_change=45,
            systemic_health=70,
            profit_score=70,
            ecology_score=75,
            phase_signal="发酵",
            extreme_ice=False,
            fermentation_signal_count=2,
        )
        self.assertEqual(phase, "修复")
        self.assertIn("冰点后", reason)

    def test_repair_requires_continuous_fermentation_confirmation(self):
        phase, _ = _confirmed_phase(
            {"phase": "修复"},
            score=58,
            day_change=5,
            systemic_health=55,
            profit_score=60,
            ecology_score=65,
            phase_signal="发酵",
            extreme_ice=False,
            fermentation_signal_count=1,
        )
        self.assertEqual(phase, "修复")


if __name__ == "__main__":
    unittest.main()
