Skip to content

About

Clean-room demo for multi-source operational time reporting.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Ops Time Intelligence Dashboard

This is a clean-room public implementation inspired by common enterprise automation patterns. It does not contain proprietary code, production data, credentials, or confidential business logic from any employer or client.

Ops Time Intelligence Dashboard is a FastAPI operations application for consolidating engineering time from ServiceNow, Monday.com, and payroll/PTO imports into a single reporting surface. The public repository is a redacted clean-room version of the production pattern: integration names, data contracts, route shapes, storage behavior, and operational workflows are preserved; organization-specific names, domains, credentials, board numbers, user identities, ticket references, and internal deployment values are replaced with generic placeholders.

Current Status

  • Primary app entrypoint: src/ops_time_dashboard/app.py
  • Runtime: Python, FastAPI, Pydantic, SQLite
  • Data model: normalized time entries keyed by (source, source_id)
  • Source systems represented: ServiceNow Table API, Monday.com GraphQL, payroll/PTO import
  • Exports: CSV endpoint suitable for workbook/report generation
  • Auth model: environment-ready; public version omits real SSO configuration
  • Storage model: local SQLite path from DATABASE_PATH

What This App Does

The app pulls operational time records from multiple source systems, normalizes them into one schema, and exposes summary views for utilization, billing, client allocation, and raw export.

Primary workflows:

  • import ServiceNow task_time_worked-style records
  • import Monday.com board item time tracking records
  • import payroll/PTO rows into the same reporting model
  • de-duplicate source records during repeat syncs
  • calculate employee utilization and PTO impact
  • calculate client and billable/non-billable pivots
  • expose normalized entries for export

Architecture

flowchart TD
    User["Authorized operations user"] --> API["FastAPI app"]
    API --> Sync["Sync service"]
    Sync --> SN["ServiceNow Table API adapter"]
    Sync --> Monday["Monday.com GraphQL adapter"]
    Sync --> PTO["Payroll/PTO import adapter"]
    Sync --> DB["SQLite time_entries"]
    API --> Employee["Employee utilization summary"]
    API --> Client["Client billing pivot"]
    API --> Export["CSV export"]
Loading

Important Files

Path Purpose
src/ops_time_dashboard/app.py FastAPI routes for sync, entries, summaries, and export
src/ops_time_dashboard/models.py Pydantic time-entry and summary models
src/ops_time_dashboard/redacted_sources.py Redacted source adapters preserving ServiceNow/Monday/PTO data shape
src/ops_time_dashboard/storage.py SQLite schema and source de-duplication
src/ops_time_dashboard/service.py Sync and summary orchestration
docs/integration-contracts.md Field-level source contracts
.env.example Placeholder runtime configuration
tests/test_dashboard.py Normalization, de-duplication, and summary tests

Data Sources And Contracts

Source Production contract represented Redacted implementation
ServiceNow Table API task_time_worked, related task number, company, caller, work notes, duration, created timestamp Local adapter returns records with ServiceNow-shaped source IDs and fields
Monday.com GraphQL board item ID, group title, time tracking column, billing label, client board mapping Local adapter returns Monday-shaped item records
Payroll/PTO import spreadsheet rows for employee, date, earning type, hours Local adapter maps PTO rows into normalized entries
SQLite unique (source, source_id), incremental sync metadata pattern, queryable reporting table time_entries table enforces source uniqueness

Configuration

.env.example documents the deployment contract without including secrets:

Setting Purpose
DATABASE_PATH SQLite database path
SSO_ENABLED Enables production SSO when wired by a private deployment
SERVICENOW_INSTANCE Redacted ServiceNow instance placeholder
SERVICENOW_AUTH_REFERENCE Secret reference name, not a secret value
MONDAY_AUTH_REFERENCE Secret reference name, not a token
MONDAY_BOARD_IDS Placeholder board IDs

Route Map

Route Method Purpose
/sync POST Run source ingestion
/entries GET Return normalized time entries
/summary/employees GET Employee utilization summary
/summary/clients GET Client/billing pivot
/export.csv GET CSV export

Local Development

python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
pytest
uvicorn ops_time_dashboard.app:app --reload --port 8010

Redaction Boundary

This public repository keeps the system design, source contracts, route shape, storage model, and reporting logic. It intentionally replaces or omits:

  • employer and client names
  • real domains and user principal names
  • ServiceNow instance names and ticket numbers
  • Monday.com board identifiers
  • credentials and secret values
  • internal deployment URLs
  • screenshots, logs, and exported workbooks

About

Clean-room demo for multi-source operational time reporting.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages