todo on Analyzer.Add complexity vs retaining existing behavior

main
bel 2023-10-15 11:49:51 -06:00
parent c023f5bbfc
commit 2b2dd862b6
1 changed files with 37 additions and 2 deletions

View File

@ -19,11 +19,21 @@ todo:
or latest?
- analyzer.go:Analyzer:Add should dedupe transactions added, but transactions.go:FromFile
will load duplicate transactions from json file so hmmmm
- analyzer.go:Analzyer:Add dedupes each transaction, which is O(n**2) to compare
each input with each existing entry
- todo: analyzer.go:Analzyer:Add dedupes each transaction, which is O(n**2)
details: |
* BUT there's no indicator whether order of the array matters, so it's unsafe for me to sort/heapify that stuff
* OR I can store a second copy of all entries in a map, but that risks drift syncing the two
* SO I could create a UniqueTransactions struct {
transactions []Transaction
dedupes map[Transaction]struct{}
}
but that's just doubling RAM usage in a thing that sounds like it could scale infinitely over time
SO I could do a [hash(Transaction)][]*Transaction and compare just a subset. Because it's in RAM and computed live, the hash cardinality could be changed on any release
<------------------ if I have time, do this
- analyzer.go:Analyzer:Add dedupes but what is a duplicate transaction? Transactions
can be pending and then later disappear to have their date updated OR be like
pre-charges on credit cards that later disappear
- analyzer.go:Analyzer:Add is not concurrency-safe
scheduled: []
done:
- todo: hello world
@ -533,3 +543,28 @@ done:
- analyzer.go:Analyzer:Add should dedupe transactions added, but transactions.go:FromFile
will load duplicate transactions from json file so hmmmm
ts: Sun Oct 15 11:44:18 MDT 2023
- todo: go test
subtasks:
- TestAnalyzer_DuplicatesExcluded
- TestAnalyzer_GroupByCategory
- TestAnalyzer_BigSpendersReport
- TestAnalyzer_TransactionsFromURLs
- TestAnalyzer_TransactionsFromURLsConcurrent
- amount.go:Rounded probably does NOT handle float precision well... it is float64
tho...
- my `go mod tidy` actually cleared `go.mod` file, probably weird localhost backwards
compatilble stuff
- transaction.go:Transaction:String not clear if FormatUSD or amount currency should
not be changed, or even what currency Amount is
- transaction.go:Transaction:Sum again doesnt care about Amount currency or vendor/vendee
drift
- analyzer.go:Analyzer:LargestTransaction doesn't specify how to break ties; stable
or latest?
- analyzer.go:Analyzer:Add should dedupe transactions added, but transactions.go:FromFile
will load duplicate transactions from json file so hmmmm
- analyzer.go:Analzyer:Add dedupes each transaction, which is O(n**2) to compare
each input with each existing entry
- analyzer.go:Analyzer:Add dedupes but what is a duplicate transaction? Transactions
can be pending and then later disappear to have their date updated OR be like
pre-charges on credit cards that later disappear
ts: Sun Oct 15 11:49:32 MDT 2023