Coverage for domain/field_configs.py: 100%
7 statements
« prev ^ index » next coverage.py v7.17.0, created at 2026-11-04 17:24 +0000
« prev ^ index » next coverage.py v7.17.0, created at 2026-11-04 17:24 +0000
1"""1003 Field configurations, lifecycle stages, and processing requirements.
3Matches admin.types.ts (FieldConfigs) and arive-spec.
4"""
6from __future__ import annotations
8from typing import Any
10LOAN_STAGES: list[str] = [
11 "APPLICATION_INTAKE",
12 "PREAPPROVED",
13 "QUALIFICATION",
14 "LOAN_SETUP",
15 "DISCLOSURE_SENT",
16 "UNDERWRITING_SUBMITTED",
17 "APPROVED_WITH_CONDITION",
18 "RE_SUBMITTAL",
19 "CLEAR_TO_CLOSE",
20 "DOCS_OUT",
21 "DOCS_SIGNED",
22 "LOAN_FUNDED",
23 "COMMISSION_PAID",
24 "BROKER_CHECK_RECEIVED",
25 "ADVERSE",
26 "SUSPENDED",
27]
29REQUIRED_TO_PROCESSING: dict[str, list[str]] = {
30 "Purchase": [
31 "county",
32 "state_code",
33 "transaction.purchase_price_amt",
34 "transaction.base_loan_amt",
35 ],
36 "Refinance": [
37 "county",
38 "state_code",
39 "transaction.appraised_value_amt",
40 "transaction.base_loan_amt",
41 ],
42}
44FIELD_CONFIG_CATALOG: list[dict[str, Any]] = [
45 {
46 "name": "transaction.PurchasePriceAmt",
47 "display_name": "Purchase Price",
48 "value_type": "number",
49 "required": True,
50 "visible": True,
51 "order": 1,
52 "category": "Loan & Property",
53 },
54 {
55 "name": "transaction.AppraisedValueAmt",
56 "display_name": "Appraised Value",
57 "value_type": "number",
58 "required": False,
59 "visible": True,
60 "order": 2,
61 "category": "Loan & Property",
62 },
63 {
64 "name": "transaction.BaseLoanAmt",
65 "display_name": "Base Loan Amount",
66 "value_type": "number",
67 "required": True,
68 "visible": True,
69 "order": 3,
70 "category": "Loan & Property",
71 },
72 {
73 "name": "transaction.NoteRatePercent",
74 "display_name": "Note Rate",
75 "value_type": "number",
76 "required": False,
77 "visible": True,
78 "order": 4,
79 "category": "Loan & Property",
80 },
81 {
82 "name": "transaction.MortgageType",
83 "display_name": "Mortgage Type",
84 "value_type": "enum",
85 "required": True,
86 "visible": True,
87 "order": 5,
88 "category": "Loan & Property",
89 },
90 {
91 "name": "transaction.AmortizationType",
92 "display_name": "Amortization Type",
93 "value_type": "enum",
94 "required": True,
95 "visible": True,
96 "order": 6,
97 "category": "Loan & Property",
98 },
99 {
100 "name": "transaction.LoanAmortizationPeriodCount",
101 "display_name": "Term (months)",
102 "value_type": "number",
103 "required": True,
104 "visible": True,
105 "order": 7,
106 "category": "Loan & Property",
107 "default_value": 360,
108 },
109 {
110 "name": "property.PropertyType",
111 "display_name": "Property Type",
112 "value_type": "enum",
113 "required": True,
114 "visible": True,
115 "order": 8,
116 "category": "Loan & Property",
117 },
118 {
119 "name": "property.NumberOfUnits",
120 "display_name": "Units",
121 "value_type": "number",
122 "required": False,
123 "visible": True,
124 "order": 9,
125 "category": "Loan & Property",
126 "default_value": 1,
127 },
128 {
129 "name": "occupancy",
130 "display_name": "Occupancy",
131 "value_type": "enum",
132 "required": True,
133 "visible": True,
134 "order": 10,
135 "category": "Loan & Property",
136 },
137 {
138 "name": "borrower.FirstName",
139 "display_name": "First Name",
140 "value_type": "string",
141 "required": True,
142 "visible": True,
143 "order": 11,
144 "category": "Borrower",
145 },
146 {
147 "name": "borrower.LastName",
148 "display_name": "Last Name",
149 "value_type": "string",
150 "required": True,
151 "visible": True,
152 "order": 12,
153 "category": "Borrower",
154 },
155 {
156 "name": "borrower.SSN",
157 "display_name": "SSN",
158 "value_type": "string",
159 "required": True,
160 "visible": True,
161 "order": 13,
162 "category": "Borrower",
163 },
164 {
165 "name": "borrower.BirthDate",
166 "display_name": "Date of Birth",
167 "value_type": "date",
168 "required": True,
169 "visible": True,
170 "order": 14,
171 "category": "Borrower",
172 },
173 {
174 "name": "borrower.CitizenResidencyType",
175 "display_name": "Citizenship",
176 "value_type": "enum",
177 "required": True,
178 "visible": True,
179 "order": 15,
180 "category": "Borrower",
181 },
182 {
183 "name": "borrower.MaritalStatus",
184 "display_name": "Marital Status",
185 "value_type": "enum",
186 "required": False,
187 "visible": True,
188 "order": 16,
189 "category": "Borrower",
190 },
191]
194def get_field_configs() -> dict[str, Any]:
195 return {
196 "stages": LOAN_STAGES,
197 "required_to_processing": REQUIRED_TO_PROCESSING,
198 "fields": FIELD_CONFIG_CATALOG,
199 }