Mike Gerwitz

Activist for User Freedom

summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Gerwitz <gerwitzm@lovullo.com>2014-05-16 15:06:08 -0400
committerMike Gerwitz <gerwitzm@lovullo.com>2014-05-16 15:06:08 -0400
commit2a4a5e6c0f91c68f016d7d38bc365d534a9f5d5e (patch)
treec08f191e247f13cc4d43cd4361da5df153252560
parent74278246d44022168f02905d73efcd646380dfde (diff)
parent4b8a35548f328394ccf82b82756ceb833ba58636 (diff)
downloadlvspec-2a4a5e6c0f91c68f016d7d38bc365d534a9f5d5e.tar.gz
lvspec-2a4a5e6c0f91c68f016d7d38bc365d534a9f5d5e.tar.bz2
lvspec-2a4a5e6c0f91c68f016d7d38bc365d534a9f5d5e.zip
Raterspec abstractions; extracted from dwelling
-rw-r--r--raterspec.cls17
-rw-r--r--raterspec/parts.tex12
-rw-r--r--raterspec/rates.sty6
-rw-r--r--raterspec/sec/c1import.tex12
-rw-r--r--raterspec/sec/forms.tex15
-rw-r--r--raterspec/sec/forms/dfn.tex17
-rw-r--r--raterspec/sec/premcalc.tex16
-rw-r--r--raterspec/sec/premcalc/dfn.tex69
-rw-r--r--raterspec/sec/progui.tex112
9 files changed, 276 insertions, 0 deletions
diff --git a/raterspec.cls b/raterspec.cls
index 94be281..4499a46 100644
--- a/raterspec.cls
+++ b/raterspec.cls
@@ -73,6 +73,7 @@
\expandafter\gdef\csname @raterspec@#1\endcsname{
\PackageWarning{raterspec}{Missing #2!
\MessageBreak Define using \expandafter\protect\csname#1\endcsname}%
+ \incomplete
\todo{No #2 have been defined.}%
}
% publically accessible input macro
@@ -125,6 +126,22 @@
{}
{}
+\@raterspec@mkhook{premcalc}{premium calculations}
+ {}
+ {}
+
+\@raterspec@mkhook{forms}{forms}
+ {}
+ {}
+
+\@raterspec@mkhook{coneimport}{c1 import details}
+ {}
+ {}
+
+\@raterspec@mkhook{proguisteps}{program ui steps}
+ {}
+ {}
+
%%
diff --git a/raterspec/parts.tex b/raterspec/parts.tex
index 5a9c35c..135d31c 100644
--- a/raterspec/parts.tex
+++ b/raterspec/parts.tex
@@ -33,3 +33,15 @@
\pnumoff\part{Data Classification}\pnumon
\input{raterspec/sec/dataclass}
+\pnumoff\part{Premium Calculation}\pnumon
+ \input{raterspec/sec/premcalc}
+
+\pnumoff\part{Forms}\pnumon
+ \input{raterspec/sec/forms}
+
+\pnumoff\part{ConceptOne Import}\pnumon
+ \input{raterspec/sec/c1import}
+
+\pnumoff\part{User Interface}\pnumon
+ \input{raterspec/sec/progui}
+
diff --git a/raterspec/rates.sty b/raterspec/rates.sty
index 1ed00ec..28a83d0 100644
--- a/raterspec/rates.sty
+++ b/raterspec/rates.sty
@@ -6,6 +6,12 @@
\ProcessOptions\relax
+\def\var#1{{\tt#1}}%
+\def\locvar#1{\var{#1}_\loc}
+\def\tlookup#1#2{\ArgSty{#2 from} \tref{#1}}%
+\def\tlookupf#1#2{\tlookup{#1}{#2} \ArgSty{or fail in error}}%
+
+
\newenvironment{ratetable*}[5][]%
{%
\def\@@lotcaption{#1}
diff --git a/raterspec/sec/c1import.tex b/raterspec/sec/c1import.tex
new file mode 100644
index 0000000..b92bd84
--- /dev/null
+++ b/raterspec/sec/c1import.tex
@@ -0,0 +1,12 @@
+% raterspec c1 import
+%%
+
+\label{s:c1import}
+\index{ConceptOne!import|(}
+ \chapter{ConceptOne Integration}
+ \incomplete
+ \todo{Information on the ConceptOne integration and import process.}
+
+ \coneimportout
+\index{ConceptOne!import|)}
+
diff --git a/raterspec/sec/forms.tex b/raterspec/sec/forms.tex
new file mode 100644
index 0000000..b7528ad
--- /dev/null
+++ b/raterspec/sec/forms.tex
@@ -0,0 +1,15 @@
+% raterspec forms
+%%
+
+\label{s:forms}
+
+\index{forms|(}
+ \begindeptgroup{c}
+ \chapter{Common Forms and Definitions}
+ \input{raterspec/sec/forms/dfn}
+
+ %% user input
+ \formsout
+ \enddeptgroup
+\index{forms|)}
+
diff --git a/raterspec/sec/forms/dfn.tex b/raterspec/sec/forms/dfn.tex
new file mode 100644
index 0000000..ccea618
--- /dev/null
+++ b/raterspec/sec/forms/dfn.tex
@@ -0,0 +1,17 @@
+% Form definitions
+
+\incomplete
+\todo{Additional information on the existing process.}
+
+\sigauth{NL}
+A~\dfn*{form} is a~document that is included with a~policy to provide additional
+information, coverages, and/or~exclusions.
+
+\sigauth{NL}
+A~form is considered to be \dfn{forms!applicable} when each of its specified
+conditions are met. A~form \shall be included with the policy only when it is
+applicable.
+
+\sigauth{NL}
+In the event that a~form code is applicable under multiple circumstances,
+the~form \shall be attached to the document a single time.
diff --git a/raterspec/sec/premcalc.tex b/raterspec/sec/premcalc.tex
new file mode 100644
index 0000000..631e48f
--- /dev/null
+++ b/raterspec/sec/premcalc.tex
@@ -0,0 +1,16 @@
+% raterspec premium calculation
+%%
+
+\label{s:premcalc}
+\index{calculation|(}
+
+\chapter{Definitions}
+\label{s:premcalc:dfns}
+\input{raterspec/sec/premcalc/dfn}
+
+
+%% user input
+\premcalcout
+
+\index{calculation|)}
+
diff --git a/raterspec/sec/premcalc/dfn.tex b/raterspec/sec/premcalc/dfn.tex
new file mode 100644
index 0000000..b8f0afd
--- /dev/null
+++ b/raterspec/sec/premcalc/dfn.tex
@@ -0,0 +1,69 @@
+% Common definitions for premium calculation
+\sectiondept{it}
+
+\sigauth{MTG}
+A \dfn{premium calculation}---or simply \dfn{calculation}---is an algorithm that
+\index{deterministic}deterministically operates on ^[input data] described in
+\sref{indata} and yields a numeric \dfn{premium}.
+
+\sigauth{MTG}
+\p{finalprem}
+A \dfn{premium!final premium} is the ^[premium] that represents the total cost
+to the insured and \shall be represented by a ^[floating-point] number rounded
+to the nearest representable value of two decimal places, in which the whole
+integer value \shall represent a dollar amount and the fractional value \shall
+represent cents. There \shall be only one final premium.\footnote{Multiple
+^[final premium]s may be obtained through multiple calls to the~^[rater].}
+
+\sigauth{MTG}
+A calculation \dfn{calculation!consideration} is defined as the point when an
+implementation determines if the calculation is applicable to the ^[input data].
+
+\sigauth{MTG}
+\p{calc-supp}
+All defined rating calculations \shall be considered even if they exist outside
+of any dependency tree that arrives at the ^[premium!final premium].
+Calculations that are not directly used to determine the ^[premium!final
+premium] are termed \dfn{calculation!disjoint calculations}.\footnote{This
+allows supplementary data to be calculated.}
+
+\sigauth{MTG}
+\p{calcapplicable} A calculation \shall be
+\index{calculation!consideration}considered to be applicable if its defined
+^[classification] conditions are met.
+
+\sigauth{MTG}
+An applicable calculation \shall undergo \dfn{calculation!evaluation}, yielding
+a~premium that is the result of the application of the ^[input data] to its
+definition.
+
+\sigauth{MTG}
+A calculation that has been determined to be inapplicable \shallnot execute any
+portion of its definition and \shall yield the scalar floating-point
+value~$0.00$.\footnote{The definition \shallnot be executed because it cannot
+reliably do so without the proper data (as determined by its required
+classifications).}
+
+\sigauth{MTG}
+A calculation \may treat the result of another calculation as ^[input data].
+
+\sigauth{MTG}
+A calculation \may treat the result of a~^[classification] (see
+\sref{dataclass}) as ^[input data].
+
+\sigauth{MTG}
+Where it is required that a calculation be performed for each ^[location], the
+implementation \shall make such a determination either by (a)~use of a
+^[parameter] defined in \sref{locparam} that is always available or (b)~an
+implementation-defined ^[parameter] that explicitly provides the location count.
+For either case, an implementation \must fail in error if the location count
+cannot be determined.
+
+\sigauth{MTG}
+In the sections that follow, the following conventions \shall hold: (a)~Any
+reference to a table value, unless otherwise stated, \shall be located by
+matching the ^[parameter]s in the table column headers with the value of the
+associated argument in any input data; (b)~any ^[parameter] containing the
+term~``rate'' represents a~value obtained in an implementation-defined manner
+and an implementation \must fail in error if such a value cannot be obtained as
+mandated by the calculation definition.
diff --git a/raterspec/sec/progui.tex b/raterspec/sec/progui.tex
new file mode 100644
index 0000000..507e9b6
--- /dev/null
+++ b/raterspec/sec/progui.tex
@@ -0,0 +1,112 @@
+% raterspec program ui
+%%
+
+\chapter{Program Client}
+\label{s:programui}
+\index{Program Client|(}
+
+\sectiondept{it}
+
+The \dfn{Program Client} is defined as the user interface that is used to
+enter data about a ^Quote, receive a premium from one or more
+^[supplier]s, and~optionally submit the~^Quote for further processing from
+within ^[ConceptOne].
+
+The Program Client \shall be accessed by using a~^[web browser] to
+download the applicable resources---specifically, ^[HTML], ^[CSS], and
+^[JavaScript]---from the ^[LoVullo Website].
+
+\incomplete
+\todo{While this chapter does contain information necessary to complete
+the Scottsdale Commercial Lines project, it is largely incomplete.}
+
+
+\section{Program UI}\label{s:program-ui}
+\sectiondept{it}
+ \index{Program Client!Program UI|(}
+
+ The \dfn{Program UI}---hereinafter occasionally referred to simply as
+ ``UI'' unambiguously within this chapter---\shall be defined as the
+ graphical user interface of the~Program Client and \shall render
+ directly in the user's ^[web browser] using only ^[HTML], ^[CSS],
+ and~^[JavaScript].\footnote{For example, browser plugins such as Java
+ and~Flash \shallnot be used in an implementation of the Program Client.}
+
+ A \dfn{Program Client!quoting step} is the highest level of ^Quote data
+ separation and consists only of question groups. The UI \shall display
+ no more than one step (see~\sref{program-steps}) to the ^user at any
+ given time.
+
+ \incomplete
+ A \dfn{Program Client!field group} contains only fields and provides an
+ optional delineation from other groups. Any number of groups \may be
+ displayed to the~^user at any given time.\todo{Types.}
+
+ A \dfn{Program Client!field} is a generic term that represents any
+ question, answer, display, or static element; any of these may appear
+ where a field is expected unless the field specification does not permit
+ such a field type.\footnote{For example, if a field is expected, then a
+ question or an~answer may be substituted. However, if a~question is
+ expected, then an~answer may not be substituted.}
+
+ \incomplete
+ A \dfn{Program Client!question} prompts the ^user for a datum and may be
+ directly modified by the user unless explicitly restricted. \todo{How
+ interacts with bucket; types.}
+
+ \incomplete
+ A \dfn{Program Client!answer} displays a~^user response associated with
+ a~question. \todo{Types}
+
+ \incomplete
+ A \dfn{Program Client!display} displays any arbitrary bucket datum to
+ the~^user. \todo{Bucket.}
+
+ \incomplete
+ A \dfn{Program Client!static element} displays arbitrary static text to
+ the~user and \may contain ^[HTML].
+ \index{Program Client!Program UI|)}
+
+\begindeptgroup{uw/pm}
+ \section{Quoting Steps}\label{s:program-steps}
+ \incomplete
+ An implementation \shall display all steps, groups, and~fields (each defined
+ in~\sref{program-ui}) in the exact order provided within this section.
+ \todo{An~implementation \shall contain no steps, groups, or~fields that have not
+ been enumerated in this section.}
+
+ \sigauth{NL}
+ Within this section, questions are listed by the~labels that \shall be displayed
+ to the user. Below the label is additional text describing further
+ implementation requirements. When a question is indented to the level of the
+ paragraph of another question, then the indented question is strongly related to
+ the containing question in some logical manner; the containing question is said
+ to be a~\dfn{Program Client!question!parent question} any the~question that is
+ indented relative to it is said to be a~\dfn{Program Client!question!child
+ question}.\footnote{For example, a child question may be visible to the ^user
+ only when its~parent is answered in a specified manner.}
+
+ \incomplete
+ A question is said to be \dfn{Program Client!question!applicable} when it is to
+ be displayed to the user; questions are applicable by default. A question \shall
+ be visible to the user for entry only if it is applicable; otherwise, it \shall
+ be hidden from the user, its value reset to the specified default or---if no
+ default is specified---the default for its question type, and validations
+ \shallnot be performed. \todo{Question type defaults and validations}.
+
+
+ %% user-provided input
+ \proguistepsout
+\enddeptgroup
+
+
+\section{Quote Server Communication}
+ \sectiondept{it}
+ \index{Quote Server|(}
+
+ The Program Client \shall communicate with the~^[Quote Server] as required
+ in~\sref{hostenv-qs}.
+
+ \index{Quote Server|)}
+\index{Program Client|)}
+