{"record":{"id":"3735f9654c753bd0","repo":"ZhuLinsen/daily_stock_analysis","slug":"field-name-must-be-an-integer-3735f9","errorCode":null,"errorMessage":"{field_name} must be an integer","messagePattern":"(.+?) must be an integer","errorType":"validation","errorClass":"ValueError","httpStatus":400,"severity":"error","filePath":"src/services/decision_signal_service.py","lineNumber":1272,"sourceCode":"        if not math.isfinite(number) or number <= 0:\n            raise ValueError(f\"{field_name} must be a finite positive number\")\n        return number\n\n    @staticmethod\n    def _validate_entry_range(fields: Dict[str, Any]) -> None:\n        entry_low = fields.get(\"entry_low\")\n        entry_high = fields.get(\"entry_high\")\n        if entry_low is not None and entry_high is not None and entry_low > entry_high:\n            raise ValueError(\"entry_low must be less than or equal to entry_high\")\n\n    @staticmethod\n    def _optional_int(value: Any, field_name: str) -> Optional[int]:\n        if value in (None, \"\"):\n            return None\n        try:\n            return int(value)\n        except (TypeError, ValueError) as exc:\n            raise ValueError(f\"{field_name} must be an integer\") from exc\n\n    @staticmethod\n    def _parse_datetime(value: Any) -> Optional[datetime]:\n        if value in (None, \"\"):\n            return None\n        if isinstance(value, datetime):\n            return to_utc_naive_datetime(value)\n        if isinstance(value, str):\n            text = value.strip()\n            if not text:\n                return None\n            try:\n                parsed = datetime.fromisoformat(text.replace(\"Z\", \"+00:00\"))\n            except ValueError as exc:\n                raise ValueError(f\"invalid datetime value: {value}\") from exc\n            return to_utc_naive_datetime(parsed)\n        raise ValueError(f\"invalid datetime value: {value}\")\n","sourceCodeStart":1254,"sourceCodeEnd":1290,"githubUrl":"https://github.com/ZhuLinsen/daily_stock_analysis/blob/5159bd72e8373d215492dff122acc9d389e219c9/src/services/decision_signal_service.py#L1254-L1290","documentation":"Error \"{field_name} must be an integer\" thrown in ZhuLinsen/daily_stock_analysis.","triggerScenarios":"Thrown at src/services/decision_signal_service.py:1272 when the library encounters an invalid state.","commonSituations":"Raised when a decision-signal integer field (e.g. horizon/period) is not an integer; occurs when the client sends a string or float for a field validated in decision_signal_service.","solutions":["Provide the field as an integer value, not a string or float.","Check the request payload or signal data source for the named field and convert it to an integer before submitting.","If the value comes from user input, validate and coerce it with int() after checking isdigit() or a numeric parse."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"5159bd72e8373d215492dff122acc9d389e219c9","analyzedAt":"2026-08-15T01:59:36.292Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}