@pdtf/schemas 3.6.0-dev.7 → 3.6.0-dev.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/busy-spence-79c6bf/CLAUDE.md +101 -0
- package/busy-spence-79c6bf/LICENSE +21 -0
- package/busy-spence-79c6bf/README.md +435 -0
- package/busy-spence-79c6bf/docs/branch-release-workflow.md +138 -0
- package/busy-spence-79c6bf/docs/sef25-extensions-ui-spec.md +355 -0
- package/busy-spence-79c6bf/index.js +654 -0
- package/busy-spence-79c6bf/package-lock.json +7299 -0
- package/busy-spence-79c6bf/package.json +44 -0
- package/busy-spence-79c6bf/scripts/ta6ed6-titles.js +403 -0
- package/busy-spence-79c6bf/scripts/ta7ed5-titles.js +183 -0
- package/busy-spence-79c6bf/src/examples/v1/exampleAddParticipantVouch.json +32 -0
- package/busy-spence-79c6bf/src/examples/v1/exampleDocumentedVouch.json +40 -0
- package/busy-spence-79c6bf/src/examples/v1/exampleElectronicRecord.json +30 -0
- package/busy-spence-79c6bf/src/examples/v1/exampleTransaction.json +878 -0
- package/busy-spence-79c6bf/src/examples/v1/exampleVouch.json +25 -0
- package/busy-spence-79c6bf/src/examples/v2/exampleTransaction.json +901 -0
- package/busy-spence-79c6bf/src/examples/v3/exampleAddParticipantVouch.json +38 -0
- package/busy-spence-79c6bf/src/examples/v3/exampleCustomOverlay.json +55 -0
- package/busy-spence-79c6bf/src/examples/v3/exampleCustomOverlay2.json +93 -0
- package/busy-spence-79c6bf/src/examples/v3/exampleDocumentedVouch.json +47 -0
- package/busy-spence-79c6bf/src/examples/v3/exampleElectronicRecord.json +36 -0
- package/busy-spence-79c6bf/src/examples/v3/exampleTransaction.json +1038 -0
- package/busy-spence-79c6bf/src/examples/v3/exampleVouch.json +32 -0
- package/busy-spence-79c6bf/src/mappings/SendPropertyDetailsRequestSchema.json +1588 -0
- package/busy-spence-79c6bf/src/mappings/adf.js +198 -0
- package/busy-spence-79c6bf/src/schemas/v1/GeoJSON.json +1279 -0
- package/busy-spence-79c6bf/src/schemas/v1/baspiNotes.html +102 -0
- package/busy-spence-79c6bf/src/schemas/v1/energy-performance-certificate.json +124 -0
- package/busy-spence-79c6bf/src/schemas/v1/freehold-information.json +2051 -0
- package/busy-spence-79c6bf/src/schemas/v1/leasehold-information.json +2064 -0
- package/busy-spence-79c6bf/src/schemas/v1/legal-information.json +1045 -0
- package/busy-spence-79c6bf/src/schemas/v1/material-facts.json +2109 -0
- package/busy-spence-79c6bf/src/schemas/v1/pdtf-transaction-search-results.json +40 -0
- package/busy-spence-79c6bf/src/schemas/v1/pdtf-transaction.json +191 -0
- package/busy-spence-79c6bf/src/schemas/v1/searches/drainage-and-water.json +261 -0
- package/busy-spence-79c6bf/src/schemas/v1/searches/local-land-charges.json +69 -0
- package/busy-spence-79c6bf/src/schemas/v1/searches/local-searches-required.json +857 -0
- package/busy-spence-79c6bf/src/schemas/v1/searches.json +237 -0
- package/busy-spence-79c6bf/src/schemas/v1/title-deed.json +841 -0
- package/busy-spence-79c6bf/src/schemas/v2/baspiNotes.html +102 -0
- package/busy-spence-79c6bf/src/schemas/v2/combined.json +37731 -0
- package/busy-spence-79c6bf/src/schemas/v2/overlays/baspi.json +8132 -0
- package/busy-spence-79c6bf/src/schemas/v2/overlays/con29DW.json +705 -0
- package/busy-spence-79c6bf/src/schemas/v2/overlays/con29R.json +2956 -0
- package/busy-spence-79c6bf/src/schemas/v2/overlays/fme1.json +1259 -0
- package/busy-spence-79c6bf/src/schemas/v2/overlays/llc1.json +25 -0
- package/busy-spence-79c6bf/src/schemas/v2/overlays/lpe1.json +2171 -0
- package/busy-spence-79c6bf/src/schemas/v2/overlays/nts.json +326 -0
- package/busy-spence-79c6bf/src/schemas/v2/overlays/oc1.json +2799 -0
- package/busy-spence-79c6bf/src/schemas/v2/overlays/piq.json +3419 -0
- package/busy-spence-79c6bf/src/schemas/v2/overlays/rds.json +3736 -0
- package/busy-spence-79c6bf/src/schemas/v2/overlays/ta10.json +5306 -0
- package/busy-spence-79c6bf/src/schemas/v2/overlays/ta6.json +4533 -0
- package/busy-spence-79c6bf/src/schemas/v2/overlays/ta7.json +1045 -0
- package/busy-spence-79c6bf/src/schemas/v2/pdtf-transaction.json +34351 -0
- package/busy-spence-79c6bf/src/schemas/v2/skeleton.json +3973 -0
- package/busy-spence-79c6bf/src/schemas/v3/combined.json +48643 -0
- package/busy-spence-79c6bf/src/schemas/v3/compactSkeleton.txt +4519 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/README.md +299 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/baspi4.json +8030 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/baspi5.json +8180 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/con29DW.json +716 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/con29R.json +2981 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/extensions/ac.json +334 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/extensions/as.json +74 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/extensions/dk.json +33 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/extensions/dr.json +73 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/extensions/er.json +85 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/extensions/fd.json +75 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/extensions/hi.json +51 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/extensions/hs.json +73 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/extensions/ic.json +94 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/extensions/jk.json +96 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/extensions/la.json +85 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/extensions/lc.json +76 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/extensions/ma.json +90 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/extensions/mc.json +38 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/extensions/mi.json +70 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/extensions/nd.json +44 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/extensions/oa.json +24 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/extensions/oc.json +57 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/extensions/pc.json +38 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/extensions/ph.json +195 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/extensions/rw.json +69 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/extensions/sb.json +73 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/extensions/sc.json +133 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/extensions/sd.json +64 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/extensions/sf.json +74 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/extensions/sl.json +68 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/extensions/ta.json +204 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/extensions/tf.json +103 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/extensions/tr.json +74 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/extensions/wg.json +351 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/fme1.json +1266 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/llc1.json +25 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/lpe1.json +2199 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/nts.json +2159 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/nts2.json +2744 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/ntsl.json +1815 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/ntsl2.json +2219 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/oc1.json +2817 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/piq.json +3324 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/rds.json +3668 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/sef25.json +1653 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/sr24.json +38 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/ta10.json +4645 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/ta6.json +4572 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/ta6ed6.json +6665 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/ta7.json +1537 -0
- package/busy-spence-79c6bf/src/schemas/v3/overlays/ta7ed5.json +1585 -0
- package/busy-spence-79c6bf/src/schemas/v3/pdtf-transaction.json +41570 -0
- package/busy-spence-79c6bf/src/schemas/v3/skeleton.json +5767 -0
- package/busy-spence-79c6bf/src/schemas/verifiedClaims/README.md +21 -0
- package/busy-spence-79c6bf/src/schemas/verifiedClaims/pdtf-verified-claims.json +447 -0
- package/busy-spence-79c6bf/src/utils/compactSkeleton.js +84 -0
- package/busy-spence-79c6bf/src/utils/countTokens.js +67 -0
- package/busy-spence-79c6bf/src/utils/extractExtensionOverlays.js +633 -0
- package/busy-spence-79c6bf/src/utils/extractOverlay.js +381 -0
- package/busy-spence-79c6bf/src/utils/extractProperties.js +44 -0
- package/busy-spence-79c6bf/src/utils/listPathTitles.js +36 -0
- package/busy-spence-79c6bf/src/utils/minimalSkeleton.js +85 -0
- package/busy-spence-79c6bf/src/utils/pathList.csv +903 -0
- package/busy-spence-79c6bf/src/utils/pathSkeleton.js +181 -0
- package/busy-spence-79c6bf/ta6ed6-titles-plan.md +118 -0
- package/busy-spence-79c6bf/ta7ed5-titles-spec.md +89 -0
- package/package.json +1 -1
- package/src/schemas/v3/combined.json +225 -47
- package/src/schemas/v3/overlays/llc1.json +1 -2
- package/src/schemas/v3/overlays/ta6ed6.json +204 -75
- package/src/schemas/v3/overlays/ta7ed5.json +54 -20
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
# SEF25 Extension Overlays — Front-End UI Spec
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Extension overlays add follow-up questions to existing form sections. Each overlay is loaded by passing its key to `getTransactionSchema(schemaId, overlays)`.
|
|
6
|
+
|
|
7
|
+
### Pre-existing overlays
|
|
8
|
+
|
|
9
|
+
These were added before this PR and are already in production.
|
|
10
|
+
|
|
11
|
+
| Overlay Key | Name | Section | Fields Added |
|
|
12
|
+
|-------------|------|---------|-------------|
|
|
13
|
+
| `sc` | Supply Costs | Water & Drainage | Cost fields for private water and sewerage (restructured to hasCost Yes/No gate) |
|
|
14
|
+
| `pc` | Parking Permit Cost | Parking | 1 frequency field |
|
|
15
|
+
| `ph` | Property Hazards | Specialist Issues | 4 Yes/No + details fields |
|
|
16
|
+
|
|
17
|
+
### New overlays (this PR)
|
|
18
|
+
|
|
19
|
+
| Overlay Key | Name | Section | Fields Added |
|
|
20
|
+
|-------------|------|---------|-------------|
|
|
21
|
+
| `dk` | Dropped Kerb | Parking | 1 Yes/No field |
|
|
22
|
+
| `rw` | Private Right of Way | Rights & Informal Arrangements | 1 Yes/No + details field |
|
|
23
|
+
| `sd` | Storm/Fire/Flood Damage | Environmental Issues | 1 Yes/No + details field |
|
|
24
|
+
| `lc` | Solar Lease Costs | Utilities (Solar Panels) | 1 cost field (hasCost + amount + frequency) |
|
|
25
|
+
| `wg` | Warranties & Guarantees | Guarantees & Warranties | Marks 7 warranty categories as required |
|
|
26
|
+
| `ic` | Insurance Claims | Insurance | Marks insuranceClaims required (isInsured=Yes branch) |
|
|
27
|
+
| `nd` | Neighbour Development | Notices | Adds sef25Ref to neighbourDevelopment (already required via NTS) |
|
|
28
|
+
| `mi` | Material Issue | Additional Information | Marks otherMaterialIssue required |
|
|
29
|
+
| `tr` | Title Restrictions | Ownership (Freehold) | Adds titleRestrictions field to freehold branch |
|
|
30
|
+
|
|
31
|
+
### Existing fields with sef25Ref only (no separate overlay needed)
|
|
32
|
+
|
|
33
|
+
| Field | Path | sef25Ref | Notes |
|
|
34
|
+
|-------|------|----------|-------|
|
|
35
|
+
| `hasBeenFlooded` | `environmentalIssues.flooding.historicalFlooding.hasBeenFlooded` | E1.2 | Already required and rendered via NTS flooding section |
|
|
36
|
+
|
|
37
|
+
All fields use `sef25Ref` for reference codes.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Pre-existing overlays (detail)
|
|
42
|
+
|
|
43
|
+
### 1. Supply Costs (`sc`)
|
|
44
|
+
|
|
45
|
+
#### 1a. Private Water Cost
|
|
46
|
+
|
|
47
|
+
**Trigger:** Show when `propertyPack.waterAndDrainage.water.mainsWater.yesNo` = `"No"`
|
|
48
|
+
|
|
49
|
+
**Path:** `propertyPack.waterAndDrainage.water.mainsWater.associatedCost`
|
|
50
|
+
|
|
51
|
+
**UI:** Render alongside the existing "How is water supplied?" details field. First ask if there are costs, then show amount and frequency if Yes.
|
|
52
|
+
|
|
53
|
+
| Field | Path (relative) | Type | Validation | UI Element |
|
|
54
|
+
|-------|-----------------|------|------------|------------|
|
|
55
|
+
| Has costs? | `associatedCost.hasCost` | `string` | Required, enum | Yes/No radio |
|
|
56
|
+
| Cost (£) | `associatedCost.amount` | `number` | Required when Yes | Numeric input |
|
|
57
|
+
| Payment frequency | `associatedCost.frequency` | `string` | Required when Yes, enum | Dropdown |
|
|
58
|
+
|
|
59
|
+
**Frequency enum values:** `"Per month"`, `"Per year"`
|
|
60
|
+
|
|
61
|
+
**Ref:** `U1.1` (hasCost: `U1.1.1`, amount: `U1.1.2`, frequency: `U1.1.3`)
|
|
62
|
+
|
|
63
|
+
#### 1b. Private Sewerage Cost
|
|
64
|
+
|
|
65
|
+
**Trigger:** Show when `propertyPack.waterAndDrainage.drainage.mainsFoulDrainage.yesNo` = `"No"` or `"Not known"`
|
|
66
|
+
|
|
67
|
+
**Path:** `propertyPack.waterAndDrainage.drainage.mainsFoulDrainage.associatedCost`
|
|
68
|
+
|
|
69
|
+
**UI:** Same hasCost pattern as water cost above.
|
|
70
|
+
|
|
71
|
+
**Ref:** `U1.2` (hasCost: `U1.2.1`, amount: `U1.2.2`, frequency: `U1.2.3`)
|
|
72
|
+
|
|
73
|
+
### 2. Parking Permit Cost (`pc`)
|
|
74
|
+
|
|
75
|
+
**Trigger:** Show when `propertyPack.parking.controlledParking.yesNo` = `"Yes"`
|
|
76
|
+
|
|
77
|
+
**Path:** `propertyPack.parking.controlledParking.costOfPermitFrequency`
|
|
78
|
+
|
|
79
|
+
**UI:** Render alongside the existing cost of permit field. The frequency dropdown clarifies whether the cost amount is monthly or annual.
|
|
80
|
+
|
|
81
|
+
| Field | Path (relative) | Type | Validation | UI Element |
|
|
82
|
+
|-------|-----------------|------|------------|------------|
|
|
83
|
+
| Payment frequency | `costOfPermitFrequency` | `string` | Enum | Dropdown |
|
|
84
|
+
|
|
85
|
+
**Frequency enum values:** `"Per month"`, `"Per year"`
|
|
86
|
+
|
|
87
|
+
**Ref:** `P1.1`
|
|
88
|
+
|
|
89
|
+
### 3. Property Hazards (`ph`)
|
|
90
|
+
|
|
91
|
+
**Trigger:** Always shown (standalone questions within Specialist Issues).
|
|
92
|
+
|
|
93
|
+
**Path prefix:** `propertyPack.specialistIssues`
|
|
94
|
+
|
|
95
|
+
All 4 fields follow the same pattern: Yes/No, if Yes show required details.
|
|
96
|
+
|
|
97
|
+
| Property | Title | sef25Ref |
|
|
98
|
+
|----------|-------|----------|
|
|
99
|
+
| `wellsDitchesShaft` | Are there any wells, ditches, or shafts at the property? | H1.1 |
|
|
100
|
+
| `damagedOrExposedElectrics` | Are there any damaged or exposed electrics at the property? | H1.2 |
|
|
101
|
+
| `damageToFlooringOrStaircases` | Is there any damage to flooring and/or staircases? | H1.3 |
|
|
102
|
+
| `knownAreasInPoorCondition` | Are there any known areas in poor condition (internal or external)? | H1.4 |
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## New overlays (detail)
|
|
107
|
+
|
|
108
|
+
### 4. Dropped Kerb (`dk`)
|
|
109
|
+
|
|
110
|
+
**Trigger:** Always shown within Parking section.
|
|
111
|
+
|
|
112
|
+
**Path:** `propertyPack.parking.droppedKerbAccess`
|
|
113
|
+
|
|
114
|
+
| Field | Path (relative) | Type | Validation | UI Element |
|
|
115
|
+
|-------|-----------------|------|------------|------------|
|
|
116
|
+
| Dropped kerb? | `droppedKerbAccess.yesNo` | `string` | Required, enum | Yes/No radio |
|
|
117
|
+
|
|
118
|
+
**Ref:** `K1.1` (yesNo: `K1.1.1`)
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
### 5. Private Right of Way (`rw`)
|
|
123
|
+
|
|
124
|
+
**Trigger:** Always shown within Rights & Informal Arrangements, alongside the existing public right of way question.
|
|
125
|
+
|
|
126
|
+
**Path:** `propertyPack.rightsAndInformalArrangements.rightsOrArrangements.privateRightOfWay`
|
|
127
|
+
|
|
128
|
+
**UI:** Same pattern as `publicRightOfWay` — Yes/No, if Yes show details.
|
|
129
|
+
|
|
130
|
+
| Field | Path (relative) | Type | Validation | UI Element |
|
|
131
|
+
|-------|-----------------|------|------------|------------|
|
|
132
|
+
| Private ROW? | `privateRightOfWay.yesNo` | `string` | Required, enum | Yes/No radio |
|
|
133
|
+
| Details | `privateRightOfWay.details` | `string` | Required when Yes, minLength 1 | Text input |
|
|
134
|
+
|
|
135
|
+
**Ref:** `R1.1` (yesNo: `R1.1.1`, details: `R1.1.2`)
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
### 6. Storm, Fire or Flood Damage (`sd`)
|
|
140
|
+
|
|
141
|
+
**Trigger:** Always shown within Environmental Issues section.
|
|
142
|
+
|
|
143
|
+
**Path:** `propertyPack.environmentalIssues.stormFireFloodDamage`
|
|
144
|
+
|
|
145
|
+
| Field | Path (relative) | Type | Validation | UI Element |
|
|
146
|
+
|-------|-----------------|------|------------|------------|
|
|
147
|
+
| Damage? | `stormFireFloodDamage.yesNo` | `string` | Required, enum | Yes/No radio |
|
|
148
|
+
| Details | `stormFireFloodDamage.details` | `string` | Required when Yes, minLength 1 | Text area |
|
|
149
|
+
|
|
150
|
+
**Ref:** `E1.1` (yesNo: `E1.1.1`, details: `E1.1.2`)
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
### 7. Solar Panel Lease Costs (`lc`)
|
|
155
|
+
|
|
156
|
+
**Trigger:** Show when `propertyPack.electricity.solarPanels.panelsOwnedOutright.yesNo` = `"No"` (panels are leased).
|
|
157
|
+
|
|
158
|
+
**Path:** `propertyPack.electricity.solarPanels.panelsOwnedOutright.associatedCost`
|
|
159
|
+
|
|
160
|
+
**UI:** Render alongside existing lease details. First ask if there are costs, then show amount and frequency if Yes.
|
|
161
|
+
|
|
162
|
+
| Field | Path (relative) | Type | Validation | UI Element |
|
|
163
|
+
|-------|-----------------|------|------------|------------|
|
|
164
|
+
| Has costs? | `associatedCost.hasCost` | `string` | Required, enum | Yes/No radio |
|
|
165
|
+
| Amount (£) | `associatedCost.amount` | `number` | Required when Yes | Numeric input |
|
|
166
|
+
| Frequency | `associatedCost.frequency` | `string` | Required when Yes, enum | Dropdown |
|
|
167
|
+
|
|
168
|
+
**Frequency enum values:** `"Per month"`, `"Per year"`
|
|
169
|
+
|
|
170
|
+
**Ref:** `S1.1` (hasCost: `S1.1.1`, amount: `S1.1.2`, frequency: `S1.1.3`)
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
### 8. Warranties & Guarantees Upfront (`wg`)
|
|
175
|
+
|
|
176
|
+
**Trigger:** Always shown when overlay is loaded. Displayed upfront regardless of `hasValidGuaranteesOrWarranties` value.
|
|
177
|
+
|
|
178
|
+
**Path prefix:** `propertyPack.guaranteesWarrantiesAndIndemnityInsurances`
|
|
179
|
+
|
|
180
|
+
**UI:** For SEF25 upfront, show all 7 warranty categories as simple Yes/No questions. No details or "Years Remaining" needed at this stage — the law firm picks up details later.
|
|
181
|
+
|
|
182
|
+
| Property | Title | sef25Ref |
|
|
183
|
+
|----------|-------|----------|
|
|
184
|
+
| `newHomeWarranty` | New Home Warranty (NHBC or similar) | W1.1 |
|
|
185
|
+
| `roofingWork` | Roofing work | W1.2 |
|
|
186
|
+
| `dampProofingTreatment` | Damp proofing treatment | W1.3 |
|
|
187
|
+
| `centralHeatingAndorPlumbing` | Central heating and/or plumbing | W1.4 |
|
|
188
|
+
| `electricalRepairOrInstallation` | Electrical repair or installation | W1.5 |
|
|
189
|
+
| `subsidenceWork` | Underpinning or other preventative work / remedial action relating to subsidence | W1.6 |
|
|
190
|
+
| `otherGuarantees` | Other Guarantees or warranties | W1.7 |
|
|
191
|
+
|
|
192
|
+
**Note:** These fields already exist in the base schema under the `hasValidGuaranteesOrWarranties = "Yes"` branch. The `wg` overlay marks them as required within that branch. The Moverly app shows them upfront for SEF25 users without requiring the parent gate question first.
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
### 9. Insurance Claims (`ic`)
|
|
197
|
+
|
|
198
|
+
**Path:** `propertyPack.insurance.insuranceClaims` (inside `isInsured = "Yes"` branch)
|
|
199
|
+
|
|
200
|
+
**Ref:** `I1.1` (yesNo: `I1.1.1`) — "Have you made any buildings insurance claims?"
|
|
201
|
+
|
|
202
|
+
**Note:** The overlay marks insuranceClaims required within the `isInsured = "Yes"` oneOf branch.
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
### 10. Neighbour Development (`nd`)
|
|
207
|
+
|
|
208
|
+
**Path:** `propertyPack.notices.neighbourDevelopment`
|
|
209
|
+
|
|
210
|
+
**Ref:** `N1.1` — "Is the seller aware of any proposals to develop property or land nearby?"
|
|
211
|
+
|
|
212
|
+
**Note:** `neighbourDevelopment` is already required via `ntsRequired` at the notices level. The `nd` overlay adds `sef25Ref` and `ntsRef` annotations so the field is identifiable as SEF25-relevant.
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
### 11. Material Issue (`mi`)
|
|
217
|
+
|
|
218
|
+
**Path:** `propertyPack.additionalInformation.otherMaterialIssue`
|
|
219
|
+
|
|
220
|
+
**Ref:** `M1.1` (yesNo: `M1.1.1`) — "Are you aware of any other material issue or information which may affect the average person's decision to proceed?"
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
### 12. Title Restrictions (`tr`)
|
|
225
|
+
|
|
226
|
+
**Path:** `propertyPack.ownership.ownershipsToBeTransferred[Freehold].titleRestrictions`
|
|
227
|
+
|
|
228
|
+
**Ref:** `T1.1` (yesNo: `T1.1.1`, details: `T1.1.2`) — "Are there any known restrictions on the title?"
|
|
229
|
+
|
|
230
|
+
New field on the freehold ownership branch, modelled on `leaseRestrictions` for leasehold. Yes/No + details if Yes.
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## Loading the Extensions
|
|
235
|
+
|
|
236
|
+
```js
|
|
237
|
+
import { getTransactionSchema, getValidator } from "@pdtf/schemas";
|
|
238
|
+
|
|
239
|
+
const schemaId = "https://trust.propdata.org.uk/schemas/v3/pdtf-transaction.json";
|
|
240
|
+
|
|
241
|
+
// Load all SEF25 extensions
|
|
242
|
+
const sef25Extensions = ["sc", "pc", "ph", "dk", "rw", "sd", "lc", "wg", "ic", "nd", "mi", "tr"];
|
|
243
|
+
const schema = getTransactionSchema(schemaId, sef25Extensions);
|
|
244
|
+
|
|
245
|
+
// Or combine with other overlays
|
|
246
|
+
const schema = getTransactionSchema(schemaId, ["baspiV5", ...sef25Extensions]);
|
|
247
|
+
|
|
248
|
+
// Validate data against the merged schema
|
|
249
|
+
const validator = getValidator(schemaId, sef25Extensions);
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
---
|
|
253
|
+
|
|
254
|
+
## Summary of Trigger Conditions
|
|
255
|
+
|
|
256
|
+
| Field | Visible when... |
|
|
257
|
+
|-------|----------------|
|
|
258
|
+
| Water cost | `mainsWater.yesNo` = `"No"` |
|
|
259
|
+
| Sewerage cost | `mainsFoulDrainage.yesNo` = `"No"` or `"Not known"` |
|
|
260
|
+
| Parking permit frequency | `controlledParking.yesNo` = `"Yes"` |
|
|
261
|
+
| Wells/ditches/shaft | Always (within Specialist Issues) |
|
|
262
|
+
| Damaged electrics | Always (within Specialist Issues) |
|
|
263
|
+
| Flooring/staircase damage | Always (within Specialist Issues) |
|
|
264
|
+
| Areas in poor condition | Always (within Specialist Issues) |
|
|
265
|
+
| Dropped kerb access | Always (within Parking) |
|
|
266
|
+
| Private right of way | Always (within Rights & Informal Arrangements) |
|
|
267
|
+
| Storm/fire/flood damage | Always (within Environmental Issues) |
|
|
268
|
+
| Solar panel lease costs | `panelsOwnedOutright.yesNo` = `"No"` |
|
|
269
|
+
| Warranty categories (7) | Always when `wg` overlay loaded (within Guarantees & Warranties) |
|
|
270
|
+
| Insurance claims | `isInsured.yesNo` = `"Yes"` (via `ic` overlay) |
|
|
271
|
+
| Neighbour development | Always (via `nd` overlay) |
|
|
272
|
+
| Other material issue | Always (via `mi` overlay) |
|
|
273
|
+
| Title restrictions | Always (via `tr` overlay, freehold only) |
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
## Moverly propertyPackTasks Changes
|
|
278
|
+
|
|
279
|
+
The following changes are needed in the Moverly app's `propertyPackTasks` configuration to surface the new SEF25 fields in the listing journey.
|
|
280
|
+
|
|
281
|
+
### Existing tasks to deprecate
|
|
282
|
+
|
|
283
|
+
The flooding and planning tasks should be stepped up to their parent section level to cover the new sibling fields (`stormFireFloodDamage` and `neighbourDevelopment`).
|
|
284
|
+
|
|
285
|
+
```js
|
|
286
|
+
// Replace existing flooding task with deprecated version
|
|
287
|
+
{
|
|
288
|
+
name: "Flooding",
|
|
289
|
+
path: "/propertyPack/environmentalIssues/flooding",
|
|
290
|
+
category: "listing",
|
|
291
|
+
overlay: "nts2023",
|
|
292
|
+
deprecated: true, // replaced by environmental issues check
|
|
293
|
+
},
|
|
294
|
+
|
|
295
|
+
// Replace existing planning task with deprecated version
|
|
296
|
+
{
|
|
297
|
+
name: "Planning and development",
|
|
298
|
+
path: "/propertyPack/notices/planningApplication",
|
|
299
|
+
category: "listing",
|
|
300
|
+
overlay: "nts2023",
|
|
301
|
+
deprecated: true, // replaced by notices check
|
|
302
|
+
},
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
### New listing tasks to add
|
|
306
|
+
|
|
307
|
+
```js
|
|
308
|
+
{
|
|
309
|
+
name: "Environmental issues",
|
|
310
|
+
checkName: "sef25-environmentalIssues",
|
|
311
|
+
path: "/propertyPack/environmentalIssues",
|
|
312
|
+
category: "listing",
|
|
313
|
+
overlay: "sd",
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
name: "Notices",
|
|
317
|
+
checkName: "sef25-notices",
|
|
318
|
+
path: "/propertyPack/notices",
|
|
319
|
+
category: "listing",
|
|
320
|
+
overlay: "nd",
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
name: "Guarantees & warranties",
|
|
324
|
+
checkName: "sef25-warranties",
|
|
325
|
+
path: "/propertyPack/guaranteesWarrantiesAndIndemnityInsurances",
|
|
326
|
+
category: "listing",
|
|
327
|
+
overlay: "wg",
|
|
328
|
+
},
|
|
329
|
+
{
|
|
330
|
+
name: "Insurance claims",
|
|
331
|
+
checkName: "sef25-insurance",
|
|
332
|
+
path: "/propertyPack/insurance",
|
|
333
|
+
category: "listing",
|
|
334
|
+
overlay: "ic",
|
|
335
|
+
},
|
|
336
|
+
{
|
|
337
|
+
name: "Additional material information",
|
|
338
|
+
checkName: "sef25-additionalInformation",
|
|
339
|
+
path: "/propertyPack/additionalInformation",
|
|
340
|
+
category: "listing",
|
|
341
|
+
overlay: "mi",
|
|
342
|
+
},
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
### Fields covered by existing listing tasks (no new task needed)
|
|
346
|
+
|
|
347
|
+
| Extension | Covered by |
|
|
348
|
+
|-----------|------------|
|
|
349
|
+
| `dk` (dropped kerb) | Parking |
|
|
350
|
+
| `rw` (private right of way) | Rights and easements |
|
|
351
|
+
| `lc` (solar lease costs) | Electricity |
|
|
352
|
+
| `sc` (supply costs) | Water and drainage |
|
|
353
|
+
| `pc` (parking permit cost) | Parking |
|
|
354
|
+
| `ph` (property hazards) | Specialist issues |
|
|
355
|
+
| `tr` (title restrictions) | Ownership |
|