{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"be.reports.annual_hr_dashboard","type":"object","additionalProperties":false,"required":["letter","entity","fiscal_year","kpis","sections"],"properties":{"letter":{"type":"object","additionalProperties":false,"required":["date","reference"],"properties":{"date":{"type":"string","format":"date"},"reference":{"type":"string","minLength":1}}},"entity":{"type":"object","additionalProperties":false,"required":["name","bce","vat"],"properties":{"name":{"type":"string","minLength":1},"bce":{"type":"string","pattern":"^0[0-9]{3}\\.[0-9]{3}\\.[0-9]{3}$"},"vat":{"type":"string","pattern":"^BE0[0-9]{9}$"},"address":{"type":"string"},"city":{"type":"string"}}},"fiscal_year":{"type":"object","additionalProperties":false,"required":["year","start","end"],"properties":{"year":{"type":"string","pattern":"^[0-9]{4}$"},"start":{"type":"string","format":"date"},"end":{"type":"string","format":"date"}}},"workforce_summary":{"type":"object","additionalProperties":false,"properties":{"headcount_start":{"type":"integer","minimum":0},"headcount_end":{"type":"integer","minimum":0},"headcount_average":{"type":"number","minimum":0},"fte_average":{"type":"number","minimum":0},"entries":{"type":"integer","minimum":0},"exits":{"type":"integer","minimum":0},"turnover_rate_pct":{"type":"number","minimum":0,"maximum":100}}},"kpis":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"required":["kpi_name","kpi_value"],"properties":{"kpi_name":{"type":"string","minLength":1},"kpi_value":{"type":"string","minLength":1},"target":{"type":"string"},"trend":{"type":"string","enum":["up","down","stable"]},"unit":{"type":"string"}}}},"sections":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"required":["section_title","metrics"],"properties":{"section_title":{"type":"string","minLength":1},"metrics":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"required":["metric_label","metric_value"],"properties":{"metric_label":{"type":"string","minLength":1},"metric_value":{"type":"string","minLength":1},"note":{"type":"string"}}}}}}},"gender_distribution":{"type":"object","additionalProperties":false,"properties":{"male_count":{"type":"integer","minimum":0},"female_count":{"type":"integer","minimum":0},"male_pct":{"type":"number","minimum":0,"maximum":100},"female_pct":{"type":"number","minimum":0,"maximum":100}}},"legal_obligations":{"type":"object","additionalProperties":false,"properties":{"training_days_per_fte":{"type":"number","minimum":0},"training_obligation_met":{"type":"boolean"},"gender_pay_gap_reported":{"type":"boolean"},"prevention_plan_in_place":{"type":"boolean"},"social_balance_filed":{"type":"boolean"}}},"notes":{"type":"string"}}}