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

File diff suppressed because one or more lines are too long

View File

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