Fry the onion in a little oil until soft, then add the garlic. After a minute, add the mince and brown, breaking up any lumps. Add the cinnamon, wine and tomatoes, simmer for 30 minutes, bubble off any excess liquid and stir in the parsley.
Meanwhile, brown the aubergines in a little oil on both sides then drain on kitchen paper. Bring the milk to a simmer with the bay leaf and peppercorns. Heat the butter in a pan, stir in the flour and gradually add the milk, stirring continually until you have a smooth sauce. Strain and season.
Heat the oven to 180C/fan 160C/gas 4. Layer the cooked meat sauce and aubergine in an ovenproof dish, top with the potatoes and season. Whisk the eggs into the white sauce and spoon over. Bake for 30-40 minutes until brown.