Preheat oil for deep-frying over medium heat for 8 minutes.
Mix 25ml of water with tapioca flour until fully dissolved to make the gravy thickener. Set aside.
Marinate the fish with salt evenly. Sprinkle the crispy flour over the fish and coat them evenly in 3 parts. Set aside.
Add light soy sauce, Woscestershire sauce, sugar, half of the garlic oil, oyster sauce, chilli sauce and tomato sauce. Mix until well-combined and set aside.
Test the oil. When it's hot enough, add all the floured fish individually into the pan. Deep-fry for about 5-6 minutes. Flip them often and cook until golden brown. Remove from the pan with a strainer, shaking to drip off the excess oil. Rest on a cooling rack as the sweet sour sauce is prepared.
Add the rest of the garlic oil to a non-stick pan over medium heat. Once hot, add the yellow onions and stems of the spring onions. Stir briefly. Let them cook for 1 minute and 20 seconds, or until translucent and aromatic.
After 1 minute, add capsicum, cucumbers, water and the rest of the seasonings. Stir to mix well. Cover the pan. Simmer for 2 minutes, or until it comes to a rolling boil. Once the vegetables are cooked and softened, stir in all the tomatoes. Cover the pan and simmer for another minute.
Adjust to taste. Pour the gravy thickener while stirring until well-combined. Switch off the heat.
Add all the deep-fried fish and stir until well-coated with the gravy. Add half of the crispy fried garlic and spring onion leaves. Stir to mix.
Dish out on a serving plate and top with the rest of the crispy fried garlic.