Documentation
¶
Overview ¶
Package model is the normalized, source-agnostic output contract for a filing: the Document and the value types every other package produces, renders, caches, diffs, or scores. It is deliberately flat and JSON-first — pure data plus the custom marshaling the schema requires — and depends only on the standard library, so every other package can import it without a cycle. The parser (internal/ixbrl) produces these types; it does not define them.
Index ¶
Constants ¶
const ( SchemaVersion = "1.0.0" ParserVersion = "0.1.0" )
SchemaVersion is the consumer-facing JSON output contract (semver: a breaking change to the JSON shape bumps the major). ParserVersion is the extraction code's identity; the cache keys parsed output on it so a parser fix invalidates cached results without re-fetching bytes. They are distinct on purpose — see DESIGN.md §2.4.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Column ¶
type Column struct {
Label string
ContextRef string
PeriodStart time.Time
PeriodEnd time.Time
Instant bool
}
Column is one reporting period: the contextRef whose facts fill the column and the period it covers.
func (Column) MarshalJSON ¶
MarshalJSON renders period dates as plain YYYY-MM-DD, matching the output schema rather than Go's default RFC3339 time encoding.
func (*Column) UnmarshalJSON ¶
UnmarshalJSON is the inverse of MarshalJSON: it parses the YYYY-MM-DD period dates the schema uses (not RFC3339), so a Document round-trips through JSON. The parsed cache (Phase 10) depends on this — it stores canonical JSON and reloads it into a *Document.
type Confidence ¶
type Confidence struct {
Level string `json:"level"`
RowMatchRate float64 `json:"row_match_rate"`
CellResolvedRate float64 `json:"cell_resolved_rate"`
UntaggedCellCount int `json:"untagged_cell_count"`
}
Confidence is the calibrated trust signal for an extracted artifact. Level is the bucket every artifact carries; the rate fields describe how completely a projected table resolved and are left zero for non-table partitions.
type Document ¶
type Document struct {
Metadata Metadata `json:"metadata"`
Sections []Section `json:"sections"`
Statements []Table `json:"statements"`
}
Document is the normalized, source-agnostic representation of one filing: the single value every package after Phase 8 produces, renders, caches, diffs, or scores. It is flat and JSON-first.
type Kind ¶
type Kind string
Kind distinguishes the narrative item sections (Business, Risk Factors, MD&A, …) from the financial-statements section, where the fact-stream projection applies rather than free-text rendering.
type Metadata ¶
type Metadata struct {
Company string `json:"company,omitempty"`
CIK int64 `json:"cik,omitempty"`
Ticker string `json:"ticker,omitempty"`
Form string `json:"form,omitempty"`
Accession string `json:"accession,omitempty"`
FilingDate string `json:"filing_date,omitempty"`
PeriodStart string `json:"period_start,omitempty"`
PeriodEnd string `json:"period_end,omitempty"`
SchemaVersion string `json:"schema_version"`
ParserVersion string `json:"parser_version"`
Source Source `json:"source"`
Confidence Confidence `json:"confidence"`
}
Metadata identifies the filing and stamps the output: the company and filing coordinates, the period reported, the schema/parser versions, the extractor source, and the document-level confidence (combining statement and section confidences). Dates are plain YYYY-MM-DD strings.
type Row ¶
type Row struct {
Label string `json:"label"`
Concept string `json:"concept,omitempty"`
Type RowType `json:"type"`
Depth int `json:"depth,omitempty"`
Values []*float64 `json:"values"`
}
Row is one statement line: a concept, its filing label, and its value in each column. A nil entry in Values is a cell with no matching fact — null, never zero.
type RowType ¶
type RowType string
RowType classifies a statement row. A total caps a section, a subtotal is a parent line that also carries a value, and data is a leaf line item.
type Section ¶
type Section struct {
Item string `json:"item"`
Title string `json:"title"`
Kind Kind `json:"kind"`
Text string `json:"text,omitempty"`
Tables []Table `json:"tables,omitempty"`
}
Section is one named part of a filing: its item identifier and canonical title, whether it is narrative or the financial-statements section, the rendered free text, and the tables that fall inside it.
type Source ¶
type Source struct {
Extractor string `json:"extractor"`
ParserVersion string `json:"parser_version"`
}
Source records which extractor produced an artifact and the parser version.
type Table ¶
type Table struct {
SchemaVersion string `json:"schema_version"`
Title string `json:"title,omitempty"`
RoleURI string `json:"role_uri,omitempty"`
Columns []Column `json:"columns"`
Rows []Row `json:"rows"`
Footnotes map[string]string `json:"footnotes,omitempty"`
Confidence Confidence `json:"confidence"`
Source Source `json:"source"`
}
Table is a statement or narrative table projected onto rows × columns, either from the iXBRL fact stream or by spatial layout. The JSON tags are the output schema.