You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Documentation and Code Cleanup
Documented soft and hard constraint logic and touch up sequence diagram.
Clean up dead code logic and historical comments.
* Soft/Hard Ban minor tweak
AM to PM changed from soft to hard ban
*`max_consecutive_duties`: Max days a person can work in a row.
84
-
***Points:**
85
-
***Base Points:** How many points is a duty worth? (e.g., `24H = 2.0`, `AM = 1.0`).
86
-
***Multipliers:** Configure multipliers for Weekends, Public Holidays, etc.
87
-
88
-
## Development
89
-
90
-
***Dependency Management:** Uses `pip-tools`.
91
-
* To update deps: `pip-compile requirements.in`
92
-
* To install dev deps: `pip install -r requirements-dev.txt`
93
-
***Linting:** Uses `ruff`for linting and formatting.
94
-
* Check: `ruff check .`
95
-
* Format: `ruff format .`
96
-
***Tests:** Run `pytest` to execute the test suite.
97
-
* Run with coverage: `pytest --cov=app tests/`
98
-
99
117
## Testing Methodology
100
118
101
-
The project employs a robust testing strategy:
102
-
***Unit Tests (`tests/test_logic.py`, `tests/test_data.py`):** Verify individual components in isolation, mocking external dependencies like file I/O.
103
-
***Core Logic Tests (`tests/test_core_scheduler.py`):** Validate the solver engine against specific constraints.
104
-
***Integration Tests (`tests/test_app_integration.py`):** Use Streamlit's `AppTest` framework to simulate user interactions and verify UI state persistence.
119
+
The project employs a comprehensive testing strategy:
**Methodology:***Constraint Verification**. Sets up specific minimal scenarios to prove that hard constraints (like "No consecutive 24H shifts") actually prevent invalid solutions.
126
+
**Focus:* Mathematical correctness of the OR-Tools model against the Transition Permutations defined above.
**Methodology:***Headless UI Testing**. Uses `streamlit.testing` to simulate a user clicking buttons and changing settings to ensure the state updates correctly across the app.
0 commit comments