Money inputs on charge, refund and payment forms parse floats instead of minor units
メンテナーはふだん 1 日以内に返信
@deslawson がすでに取り組んでいます。
2026年10月18日 から。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 58/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- nextjs, typescript
調査の方向性
Inspect app/payments/new, app/admin/charge, app/admin/refund, and lib/WalletFundingModal.tsx to trace where free-text amounts are parsed. Find existing form, currency, and wallet-funding tests, then define coverage for decimal precision, JPY, large numbers, invalid characters, and min/max limits. The work is done when every listed form submits a safe integer in minor units matching the displayed amount.
索引モデルが issue の本文から書いたものです。
説明
Problem
app/payments/new and app/admin/charge send Number(amount) of whatever the user typed, app/admin/refund does Number(amount) on a string prefilled with String(payment.amount), and lib/WalletFundingModal.tsx uses parseFloat. The unit (minor vs major) is never stated in the UI, and free text allows 1e3, negative, fractional and multi-dot input; any conversion to minor units by multiplication would also hit floating point errors (for example 19.99 * 100 = 1998.9999999999998).
Proposed change
Add an AmountInput that accepts only digits and the currency's decimal places, converts with string math to integer minor units, enforces min/max, and use it in app/payments/new, app/admin/charge, app/admin/refund and the funding modal. Test with 0.1+0.2-style values, JPY and large numbers.
Acceptance criteria
- The submitted payload amount is always a safe integer matching the displayed value.
- 主要言語
- TypeScript
- スター
- 16
- フォーク
- 225
- 平均マージ
- 8時間 4分
- マージ済み PR(30日)
- 61
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートあり
- コントリビューションガイドなし
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
DistinctCodes/ManageHub のほかの issue
-
bug contract soroban-contract
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
DistinctCodes/ManageHub#2029 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
backend contract documentation soroban-contract
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
DistinctCodes/ManageHub#2028 ·
メンテナーはふだん 1 日以内に返信
-
Add an end-to-end local sandbox for contracts (standalone network, deploy, call) to the repo docsオープンcontract documentation soroban-contract
難易度 3/5 1〜2日 初心者へのやさしさ 76/100
DistinctCodes/ManageHub#2027 ·
メンテナーはふだん 1 日以内に返信
-
backend contract documentation NestJS soroban-contract
難易度 4/5 3〜5日 初心者へのやさしさ 55/100
DistinctCodes/ManageHub#2026 ·
メンテナーはふだん 1 日以内に返信
-
Contracts have no shared ABI/interface fixture used by both the Rust tests and the backend clientオープンbackend contract enhancement NestJS soroban-contract
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
DistinctCodes/ManageHub#2025 ·
メンテナーはふだん 1 日以内に返信
DistinctCodes/ManageHub の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 66/100
getsentry/sentry-conventions#732 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
status:in-linear status:team-assigned team:nodes
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
motiondivision/motion#3955 ·
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
equinor/prisma-decision-web#919 ·
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 83/100