Hi,
You can use the following code to compute the child contacts of the selected partner.
Python
class ProjectProject(models.Model):
    """
       Inherits the project.project model to associate a customer (partner)
       with its related contacts. Adds functionality to dynamically filter
       customer contacts based on the selected partner.
       """
    _inherit = 'project.project'
    partner_id = fields.Many2one('res.partner', string="Partner")
    partner_contacts_ids = fields.Many2many(
        'res.partner', string="Partner Contacts", column1="partner_id",
        column2="contact_id", compute="_compute_partner_contacts_ids")
    customer_contacts = fields.Many2many(
        'res.partner', string="Customer Contacts",
        domain="[('id', 'in', partner_contacts_ids)]")
    @api.depends('partner_id')
    def _compute_partner_contacts_ids(self):
        """Compute the child contacts of the selected partner (customer) and
        assign them to the partner_contacts_ids field."""
        for rec in self:
            rec.partner_contacts_ids = rec.partner_id.child_ids
XML
<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <record id="edit_project" model="ir.ui.view">
        <field name="name">project.project.view.form</field>
        <field name="model">project.project</field>
        <field name="inherit_id" ref="project.edit_project"/>
        <field name="arch" type="xml">
            <xpath expr="//field[@name='user_id']" position="after">
                <field name="partner_id"/>
                <field name="partner_contacts_ids" invisible="1" widget="many2many_tags"/>
                <field name="customer_contacts" widget="many2many_tags"/>
            </xpath>
        </field>
    </record>
</odoo>
Hope it helps