Makes insights work
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
;; You can also press C-u C-j to evaluate the expression and pretty-print its result.
|
||||
|
||||
(ns build-ml
|
||||
(:require [datomic.client.api :as dc]
|
||||
(:require [datomic.api :as dc]
|
||||
[clojure.java.io :as io]
|
||||
[clojure.data.csv :as csv]
|
||||
[auto-ap.datomic :refer [conn]]))
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
(drop 1)
|
||||
(map (fn [[a n]]
|
||||
[(Long/parseLong a) (numeric-code->account (Long/parseLong n))])))
|
||||
(slurp-csv "/home/notid/dev/transaction-training/input/accounts.csv"))
|
||||
(slurp-csv "/mnt/data/dev2/ml-test/input/accounts.csv"))
|
||||
vendor-name->vendor (into {} (dc/q '[:find ?vn ?v
|
||||
:in $
|
||||
:where [?v :vendor/name ?vn]]
|
||||
@@ -51,18 +51,18 @@
|
||||
(drop 1)
|
||||
(map (fn [[a n]]
|
||||
[(Long/parseLong a) (vendor-name->vendor (Long/parseLong n))])))
|
||||
(slurp-csv "/home/notid/dev/transaction-training/input/vendors.csv"))]
|
||||
inference-vendor->vendor
|
||||
#_(with-open [reader (io/reader "/home/notid/dev/transaction-training/inference-outcome.csv")]
|
||||
(slurp-csv "/mnt/data/dev2/ml-test/input/vendors.csv"))]
|
||||
#_inference-vendor->vendor
|
||||
(with-open [reader (io/reader "/mnt/data/dev2/ml-test/inference-outcome.csv")]
|
||||
(->> (csv/read-csv reader)
|
||||
(into []
|
||||
(comp
|
||||
(drop 1)
|
||||
(map (fn [[_ transaction best-vendor best-account account-confidence]]
|
||||
{:db/id (Long/parseLong transaction)
|
||||
:transaction/recommended-account (Long/parseLong best-account)
|
||||
:transaction/recommended-account (inference-account->account best-account)
|
||||
:transaction/account-confidence (Double/parseDouble account-confidence)
|
||||
:transaction/recommended-vendor (Long/parseLong best-vendor)}))))))))
|
||||
:transaction/recommended-vendor (inference-vendor->vendor best-vendor)}))))))))
|
||||
|
||||
(defn apply-inference [inference]
|
||||
(doseq [p (->> inference (partition-all 100))]
|
||||
|
||||
@@ -13,9 +13,6 @@
|
||||
[datomic.api :as dc]
|
||||
[iol-ion.query :refer [can-see-client?]]))
|
||||
|
||||
<<<<<<< HEAD
|
||||
(defn get-1099-companies [user session]
|
||||
=======
|
||||
(def vendor-read '[:db/id
|
||||
:vendor/name
|
||||
{:vendor/legal-entity-1099-type [:db/ident]}
|
||||
@@ -48,7 +45,6 @@
|
||||
vendor-id)))
|
||||
|
||||
(defn get-1099-companies [user {:keys [client-id] :as args}]
|
||||
>>>>>>> 425942581295562d2c57843d7b19d9d4de962eda
|
||||
(let [clients (->> (dc/q '[:find ?c
|
||||
:in $ ?user
|
||||
:where [?c :client/code]
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
:transaction-insight-table (wrap-client-redirect-unauthenticated (wrap-admin insights/insight-table))
|
||||
:transaction-insight-rows (wrap-client-redirect-unauthenticated (wrap-admin insights/transaction-rows))
|
||||
:transaction-insight-approve (wrap-client-redirect-unauthenticated (wrap-admin insights/approve))
|
||||
:transaction-insight-disapprove (wrap-client-redirect-unauthenticated (wrap-admin insights/disapprove))
|
||||
:transaction-insight-explain (wrap-client-redirect-unauthenticated (wrap-admin insights/explain))
|
||||
:admin-ezcater-xls (wrap-client-redirect-unauthenticated (wrap-admin ezcater-xls/page))
|
||||
:search (wrap-client-redirect-unauthenticated (wrap-secure search/dialog-contents))})
|
||||
|
||||
@@ -1,17 +1,18 @@
|
||||
(ns auto-ap.ssr.transaction.insights
|
||||
(:require
|
||||
[auto-ap.client-routes :as client-routes]
|
||||
[auto-ap.datomic :refer [conn visible-clients]]
|
||||
[auto-ap.rule-matching :refer [spread-cents]]
|
||||
[auto-ap.ssr-routes :as ssr-routes]
|
||||
[auto-ap.ssr.components :as com]
|
||||
[auto-ap.ssr.svg :as svg]
|
||||
[auto-ap.ssr.ui :refer [base-page]]
|
||||
[auto-ap.ssr.utils :refer [html-response]]
|
||||
[auto-ap.time :as atime]
|
||||
[bidi.bidi :as bidi]
|
||||
[clj-time.coerce :as coerce]
|
||||
[datomic.api :as dc]
|
||||
[hiccup2.core :as hiccup]
|
||||
[auto-ap.ssr.components :as com]
|
||||
[auto-ap.client-routes :as client-routes]
|
||||
[auto-ap.ssr.svg :as svg]))
|
||||
[iol-ion.tx :refer [random-tempid]]))
|
||||
|
||||
(def pull-expr [:transaction/description-original
|
||||
:db/id
|
||||
@@ -93,9 +94,9 @@
|
||||
:color :primary-light}
|
||||
svg/thumbs-up)
|
||||
(com/icon-button {:hx-delete (bidi/path-for ssr-routes/only-routes
|
||||
:transaction-insight-approve
|
||||
:transaction-insight-disapprove
|
||||
:transaction-id (:db/id r))
|
||||
:hx-swap "closest tr"
|
||||
:hx-target "closest tr"
|
||||
:color :danger-light}
|
||||
svg/thumbs-down)
|
||||
(com/icon-button {:hx-get (bidi/path-for ssr-routes/only-routes
|
||||
@@ -106,13 +107,47 @@
|
||||
svg/question)]))))
|
||||
|
||||
(defn approve [{:keys [identity session] {:keys [transaction-id]} :route-params}]
|
||||
(html-response (transaction-row
|
||||
(dc/pull (dc/db conn)
|
||||
pull-expr
|
||||
(Long/parseLong transaction-id))
|
||||
:auto-remove? true
|
||||
:hide-actions? true
|
||||
:class "live-added")))
|
||||
(let [approval-details (dc/pull (dc/db conn) [{:transaction/recommended-account [:account/location :db/id]}
|
||||
:transaction/recommended-vendor
|
||||
:transaction/amount
|
||||
:db/id
|
||||
{:transaction/client [:client/locations]} ]
|
||||
(cond-> transaction-id
|
||||
string? (Long/parseLong)))
|
||||
cents-to-distribute (int (Math/round (Math/abs (* (:transaction/amount approval-details) 100))))
|
||||
valid-locations (or
|
||||
(some-> approval-details :transaction/recommended-account :account/location vector)
|
||||
(->> approval-details
|
||||
:transaction/client
|
||||
:client/locations))
|
||||
updated-transaction [:upsert-transaction {:db/id (:db/id approval-details)
|
||||
:transaction/approval-status :transaction-approval-status/approved
|
||||
:transaction/vendor (:transaction/recommended-vendor approval-details)
|
||||
:transaction/accounts (->> valid-locations
|
||||
(map
|
||||
(fn [cents location]
|
||||
{:db/id (random-tempid)
|
||||
:transaction-account/account (-> approval-details :transaction/recommended-account :db/id)
|
||||
:transaction-account/amount (* 0.01 cents)
|
||||
:transaction-account/location location})
|
||||
(spread-cents cents-to-distribute (count valid-locations))))}]]
|
||||
@(dc/transact conn [updated-transaction])
|
||||
(html-response (transaction-row
|
||||
(dc/pull (dc/db conn)
|
||||
pull-expr
|
||||
(Long/parseLong transaction-id))
|
||||
:auto-remove? true
|
||||
:hide-actions? true
|
||||
:class "live-added"))))
|
||||
|
||||
(defn disapprove [{:keys [identity session] {:keys [transaction-id]} :route-params}]
|
||||
(let [transaction-id (cond-> transaction-id string? (Long/parseLong))]
|
||||
@(dc/transact conn [[:upsert-transaction {:db/id transaction-id :transaction/recommended-account nil :transaction/recommended-vendor nil}]])
|
||||
(html-response (transaction-row
|
||||
(dc/pull (dc/db conn) pull-expr transaction-id)
|
||||
:auto-remove? true
|
||||
:hide-actions? true
|
||||
:class "live-removed"))))
|
||||
|
||||
(defn explain [{:keys [identity session] {:keys [transaction-id]} :route-params}]
|
||||
(let [r (dc/pull (dc/db conn)
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
"transaction" {"/insights" {"" :transaction-insights
|
||||
"/table" :transaction-insight-table
|
||||
["/approve/" [#"\d+" :transaction-id]] {:post :transaction-insight-approve}
|
||||
["/disapprove/" [#"\d+" :transaction-id]] {:delete :transaction-insight-disapprove}
|
||||
["/rows/" [#"\d+" :after]] {:get :transaction-insight-rows}
|
||||
["/explain/" [#"\d+" :transaction-id]] {:get :transaction-insight-explain}}}
|
||||
"company" {"" :company
|
||||
|
||||
Reference in New Issue
Block a user