Spaces:
Running
Running
| """μ¨μ μν 3κ° β μ λ’°μΆ / μ μ½λ / μ (P0 4μ’ μμ§ λͺ μΈ μ€κ±°). | |
| κ·μΉ: | |
| - μ λ’°μΆ: trust_score / doubt_score λμ (μμ). μΆ μ΄λ²€νΈκ° λ―Όλ€ | |
| - μ μ½λ: λ¨μ‘° μ¦κ°λ§ νμ© (λλ리λ μ½λλ κ²°ν¨) | |
| - μ(μ μ ): E01-01 λμ μμ 1ν ν립 ν λΆλ³ | |
| - μ μ μκ² μ«μΒ·κ²μ΄μ§ λ ΈμΆ κΈμ§ β μνλ ν€Β·κ²°Β·ν΄κΈμΌλ‘λ§ νμΆ (trust_level νμ°) | |
| - κΆμ: ν¬μΌ μμμλ session.state, ν¬μΌ μ’ λ£ μ μ¬κΈ°λ‘ μ»€λ° (μ΄μ€ κ°±μ κΈμ§) | |
| """ | |
| from __future__ import annotations | |
| from dataclasses import dataclass, field | |
| # μΆ μ΄λ²€νΈ 1νλΉ μ΄λλ (μμ§ μ€μ β μμ¬ λ΄μ© μλ). | |
| # E01~E06 μΆ μ΄λ²€νΈ λ°λ κΈ°μ€μΌλ‘ μλ© 3μ’ μ΄ λͺ¨λ λλ¬ κ°λ₯νλλ‘ μ‘°μ λ κ°. | |
| AXIS_DELTA = 12 | |
| # μ λ’° λ 벨 νμ° κ²½κ³ (P0 0-3: μ«μ λμ μ΄ λ λ²¨μ΄ ν€Β·κ²°Β·ν΄κΈμ κ²°μ ) | |
| TRUST_LEVELS = ("doubt_high", "doubt_mid", "neutral", "trust_mid", "trust_high") | |
| class HiddenState: | |
| trust_score: int = 0 | |
| doubt_score: int = 0 | |
| frailty: int = 0 # μ μ½λ β λ¨μ‘° μ¦κ° | |
| awareness_established: bool = False # μ(μ μ ) β λμ 1ν ν립 | |
| axis_log: list[str] = field(default_factory=list) # μ°κ΅¬μ© μ΄λ ₯ (card_id:axis) | |
| # ββ μ λ’°μΆ ββββββββββββββββββββββββββββββββββββββββββββββ | |
| def apply_axis(self, axis: str | None, source: str = "") -> None: | |
| if axis == "trust": | |
| self.trust_score += AXIS_DELTA | |
| elif axis == "doubt": | |
| self.doubt_score += AXIS_DELTA | |
| elif axis in (None, "neutral"): | |
| return | |
| else: | |
| raise ValueError(f"μ μ μλ axis: {axis}") | |
| self.axis_log.append(f"{source}:{axis}") | |
| def seesaw(self) -> int: | |
| """μμ¬μ°μΈ(-) ββ[0]ββ μ λ’°μ°μΈ(+)""" | |
| return self.trust_score - self.doubt_score | |
| def trust_level(self) -> str: | |
| """P0 0-3 νμ° μΆλ ₯ β ν둬ννΈμ 'κ²°'κ³Ό ν΄κΈμ κ²°μ νλ€.""" | |
| s = self.seesaw | |
| if s >= 36: | |
| return "trust_high" | |
| if s >= 12: | |
| return "trust_mid" | |
| if s <= -36: | |
| return "doubt_high" | |
| if s <= -12: | |
| return "doubt_mid" | |
| return "neutral" | |
| def deep_unlock(self) -> bool: | |
| """μ¬μΈ΅ κ³ λ°± ν΄κΈ (μμ§ D) β μ λ’°ι«μμλ§.""" | |
| return self.trust_level == "trust_high" | |
| # ββ μ μ½λ ββββββββββββββββββββββββββββββββββββββββββββββ | |
| def advance_frailty(self, amount: int = 1) -> None: | |
| if amount < 0: | |
| raise ValueError("μ μ½λλ λλμκ°μ§ μλλ€") | |
| self.frailty += amount | |
| # ββ μ βββββββββββββββββββββββββββββββββββββββββββββββββ | |
| def establish_awareness(self) -> None: | |
| self.awareness_established = True | |
| # ββ μμν μ€λ μ· (μ νλ β ν¬μΌμ© to_sessionκ³Ό λ³κ°) ββ | |
| def snapshot(self) -> dict: | |
| return { | |
| "trust_score": self.trust_score, | |
| "doubt_score": self.doubt_score, | |
| "frailty": self.frailty, | |
| "awareness_established": self.awareness_established, | |
| "axis_log": list(self.axis_log), | |
| } | |
| def from_snapshot(cls, data: dict) -> "HiddenState": | |
| return cls( | |
| trust_score=int(data["trust_score"]), | |
| doubt_score=int(data["doubt_score"]), | |
| frailty=int(data["frailty"]), | |
| awareness_established=bool(data["awareness_established"]), | |
| axis_log=list(data.get("axis_log", [])), | |
| ) | |
| # ββ ν¬μΌ μ»€λ° (session.state β μμ μν λ¨μΌ κ²½λ‘) βββββ | |
| def to_session(self) -> dict: | |
| """ν¬μΌ μ§μ μ session.stateμ μ€μ΄ λ³΄λΌ μ€λ μ·.""" | |
| return { | |
| "hidden_trust": self.trust_score, | |
| "hidden_doubt": self.doubt_score, | |
| "trust_level": self.trust_level, | |
| "deep_unlock": self.deep_unlock, | |
| } | |
| def commit_from_session(self, state: dict, source: str = "pocket") -> None: | |
| """ν¬μΌ μ’ λ£ μ session.stateμ μ¦λΆλ§ μ»€λ° (μ μΌν μλ°©ν₯ κ²½λ‘).""" | |
| self.trust_score = max(self.trust_score, int(state.get("hidden_trust", self.trust_score))) | |
| self.doubt_score = max(self.doubt_score, int(state.get("hidden_doubt", self.doubt_score))) | |
| self.axis_log.append(f"{source}:commit") | |