Skip to content

Actuarial-Sciences-for-Africa-ASA/GenieBuiltLifeProto.jl

Repository files navigation

Work in Progress en fr de

Projekt GenieBuiltLifeProto

This project is an attempt to create a foundation for an open source system for managing life insurance policies by an insurer.

1. design goals

of this project are:

  • open source development
  • performant and highly scalable web app for* dialog processing of insurance contracts and.
  • provision of services for operation
  • runnability on laptops as well as on servers
  • use of cloud development environments
  • Use of collaboration platforms in the cloud
  • Product-agnostic management system, i.e. maximum encapsulation of product-specific knowledge in product-specific components
    • bases of calclulation
    • Tariff functions
    • Metadata of tariff functions for use in interfaces for dialogs and services.
    • control and validation of inputs for product-specific business processes
  • Use of an actuary-friendly development environment with regard to programming language and existing libraries
  • Use of an application stack that is as coherent as possible and supports tests across all levels from actuarial functions to persistence to the browser, i.e. no environmental break, between actuarial product development of and development of the management system.
  • Use of existing actuarial software https://github.com/JuliaActuary/LifeContingencies.jl
  • Audit-proof storage of contracts through bitemporal persistence: https://github.com/Actuarial-Sciences-for-Africa-ASA/BitemporalPostgres.jl

2. functional scope of the prototype

2.1 Functional scope API

Bitemporal CRUD actions for the entire data model.

2.2 Scope of functions WebUI

2.2.1 Functional area Search Contracts

Display a list of contract IDs.

screenshot: Contracts tab

Contracts

Clicking changes to the display of the latest contract version.

2.2.2 Contract version functional area

Displaying/editing contract versions.

Editing requires an active workflow (transaction). This is created by creating a new contract, or by opening a contract mutation.

Without a loaded contract, the button for creating a contract is displayed.

screenshot: Contract version: no contract loaded

Contracts

If an unprocessed contract has been selected in the search, the button to open a mutation will appear.
screenshot: Contract version: contract immutable

Contracts

In both cases, to open a workflow, the validity start date must be specified.
screenshot: Contract version: open contract workflow

Contracts

After that, the contract will appear as in process.
screenshot: Contract version: contract mutable

Contracts

screenshot: Contract search: mutable contracts shown in red

Contracts

This state remains until

  • the workflow is rolled back or
  • committed.

Other workflow-related commands provide

  • push the state of changes onto a stack
  • pop the state of changes from the stack
  • persist the state of changes, which empties the stack of changes
screenshot: Contract version: Workflow Kommandos

Contracts


2.2.1 Funktionsbereich Contract Version - contract partners

Clicking opens the section for viewing / editing contractor relationships.

screenshot: Contract version: contract partners

Contract partners

If the contract is mutable.

  • Selection of a contract partner role and
  • a partner

activate the button to insert a new partner relationship].

screenshot: Contract version: partner role selection.

select contract partner role

screenshot: Contract version: select partner

select contract partner

screenshot: Contract version: button to insert a new partner relationship.

add contract partner

screenshot: Contract version: new partner relationship added

contract partner added

2.2.2 Contract version - product items functional area.

Clicking opens the section for viewing / editing product items.

screenshot: product items expanded.

product items

### 2.2.2.1 Contract version - product items - tariff items functional area.

Clicking opens the section for viewing / editing tariff items.

screenshot: Tariff items expanded

tariff items

Clicking the "select" button changes the button to "calculator"

screenshot: Tariff item selected

tariff item selected

Clicking the button "calculator" calculation window opens the calculation window:

screenshot: Tariff calculator started

tariff item calculator

Different calculation targets can be specified.
screenshot: Tariff calculator started

input calculation target

After specifying the calculation target, the parameters can be entered.

screenshot: Calculation target specified

calculation target determined

Input dialog

screenshot: Input dialog

calculation target determined

When all mandatory parameters are occupied, calculation can be performed.

screenshot: Calculation call

calculation callable

calculation called

Parameters and calculation result can be synchronized into the corresponding, i.e. existing if necessary, contract fields with the same name

screenshot: Synchronization with contract status.

calculation callable

2.2.2.1.1 Contract version - product items - tariff items - tariff item partners functional area.

Clicking opens the section for displaying / editing partner relationships for tariff items.

screenshot: Tariff item partners

tariff item partners

2.3 History functional area

Clicking a version node opens the version view

screenshot: Version selection

choose uncommitted workflow

show uncommitted workflow

choose committed workflow

show committed workflow

Retroactive mutations shadow previously entered mutations with the same or later effective date.

screenshot: Retroactive transaction.

retroactive Transaction

select shadowed Transaction

2.3.1 Search Partner functional area.

Display a list of partner IDs.

screenshot: Partners tab

Partners

Clicking changes to the display of the latest partner version.

2.3.2 Partners functional area

Display partner version.

The partner management is rudimentary. It contains only the tariff relevant partner data and editing is not possible in the webapp, only via the contract API example: here .

screenshot: Partner versions tab

Partner

2.3.3 Search Product functional area.

Display a list of product IDs.

screenshot: Products tab

Products

Clicking changes to the display of the latest partner version.

2.3.4 Functional area Product

Display product version The product management is rudimentary. It contains only the tariff relevant partner data and editing is not possible in the webapp, only via the contract API example: here .

2.3.4.1 Product functional area - tariff parameters field.

The semantics of this field are clear from the tariff debugger scripts.

Pension SingleLifeRisk JointLifeRisk

2.3.4.2 Product functional area - contract attributes field

This field defines the dynamic attributes of the tariff items.

screenshot: Productversion tab

Partner

3 installation and startup

The package needs a POSTGRES database, the configuration folder and product data see: testScript

3.1 Start under gitpod

Gitpod Ready-to-Code

When the gitpod workspace is started, the database is pre-installed and three products / contracts are loaded. VS code is started.

3.1.1 Start Web Server

In the terminal view start Julia ``julia --project=.and load the start script>include("run.jl")``` Here you need some patience, the application will become reactive :-).

3.1.2 Start browser session

VS Code automatically starts a browser session. If not, the port display Menu -> View -> Open View -> Ports and click the port for the Application Web Server.

BE PATIENT! Initialization takes some time. It gets reactive then!

Three contracts are preloaded: pension, SingleLifeRisk, JointLifeRisk