Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prod Release 2023-10-03 - Take 1 #2008

Merged
merged 917 commits into from
Oct 3, 2023
Merged
Changes from 1 commit
Commits
Show all changes
917 commits
Select commit Hold shift + click to select a range
8d99175
chore(deps): bump @aws-sdk/client-ses from 3.370.0 to 3.377.0 (#1695)
dependabot[bot] Jul 25, 2023
a1157e9
chore(deps): bump @aws-sdk/rds-signer from 3.370.0 to 3.377.0 (#1692)
dependabot[bot] Jul 25, 2023
24ce50a
feat(1303): add capital expenditure amount column to new project summ…
michello Jul 26, 2023
701dc29
chore(deps): bump @aws-sdk/client-ses from 3.377.0 to 3.378.0 (#1698)
dependabot[bot] Jul 26, 2023
85f7002
chore(deps): bump @aws-sdk/client-s3 from 3.377.0 to 3.378.0 (#1702)
dependabot[bot] Jul 26, 2023
024e1ef
chore(deps): bump @aws-sdk/s3-request-presigner from 3.377.0 to 3.378…
dependabot[bot] Jul 26, 2023
5821566
chore(deps): bump @aws-sdk/client-sqs from 3.377.0 to 3.378.0 (#1701)
dependabot[bot] Jul 26, 2023
cb8a9b8
chore(deps): bump @aws-sdk/rds-signer from 3.377.0 to 3.378.0 (#1700)
dependabot[bot] Jul 26, 2023
103322e
chore(deps): bump core-js from 3.31.1 to 3.32.0 (#1704)
dependabot[bot] Jul 27, 2023
222f95f
chore(deps): bump dd-trace from 3.29.1 to 3.30.0 (#1705)
dependabot[bot] Jul 27, 2023
bdcb47f
chore(deps): bump @aws-sdk/client-s3 from 3.378.0 to 3.379.1 (#1707)
dependabot[bot] Jul 28, 2023
6b7eeb9
Removing eligibilty codes and keywords tabs (#1689)
replicantSocks Jul 31, 2023
29a7093
chore(deps): bump dd-trace from 3.30.0 to 3.32.0 (#1715)
dependabot[bot] Jul 31, 2023
77ff2a6
chore(deps): bump @aws-sdk/client-ses from 3.378.0 to 3.379.1 (#1712)
dependabot[bot] Jul 31, 2023
9d806ac
chore(deps): bump @aws-sdk/rds-signer from 3.378.0 to 3.379.1 (#1711)
dependabot[bot] Jul 31, 2023
f4e22f6
chore(deps): bump @aws-sdk/s3-request-presigner from 3.378.0 to 3.379…
dependabot[bot] Jul 31, 2023
a553d7c
chore(deps): bump pg from 8.11.1 to 8.11.2 (#1719)
dependabot[bot] Aug 1, 2023
ac0d67f
chore(deps): bump @aws-sdk/rds-signer from 3.379.1 to 3.382.0 (#1720)
dependabot[bot] Aug 1, 2023
7706f22
chore(deps): bump @aws-sdk/client-ses from 3.379.1 to 3.382.0 (#1723)
dependabot[bot] Aug 1, 2023
4610fa7
chore(deps): bump @aws-sdk/s3-request-presigner from 3.379.1 to 3.382…
dependabot[bot] Aug 1, 2023
3c1581c
chore(deps): bump @aws-sdk/client-sqs from 3.378.0 to 3.382.0 (#1722)
dependabot[bot] Aug 1, 2023
a491b85
feat: search front-end (#1697)
as1729 Aug 1, 2023
16622ef
Multiple updates post demo (#1724)
jakekreider Aug 2, 2023
12702f1
1410 filter logic (#1716)
joshgarza Aug 2, 2023
02cce9e
chore(deps): bump inquirer from 8.2.5 to 8.2.6 (#1725)
dependabot[bot] Aug 2, 2023
9484f8f
chore(deps): bump @aws-sdk/client-s3 from 3.379.1 to 3.383.0 (#1726)
dependabot[bot] Aug 2, 2023
8ca1d06
chore(deps): bump @aws-sdk/s3-request-presigner from 3.382.0 to 3.383…
dependabot[bot] Aug 2, 2023
1806075
chore(deps): bump cloudposse/s3-bucket/aws (#1737)
dependabot[bot] Aug 4, 2023
579fac6
chore(deps): bump @aws-sdk/client-s3 from 3.383.0 to 3.385.0 (#1738)
dependabot[bot] Aug 4, 2023
ec3674c
chore(deps): bump @aws-sdk/s3-request-presigner from 3.383.0 to 3.385…
dependabot[bot] Aug 4, 2023
c34458d
chore(deps): bump @aws-sdk/rds-signer from 3.382.0 to 3.385.0 (#1741)
dependabot[bot] Aug 4, 2023
4fbf4a3
chore(deps): bump @aws-sdk/client-sqs from 3.382.0 to 3.385.0 (#1742)
dependabot[bot] Aug 4, 2023
72c9e78
chore(deps): bump @aws-sdk/client-ses from 3.382.0 to 3.385.0 (#1740)
dependabot[bot] Aug 4, 2023
fa8a184
chore(deps): bump cloudposse/s3-bucket/aws (#1743)
dependabot[bot] Aug 7, 2023
e2b3fab
chore(deps): bump @aws-sdk/client-ses from 3.385.0 to 3.386.0 (#1749)
dependabot[bot] Aug 7, 2023
941f49f
chore(deps): bump @aws-sdk/s3-request-presigner from 3.385.0 to 3.386…
dependabot[bot] Aug 7, 2023
61c9069
chore(deps): bump @aws-sdk/rds-signer from 3.385.0 to 3.386.0 (#1752)
dependabot[bot] Aug 7, 2023
4cdf6df
chore(deps): bump @aws-sdk/client-sqs from 3.385.0 to 3.386.0 (#1753)
dependabot[bot] Aug 7, 2023
9f887bd
chore(deps): bump dd-trace from 3.32.0 to 3.32.1 (#1750)
dependabot[bot] Aug 7, 2023
d1b06e4
Bump dd-trace to 4.x branch (#1756)
ajhyndman Aug 8, 2023
ceb7cf6
Grants Search Feedback Round 1 Fixes (#1744)
jakekreider Aug 8, 2023
9a9e8fa
Feat(1670): Implement USDR style guide colors and fonts (#1717)
joeyyang Aug 8, 2023
59c1bdf
chore(deps): bump @aws-sdk/client-ses from 3.386.0 to 3.387.0 (#1758)
dependabot[bot] Aug 8, 2023
6f368ba
chore(deps-dev): bump @babel/core from 7.22.9 to 7.22.10 (#1761)
dependabot[bot] Aug 8, 2023
e09a85c
chore(deps): bump @aws-sdk/rds-signer from 3.386.0 to 3.387.0 (#1760)
dependabot[bot] Aug 8, 2023
df2a707
chore(deps): bump @aws-sdk/client-s3 from 3.385.0 to 3.387.0 (#1759)
dependabot[bot] Aug 8, 2023
80e4bfa
chore(deps): bump @aws-sdk/s3-request-presigner from 3.386.0 to 3.387…
dependabot[bot] Aug 8, 2023
f5892af
Enable Datadog profiling in ECS (#1763)
TylerHendrickson Aug 9, 2023
f42d516
FIX: PR 1763 (#1764)
TylerHendrickson Aug 9, 2023
ea10bc1
Feat: streamline Terraform website feature flags (#1754)
TylerHendrickson Aug 9, 2023
4503ea5
chore(deps): bump @aws-sdk/s3-request-presigner from 3.387.0 to 3.388…
dependabot[bot] Aug 9, 2023
9c6fdd0
chore(deps-dev): bump commitlint from 17.6.7 to 17.7.0 (#1768)
dependabot[bot] Aug 9, 2023
af6af5b
chore(deps): bump @aws-sdk/client-sqs from 3.386.0 to 3.388.0 (#1770)
dependabot[bot] Aug 9, 2023
86cc211
chore(deps): bump @aws-sdk/rds-signer from 3.387.0 to 3.388.0 (#1769)
dependabot[bot] Aug 9, 2023
211cd63
chore(deps): bump @aws-sdk/rds-signer from 3.388.0 to 3.389.0 (#1772)
dependabot[bot] Aug 10, 2023
481d445
chore(deps-dev): bump commitlint from 17.7.0 to 17.7.1 (#1774)
dependabot[bot] Aug 10, 2023
31926e4
chore(deps): bump @aws-sdk/client-ses from 3.387.0 to 3.388.0 (#1773)
dependabot[bot] Aug 10, 2023
68caee3
chore(deps): bump @aws-sdk/client-s3 from 3.387.0 to 3.388.0 (#1775)
dependabot[bot] Aug 10, 2023
26892ca
Design feedback for #1757 (#1776)
jakekreider Aug 11, 2023
b2c148e
Add datadog spans for file I/O and XLSX parsing (#1732)
ajhyndman Aug 11, 2023
e171010
fix: turn off new table by default in staging (#1780)
as1729 Aug 11, 2023
5f10318
fix: change Keywords heading from h3 to h2 (#1782)
joeyyang Aug 11, 2023
e4dc5bc
chore(deps): bump @aws-sdk/client-ses from 3.388.0 to 3.390.0 (#1783)
dependabot[bot] Aug 11, 2023
0f58588
Fix typo: tracer.tracer -> tracer.trace (#1785)
ajhyndman Aug 14, 2023
1e3ba0d
Design feedback, search fix (#1786)
jakekreider Aug 14, 2023
fe88229
Commit the latest version of treasury's bulk upload templates (#1787)
ajhyndman Aug 14, 2023
263e7d0
chore(deps): bump @aws-sdk/client-s3 from 3.388.0 to 3.391.0 (#1791)
dependabot[bot] Aug 14, 2023
29fbbdf
chore(deps): bump @aws-sdk/client-ses from 3.390.0 to 3.391.0 (#1792)
dependabot[bot] Aug 14, 2023
5f54570
chore(deps): bump @aws-sdk/s3-request-presigner from 3.388.0 to 3.391…
dependabot[bot] Aug 14, 2023
dc02d28
chore(deps): bump @aws-sdk/client-sqs from 3.388.0 to 3.391.0 (#1793)
dependabot[bot] Aug 14, 2023
dedd044
chore(deps): bump @aws-sdk/rds-signer from 3.389.0 to 3.391.0 (#1794)
dependabot[bot] Aug 14, 2023
57352ee
feat: adds endpoint to grab grants (#1777)
as1729 Aug 15, 2023
5725d66
Feat: Use `window.sessionStorage` to override feature flags (#1796)
TylerHendrickson Aug 15, 2023
1a3bc2d
chore(deps): bump dd-trace from 4.11.1 to 4.12.0 (#1799)
dependabot[bot] Aug 16, 2023
77bbc5d
chore(deps): bump pg from 8.11.2 to 8.11.3 (#1803)
dependabot[bot] Aug 17, 2023
f9ebb2e
chore(deps): bump @aws-sdk/s3-request-presigner from 3.391.0 to 3.395…
dependabot[bot] Aug 18, 2023
c32552c
chore(deps): bump @aws-sdk/client-ses from 3.391.0 to 3.395.0 (#1805)
dependabot[bot] Aug 18, 2023
b7a6383
chore(deps): bump @aws-sdk/client-s3 from 3.391.0 to 3.395.0 (#1807)
dependabot[bot] Aug 18, 2023
862cb09
chore(deps): bump @aws-sdk/rds-signer from 3.391.0 to 3.395.0 (#1806)
dependabot[bot] Aug 18, 2023
94f5c1a
Add reusable sqs_consumer_task terraform module (#1771)
TylerHendrickson Aug 19, 2023
c569a4b
Enhancement: Declare explicit Datadog container dependencies (#1809)
TylerHendrickson Aug 19, 2023
43e30d9
chore(deps-dev): bump node-fetch from 2.6.12 to 2.6.13 (#1810)
dependabot[bot] Aug 21, 2023
04bc61c
chore(deps): bump core-js from 3.32.0 to 3.32.1 (#1812)
dependabot[bot] Aug 21, 2023
6492b82
chore(deps): bump @aws-sdk/client-sqs from 3.391.0 to 3.395.0 (#1811)
dependabot[bot] Aug 21, 2023
325b575
chore(deps): bump @aws-sdk/s3-request-presigner from 3.395.0 to 3.397…
dependabot[bot] Aug 22, 2023
6f2614d
chore(deps): bump @aws-sdk/rds-signer from 3.395.0 to 3.397.0 (#1815)
dependabot[bot] Aug 22, 2023
73d0902
chore(deps): bump @aws-sdk/client-s3 from 3.395.0 to 3.397.0 (#1816)
dependabot[bot] Aug 22, 2023
7cbed27
feat(1303): generate kpi sheets in arpa audit report (#1713)
michello Aug 23, 2023
26ec92d
chore(deps): bump dd-trace from 4.12.0 to 4.13.0 (#1817)
dependabot[bot] Aug 23, 2023
f960f95
chore(deps): bump @aws-sdk/s3-request-presigner from 3.397.0 to 3.398…
dependabot[bot] Aug 23, 2023
c8e26b8
chore(deps-dev): bump node-fetch from 2.6.13 to 2.7.0 (#1821)
dependabot[bot] Aug 23, 2023
7247954
chore(deps): bump @aws-sdk/client-sqs from 3.395.0 to 3.398.0 (#1818)
dependabot[bot] Aug 23, 2023
9dbcd06
chore(deps): bump @aws-sdk/rds-signer from 3.397.0 to 3.398.0 (#1820)
dependabot[bot] Aug 23, 2023
3009125
Fixes for #1797 (#1813)
jakekreider Aug 24, 2023
6bfc8ac
chore(deps-dev): bump @babel/core from 7.22.10 to 7.22.11 (#1822)
dependabot[bot] Aug 24, 2023
fbbdbf4
chore(deps): bump @aws-sdk/client-s3 from 3.397.0 to 3.398.0 (#1824)
dependabot[bot] Aug 24, 2023
445ffb8
chore(deps-dev): bump chai from 4.3.7 to 4.3.8 (#1825)
dependabot[bot] Aug 24, 2023
2f3dae0
chore(deps): bump csv-stringify from 6.4.0 to 6.4.1 (#1823)
dependabot[bot] Aug 24, 2023
1f41572
fix: initial search adjustments 815 review (#1826)
as1729 Aug 25, 2023
01bf217
fix: ensure stats are hidden from dashboard (#1830)
as1729 Aug 25, 2023
482d024
chore(deps): bump @aws-sdk/s3-request-presigner from 3.398.0 to 3.400…
dependabot[bot] Aug 25, 2023
25eb379
chore(deps): bump @aws-sdk/client-ses from 3.395.0 to 3.398.0 (#1835)
dependabot[bot] Aug 25, 2023
41c1927
chore(deps): bump @aws-sdk/client-s3 from 3.398.0 to 3.400.0 (#1836)
dependabot[bot] Aug 25, 2023
416a18b
chore(deps): bump csv-stringify from 6.4.1 to 6.4.2 (#1834)
dependabot[bot] Aug 25, 2023
c69d068
chore(deps): bump dd-trace from 4.13.0 to 4.13.1 (#1837)
dependabot[bot] Aug 25, 2023
8dcf18b
Include cookies in logout request to API endpoint (#1838)
ajhyndman Aug 26, 2023
dcf651e
fix: pagination and audit report (#1831)
as1729 Aug 26, 2023
7c0e289
Fix some typos that snuck into audit report generation (#1839)
ajhyndman Aug 28, 2023
bd0e27a
feat(arpa): skip parsing of formulae and html (#1840)
ajhyndman Aug 28, 2023
1305592
fix: various search bugs (#1842)
as1729 Aug 28, 2023
f726d0a
chore: make new search experience live in staging (#1843)
as1729 Aug 28, 2023
f22dd00
fix: ensure save button disabled for new saved searches (#1847)
replicantSocks Aug 29, 2023
3f180d6
Fix: reduce query complexity for getting total grants (#1848)
as1729 Aug 29, 2023
2bb5ed3
fix: correctly apply distinct and resolve ambiguous column (#1849)
as1729 Aug 29, 2023
b199516
chore(deps): bump cloudposse/s3-bucket/aws (#1844)
dependabot[bot] Aug 29, 2023
497226f
chore(deps): bump cloudposse/s3-bucket/aws (#1845)
dependabot[bot] Aug 29, 2023
34135bd
Saved search UI bug fixes (#1850)
jakekreider Aug 30, 2023
73080e9
fix: resizes contents of grants table (#1851)
as1729 Aug 30, 2023
43a4b60
chore(deps): bump apollo-server-core from 3.11.1 to 3.12.1 (#1853)
dependabot[bot] Aug 30, 2023
38950f9
QA feedback (#1855)
jakekreider Aug 31, 2023
f02102a
chore(deps): bump dd-trace from 4.13.1 to 4.14.0 (#1856)
dependabot[bot] Aug 31, 2023
3fce01b
Sidebar backdrop for grants search and saved search (#1858)
jakekreider Sep 1, 2023
e33de3a
chore(deps): bump @aws-sdk/s3-request-presigner from 3.400.0 to 3.405…
dependabot[bot] Sep 1, 2023
a21e6f5
chore(deps): bump @aws-sdk/rds-signer from 3.398.0 to 3.405.0 (#1860)
dependabot[bot] Sep 1, 2023
d29b4db
chore(deps): bump @aws-sdk/client-ses from 3.398.0 to 3.405.0 (#1863)
dependabot[bot] Sep 1, 2023
d81ff75
chore(deps): bump @aws-sdk/client-s3 from 3.400.0 to 3.405.0 (#1861)
dependabot[bot] Sep 1, 2023
50d06e6
chore(deps): bump @aws-sdk/client-sqs from 3.398.0 to 3.405.0 (#1862)
dependabot[bot] Sep 1, 2023
73d6a65
chore(deps-dev): bump @babel/core from 7.22.11 to 7.22.15 (#1866)
dependabot[bot] Sep 4, 2023
421e3a7
feat: display error message when search title already exists (#1864)
replicantSocks Sep 5, 2023
952dbe7
feat: enable saved search digest emails per user (#1802)
replicantSocks Sep 5, 2023
188d563
chore(deps): bump cloudposse/iam-policy/aws (#1852)
dependabot[bot] Sep 5, 2023
b778557
chore(deps): bump cloudposse/iam-policy/aws (#1854)
dependabot[bot] Sep 5, 2023
5f47488
chore(deps): bump nodemailer from 6.9.4 to 6.9.5 (#1869)
dependabot[bot] Sep 6, 2023
b40dc4e
Fix: Query quality and performance (#1870)
as1729 Sep 7, 2023
40bc587
chore(deps): bump core-js from 3.32.1 to 3.32.2 (#1872)
dependabot[bot] Sep 7, 2023
357f013
fix: pagination performance in old search flow (#1871)
as1729 Sep 8, 2023
321ea38
chore(deps): bump @aws-sdk/client-s3 from 3.405.0 to 3.409.0 (#1874)
dependabot[bot] Sep 8, 2023
8064905
chore(deps): bump dd-trace from 4.14.0 to 4.15.0 (#1875)
dependabot[bot] Sep 8, 2023
16a42be
chore(deps): bump @aws-sdk/rds-signer from 3.405.0 to 3.409.0 (#1876)
dependabot[bot] Sep 8, 2023
45263db
chore(deps): bump @aws-sdk/client-sqs from 3.405.0 to 3.409.0 (#1878)
dependabot[bot] Sep 8, 2023
c0d2630
chore(deps): bump @aws-sdk/client-ses from 3.405.0 to 3.409.0 (#1877)
dependabot[bot] Sep 8, 2023
8c6c42d
fix: Correct typo in KPI sheet calculation (#1879)
ajhyndman Sep 8, 2023
bb00c5e
Merge branch 'main' into _staging
as1729 Sep 8, 2023
dfe8096
Ensure saved search persisted before refreshing data (#1892)
jakekreider Sep 11, 2023
85d2bcf
chore(deps): bump @aws-sdk/client-ses from 3.409.0 to 3.410.0 (#1895)
dependabot[bot] Sep 11, 2023
adfa0fa
chore(deps): bump @aws-sdk/client-s3 from 3.409.0 to 3.410.0 (#1897)
dependabot[bot] Sep 11, 2023
70832f8
chore(deps-dev): bump @babel/core from 7.22.15 to 7.22.17 (#1899)
dependabot[bot] Sep 11, 2023
04716e5
chore(deps): bump @aws-sdk/s3-request-presigner from 3.405.0 to 3.410…
dependabot[bot] Sep 11, 2023
c88ee9f
chore(deps): bump @aws-sdk/client-sqs from 3.409.0 to 3.410.0 (#1898)
dependabot[bot] Sep 11, 2023
ed6c14b
chore: multiple changes based on design and usability feedback (#1891)
as1729 Sep 12, 2023
ea82e85
Move export csv to grants next (#1900)
replicantSocks Sep 12, 2023
dd59997
chore(deps): bump @aws-sdk/rds-signer from 3.409.0 to 3.410.0 (#1902)
dependabot[bot] Sep 12, 2023
4aa64bd
fix: opp-status indexing (#1901)
as1729 Sep 13, 2023
55a5f1c
chore(deps-dev): bump eslint-plugin-import from 2.27.5 to 2.28.1 (#1905)
dependabot[bot] Sep 13, 2023
a17369b
fix: ensure 'All Bills' option works (#1904)
as1729 Sep 13, 2023
0b56c2b
chore(deps): bump @aws-sdk/s3-request-presigner from 3.410.0 to 3.412…
dependabot[bot] Sep 13, 2023
1e3cf00
chore(deps): bump @aws-sdk/client-s3 from 3.410.0 to 3.412.0 (#1915)
dependabot[bot] Sep 13, 2023
fb0f855
fix: removes view all grants button from digest (#1909)
as1729 Sep 14, 2023
6ef81f0
fix: ignore closed and archived grants by default (#1907)
as1729 Sep 14, 2023
6b9346e
chore: change csv limit (#1918)
as1729 Sep 14, 2023
3678aa3
chore: add featureflag for new search notification (#1917)
as1729 Sep 14, 2023
6b0efcc
chore(deps): bump @aws-sdk/client-s3 from 3.412.0 to 3.413.0 (#1922)
dependabot[bot] Sep 14, 2023
a8d9786
chore(deps): bump @aws-sdk/client-sqs from 3.410.0 to 3.413.0 (#1924)
dependabot[bot] Sep 14, 2023
5b5c868
chore(deps): bump @aws-sdk/rds-signer from 3.410.0 to 3.413.0 (#1925)
dependabot[bot] Sep 14, 2023
c296eee
chore(deps): bump @aws-sdk/s3-request-presigner from 3.412.0 to 3.413…
dependabot[bot] Sep 14, 2023
65e9084
chore(deps-dev): bump @babel/core from 7.22.17 to 7.22.19 (#1926)
dependabot[bot] Sep 14, 2023
b168012
chore(deps): bump @aws-sdk/client-ses from 3.410.0 to 3.413.0 (#1927)
dependabot[bot] Sep 14, 2023
74f0418
chore: add data-type migrations (#1929)
as1729 Sep 15, 2023
d31e1e0
Parallelize Audit Report generation (#1873)
ajhyndman Sep 15, 2023
7c9a028
chore(deps): bump @aws-sdk/client-sqs from 3.413.0 to 3.414.0 (#1931)
dependabot[bot] Sep 15, 2023
9d00f86
chore(deps): bump @aws-sdk/rds-signer from 3.413.0 to 3.414.0 (#1933)
dependabot[bot] Sep 15, 2023
4eda6f4
chore(deps): bump @aws-sdk/s3-request-presigner from 3.413.0 to 3.414…
dependabot[bot] Sep 15, 2023
22cb701
chore(deps): bump @aws-sdk/client-ses from 3.413.0 to 3.414.0 (#1932)
dependabot[bot] Sep 15, 2023
1556874
chore(deps): bump @aws-sdk/client-s3 from 3.413.0 to 3.414.0 (#1935)
dependabot[bot] Sep 15, 2023
bf5f5e3
fix: ensures opportunity_status is up to date (#1920)
as1729 Sep 18, 2023
200051a
fix: broken award-ceiling ordering (#1906)
as1729 Sep 18, 2023
26505d4
chore(deps-dev): bump @babel/core from 7.22.19 to 7.22.20 (#1938)
dependabot[bot] Sep 18, 2023
68c3d23
chore(deps): bump @aws-sdk/rds-signer from 3.414.0 to 3.415.0 (#1939)
dependabot[bot] Sep 18, 2023
943c2ed
feat: implements websearch_to_tsquery (#1936)
as1729 Sep 19, 2023
6c5b4bc
1867 Monitor grant ingestion DLQ in Datadog (#1868)
TylerHendrickson Sep 19, 2023
e87ac15
fix: ensure archive_date is captured always (#1942)
as1729 Sep 19, 2023
e28ad58
fix: emails being sent to all users (#1945)
as1729 Sep 20, 2023
038217d
chore(deps): bump @aws-sdk/client-s3 from 3.414.0 to 3.417.0 (#1947)
dependabot[bot] Sep 20, 2023
359c03b
chore(deps): bump @aws-sdk/s3-request-presigner from 3.414.0 to 3.417…
dependabot[bot] Sep 20, 2023
b4a3076
fix: merge main into staging
as1729 Sep 21, 2023
13204cc
fix: email notifications not sending the correct grants-set (#1946)
as1729 Sep 21, 2023
1494b65
Fix: Bug in search notifications which does not consider `archived` s…
as1729 Sep 21, 2023
92be94b
Merge branch 'main' into _staging
as1729 Sep 22, 2023
a055d3b
feat: adds training guide to user drop-down (#1950)
as1729 Sep 22, 2023
bd08bc4
Remove redundant apiUrl helper call (#1953)
ajhyndman Sep 22, 2023
4974fb6
chore: adds additional memory to Fargate task (#1958)
as1729 Sep 22, 2023
164f25f
Merge branch 'main' into _staging
as1729 Sep 22, 2023
b266441
fix: edit saved search unit tests (#1957)
replicantSocks Sep 22, 2023
e3938ae
chore: add service-down page for report generation (#1959)
as1729 Sep 22, 2023
156eb79
fix: lengthy log clutters datadog and cloudwatch (#1955)
as1729 Sep 22, 2023
f679d56
chore(deps): bump @aws-sdk/client-ses from 3.414.0 to 3.418.0 (#1961)
dependabot[bot] Sep 22, 2023
b2b6ca4
chore(deps): bump @aws-sdk/rds-signer from 3.415.0 to 3.418.0 (#1962)
dependabot[bot] Sep 22, 2023
f33ef45
chore(deps): bump @aws-sdk/s3-request-presigner from 3.417.0 to 3.418…
dependabot[bot] Sep 22, 2023
7b1b997
chore(deps): bump @aws-sdk/client-s3 from 3.417.0 to 3.418.0 (#1965)
dependabot[bot] Sep 22, 2023
db0863f
chore(deps): bump @aws-sdk/client-sqs from 3.414.0 to 3.418.0 (#1963)
dependabot[bot] Sep 22, 2023
caefdb3
Merge branch 'main' into _staging
as1729 Sep 22, 2023
8530e35
chore(deps-dev): bump @babel/core from 7.22.20 to 7.23.0 (#1969)
dependabot[bot] Sep 25, 2023
b97eefc
Fix swap of interested and rejected totals (#1968)
jakekreider Sep 25, 2023
7d2be8f
chore(deps): bump cloudposse/ecs-container-definition/aws (#1971)
dependabot[bot] Sep 26, 2023
384ec05
chore(deps): bump cloudposse/iam-policy/aws (#1972)
dependabot[bot] Sep 26, 2023
0edecf9
chore(deps): bump cloudposse/iam-policy/aws (#1973)
dependabot[bot] Sep 26, 2023
7768af6
Add debug logs for analyzing audit report generation (#1976)
TylerHendrickson Sep 27, 2023
f06cfe8
Commit new Upload Workbook v20230923 (#1967)
ajhyndman Sep 27, 2023
48b23c8
Merge branch 'main' into _staging
as1729 Sep 27, 2023
8cb31ba
fix: adds earmark as valid option (#1980)
as1729 Sep 27, 2023
e859dec
Hide dashboard stats, skip separate query for total count (#1979)
jakekreider Sep 27, 2023
b18d01f
Add logs to all sheet generating functions (#1978)
TylerHendrickson Sep 27, 2023
33fcc6e
chore(deps): bump dd-trace from 4.15.0 to 4.16.0 (#1981)
dependabot[bot] Sep 27, 2023
4381280
chore(deps-dev): bump chai from 4.3.8 to 4.3.9 (#1983)
dependabot[bot] Sep 27, 2023
e199a72
chore(deps): bump @aws-sdk/client-s3 from 3.418.0 to 3.421.0 (#1984)
dependabot[bot] Sep 27, 2023
cb1a590
chore(deps): bump @aws-sdk/rds-signer from 3.418.0 to 3.421.0 (#1985)
dependabot[bot] Sep 27, 2023
6dfdf3e
chore(deps): bump @aws-sdk/client-sqs from 3.418.0 to 3.421.0 (#1982)
dependabot[bot] Sep 27, 2023
6e6a483
chore(deps): bump @aws-sdk/s3-request-presigner from 3.418.0 to 3.421…
dependabot[bot] Sep 27, 2023
f4d9a76
Merge branch 'main' into _staging
as1729 Sep 28, 2023
1dc3cc3
chore(deps-dev): bump chai from 4.3.9 to 4.3.10 (#1989)
dependabot[bot] Sep 28, 2023
f4a9b20
chore(deps-dev): bump commitlint from 17.7.1 to 17.7.2 (#1990)
dependabot[bot] Sep 28, 2023
e4b03f4
chore(deps): bump @aws-sdk/client-ses from 3.418.0 to 3.421.0 (#1991)
dependabot[bot] Sep 28, 2023
c034737
feat: migrates keywords and ECs to saved search (#1680)
as1729 Sep 29, 2023
66344b4
Add task queue for ARPA audit reports (#1992)
TylerHendrickson Sep 29, 2023
7b172db
Merge branch 'main' into _staging
as1729 Sep 29, 2023
ef668d5
Fix: Namespace issue in `module.arpa_audit_report` (#1994)
TylerHendrickson Sep 29, 2023
182a40b
Remove env condition from "Deploy Grants Consumer" job (#1941)
TylerHendrickson Sep 29, 2023
e04008f
Fix: Shorten arpa_audit_report role name to avoid character limit (#1…
TylerHendrickson Sep 29, 2023
9a6a38d
Merge branch 'main' into _staging
as1729 Sep 29, 2023
1e0c52a
Allow API tasks to send messages to the `arpa_audit_report` SQS queue…
TylerHendrickson Sep 29, 2023
58ae893
chore: update to use the latest list of bills (#2000)
as1729 Sep 29, 2023
bf0f418
chore(deps): bump cloudposse/ecs-container-definition/aws (#2002)
dependabot[bot] Sep 29, 2023
f07d462
ARPA audit report task fixes (#2005)
TylerHendrickson Sep 29, 2023
2fa8bc8
chore: turn on new saved search in prod (#1999)
as1729 Sep 30, 2023
a0fd58e
Merge branch 'main' into _staging
as1729 Sep 30, 2023
1ec95f1
Fix JSON SQS message body for ARPA tasks (#2006)
TylerHendrickson Sep 30, 2023
dc6bbc1
Merge branch 'main' into _staging
as1729 Sep 30, 2023
bde9080
Gracefully disable useRequest() cache when no request is active (#2009)
TylerHendrickson Sep 30, 2023
9fcb6df
fix: #1894 - audit report enhancements (#2010)
tzinckgraf Oct 2, 2023
3896ca9
ARPA Audit Report tweaks: Round 1 (#2011)
TylerHendrickson Oct 2, 2023
e1c5606
chore(deps): bump @aws-sdk/rds-signer from 3.421.0 to 3.423.0 (#2012)
dependabot[bot] Oct 2, 2023
c255ffa
chore(deps): bump @aws-sdk/client-ses from 3.421.0 to 3.423.0 (#2013)
dependabot[bot] Oct 2, 2023
86529e5
chore(deps): bump @aws-sdk/client-sqs from 3.421.0 to 3.423.0 (#2015)
dependabot[bot] Oct 2, 2023
6d78993
chore(deps): bump @aws-sdk/client-s3 from 3.421.0 to 3.423.0 (#2016)
dependabot[bot] Oct 2, 2023
b52544a
chore(deps): bump @aws-sdk/s3-request-presigner from 3.421.0 to 3.423…
dependabot[bot] Oct 2, 2023
f8165dd
chore(deps): bump core-js from 3.32.2 to 3.33.0 (#2017)
dependabot[bot] Oct 2, 2023
92679a7
ARPA Audit Report tweaks: Round 2 (#2018)
TylerHendrickson Oct 2, 2023
fe1340a
ARPA Audit Report tweaks: Round 3 (#2020)
TylerHendrickson Oct 2, 2023
88f5f38
Output template updates 2023-09 (#2019)
ajhyndman Oct 3, 2023
a625899
ARPA Audit Report tweaks: Round 4 (#2021)
TylerHendrickson Oct 3, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
270 changes: 270 additions & 0 deletions docs/filter-logic.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,270 @@
# Advanced Search Filter Logic Implementation Guide

## Introduction
This guide provides a detailed description of the filter logic for the advanced search feature of our application. It will cover the implementation on both client-side and server-side (API) with the objective to ensure consistency, efficiency, and maintainability of our codebase.

## Overview of Advanced Search Feature
The advanced search feature allows users more granularity in the results they can generate when searching for appropriate grants. Our initial grants search included the ability to search via:

- searchTerm
- opportunity status
- opportunity category
- cost sharing

Our advanced search feature includes opportunity status, opportunity category, and cost sharing but also breaks up the concept of searchTerm into ***include*** and ***exclude*** terms. In total, all filters included in the advanced search feature are as follows:

- include keywords
- exclude keywords
- opportunity #
- opportunity status
- opportunity category
- cost sharing
- eligibility
- funding type
- agency
- posted within
- review status

Our implementation should allow for a user to apply a single filter as well as multiple filters.

## Filter Logic

### Understanding Filter Logic
The filter logic is central to our search feature. It must be able to handle our updated fields at scale and should adhere to the same coding style as current our current implementation.

High level from client-side:

1. take user inputs through search side panel
2. dispatch action (to be written? or reuse existing?) with selected filters and their values
- collate query and send GET to /api/organizations/:organizationId/grants?${query}

High level from server-side:

1. In routes/grants.js receive query through a new endpoint and validate user with requireUser.
- replicate the functionality in the original endpoint '/'
2. Build new helper in server/src/db/helpers.js to handle include and exclude keywords.
- use the existing helper function as a blueprint and write a new function
3. In db/grants.js write a new function similar to getGrants() to handle novel filters.

todo:
- write up endpoint specs for main search, multiselect fields
- write up frontend specs to connect to api

----
### Single or Multiple Filter Application

For our use case, we can handle the difference between single or multiple filters with the logical OR operator. On the client side, we'll send only filters that contain valid values and interpret the omitted or undefined values on the server side via ||, i.e. ```costSharing: req.query.costSharing || null```.

----
**Client-side Implementation**

Steps and code snippets on how to implement single filter logic on the client side.

----
**Server-side (API) Implementation**

For our implementation, we are going to write new endpoints and helper functions. The majority of the logic should be able to remain the same between the current and new implementations with the exceptions being updated/new fields and the separation of include and exclude keywords in place of searchTerm.

----
**Endpoint**

Current implementation in **server/src/routes/grants.js**:
```
router.get('/', requireUser, async (req, res) => {
const { selectedAgency, user } = req.session;
let agencyCriteria;
// if we want interested, assigned, grants for a user, do not filter by eligibility or keywords
if (!req.query.interestedByMe && !req.query.assignedToAgency) {
agencyCriteria = await db.getAgencyCriteriaForAgency(selectedAgency);
}

const grants = await db.getGrants({
...req.query,
tenantId: user.tenant_id,
filters: {
agencyCriteria,
interestedByAgency: req.query.interestedByAgency ? selectedAgency : null,
interestedByUser: req.query.interestedByMe ? req.signedCookies.userId : null,
assignedToAgency: req.query.assignedToAgency ? req.query.assignedToAgency : null,
positiveInterest: req.query.positiveInterest ? true : null,
result: req.query.result ? true : null,
rejected: req.query.rejected ? true : null,
costSharing: req.query.costSharing || null,
opportunityStatuses: parseCollectionQueryParam(req, 'opportunityStatuses'),
opportunityCategories: parseCollectionQueryParam(req, 'opportunityCategories'),
},
orderBy: req.query.orderBy,
orderDesc: req.query.orderDesc,
});
res.json(grants);
});
```
In the current implementation, parameters besides filters, orderBy, or orderDesc parameters are being spread via ...req.query. These can include currentPage, perPage, tenantId, and searchTerm.

The updated implementation needs to include the following fields in the query and be applied to the filters (note: italicized fields indicate a new or updated field):
- *opportunity #*
- opportunity status
- opportunity category
- cost sharing
- *eligibility*
- *funding type*
- *agency*
- *posted within*
- *review status*

------
**Helper Function**

Along with the fields applied to the filters, we'll use a helper for the include and exclude keywords. A current example is in **server/src/db/helpers.js** under the function, whereAgencryCriteriaMatch. Below is the code snippet:

```
function whereAgencyCriteriaMatch(qb, criteria) {
if (!criteria) {
return;
}
if (criteria.eligibilityCodes) {
qb.where('eligibility_codes', '~', criteria.eligibilityCodes.join('|'));
}

if (criteria.includeKeywords && criteria.includeKeywords.length > 0) {
qb.where('description', '~*', criteria.includeKeywords.join('|'));
}

if (criteria.excludeKeywords && criteria.excludeKeywords.length > 0) {
qb.where('description', '!~*', criteria.excludeKeywords.join('|'));
}
}
```

For the purpose of reducing dependent code, we should build a separate helper housed in the same file but the logic should remain virtually identical to the above snippet.

----
**Model**

The current db model is found in **server/src/db/index.js** and the snippet is below:

```
async function getGrants({
currentPage, perPage, tenantId, filters, orderBy, searchTerm, orderDesc,
} = {}) {
const { data, pagination } = await knex(TABLES.grants)
.select(`${TABLES.grants}.*`)
.distinct()
.modify((queryBuilder) => {
if (searchTerm && searchTerm !== 'null') {
queryBuilder.andWhere(
(qb) => qb.where(`${TABLES.grants}.grant_id`, '~*', searchTerm)
.orWhere(`${TABLES.grants}.grant_number`, '~*', searchTerm)
.orWhere(`${TABLES.grants}.title`, '~*', searchTerm),
);
}
if (filters) {
if (filters.interestedByUser || filters.positiveInterest || filters.result || filters.rejected || filters.interestedByAgency) {
queryBuilder.join(TABLES.grants_interested, `${TABLES.grants}.grant_id`, `${TABLES.grants_interested}.grant_id`)
.join(TABLES.interested_codes, `${TABLES.interested_codes}.id`, `${TABLES.grants_interested}.interested_code_id`);
}
if (filters.assignedToAgency) {
queryBuilder.join(TABLES.assigned_grants_agency, `${TABLES.grants}.grant_id`, `${TABLES.assigned_grants_agency}.grant_id`);
}
queryBuilder.andWhere(
(qb) => {
const isMyGrantsQuery = filters.interestedByAgency !== null
|| filters.assignedToAgency !== null
|| filters.rejected !== null
|| filters.result !== null;
if (!isMyGrantsQuery) {
helpers.whereAgencyCriteriaMatch(qb, filters.agencyCriteria);
}

if (filters.interestedByAgency != null) {
qb.where('grants_interested.agency_id', filters.interestedByAgency);
}
if (filters.interestedByUser) {
qb.where(`${TABLES.grants_interested}.user_id`, '=', filters.interestedByUser);
}
if (filters.assignedToAgency) {
qb.where(`${TABLES.assigned_grants_agency}.agency_id`, '=', filters.assignedToAgency);
}
if (!(filters.positiveInterest && filters.result && filters.rejected)) {
if (filters.positiveInterest) {
qb.where(`${TABLES.interested_codes}.status_code`, '=', 'Interested');
}
if (filters.result) {
qb.where(`${TABLES.interested_codes}.status_code`, '=', 'Result');
}
if (filters.rejected) {
qb.where(`${TABLES.interested_codes}.status_code`, '=', 'Rejected');
}
}
if (filters.opportunityStatuses?.length) {
qb.whereIn(`${TABLES.grants}.opportunity_status`, filters.opportunityStatuses);
}
if (filters.opportunityCategories?.length) {
qb.whereIn(`${TABLES.grants}.opportunity_category`, filters.opportunityCategories);
}
if (filters.costSharing) {
qb.where(`${TABLES.grants}.cost_sharing`, '=', filters.costSharing);
}
},
);
}
if (orderBy && orderBy !== 'undefined') {
if (orderBy.includes('interested_agencies')) {
queryBuilder.leftJoin(TABLES.grants_interested, `${TABLES.grants}.grant_id`, `${TABLES.grants_interested}.grant_id`);
const orderArgs = orderBy.split('|');
queryBuilder.orderBy(`${TABLES.grants_interested}.grant_id`, orderArgs[1]);
queryBuilder.orderBy(`${TABLES.grants}.grant_id`, orderArgs[1]);
} else if (orderBy.includes('viewed_by')) {
const orderArgs = orderBy.split('|');
queryBuilder.leftJoin(TABLES.grants_viewed, `${TABLES.grants}.grant_id`, `${TABLES.grants_viewed}.grant_id`);
queryBuilder.orderBy(`${TABLES.grants_viewed}.grant_id`, orderArgs[1]);
queryBuilder.orderBy(`${TABLES.grants}.grant_id`, orderArgs[1]);
} else {
const orderArgs = orderBy.split('|');
const orderDirection = ((orderDesc === 'true') ? 'desc' : 'asc');
if (orderArgs.length > 1) {
console.log(`Too many orderArgs: ${orderArgs}`);
}
queryBuilder.orderBy(orderArgs[0], orderDirection);
}
}
})
.paginate({ currentPage, perPage, isLengthAware: true });

const viewedByQuery = knex(TABLES.agencies)
.join(TABLES.grants_viewed, `${TABLES.agencies}.id`, '=', `${TABLES.grants_viewed}.agency_id`)
.whereIn('grant_id', data.map((grant) => grant.grant_id))
.andWhere('agencies.tenant_id', tenantId);

const viewedBy = await viewedByQuery.select(`${TABLES.grants_viewed}.grant_id`, `${TABLES.grants_viewed}.agency_id`, `${TABLES.agencies}.name as agency_name`, `${TABLES.agencies}.abbreviation as agency_abbreviation`);
const interestedBy = await getInterestedAgencies({ grantIds: data.map((grant) => grant.grant_id), tenantId });

const dataWithAgency = data.map((grant) => {
const viewedByAgencies = viewedBy.filter((viewed) => viewed.grant_id === grant.grant_id);
const agenciesInterested = interestedBy.filter((interested) => interested.grant_id === grant.grant_id);
return {
...grant,
viewed_by_agencies: viewedByAgencies,
interested_agencies: agenciesInterested,
};
});
return { data: dataWithAgency, pagination };
}
```
Similar to the endpoint, we'll write a new model replicating the logic used in our current implementation with a few exceptions.

Under the .modify method, we'll first incorporate the include and exclude helper function we created above.

In the conditional ```if(filter)```, we'll add conditionals after the conditional ```if(filter.costSharing)``` to check if the following filters are included and run a qb.whereIn method on each one (*note: refer to the existing whereIn methods for opportunityStatuses, opportunityCatergories, and costSharing to maintain code consistency*):
- *opportunity #*
- *eligibility*
- *funding type*
- *agency*
- *posted within*
- *review status*

## Testing
Provide guidance on how to test each part of the filter logic to ensure it works correctly.

## Troubleshooting
Common issues that might arise during the implementation and how to solve them.