This application was generated by Claude Fable (Max) from these specifications.
Insurance app implementing the published scenarios of the sibling
specs-insurance-large repo (symlinked at specs/ — run
scripts/link-specs.sh after cloning). Built with SAP CAP Java 5 on
Spring Boot 4; see ARCHITECTURE.md for the stack and
conventions.
Only [published] scenarios are implemented. Scenarios marked
[proposed] are intentionally absent; each service and test carries a
comment naming its spec file, and test @DisplayNames quote the
scenario titles.
Prerequisites: JDK 25. The Maven wrapper provisions Maven 3.9.16; the
build installs Node.js and @sap/cds-dk project-locally for the CDS
compile step.
./mvnw verify./mvnw -pl srv spring-boot:runOData V4 services (basic auth with the mock users below):
/odata/v4/quotes—requestAutoQuote,requestHomeQuote/odata/v4/policies—bindPolicy,requestCancellation,addVehicle,issueCancellationNotice/odata/v4/claims—reportAccident,reportAccidentForInsured,reportWaterDamage,recordDamageEstimate,recordRepairEstimate,authorizeRepair/odata/v4/underwriting— submission screening (submitApplication,screenEligibility,orderLossHistory,evaluatePriorCoverage,orderInsuranceScore), referrals (referToUnderwriter,runSlaMonitor,recordUnderwriterDecision,escalateAuthorityLimit), appetite gates (evaluateAppetite,screenTerritory,openMoratorium,screenCatastropheCapacity), and inspections (orderPropertyInspection,orderLossControlSurvey,reviewInspectionFindings,openRecommendation)
Mock users (password = user name): prospect, insured, agent,
adjuster.
The database is in-memory H2, migrated by Liquibase from the CDS-generated
DDL plus the rating-table CSVs under db/data/. Nightly jobs (autopay +
3-day retries, elapsed cancellation notices, renewal offers) run at 01:10
in the operating timezone (insurance.time-zone, default
America/New_York).
| Spec | Implementation | Tests |
|---|---|---|
billing/collect-premium.feature.md |
billing/BillingManager |
CollectPremiumTest |
billing/refund-unearned-premium.feature.md |
policy/CancellationManager + domain/ProRata |
RefundUnearnedPremiumTest |
policy/auto-policy/quote-policy.feature.md |
quoting/QuotingManager |
QuoteAutoPolicyTest |
policy/auto-policy/bind-policy.feature.md |
policy/BindingManager |
BindAutoPolicyTest |
policy/auto-policy/cancel-policy.feature.md |
policy/CancellationManager |
CancelAutoPolicyTest |
policy/auto-policy/endorse-policy.feature.md |
policy/EndorsementManager |
EndorseAutoPolicyTest |
policy/auto-policy/renew-policy.feature.md |
policy/RenewalManager |
RenewAutoPolicyTest |
policy/home-policy/quote-homeowners-policy.feature.md |
quoting/QuotingManager |
QuoteHomeownersPolicyTest |
claims/auto-accidents/record-car-accident.feature.md |
claims/FnolManager |
RecordCarAccidentTest |
claims/auto-accidents/assign-adjuster.feature.md |
claims/AdjusterAssignmentManager |
AssignAdjusterTest |
claims/auto-accidents/settle-collision-claim.feature.md |
claims/SettlementManager |
SettleCollisionClaimTest |
claims/home-claims/record-water-damage-claim.feature.md |
claims/FnolManager |
RecordWaterDamageClaimTest |
underwriting/eligibility/screen-applicant-eligibility.feature.md |
underwriting/EligibilityManager |
ScreenApplicantEligibilityTest |
underwriting/eligibility/check-prior-loss-history.feature.md |
underwriting/LossHistoryManager |
CheckPriorLossHistoryTest |
underwriting/eligibility/detect-prior-cancellation.feature.md |
underwriting/PriorCoverageManager |
DetectPriorCancellationTest |
underwriting/eligibility/verify-insurance-score.feature.md |
underwriting/InsuranceScoreManager |
VerifyInsuranceScoreTest |
underwriting/referrals/refer-to-underwriter.feature.md |
underwriting/ReferralManager |
ReferToUnderwriterTest |
underwriting/referrals/apply-referral-sla.feature.md |
underwriting/ReferralManager + domain/BusinessHours |
ApplyReferralSlaTest |
underwriting/referrals/record-underwriter-decision.feature.md |
underwriting/UnderwriterDecisionManager |
RecordUnderwriterDecisionTest |
underwriting/referrals/escalate-authority-limit.feature.md |
underwriting/AuthorityEscalationManager |
EscalateAuthorityLimitTest |
underwriting/appetite/define-underwriting-appetite.feature.md |
underwriting/AppetiteManager |
DefineUnderwritingAppetiteTest |
underwriting/appetite/restrict-by-territory.feature.md |
underwriting/TerritoryManager |
RestrictByTerritoryTest |
underwriting/appetite/apply-moratorium.feature.md |
underwriting/MoratoriumManager |
ApplyMoratoriumTest |
underwriting/appetite/manage-catastrophe-aggregation.feature.md |
underwriting/CatastropheAggregationManager |
ManageCatastropheAggregationTest |
underwriting/inspections/order-property-inspection.feature.md |
underwriting/InspectionManager |
OrderPropertyInspectionTest |
underwriting/inspections/order-loss-control-survey.feature.md |
underwriting/LossControlSurveyManager |
OrderLossControlSurveyTest |
underwriting/inspections/review-inspection-findings.feature.md |
underwriting/InspectionReviewManager |
ReviewInspectionFindingsTest |
underwriting/inspections/track-inspection-recommendations.feature.md |
underwriting/RecommendationManager |
TrackInspectionRecommendationsTest |
Boat and motorcycle quoting specs contain only [proposed] scenarios,
so no code exists for them yet.
Outbound email, text, and payment-gateway calls go through ports with
in-memory recording adapters (com.acme.insurance.ports /
com.acme.insurance.adapters); no real providers are wired.