{"record":{"id":"dbd890026c283a45","repo":"ZhuLinsen/daily_stock_analysis","slug":"validation-error-dbd890","errorCode":"validation_error","errorMessage":"name is required","messagePattern":"name is required","errorType":"validation","errorClass":"ValueError","httpStatus":400,"severity":"error","filePath":"src/services/portfolio_service.py","lineNumber":129,"sourceCode":"\n    def __init__(self, repo: Optional[PortfolioRepository] = None):\n        self.repo = repo or PortfolioRepository()\n\n    # ------------------------------------------------------------------\n    # Account CRUD\n    # ------------------------------------------------------------------\n    def create_account(\n        self,\n        *,\n        name: str,\n        broker: Optional[str],\n        market: str,\n        base_currency: str,\n        owner_id: Optional[str] = None,\n    ) -> Dict[str, Any]:\n        name_norm = (name or \"\").strip()\n        if not name_norm:\n            raise ValueError(\"name is required\")\n        market_norm = self._normalize_market(market)\n        base_currency_norm = self._normalize_currency(base_currency)\n        row = self.repo.create_account(\n            name=name_norm,\n            broker=(broker or \"\").strip() or None,\n            market=market_norm,\n            base_currency=base_currency_norm,\n            owner_id=(owner_id or \"\").strip() or None,\n        )\n        return self._account_to_dict(row)\n\n    def list_accounts(self, include_inactive: bool = False) -> List[Dict[str, Any]]:\n        rows = self.repo.list_accounts(include_inactive=include_inactive)\n        return [self._account_to_dict(r) for r in rows]\n\n    def update_account(\n        self,\n        account_id: int,","sourceCodeStart":111,"sourceCodeEnd":147,"githubUrl":"https://github.com/ZhuLinsen/daily_stock_analysis/blob/5159bd72e8373d215492dff122acc9d389e219c9/src/services/portfolio_service.py#L111-L147","documentation":"Error \"name is required\" thrown in ZhuLinsen/daily_stock_analysis.","triggerScenarios":"Thrown at src/services/portfolio_service.py:129 when the library encounters an invalid state.","commonSituations":"Raised when creating a portfolio without a name; occurs when the create request omits the required name field.","solutions":["Provide a non-empty name for the portfolio.","Check the request payload to ensure the name field is set.","Trim whitespace-only names before submitting."],"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"}