monitor-app 2.3.0__tar.gz → 2.3.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. {monitor_app-2.3.0 → monitor_app-2.3.1}/PKG-INFO +29 -4
  2. {monitor_app-2.3.0 → monitor_app-2.3.1}/README.md +24 -0
  3. {monitor_app-2.3.0 → monitor_app-2.3.1}/pyproject.toml +11 -6
  4. {monitor_app-2.3.0 → monitor_app-2.3.1}/LICENSE +0 -0
  5. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/__init__.py +0 -0
  6. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/api/__init__.py +0 -0
  7. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/api/deps.py +0 -0
  8. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/api/errors.py +0 -0
  9. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/api/routers/__init__.py +0 -0
  10. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/api/routers/alerts.py +0 -0
  11. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/api/routers/audit.py +0 -0
  12. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/api/routers/auth.py +0 -0
  13. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/api/routers/crud.py +0 -0
  14. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/api/routers/ingest.py +0 -0
  15. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/api/routers/meta.py +0 -0
  16. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/api/routers/pages.py +0 -0
  17. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/api/routers/views.py +0 -0
  18. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/api/schemas.py +0 -0
  19. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/cli.py +0 -0
  20. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/db/__init__.py +0 -0
  21. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/db/engine.py +0 -0
  22. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/db/ingest_state.py +0 -0
  23. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/db/registry.py +0 -0
  24. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/db/repository.py +0 -0
  25. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/exceptions.py +0 -0
  26. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/integrations/__init__.py +0 -0
  27. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/integrations/netdiag.py +0 -0
  28. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/integrations/network_checker.py +0 -0
  29. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/integrations/procdiag.py +0 -0
  30. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/logging_conf.py +0 -0
  31. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/main.py +0 -0
  32. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/scaffold/README.md +0 -0
  33. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/scaffold/config.py +0 -0
  34. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/scaffold/csv/orders.csv +0 -0
  35. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/scaffold/csv/products.csv +0 -0
  36. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/scaffold/csv/users.csv +0 -0
  37. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/scaffold/env.example +0 -0
  38. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/services/__init__.py +0 -0
  39. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/services/alert_scheduler.py +0 -0
  40. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/services/alert_service.py +0 -0
  41. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/services/audit_service.py +0 -0
  42. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/services/coercion.py +0 -0
  43. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/services/connectors.py +0 -0
  44. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/services/crud_service.py +0 -0
  45. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/services/importer.py +0 -0
  46. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/services/ingest_watcher.py +0 -0
  47. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/services/kpi_service.py +0 -0
  48. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/services/notifiers/__init__.py +0 -0
  49. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/services/notifiers/base.py +0 -0
  50. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/services/notifiers/email.py +0 -0
  51. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/services/notifiers/webhook.py +0 -0
  52. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/services/view_cache.py +0 -0
  53. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/services/view_service.py +0 -0
  54. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/settings/__init__.py +0 -0
  55. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/settings/declarative.py +0 -0
  56. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/settings/loader.py +0 -0
  57. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/settings/runtime.py +0 -0
  58. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/web/static/css/app.css +0 -0
  59. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/web/static/css/bootstrap.min.css +0 -0
  60. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/web/static/css/dashboard.css +0 -0
  61. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/web/static/css/kiosk.css +0 -0
  62. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/web/static/img/background.webp +0 -0
  63. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/web/static/img/favicon.ico +0 -0
  64. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/web/static/img/logo.webp +0 -0
  65. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/web/static/js/alerts-ui.js +0 -0
  66. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/web/static/js/app.js +0 -0
  67. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/web/static/js/chart-view.js +0 -0
  68. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/web/static/js/chart.umd.min.js +0 -0
  69. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/web/static/js/dashboard.js +0 -0
  70. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/web/static/js/form.js +0 -0
  71. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/web/static/js/kiosk.js +0 -0
  72. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/web/static/js/kpis.js +0 -0
  73. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/web/static/js/table-render.js +0 -0
  74. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/web/static/js/theme.js +0 -0
  75. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/web/templates/base.html +0 -0
  76. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/web/templates/form.html +0 -0
  77. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/web/templates/index.html +0 -0
  78. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/web/templates/kiosk.html +0 -0
  79. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/web/templates/login.html +0 -0
  80. {monitor_app-2.3.0 → monitor_app-2.3.1}/monitor_app/web/templates/table.html +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: monitor-app
3
- Version: 2.3.0
3
+ Version: 2.3.1
4
4
  Summary: Drop in a CSV, write one config file, and get a live-updating Web UI + REST API. FastAPI-based data monitoring for shop floors and small teams.
5
5
  License-Expression: MIT
6
6
  License-File: LICENSE
@@ -25,16 +25,17 @@ Classifier: Programming Language :: Python :: 3.12
25
25
  Classifier: Programming Language :: Python :: 3.13
26
26
  Provides-Extra: xlsx
27
27
  Requires-Dist: click (>=8.1,<8.2)
28
- Requires-Dist: fastapi (>=0.115,<1.0)
28
+ Requires-Dist: fastapi (>=0.133,<1.0)
29
29
  Requires-Dist: jinja2 (>=3.1,<4.0)
30
30
  Requires-Dist: openpyxl (>=3.1,<4.0) ; extra == "xlsx"
31
- Requires-Dist: pg8000 (>=1.30,<2.0)
31
+ Requires-Dist: pg8000 (>=1.31.5,<2.0)
32
32
  Requires-Dist: pydantic (>=2.7,<3.0)
33
33
  Requires-Dist: pydantic-settings (>=2.3,<3.0)
34
34
  Requires-Dist: pymysql (>=1.1,<2.0)
35
- Requires-Dist: python-multipart (>=0.0.9)
35
+ Requires-Dist: python-multipart (>=0.0.31)
36
36
  Requires-Dist: sqlalchemy (>=2.0,<3.0)
37
37
  Requires-Dist: sse-starlette (>=2.1,<3.0)
38
+ Requires-Dist: starlette (>=1.3.1,<2.0)
38
39
  Requires-Dist: typer (>=0.12,<1.0)
39
40
  Requires-Dist: uvicorn[standard] (>=0.30,<1.0)
40
41
  Project-URL: Changelog, https://github.com/mikawa-bushi/monitor-app/blob/main/CHANGELOG.md
@@ -234,6 +235,30 @@ poetry install
234
235
  poetry run pytest
235
236
  ```
236
237
 
238
+ ### Pre-push security & quality checks
239
+
240
+ A [pre-commit](https://pre-commit.com/) config scans for **secrets** and enforces
241
+ formatting locally, before code leaves your machine. Enable it once per clone:
242
+
243
+ ```sh
244
+ poetry run pre-commit install # installs the commit + pre-push hooks
245
+ poetry run pre-commit run --all-files # optional: run across the repo now
246
+ ```
247
+
248
+ - **gitleaks** — blocks hard-coded secrets (PyPI/AWS/GCP tokens, GitHub PATs, private keys)
249
+ - **detect-private-key / check-added-large-files / check-merge-conflict**, plus **black / ruff** (pinned to the CI versions)
250
+ - **check-commit-identity** (pre-push) — rejects commits whose author/committer e-mail is off the allowlist, keeping work/other identities out of history (`scripts/check_commit_identity.py`; extend via the `MONITOR_ALLOWED_EMAILS` env var)
251
+ - **check-ai-traces** (commit + pre-push) — flags traces of AI-agent tools (config dirs, file content, commit metadata) so they don't leak into the repo. Tool patterns are data-driven in `scripts/check_ai_traces.py` (extend the `TOOLS` list or `MONITOR_AI_TRACE_EXTRA`; ignore paths via `.ai-trace-ignore`)
252
+
253
+ Audit the **whole working tree and full git history** on demand:
254
+
255
+ ```sh
256
+ python3 scripts/check_ai_traces.py --all # exit 0 = no traces found
257
+ ```
258
+
259
+ > ⚠️ Local hooks can be skipped with `git commit/push --no-verify`. For an
260
+ > unbypassable gate, also make `gitleaks` a required GitHub Actions check.
261
+
237
262
  Contributions are welcome — see [CONTRIBUTING.md](https://github.com/mikawa-bushi/monitor-app/blob/main/CONTRIBUTING.md).
238
263
 
239
264
  ## 📜 License
@@ -189,6 +189,30 @@ poetry install
189
189
  poetry run pytest
190
190
  ```
191
191
 
192
+ ### Pre-push security & quality checks
193
+
194
+ A [pre-commit](https://pre-commit.com/) config scans for **secrets** and enforces
195
+ formatting locally, before code leaves your machine. Enable it once per clone:
196
+
197
+ ```sh
198
+ poetry run pre-commit install # installs the commit + pre-push hooks
199
+ poetry run pre-commit run --all-files # optional: run across the repo now
200
+ ```
201
+
202
+ - **gitleaks** — blocks hard-coded secrets (PyPI/AWS/GCP tokens, GitHub PATs, private keys)
203
+ - **detect-private-key / check-added-large-files / check-merge-conflict**, plus **black / ruff** (pinned to the CI versions)
204
+ - **check-commit-identity** (pre-push) — rejects commits whose author/committer e-mail is off the allowlist, keeping work/other identities out of history (`scripts/check_commit_identity.py`; extend via the `MONITOR_ALLOWED_EMAILS` env var)
205
+ - **check-ai-traces** (commit + pre-push) — flags traces of AI-agent tools (config dirs, file content, commit metadata) so they don't leak into the repo. Tool patterns are data-driven in `scripts/check_ai_traces.py` (extend the `TOOLS` list or `MONITOR_AI_TRACE_EXTRA`; ignore paths via `.ai-trace-ignore`)
206
+
207
+ Audit the **whole working tree and full git history** on demand:
208
+
209
+ ```sh
210
+ python3 scripts/check_ai_traces.py --all # exit 0 = no traces found
211
+ ```
212
+
213
+ > ⚠️ Local hooks can be skipped with `git commit/push --no-verify`. For an
214
+ > unbypassable gate, also make `gitleaks` a required GitHub Actions check.
215
+
192
216
  Contributions are welcome — see [CONTRIBUTING.md](https://github.com/mikawa-bushi/monitor-app/blob/main/CONTRIBUTING.md).
193
217
 
194
218
  ## 📜 License
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "monitor-app"
3
- version = "2.3.0"
3
+ version = "2.3.1"
4
4
  description = "Drop in a CSV, write one config file, and get a live-updating Web UI + REST API. FastAPI-based data monitoring for shop floors and small teams."
5
5
  authors = [{ name = "hardwork9047", email = "tomatosimple1104@gmail.com" }]
6
6
  readme = "README.md"
@@ -25,7 +25,9 @@ classifiers = [
25
25
  "Programming Language :: Python :: 3.13",
26
26
  ]
27
27
  dependencies = [
28
- "fastapi (>=0.115,<1.0)",
28
+ # fastapi <0.133 は starlette を <1.0 に固定しており、starlette の脆弱性修正
29
+ # (>=1.3.1) と両立しない。0.133 で starlette の上限が外れた
30
+ "fastapi (>=0.133,<1.0)",
29
31
  "uvicorn[standard] (>=0.30,<1.0)",
30
32
  "pydantic (>=2.7,<3.0)",
31
33
  "pydantic-settings (>=2.3,<3.0)",
@@ -34,10 +36,12 @@ dependencies = [
34
36
  # typer 0.12 系は click 8.2 の API 変更と非互換
35
37
  "click (>=8.1,<8.2)",
36
38
  "jinja2 (>=3.1,<4.0)",
37
- "python-multipart (>=0.0.9)",
39
+ # CORSMiddleware を直接 import するため明示宣言。複数 CVE のため下限を固定
40
+ "starlette (>=1.3.1,<2.0)",
41
+ "python-multipart (>=0.0.31)",
38
42
  "sse-starlette (>=2.1,<3.0)",
39
43
  "pymysql (>=1.1,<2.0)", # MySQL 対応
40
- "pg8000 (>=1.30,<2.0)", # PostgreSQL 対応
44
+ "pg8000 (>=1.31.5,<2.0)", # PostgreSQL 対応(CVE-2025-61385 修正)
41
45
  ]
42
46
 
43
47
  [project.optional-dependencies]
@@ -61,11 +65,12 @@ include = [
61
65
  ]
62
66
 
63
67
  [tool.poetry.group.dev.dependencies]
64
- pytest = "^8.3.4"
68
+ pytest = "^9.0.3"
65
69
  pytest-cov = "^7.0"
66
70
  httpx = "^0.27.0"
67
- black = "^24.0.0"
71
+ black = "^26.3.1"
68
72
  ruff = "^0.15"
73
+ pre-commit = "^4.0"
69
74
 
70
75
  [tool.pytest.ini_options]
71
76
  testpaths = ["tests"]
File without changes