diff --git a/.gitea/workflows/security.yml b/.gitea/workflows/security.yml index 53f5124..bf445e5 100644 --- a/.gitea/workflows/security.yml +++ b/.gitea/workflows/security.yml @@ -41,7 +41,7 @@ jobs: continue-on-error: true - name: Upload security reports - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v3 with: name: security-reports path: | diff --git a/.gitea/workflows/test.yml b/.gitea/workflows/test.yml index 217cac7..7b7208e 100644 --- a/.gitea/workflows/test.yml +++ b/.gitea/workflows/test.yml @@ -2,16 +2,20 @@ name: Test Suite on: push: - branches: ["*"] + branches: + - "main" + - "develop" pull_request: - branches: ["main", "master"] + branches: + - "main" + workflow_dispatch: jobs: test: runs-on: ubuntu-latest strategy: matrix: - python-version: ["3.11", "3.12"] + python-version: ["3.11"] steps: - name: Checkout code diff --git a/CLAUDE.md b/CLAUDE.md index 3a975ca..9d3e668 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -42,7 +42,7 @@ Use the included `sample_data.ndjson` and `sample_prompts.ndjson` files for test The application follows a modular architecture with clear separation of concerns: -``` +```text src/embeddingbuddy/ ├── app.py # Main application entry point and factory ├── main.py # Application runner @@ -72,27 +72,32 @@ src/embeddingbuddy/ ### Key Components **Data Layer:** + - `data/parser.py` - NDJSON parsing with error handling - `data/processor.py` - Data transformation and combination logic - `models/schemas.py` - Dataclasses for type safety and validation **Algorithm Layer:** + - `models/reducers.py` - Modular dimensionality reduction with factory pattern - Supports PCA, t-SNE (openTSNE), and UMAP algorithms - Abstract base class for easy extension **Visualization Layer:** + - `visualization/plots.py` - Plot factory with single and dual plot support - `visualization/colors.py` - Color mapping and grayscale conversion utilities - Plotly-based 2D/3D scatter plots with interactive features **UI Layer:** + - `ui/layout.py` - Main application layout composition - `ui/components/` - Reusable, testable UI components - `ui/callbacks/` - Organized callbacks grouped by functionality - Bootstrap-styled sidebar with controls and large visualization area **Configuration:** + - `config/settings.py` - Centralized settings with environment variable support - Plot styling, marker configurations, and app-wide constants @@ -112,16 +117,19 @@ Optional fields: `id`, `category`, `subcategory`, `tags` The refactored callback system is organized by functionality: **Data Processing (`ui/callbacks/data_processing.py`):** + - File upload handling - NDJSON parsing and validation - Data storage in dcc.Store components **Visualization (`ui/callbacks/visualization.py`):** + - Dimensionality reduction pipeline - Plot generation and updates - Method/parameter change handling **Interactions (`ui/callbacks/interactions.py`):** + - Point click handling and detail display - Reset functionality - User interaction management @@ -131,15 +139,18 @@ The refactored callback system is organized by functionality: The modular design enables comprehensive testing: **Unit Tests:** + - `tests/test_data_processing.py` - Parser and processor logic - `tests/test_reducers.py` - Dimensionality reduction algorithms - `tests/test_visualization.py` - Plot creation and color mapping **Integration Tests:** + - End-to-end data pipeline testing - Component integration verification **Key Testing Benefits:** + - Fast test execution (milliseconds vs seconds) - Isolated component testing - Easy mocking and fixture creation @@ -167,6 +178,7 @@ Uses modern Python stack with uv for dependency management: 5. **Tests** - Write tests for all new functionality **Code Organization Principles:** + - Single responsibility principle - Clear module boundaries - Testable, isolated components @@ -174,7 +186,8 @@ Uses modern Python stack with uv for dependency management: - Error handling at appropriate layers **Testing Requirements:** + - Unit tests for all core logic - Integration tests for data flow - Component tests for UI elements -- Maintain high test coverage \ No newline at end of file +- Maintain high test coverage