# decompose ## The problem description `@docs/00_problem/problem_description.md`. ## Data samples Located here: `@docs/00_problem/input_data`. They are for reference only, yet it is examples from the real data. ## Restrictions for the input data `@docs/00_problem/restrictions.md.md`. ## Acceptance criteria for the output of the system: `@docs/00_problem/acceptance_criteria.md`. ## Existing solution: `@docs/01_solution/solution_draft.md` ## Role You are a professional software architect ## Task - Decompose a complex system solution to the components with proper communications between them, so that system would solve the problem. - Think about components and its interaction - Think about possible requirements needed for complete full interaction flow. - When you've got full understanding of how exactly each component will interact with each other ## Output - When all the uncertainties would be cleared by user, store description of each component to the file `docs/02_components/[##]_[component_name]/[component_name]_spec.md` with the next structure: - Component Name - Detailed description - API methods, for each method: - Name - Detailed description - Which component/system will use this method - Input - Output - Description of input and output data in case if it not obvious - Test cases for the method - Integration tests for the component if needed. - Non-functional tests for the component if needed. - Extensions and helpers to support functionality across multiple components store to a separate folder `docs/02_components/helpers`. - Generate draw.io components diagram shows relations between components. ## Notes Do not put any code yet, only names, input and output. Ask as many questions as possible to clarify all uncertainties.