transaction insights dialog.

This commit is contained in:
2023-10-25 15:47:27 -07:00
parent 506d2ac782
commit 351864da1b
2 changed files with 42 additions and 36 deletions

View File

@@ -55,7 +55,7 @@
[(>= ?d ?starting)]]
:args [(dc/db conn)
(iol-ion.query/recent-date 120)
(iol-ion.query/recent-date 300)
(map :db/id clients)
pull-expr]})
@@ -234,43 +234,49 @@
:hide-actions? true
"_" (hiccup/raw "init transition opacity to 0 over 500ms then remove me")))))
(defn explain [{:keys [identity session] {:keys [transaction-id]} :route-params}]
(let [r (dc/pull (dc/db conn)
(let [r (dc/pull (dc/db conn)
pull-expr
(Long/parseLong transaction-id))
similar (pinecone-similarity-list transaction-id)]
similar (pinecone-similarity-list transaction-id)]
(modal-response
(com/modal {}
(com/modal-card {:style {:width "900px"}}
[:div.flex [:div.p-2 "Similar Transactions"]]
[:table.w-full
[:thead
[:tr
[:td "Date"]
[:td "Description"]
[:td "Amount"]
[:td "Vendor"]
[:td "Account"]
[:td "Score"]]]
[:tbody
[:tr
[:th.text-left (some-> r :transaction/date coerce/to-date-time (atime/unparse-local atime/normal-date))]
[:th.text-left (-> r :transaction/description-original)]
[:th.text-left (if (> (-> r :transaction/amount) 0.0)
[:div.tag.is-success.is-light (str "$" (Math/round (:transaction/amount r)))]
[:div.tag.is-danger.is-light (str "$" (Math/round (:transaction/amount r)))])]
[:th]
[:th]
[:th.text-left]]
(take 10
(for [{:keys [amount date description vendor-name numeric-code score]} similar]
[:tr
[:td (subs date 0 10)]
[:td description]
[:td (some->> amount double (format "$%.2f"))]
[:td vendor-name]
[:td numeric-code]
[:td (format "%.1f%%" (* 100 (double score)))]]))]]
[:div])))))
(com/modal {}
(com/modal-card {:style {:width "900px"}}
[:div.flex [:div.p-2 "Similar Transactions"]]
(com/data-grid {:headers [(com/data-grid-header {:name "Date"
:key "date"})
(com/data-grid-header {:name "Description"
:key "description"})
(com/data-grid-header {:name "Amount"
:key "amount"})
(com/data-grid-header {:name "Vendor"
:key "vendor"})
(com/data-grid-header {:name "Account"
:key "account"})
(com/data-grid-header {:name "Score"
:key "score"})]}
(com/data-grid-row {:class "bg-primary-200"}
(com/data-grid-cell {:class "text-left font-bold"} (some-> r :transaction/date coerce/to-date-time (atime/unparse-local atime/normal-date)))
(com/data-grid-cell {:class "text-left font-bold"} (-> r :transaction/description-original) )
(com/data-grid-cell {:class "font-bold"} (if (> (-> r :transaction/amount) 0.0)
[:div.tag.is-success.is-light (str "$" (Math/round (:transaction/amount r)))]
[:div.tag.is-danger.is-light (str "$" (Math/round (:transaction/amount r)))]))
(com/data-grid-cell {})
(com/data-grid-cell {})
(com/data-grid-cell {}))
(com/data-grid-row {}
(take 10
(for [{:keys [amount date description vendor-name numeric-code score]} similar]
(com/data-grid-row
{}
(com/data-grid-cell {:class "text-left"} (subs date 0 10))
(com/data-grid-cell {:class "text-left"} description )
(com/data-grid-cell {} (some->> amount double (format "$%.2f")))
(com/data-grid-cell {} vendor-name)
(com/data-grid-cell {} numeric-code)
(com/data-grid-cell {} (format "%.1f%%" (* 100 (double score)))))))))
[:div])))))
(defn transaction-rows* [{:keys [clients identity after]}]
(let [recommendations (transaction-recommendations identity clients :after after)]