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>
3.8 KiB
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 BasePlugininshopdb/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_OWNERSfor 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.pyfor 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 configurationshopdb/core/models/asset.py- Base asset modeldocker-compose.yml- Dev stack definitionscripts/check-naming-and-style.sh- Pre-commit hook
Git Branches
Current repo state:
wj(checked out) - Prod branch for WJ shop floormain- Public GitHub mirror, deploys nowhereorigin/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
- Grep before Read: Find the exact file/function first
- Read with limit: Use offset/limit for large files
- Reference by path: Cite
file:lineinstead of quoting code - Use memory: Store repeated patterns in memory files
- 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