# `OpenrelikWorkerCommon.Reporting.Report`
[🔗](https://github.com/hacktobeer/openrelik-worker-common-elixir/blob/v0.1.0/lib/openrelik_worker_common/reporting.ex#L413)

Represents a task report (`openrelik_worker_common.reporting.Report`), inheriting behavior
from `MarkdownDocument`.

# `t`

```elixir
@type t() :: %OpenrelikWorkerCommon.Reporting.Report{
  fmt: OpenrelikWorkerCommon.Reporting.MarkdownFormatter.t(),
  priority: OpenrelikWorkerCommon.Reporting.Priority.t(),
  sections: [OpenrelikWorkerCommon.Reporting.MarkdownDocumentSection.t()],
  summary: String.t(),
  title: String.t() | nil
}
```

# `add_section`

```elixir
@spec add_section(t()) ::
  {t(), OpenrelikWorkerCommon.Reporting.MarkdownDocumentSection.t()}
```

Adds a section to the report.

Supports:
- `Report.add_section(report)` -> `{updated_report, section}`
- `Report.add_section(report, %MarkdownDocumentSection{})` -> `updated_report`
- `Report.add_section(report, fn section -> ... end)` -> `updated_report`

# `add_section`

```elixir
@spec add_section(
  t(),
  OpenrelikWorkerCommon.Reporting.MarkdownDocumentSection.t()
  | (OpenrelikWorkerCommon.Reporting.MarkdownDocumentSection.t() -&gt;
       OpenrelikWorkerCommon.Reporting.MarkdownDocumentSection.t())
) :: t()
```

# `new`

```elixir
@spec new(String.t() | nil, keyword()) :: t()
```

Initializes a `Report` struct.

# `to_dict`

```elixir
@spec to_dict(t()) :: %{required(String.t()) =&gt; term()}
```

Generates a dictionary (string-keyed map) representation of the report.

# `to_json`

```elixir
@spec to_json(t()) :: String.t()
```

Generates a JSON representation of the report.

# `to_markdown`

```elixir
@spec to_markdown(t()) :: String.t()
```

Generates a Markdown representation of the report.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
