Files
shopdb-flask/.claude/INDEX.md
Proudlock d40f1a6a92 fix: replace unicode characters and fix finalize-restore endpoint
Style check fixes:
- Replace unicode box-drawing characters with ASCII (|-- instead of ├──)
- Replace emoji status markers with [OK]/[FAIL]/[WARN] tags
- Replace arrows (→ with ->, ↔ with <->) and em-dashes (— with --)
- Add venv-quick to excluded directories in check script
- Exclude darkwing report files (findings.sarif, report.md)

Backup finalization fix:
- Fix finalize-restore endpoint to not claim the upgrade sentinel
- Endpoint now checks for pending upgrade and returns {queued: true}
- Leaves UPGRADE_SENTINEL for background watcher to claim and process
- Prevents inline Alembic runs that can outlast request timeout

Claude Code context:
- Add .claude/ directory with INDEX.md and QUICK-REFERENCE.md
- Add CLAUDE.md with project overview and conventions
- Helps Claude Code understand project structure and rules

Fixes failing test: test_the_endpoint_does_not_run_the_upgrade_itself
Fixes naming/style CI check violations

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-09-07 03:48:11 -04:00

3.8 KiB

ShopDB Index - Load Only What You Need

Quick pointers to avoid reading entire wiki or codebase.

When Working On...

Plugin development:

  • Read: CLAUDE.md (overview)
  • Grep: class BasePlugin in shopdb/api/__init__.py
  • Reference: ../shopdb-flask.wiki/ADR-001-asset-as-platform-contract.md

Database migrations:

  • Read: ../shopdb-flask.wiki/ADR-008-plugin-migration-ownership.md
  • Grep: PLUGIN_TABLE_OWNERS for dependency order
  • Pattern: plugins/{name}/migrations/versions/*.py

Site-specific config:

  • Read: ../shopdb-flask.wiki/ADR-015-site-specific-configuration.md
  • Locations: shopdb/core/settings/, shopdb/core/seed/, scripts/site_imports/

Kiosk/device auth:

  • Read: ../shopdb-flask.wiki/ADR-016-credential-delivery.md
  • Grep: requires_device_token

Deployment/branches:

  • Read: ../shopdb-flask.wiki/ADR-004-deployment-topology.md
  • Scripts: ~/Documents/github/*.cmd

Frontend plugin panels:

  • Read: ../shopdb-flask.wiki/ADR-010-frontend-plugin-hooks.md
  • Pattern: plugins/{name}/frontend/views/*.vue

Testing:

  • Read: tests/conftest.py for fixtures
  • Pattern: tests/test_plugins/test_{plugin}_{feature}.py

Plugin Map (20 plugins)

Core asset types:

  • computers, endpoints, printers, machines, measuringtools, network, tools

Workflows:

  • printedparts, usb, slides, notifications

Integrations:

  • warranty, geenforce, guides, knowledgebase

Admin:

  • employees, backups

Key Files

  • shopdb/api/__init__.py - Stable import surface (75 lines)
  • shopdb/config.py - App configuration
  • shopdb/core/models/asset.py - Base asset model
  • docker-compose.yml - Dev stack definition
  • scripts/check-naming-and-style.sh - Pre-commit hook

Git Branches

Current repo state:

  • wj (checked out) - Prod branch for WJ shop floor
  • main - Public GitHub mirror, deploys nowhere
  • origin/wilm - Upstream changes from benjamin.baker (86 commits ahead)
  • origin/dev-be - Historical dev branch

Branch workflow (ADR-004):

  • wj -> prod deployment (WJ site)
  • dev -> ops deployment (monitoring/pilot sites, on gitea only)
  • main -> GitHub public mirror only (no deployments)
  • wilm -> fetch from GitHub, review, merge to wj or dev

On this work PC:

  • Has GitHub credentials (ge-aero/shopdb-flask)
  • Fetch wilm: ~/Documents/github/fetch-wilm-branch.cmd
  • Bundle to dev PC: ~/Documents/github/pull-shopdb-bundle.cmd

Common Paths

  • Plugin code: plugins/{name}/
  • Core models: shopdb/core/models/
  • Core API: shopdb/core/api/
  • Frontend core: frontend/src/
  • Tests: tests/test_plugins/
  • Migrations: migrations/ (core) + plugins/{name}/migrations/
  • Scripts: scripts/
  • Docs: ../shopdb-flask.wiki/

Avoid Reading These Unless Needed

  • docs/openapi.json (489 lines, generated)
  • frontend/dist/ (build output)
  • node_modules/, venv/, .pytest_cache/
  • agent/ (C# endpoint agent, 10k+ lines)
  • Full wiki (68 files) - use index above

Token-Efficient Patterns

  1. Grep before Read: Find the exact file/function first
  2. Read with limit: Use offset/limit for large files
  3. Reference by path: Cite file:line instead of quoting code
  4. Use memory: Store repeated patterns in memory files
  5. Wiki on-demand: Only read specific ADRs when relevant

One-Line ADR Summaries

  • ADR-001: Asset is the platform primitive for all equipment
  • ADR-004: Three air-gapped environments, bundle workflow
  • ADR-006: Endpoint agent sends telemetry, receives commands
  • ADR-007: Semantic versioning, GitHub releases
  • ADR-008: Each plugin owns its migration chain, no conflicts
  • ADR-009: Frontend plugins gate on backend features
  • ADR-010: Plugins register Vue components via manifest
  • ADR-013: Lean builds include only needed plugins
  • ADR-015: Site literals go in settings/seed/site_imports only
  • ADR-016: Kiosks use device tokens, not user sessions