## 现象 部分券商/表格导出会把数量或成本写成带百分号的文本(例如误把权重列当成本、或单元格格式带 `%`)。`toFiniteNumber` 目前只去掉 `,`、`$` 与空白,**不去掉 `%`**,因此 `12.5%` → `Number('12.5%')` → `NaN` → `undefined`,行被标成 `Invalid quantity/cost`。 ## 证据(当前 main) `packages/shared/src/portfolio-import/parsers.ts`: ```ts const cleaned = trimmed.replace(/[,$\s]/g, '') const parsed = Number(cleaned) ``` ## 复现 ```text Symbol,Quantity,Cost AAPL.US,10,100% ``` 或 `Quantity` 为 `10%`。 - **实际**:对应字段 `undefined` + `Invalid cost price "100%"`(或 quantity 同类)。 - **预期**:至少把尾随/多余的 `%` 剥掉后再解析;若业务上 `%` 表示「权重而非成本」,则应给出明确 issue,而不是笼统的 Invalid(本 issue 建议先做「剥掉纯装饰 `%` 得到有限数字」的最小修复,不擅自把权重列映射成成本)。 ## 建议修复(小范围) - `toFiniteNumber`:在现有清理后,若剩余字符串匹配 `/^-?\d+(\.\d+)?%$/`,剥掉 `%` 再 `Number`。 - 不把 `%` 解释成「除以 100」(避免把成本 100% 错成 1)。 - 补回归:`100%` → `100`;`12.5%` → `12.5`;正常无 `%` 数字不受影响。 ## 范围 与 #358(货币符号前缀)正交:本条是后缀 `%`,不是 `HK$`/`US$`。 ## 查重 未见专门覆盖百分号后缀的 open issue;#356–#360 未包含此项。
Activity
wannT-1 commentedon Oct 30, 2026
/claim
我来修
toFiniteNumber对尾随%的解析(剥掉装饰%,不除以 100),并补 focused 回归。提交 PR 时写Closes #409。github-actions commentedon Oct 30, 2026
@wannT-1 已认领该 Issue,并已自动设为 Assignee。提交 PR 时请在描述中写
Closes #409。