Struxen Docs

Reports

A library of canned registers and analytics that download on demand, plus a one-time summary email you send by hand

The Reports surface holds two things that are deliberately not merged:

  • The report library, above. Every row is a real route that renders a real document when you click Generate. The file downloads immediately.
  • The report table, below. It tracks jobs the backend is running. In practice it holds revision change reports and nothing else.

They stay separate because a row that hands you a file now and a row that tracks a job in flight are different things, and somebody who cannot tell them apart will sit waiting for a file that already arrived.

The report library

Eleven entries. Nine generate a file on the spot; two link out because generating them needs context this page does not have.

ReportSourceFormatsNeeds
RFI logRFIsPDF, CSV
Submittal logSubmittalsPDF, CSV
Punch listPunch listPDF, CSV
Findings registerFindingsPDF, CSV
Manpower reportDaily logsPDF, CSVA date range
Safety rates (TRIR/DART)Safety, Daily logsPDF, CSVA date range
Approvers' response timeSubmittalsPDF, CSV
Punch aging by companyPunch list, DirectoryPDF, CSV
RFI response timesRFIsPDF, CSV
Look ahead planScheduleLink onlyPick a plan on the schedule board, then export it there
Daily logDaily logsLink onlyOpen the day you want, then export it there

PDF and CSV only. XLSX is not offered, because no route produces one. A request for any other format is refused rather than quietly handed a PDF: if you ask for a spreadsheet, being given a PDF is the failure you will not check for.

What each one contains

  • RFI log. Every RFI as one register: number, subject, status, RFI manager, ball in court, dates, days late, reply counts.
  • Submittal log. Spec section, number, status, responsible contractor, ball in court, dates, days held.
  • Punch list. Number, title, status, priority, trade, location, due date, assignees, ball in court.
  • Findings register. Every finding raised on the project, one row each. Dismissed findings are left out unless you ask for them. See Findings for how to work them.
  • Manpower report. Man-hours by company across a date window, from the daily log. Man-hours are workers multiplied by hours per worker. Copied-forward entries are counted and marked as copied.
  • Safety rates (TRIR/DART). Recordable incidents over a window, the man-hours worked in it, and the rate. Read Safety before relying on it: DART is not computed, EMR is not computed, and "recordable" is the filer's own classification.
  • Approvers' response time. How long each party held a submittal, per approver and per role, from the ball-in-court record. Reported in hours, because Struxen holds no project calendar and cannot convert to working days.
  • Punch aging by company. Open punch items bucketed by how late they are and grouped by the firm assigned.
  • RFI response times. Time from an RFI opening to its first official reply, per RFI and per responder. This is a snapshot: official status can be assigned to a different reply later, so the figures can change.

Date ranges

The manpower report and the safety rates report both ask for a window. There is no default, and there deliberately is not one: guessing at "last 30 days" would put a range in a heading nobody chose.

Why a row is missing

The library hides any row whose source modules you cannot read, so it never offers a download that can only fail. A report that reads two modules needs read access to both, because a document that silently omits a section reads as a document about a project where that section is empty.

The server re-checks independently on every request, and a refusal names the tool you are missing rather than sending you to support.

Reports are reads. Nothing in the library calls a model and nothing in it costs credits.

Export findings

Export findings, in the surface header, downloads every finding on the project as one file: PDF register or CSV, with an Include dismissed findings checkbox.

The file downloads straight to your device and is not saved to the report table below. The PDF and the CSV are assembled from one source, so they cannot disagree with each other.

Send summary now

Send summary now sends one snapshot of open items, once, to people you choose.

  1. Pick recipients under Send to. These are project members, chosen from the project team.
  2. Pick modules under Include: RFIs, Submittals, Punch list.
  3. Click Send now.

There is no scheduler

Struxen has no in-app cron. There is no EventBridge rule, no queue, and no worker that wakes up on a Monday and mails a digest. This sends one summary, now, because a person pressed a button. Nothing in the product offers a daily, weekly, or recurring version, and nothing here implies one exists.

Recipients are user ids, never addresses

The request carries project-member identities, and each is looked up in the project roster. An arbitrary email address is refused. Accepting one would turn this into an open relay wearing Struxen branding.

At most 25 recipients per send.

Each copy is composed for its own recipient

Each module is read once, then filtered for each recipient through that module's own visibility rules applied to the live record. A summary composed from the sender's view and mailed to everyone is how a private RFI's subject line reaches somebody who is not on it, and an email cannot be clawed back.

A recipient who can read none of the chosen modules is reported as Skipped: no access to the chosen modules and is not sent anything. Sending them an empty summary would tell them the project has no open work, which is a different and false statement.

The outcome is reported per recipient

OutcomeMeaning
SentThe message was handed to the mail service
Email is disabled in this environmentOutbound email is switched off here. Nothing was sent, and the dialog says so instead of showing a success message
Could not be sentThe send failed
Skipped: no access to the chosen modulesNothing to send this person

Whether email leaves your environment at all depends on how it is configured. Read the per-recipient outcome rather than assuming delivery.

The report table

The table below the library lists revision change reports. Those are produced by the annotate worker and are started from the sheet viewer's Export annotated PDF, not from this page. Nothing on this page creates a row in it.

StatusMeaning
Draft
GeneratingThe worker is running
ReadyThe file is available to download
FailedThe run did not finish

Retry on a failed row genuinely re-dispatches the annotate run, and it costs credits. A row with no source run has no address to re-dispatch to, so Retry is shown disabled with that reason rather than firing and claiming success.

Nothing on this surface asserts a file, a size, a count, or a completion state the backend did not produce.

Permissions

There is no separate Reports permission. Each row is gated on the tools it reads. See Permissions.

ReportNeeds READ on
RFI log, RFI response timesRFIs
Submittal log, Approvers' response timeSubmittals
Punch listPunch list
Punch aging by companyPunch list and Directory
Manpower report, Daily logDaily logs
Safety ratesObservations and Daily logs
Look ahead planSchedule
Findings registerProject access, checked by the findings route itself
Send summary nowThe tools behind each module you include

Limits

LimitValue
Recipients per summary send25
FormatsPDF and CSV
Summary modulesRFIs, Submittals, Punch list
Items listed per summary section5 most overdue

Every enforced limit across Struxen is collected at Limits.

Troubleshooting

A report you expected is not in the library. You lack read access to one of its source modules. The row is hidden rather than offered as a guaranteed failure. The table above says which tools each report reads.

A download was refused with a named tool. That report reads more than one module and you can read only some of them. It refuses rather than handing you a document with a section silently missing.

There is no XLSX option. There is no route that produces one. Use CSV.

"Generate" produced nothing in the table below. Correct. Library reports download to your device and are never stored, so they do not appear there. The table tracks revision change reports only.

Every recipient came back as "Email is disabled in this environment". Outbound email is switched off. Nothing was sent. The dialog reports it rather than showing a success message for a message nobody received.

A recipient came back as "Skipped". They cannot read any of the modules you chose. Give them access, or drop them from the send.

You want this to go out every Monday. It cannot. There is no scheduler. Send it when you want it sent.

Retry is disabled on a failed row. That report has no source run recorded, so there is nothing to re-dispatch.