first commit

This commit is contained in:
2026-09-11 01:41:52 +08:00
commit 9f22e6ccae
263 changed files with 28935 additions and 0 deletions
+179
View File
@@ -0,0 +1,179 @@
<mxfile host="app.diagrams.net" modified="2026-09-07T00:00:00.000Z" agent="CodeBuddy" version="24.0.0">
<diagram id="zt-closet-er" name="zt-closet 数据库 ER 图">
<mxGraphModel dx="900" dy="500" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="0" fold="1" page="1" pageScale="1" pageWidth="2600" pageHeight="1200" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<!-- ============ 图例 ============ -->
<mxCell id="legend" value="&lt;b&gt;图例&lt;/b&gt;&lt;br&gt;&lt;b&gt;PK&lt;/b&gt; 主键 &lt;b&gt;UK&lt;/b&gt; 唯一索引&lt;br&gt;→ 外键关联目标表&lt;br&gt;⋯ 每表均含 GORM 公共字段:&lt;br&gt;  created_at / updated_at /&lt;br&gt;  deleted_at(软删除) / created_by /&lt;br&gt;  updated_by / deleted_by&lt;br&gt;连线:| 端为一,三叉端为多(1:N)" style="text;html=1;align=left;verticalAlign=top;spacing=8;fontSize=11;rounded=0;fillColor=#FFFFFF;strokeColor=#999999;" vertex="1" parent="1">
<mxGeometry x="1960" y="790" width="280" height="170" as="geometry" />
</mxCell>
<!-- ============ 用户域容器 ============ -->
<mxCell id="zone-user" value="用户域 Users" style="rounded=1;html=1;verticalAlign=top;align=center;fontSize=15;fontStyle=1;fillColor=#EAF2FB;strokeColor=#1E6091;strokeWidth=2;container=1;collapsible=0;whiteSpace=wrap;" vertex="1" parent="1">
<mxGeometry x="40" y="40" width="640" height="620" as="geometry" />
</mxCell>
<!-- ============ AI/运营域容器 ============ -->
<mxCell id="zone-ai" value="AI / 运营域" style="rounded=1;html=1;verticalAlign=top;align=center;fontSize=15;fontStyle=1;fillColor=#F3EFFB;strokeColor=#6C3FA0;strokeWidth=2;container=1;collapsible=0;whiteSpace=wrap;" vertex="1" parent="1">
<mxGeometry x="40" y="700" width="640" height="400" as="geometry" />
</mxCell>
<!-- ============ 衣橱域容器 ============ -->
<mxCell id="zone-wardrobe" value="衣橱域 Wardrobe" style="rounded=1;html=1;verticalAlign=top;align=center;fontSize=15;fontStyle=1;fillColor=#EAF6EE;strokeColor=#2E7D32;strokeWidth=2;container=1;collapsible=0;whiteSpace=wrap;" vertex="1" parent="1">
<mxGeometry x="720" y="40" width="1180" height="1060" as="geometry" />
</mxCell>
<!-- ============ 交易域容器 ============ -->
<mxCell id="zone-trade" value="交易域 Trade" style="rounded=1;html=1;verticalAlign=top;align=center;fontSize=15;fontStyle=1;fillColor=#FDF2E7;strokeColor=#C77700;strokeWidth=2;container=1;collapsible=0;whiteSpace=wrap;" vertex="1" parent="1">
<mxGeometry x="1940" y="40" width="620" height="700" as="geometry" />
</mxCell>
<!-- ============ 用户域实体 ============ -->
<!-- users -->
<mxCell id="tbl-users" value="&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; style=&quot;width:100%;font-size:11px;&quot;&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;background:#1E6091;color:#FFFFFF;font-weight:bold;text-align:center;&quot;&gt;users&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;id&lt;/b&gt; BIGINT &lt;b&gt;PK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;user_uuid VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;wx_open_id VARCHAR &lt;b&gt;UK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;username VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;avatar VARCHAR&lt;/td&gt;&lt;td&gt;sex TINYINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;birth_day BIGINT&lt;/td&gt;&lt;td&gt;phone VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;is_new_user TINYINT&lt;/td&gt;&lt;td&gt;status TINYINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ban_reason VARCHAR&lt;/td&gt;&lt;td&gt;ban_start BIGINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ban_expire BIGINT&lt;/td&gt;&lt;td&gt;vip_type TINYINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;vip_start BIGINT&lt;/td&gt;&lt;td&gt;vip_expire BIGINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;last_login_time BIGINT&lt;/td&gt;&lt;td&gt;⋯ 公共字段&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" style="shape=table;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#1E6091;rounded=0;" vertex="1" parent="1">
<mxGeometry x="60" y="90" width="300" height="206" as="geometry" />
</mxCell>
<!-- user_quotas -->
<mxCell id="tbl-user-quotas" value="&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; style=&quot;width:100%;font-size:11px;&quot;&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;background:#1E6091;color:#FFFFFF;font-weight:bold;text-align:center;&quot;&gt;user_quotas&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;id&lt;/b&gt; BIGINT &lt;b&gt;PK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;user_id → users &lt;b&gt;UK&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;quota_type TINYINT &lt;b&gt;UK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;total BIGINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;used BIGINT&lt;/td&gt;&lt;td&gt;⋯ 公共字段&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" style="shape=table;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#1E6091;rounded=0;" vertex="1" parent="1">
<mxGeometry x="60" y="320" width="300" height="98" as="geometry" />
</mxCell>
<!-- user_daily_usages -->
<mxCell id="tbl-user-daily-usages" value="&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; style=&quot;width:100%;font-size:11px;&quot;&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;background:#1E6091;color:#FFFFFF;font-weight:bold;text-align:center;&quot;&gt;user_daily_usages&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;id&lt;/b&gt; BIGINT &lt;b&gt;PK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;user_id → users &lt;b&gt;UK&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;stat_date BIGINT &lt;b&gt;UK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;ai_recommend_count BIGINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;outfit_share_count BIGINT&lt;/td&gt;&lt;td&gt;closet_share_count BIGINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;⋯ 公共字段&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" style="shape=table;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#1E6091;rounded=0;" vertex="1" parent="1">
<mxGeometry x="60" y="440" width="300" height="116" as="geometry" />
</mxCell>
<!-- user_notifications -->
<mxCell id="tbl-user-notifications" value="&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; style=&quot;width:100%;font-size:11px;&quot;&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;background:#1E6091;color:#FFFFFF;font-weight:bold;text-align:center;&quot;&gt;user_notifications&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;id&lt;/b&gt; BIGINT &lt;b&gt;PK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;notification_uuid VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;user_id → users&lt;/td&gt;&lt;td&gt;msg_type TINYINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;sender_id BIGINT&lt;/td&gt;&lt;td&gt;title VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;content VARCHAR&lt;/td&gt;&lt;td&gt;is_read TINYINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;read_time BIGINT&lt;/td&gt;&lt;td&gt;⋯ 公共字段&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" style="shape=table;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#1E6091;rounded=0;" vertex="1" parent="1">
<mxGeometry x="60" y="578" width="300" height="134" as="geometry" />
</mxCell>
<!-- quota_flow_logs -->
<mxCell id="tbl-quota-flow-logs" value="&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; style=&quot;width:100%;font-size:11px;&quot;&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;background:#1E6091;color:#FFFFFF;font-weight:bold;text-align:center;&quot;&gt;quota_flow_logs&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;id&lt;/b&gt; BIGINT &lt;b&gt;PK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;quota_flow_uuid VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;user_id → users&lt;/td&gt;&lt;td&gt;change_target TINYINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;change_type TINYINT &lt;b&gt;UK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;change_num BIGINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;old_value BIGINT&lt;/td&gt;&lt;td&gt;new_value BIGINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;order_no VARCHAR &lt;b&gt;UK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;quota_type TINYINT &lt;b&gt;UK&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;related_id BIGINT&lt;/td&gt;&lt;td&gt;reason VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;⋯ 公共字段&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" style="shape=table;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#1E6091;rounded=0;" vertex="1" parent="1">
<mxGeometry x="380" y="90" width="280" height="152" as="geometry" />
</mxCell>
<!-- ============ 衣橱域实体 ============ -->
<!-- clothes -->
<mxCell id="tbl-clothes" value="&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; style=&quot;width:100%;font-size:11px;&quot;&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;background:#2E7D32;color:#FFFFFF;font-weight:bold;text-align:center;&quot;&gt;clothes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;id&lt;/b&gt; BIGINT &lt;b&gt;PK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;clothes_uuid VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;user_id → users&lt;/td&gt;&lt;td&gt;category_main VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;category_sub VARCHAR&lt;/td&gt;&lt;td&gt;style VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;color VARCHAR&lt;/td&gt;&lt;td&gt;color_sub VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;thickness VARCHAR&lt;/td&gt;&lt;td&gt;version VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;material VARCHAR&lt;/td&gt;&lt;td&gt;pattern VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;sleeve_type VARCHAR&lt;/td&gt;&lt;td&gt;clothes_type VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;neckline_type VARCHAR&lt;/td&gt;&lt;td&gt;formality VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;occasions VARCHAR&lt;/td&gt;&lt;td&gt;visual_impact VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;name VARCHAR&lt;/td&gt;&lt;td&gt;remark VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;processed_image VARCHAR&lt;/td&gt;&lt;td&gt;image_size BIGINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;image_process_status TINYINT&lt;/td&gt;&lt;td&gt;fail_reason VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;⋯ 公共字段&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" style="shape=table;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#2E7D32;rounded=0;" vertex="1" parent="1">
<mxGeometry x="740" y="90" width="300" height="290" as="geometry" />
</mxCell>
<!-- closet_shares -->
<mxCell id="tbl-closet-shares" value="&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; style=&quot;width:100%;font-size:11px;&quot;&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;background:#2E7D32;color:#FFFFFF;font-weight:bold;text-align:center;&quot;&gt;closet_shares&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;id&lt;/b&gt; BIGINT &lt;b&gt;PK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;share_uuid VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;user_id → users&lt;/td&gt;&lt;td&gt;share_type TINYINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;expire_time BIGINT&lt;/td&gt;&lt;td&gt;status TINYINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;⋯ 公共字段&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" style="shape=table;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#2E7D32;rounded=0;" vertex="1" parent="1">
<mxGeometry x="740" y="410" width="300" height="116" as="geometry" />
</mxCell>
<!-- closet_share_items -->
<mxCell id="tbl-closet-share-items" value="&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; style=&quot;width:100%;font-size:11px;&quot;&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;background:#2E7D32;color:#FFFFFF;font-weight:bold;text-align:center;&quot;&gt;closet_share_items&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;id&lt;/b&gt; BIGINT &lt;b&gt;PK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;share_uuid → closet_shares&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;clothes_id → clothes&lt;/td&gt;&lt;td&gt;⋯ 公共字段&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" style="shape=table;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#2E7D32;rounded=0;" vertex="1" parent="1">
<mxGeometry x="740" y="546" width="300" height="72" as="geometry" />
</mxCell>
<!-- closet_audit_logs -->
<mxCell id="tbl-closet-audit-logs" value="&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; style=&quot;width:100%;font-size:11px;&quot;&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;background:#2E7D32;color:#FFFFFF;font-weight:bold;text-align:center;&quot;&gt;closet_audit_logs&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;id&lt;/b&gt; BIGINT &lt;b&gt;PK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;target_id → closet_shares&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;audit_result TINYINT&lt;/td&gt;&lt;td&gt;reject_reason VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;audit_time BIGINT&lt;/td&gt;&lt;td&gt;⋯ 公共字段&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" style="shape=table;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#2E7D32;rounded=0;" vertex="1" parent="1">
<mxGeometry x="740" y="638" width="300" height="94" as="geometry" />
</mxCell>
<!-- outfits -->
<mxCell id="tbl-outfits" value="&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; style=&quot;width:100%;font-size:11px;&quot;&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;background:#2E7D32;color:#FFFFFF;font-weight:bold;text-align:center;&quot;&gt;outfits&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;id&lt;/b&gt; BIGINT &lt;b&gt;PK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;outfit_uuid VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;user_id → users&lt;/td&gt;&lt;td&gt;outfit_name VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;outfit_desc VARCHAR&lt;/td&gt;&lt;td&gt;scene VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;source TINYINT&lt;/td&gt;&lt;td&gt;is_public TINYINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;audit_status TINYINT&lt;/td&gt;&lt;td&gt;status TINYINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;⋯ 公共字段&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" style="shape=table;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#2E7D32;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1080" y="90" width="300" height="140" as="geometry" />
</mxCell>
<!-- outfit_items -->
<mxCell id="tbl-outfit-items" value="&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; style=&quot;width:100%;font-size:11px;&quot;&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;background:#2E7D32;color:#FFFFFF;font-weight:bold;text-align:center;&quot;&gt;outfit_items&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;id&lt;/b&gt; BIGINT &lt;b&gt;PK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;outfit_id → outfits&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;clothes_id → clothes&lt;/td&gt;&lt;td&gt;⋯ 公共字段&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" style="shape=table;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#2E7D32;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1080" y="250" width="300" height="72" as="geometry" />
</mxCell>
<!-- collects -->
<mxCell id="tbl-collects" value="&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; style=&quot;width:100%;font-size:11px;&quot;&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;background:#2E7D32;color:#FFFFFF;font-weight:bold;text-align:center;&quot;&gt;collects&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;id&lt;/b&gt; BIGINT &lt;b&gt;PK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;collect_type TINYINT &lt;b&gt;UK&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;target_id → outfits &lt;b&gt;UK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;user_id → users &lt;b&gt;UK&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;status TINYINT&lt;/td&gt;&lt;td&gt;⋯ 公共字段&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" style="shape=table;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#2E7D32;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1080" y="342" width="300" height="94" as="geometry" />
</mxCell>
<!-- likes -->
<mxCell id="tbl-likes" value="&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; style=&quot;width:100%;font-size:11px;&quot;&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;background:#2E7D32;color:#FFFFFF;font-weight:bold;text-align:center;&quot;&gt;likes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;id&lt;/b&gt; BIGINT &lt;b&gt;PK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;like_type TINYINT &lt;b&gt;UK&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;target_id → outfits &lt;b&gt;UK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;user_id → users &lt;b&gt;UK&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;status TINYINT&lt;/td&gt;&lt;td&gt;⋯ 公共字段&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" style="shape=table;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#2E7D32;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1080" y="456" width="300" height="94" as="geometry" />
</mxCell>
<!-- outfit_audit_logs -->
<mxCell id="tbl-outfit-audit-logs" value="&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; style=&quot;width:100%;font-size:11px;&quot;&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;background:#2E7D32;color:#FFFFFF;font-weight:bold;text-align:center;&quot;&gt;outfit_audit_logs&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;id&lt;/b&gt; BIGINT &lt;b&gt;PK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;target_id → outfits&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;audit_result TINYINT&lt;/td&gt;&lt;td&gt;reject_reason VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;audit_time BIGINT&lt;/td&gt;&lt;td&gt;⋯ 公共字段&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" style="shape=table;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#2E7D32;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1080" y="570" width="300" height="94" as="geometry" />
</mxCell>
<!-- ============ 交易域实体 ============ -->
<!-- goods -->
<mxCell id="tbl-goods" value="&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; style=&quot;width:100%;font-size:11px;&quot;&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;background:#C77700;color:#FFFFFF;font-weight:bold;text-align:center;&quot;&gt;goods&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;id&lt;/b&gt; BIGINT &lt;b&gt;PK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;goods_code VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;goods_name VARCHAR&lt;/td&gt;&lt;td&gt;goods_type TINYINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;price BIGINT&lt;/td&gt;&lt;td&gt;discount_price BIGINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;member_days BIGINT&lt;/td&gt;&lt;td&gt;cos_quota BIGINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ai_recommend_quota BIGINT&lt;/td&gt;&lt;td&gt;closet_share_quota BIGINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;outfit_share_quota BIGINT&lt;/td&gt;&lt;td&gt;description VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;status TINYINT&lt;/td&gt;&lt;td&gt;⋯ 公共字段&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" style="shape=table;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#C77700;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1960" y="90" width="280" height="160" as="geometry" />
</mxCell>
<!-- orders -->
<mxCell id="tbl-orders" value="&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; style=&quot;width:100%;font-size:11px;&quot;&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;background:#C77700;color:#FFFFFF;font-weight:bold;text-align:center;&quot;&gt;orders&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;id&lt;/b&gt; BIGINT &lt;b&gt;PK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;order_no VARCHAR &lt;b&gt;UK&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;user_id → users&lt;/td&gt;&lt;td&gt;goods_id → goods&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;goods_name VARCHAR&lt;/td&gt;&lt;td&gt;unit_price BIGINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;total_amount BIGINT&lt;/td&gt;&lt;td&gt;pay_amount BIGINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;pay_channel TINYINT&lt;/td&gt;&lt;td&gt;order_status TINYINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;transaction_id VARCHAR&lt;/td&gt;&lt;td&gt;member_days BIGINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;cos_quota BIGINT&lt;/td&gt;&lt;td&gt;ai_recommend_quota BIGINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;closet_share_quota BIGINT&lt;/td&gt;&lt;td&gt;outfit_share_quota BIGINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;expire_time BIGINT&lt;/td&gt;&lt;td&gt;pay_time BIGINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;refund_time BIGINT&lt;/td&gt;&lt;td&gt;refund_amount BIGINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;remark VARCHAR&lt;/td&gt;&lt;td&gt;callback_raw VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;⋯ 公共字段&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" style="shape=table;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#C77700;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1960" y="270" width="280" height="240" as="geometry" />
</mxCell>
<!-- refund_flow_logs -->
<mxCell id="tbl-refund-flow-logs" value="&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; style=&quot;width:100%;font-size:11px;&quot;&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;background:#C77700;color:#FFFFFF;font-weight:bold;text-align:center;&quot;&gt;refund_flow_logs&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;id&lt;/b&gt; BIGINT &lt;b&gt;PK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;order_id → orders&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;order_no VARCHAR&lt;/td&gt;&lt;td&gt;user_id → users&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;refund_no VARCHAR &lt;b&gt;UK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;wechat_refund_no VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;refund_amount BIGINT&lt;/td&gt;&lt;td&gt;refund_reason VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;status TINYINT&lt;/td&gt;&lt;td&gt;apply_time BIGINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;success_time BIGINT&lt;/td&gt;&lt;td&gt;fail_reason VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;callback_raw VARCHAR&lt;/td&gt;&lt;td&gt;⋯ 公共字段&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" style="shape=table;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#C77700;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1960" y="530" width="280" height="160" as="geometry" />
</mxCell>
<!-- vip_flow_logs -->
<mxCell id="tbl-vip-flow-logs" value="&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; style=&quot;width:100%;font-size:11px;&quot;&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;background:#C77700;color:#FFFFFF;font-weight:bold;text-align:center;&quot;&gt;vip_flow_logs&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;id&lt;/b&gt; BIGINT &lt;b&gt;PK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;user_id → users&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;change_type TINYINT &lt;b&gt;UK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;old_vip_type TINYINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;new_vip_type TINYINT&lt;/td&gt;&lt;td&gt;old_vip_expire BIGINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;new_vip_expire BIGINT&lt;/td&gt;&lt;td&gt;order_no VARCHAR &lt;b&gt;UK&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;source TINYINT&lt;/td&gt;&lt;td&gt;reason VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;⋯ 公共字段&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" style="shape=table;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#C77700;rounded=0;" vertex="1" parent="1">
<mxGeometry x="2260" y="90" width="280" height="140" as="geometry" />
</mxCell>
<!-- benefit_grant_tasks -->
<mxCell id="tbl-benefit-grant-tasks" value="&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; style=&quot;width:100%;font-size:11px;&quot;&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;background:#C77700;color:#FFFFFF;font-weight:bold;text-align:center;&quot;&gt;benefit_grant_tasks&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;id&lt;/b&gt; BIGINT &lt;b&gt;PK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;user_id → users&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;order_no VARCHAR &lt;b&gt;UK&lt;/b&gt; → orders&lt;/td&gt;&lt;td&gt;goods_id → goods&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;benefit_type TINYINT &lt;b&gt;UK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;amount BIGINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;status TINYINT&lt;/td&gt;&lt;td&gt;retry_count INT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;max_retry INT&lt;/td&gt;&lt;td&gt;last_error VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;⋯ 公共字段&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" style="shape=table;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#C77700;rounded=0;" vertex="1" parent="1">
<mxGeometry x="2260" y="250" width="280" height="120" as="geometry" />
</mxCell>
<!-- ============ AI/运营域实体 ============ -->
<!-- horoscopes -->
<mxCell id="tbl-horoscopes" value="&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; style=&quot;width:100%;font-size:11px;&quot;&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;background:#6C3FA0;color:#FFFFFF;font-weight:bold;text-align:center;&quot;&gt;horoscopes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;id&lt;/b&gt; BIGINT &lt;b&gt;PK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;stat_date BIGINT &lt;b&gt;UK&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;zodiac VARCHAR &lt;b&gt;UK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;overall_score TINYINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;love_score TINYINT&lt;/td&gt;&lt;td&gt;career_score TINYINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;wealth_score TINYINT&lt;/td&gt;&lt;td&gt;daily_text VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;lucky_color VARCHAR&lt;/td&gt;&lt;td&gt;lucky_number VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;⋯ 公共字段&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" style="shape=table;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#6C3FA0;rounded=0;" vertex="1" parent="1">
<mxGeometry x="60" y="750" width="300" height="120" as="geometry" />
</mxCell>
<!-- ai_recommend_flow_logs -->
<mxCell id="tbl-ai-recommend-flow-logs" value="&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; style=&quot;width:100%;font-size:11px;&quot;&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;background:#6C3FA0;color:#FFFFFF;font-weight:bold;text-align:center;&quot;&gt;ai_recommend_flow_logs&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;id&lt;/b&gt; BIGINT &lt;b&gt;PK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;request_id VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;server_request_id VARCHAR&lt;/td&gt;&lt;td&gt;user_id → users&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;model_version VARCHAR&lt;/td&gt;&lt;td&gt;prompt_tokens BIGINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;completion_tokens BIGINT&lt;/td&gt;&lt;td&gt;result_content VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;status TINYINT&lt;/td&gt;&lt;td&gt;fail_reason VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;request_time BIGINT&lt;/td&gt;&lt;td&gt;response_time BIGINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;⋯ 公共字段&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" style="shape=table;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#6C3FA0;rounded=0;" vertex="1" parent="1">
<mxGeometry x="60" y="890" width="300" height="140" as="geometry" />
</mxCell>
<!-- ai_horoscope_flow_logs -->
<mxCell id="tbl-ai-horoscope-flow-logs" value="&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; style=&quot;width:100%;font-size:11px;&quot;&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;background:#6C3FA0;color:#FFFFFF;font-weight:bold;text-align:center;&quot;&gt;ai_horoscope_flow_logs&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;id&lt;/b&gt; BIGINT &lt;b&gt;PK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;request_id VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;zodiac VARCHAR&lt;/td&gt;&lt;td&gt;server_request_id VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;stat_date BIGINT&lt;/td&gt;&lt;td&gt;model_version VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;prompt_tokens BIGINT&lt;/td&gt;&lt;td&gt;completion_tokens BIGINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;result_content VARCHAR&lt;/td&gt;&lt;td&gt;horoscope_id → horoscopes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;status TINYINT&lt;/td&gt;&lt;td&gt;fail_reason VARCHAR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;request_time BIGINT&lt;/td&gt;&lt;td&gt;response_time BIGINT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;⋯ 公共字段&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" style="shape=table;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#6C3FA0;rounded=0;" vertex="1" parent="1">
<mxGeometry x="380" y="750" width="280" height="160" as="geometry" />
</mxCell>
<!-- ============ 关系连线(ER:| 端为一,三叉端为多) ============ -->
<mxCell id="e-u-quotas" style="edgeStyle=orthogonalEdgeStyle;html=1;startArrow=ERone;startFill=0;endArrow=ERmany;endFill=0;strokeColor=#555555;rounded=0;exitX=0.2;exitY=1;entryX=0.2;entryY=0;" edge="1" parent="1" source="tbl-users" target="tbl-user-quotas"><mxGeometry relative="1" as="geometry" /></mxCell>
<mxCell id="e-u-daily" style="edgeStyle=orthogonalEdgeStyle;html=1;startArrow=ERone;startFill=0;endArrow=ERmany;endFill=0;strokeColor=#555555;rounded=0;exitX=1;exitY=0.88;entryX=1;entryY=0.5;" edge="1" parent="1" source="tbl-users" target="tbl-user-daily-usages"><mxGeometry relative="1" as="geometry" /></mxCell>
<mxCell id="e-u-notifications" style="edgeStyle=orthogonalEdgeStyle;html=1;startArrow=ERone;startFill=0;endArrow=ERmany;endFill=0;strokeColor=#555555;rounded=0;exitX=1;exitY=0.96;entryX=1;entryY=0.5;" edge="1" parent="1" source="tbl-users" target="tbl-user-notifications"><mxGeometry relative="1" as="geometry" /></mxCell>
<mxCell id="e-u-flow-logs" style="edgeStyle=orthogonalEdgeStyle;html=1;startArrow=ERone;startFill=0;endArrow=ERmany;endFill=0;strokeColor=#555555;rounded=0;exitX=1;exitY=0.08;entryX=0;entryY=0.5;" edge="1" parent="1" source="tbl-users" target="tbl-quota-flow-logs"><mxGeometry relative="1" as="geometry" /></mxCell>
<mxCell id="e-u-clothes" style="edgeStyle=orthogonalEdgeStyle;html=1;startArrow=ERone;startFill=0;endArrow=ERmany;endFill=0;strokeColor=#555555;rounded=0;exitX=1;exitY=0.2;entryX=0;entryY=0.2;" edge="1" parent="1" source="tbl-users" target="tbl-clothes"><mxGeometry relative="1" as="geometry" /></mxCell>
<mxCell id="e-u-outfits" style="edgeStyle=orthogonalEdgeStyle;html=1;startArrow=ERone;startFill=0;endArrow=ERmany;endFill=0;strokeColor=#555555;rounded=0;exitX=1;exitY=0.35;entryX=0;entryY=0.4;" edge="1" parent="1" source="tbl-users" target="tbl-outfits"><mxGeometry relative="1" as="geometry" /></mxCell>
<mxCell id="e-u-closet-shares" style="edgeStyle=orthogonalEdgeStyle;html=1;startArrow=ERone;startFill=0;endArrow=ERmany;endFill=0;strokeColor=#555555;rounded=0;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1" source="tbl-users" target="tbl-closet-shares"><mxGeometry relative="1" as="geometry" /></mxCell>
<mxCell id="e-u-collects" style="edgeStyle=orthogonalEdgeStyle;html=1;startArrow=ERone;startFill=0;endArrow=ERmany;endFill=0;strokeColor=#555555;rounded=0;exitX=1;exitY=0.65;entryX=0;entryY=0.5;" edge="1" parent="1" source="tbl-users" target="tbl-collects"><mxGeometry relative="1" as="geometry" /></mxCell>
<mxCell id="e-u-likes" style="edgeStyle=orthogonalEdgeStyle;html=1;startArrow=ERone;startFill=0;endArrow=ERmany;endFill=0;strokeColor=#555555;rounded=0;exitX=1;exitY=0.8;entryX=0;entryY=0.5;" edge="1" parent="1" source="tbl-users" target="tbl-likes"><mxGeometry relative="1" as="geometry" /></mxCell>
<mxCell id="e-u-orders" style="edgeStyle=orthogonalEdgeStyle;html=1;startArrow=ERone;startFill=0;endArrow=ERmany;endFill=0;strokeColor=#555555;rounded=0;exitX=0.3;exitY=0;entryX=0.3;entryY=0;" edge="1" parent="1" source="tbl-users" target="tbl-orders"><mxGeometry relative="1" as="geometry" /></mxCell>
<mxCell id="e-u-refund" style="edgeStyle=orthogonalEdgeStyle;html=1;startArrow=ERone;startFill=0;endArrow=ERmany;endFill=0;strokeColor=#555555;rounded=0;exitX=0.4;exitY=0;entryX=0.3;entryY=0;" edge="1" parent="1" source="tbl-users" target="tbl-refund-flow-logs"><mxGeometry relative="1" as="geometry" /></mxCell>
<mxCell id="e-u-vip" style="edgeStyle=orthogonalEdgeStyle;html=1;startArrow=ERone;startFill=0;endArrow=ERmany;endFill=0;strokeColor=#555555;rounded=0;exitX=0.15;exitY=0;entryX=0.5;entryY=0;" edge="1" parent="1" source="tbl-users" target="tbl-vip-flow-logs"><mxGeometry relative="1" as="geometry" /></mxCell>
<mxCell id="e-u-benefit" style="edgeStyle=orthogonalEdgeStyle;html=1;startArrow=ERone;startFill=0;endArrow=ERmany;endFill=0;strokeColor=#555555;rounded=0;exitX=0.2;exitY=0;entryX=0.5;entryY=0;" edge="1" parent="1" source="tbl-users" target="tbl-benefit-grant-tasks"><mxGeometry relative="1" as="geometry" /></mxCell>
<mxCell id="e-u-ai-rec" style="edgeStyle=orthogonalEdgeStyle;html=1;startArrow=ERone;startFill=0;endArrow=ERmany;endFill=0;strokeColor=#555555;rounded=0;exitX=0;exitY=0.9;entryX=0;entryY=0.5;" edge="1" parent="1" source="tbl-users" target="tbl-ai-recommend-flow-logs"><mxGeometry relative="1" as="geometry" /></mxCell>
<mxCell id="e-o-items" style="edgeStyle=orthogonalEdgeStyle;html=1;startArrow=ERone;startFill=0;endArrow=ERmany;endFill=0;strokeColor=#555555;rounded=0;exitX=0.4;exitY=1;entryX=0.4;entryY=0;" edge="1" parent="1" source="tbl-outfits" target="tbl-outfit-items"><mxGeometry relative="1" as="geometry" /></mxCell>
<mxCell id="e-o-audit" style="edgeStyle=orthogonalEdgeStyle;html=1;startArrow=ERone;startFill=0;endArrow=ERmany;endFill=0;strokeColor=#555555;rounded=0;exitX=1;exitY=0.8;entryX=1;entryY=0.5;" edge="1" parent="1" source="tbl-outfits" target="tbl-outfit-audit-logs"><mxGeometry relative="1" as="geometry" /></mxCell>
<mxCell id="e-o-collects" style="edgeStyle=orthogonalEdgeStyle;html=1;startArrow=ERone;startFill=0;endArrow=ERmany;endFill=0;strokeColor=#555555;rounded=0;exitX=1;exitY=0.3;entryX=1;entryY=0.5;" edge="1" parent="1" source="tbl-outfits" target="tbl-collects"><mxGeometry relative="1" as="geometry" /></mxCell>
<mxCell id="e-o-likes" style="edgeStyle=orthogonalEdgeStyle;html=1;startArrow=ERone;startFill=0;endArrow=ERmany;endFill=0;strokeColor=#555555;rounded=0;exitX=1;exitY=0.6;entryX=1;entryY=0.5;" edge="1" parent="1" source="tbl-outfits" target="tbl-likes"><mxGeometry relative="1" as="geometry" /></mxCell>
<mxCell id="e-c-outfit-items" style="edgeStyle=orthogonalEdgeStyle;html=1;startArrow=ERone;startFill=0;endArrow=ERmany;endFill=0;strokeColor=#555555;rounded=0;exitX=1;exitY=0.35;entryX=0;entryY=0.5;" edge="1" parent="1" source="tbl-clothes" target="tbl-outfit-items"><mxGeometry relative="1" as="geometry" /></mxCell>
<mxCell id="e-c-share-items" style="edgeStyle=orthogonalEdgeStyle;html=1;startArrow=ERone;startFill=0;endArrow=ERmany;endFill=0;strokeColor=#555555;rounded=0;exitX=0.55;exitY=1;entryX=0.45;entryY=0;" edge="1" parent="1" source="tbl-clothes" target="tbl-closet-share-items"><mxGeometry relative="1" as="geometry" /></mxCell>
<mxCell id="e-cs-items" style="edgeStyle=orthogonalEdgeStyle;html=1;startArrow=ERone;startFill=0;endArrow=ERmany;endFill=0;strokeColor=#555555;rounded=0;exitX=0.5;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="tbl-closet-shares" target="tbl-closet-share-items"><mxGeometry relative="1" as="geometry" /></mxCell>
<mxCell id="e-cs-audit" style="edgeStyle=orthogonalEdgeStyle;html=1;startArrow=ERone;startFill=0;endArrow=ERmany;endFill=0;strokeColor=#555555;rounded=0;exitX=0.85;exitY=1;entryX=0.85;entryY=0;" edge="1" parent="1" source="tbl-closet-shares" target="tbl-closet-audit-logs"><mxGeometry relative="1" as="geometry" /></mxCell>
<mxCell id="e-g-orders" style="edgeStyle=orthogonalEdgeStyle;html=1;startArrow=ERone;startFill=0;endArrow=ERmany;endFill=0;strokeColor=#555555;rounded=0;exitX=0.4;exitY=1;entryX=0.4;entryY=0;" edge="1" parent="1" source="tbl-goods" target="tbl-orders"><mxGeometry relative="1" as="geometry" /></mxCell>
<mxCell id="e-g-benefit" style="edgeStyle=orthogonalEdgeStyle;html=1;startArrow=ERone;startFill=0;endArrow=ERmany;endFill=0;strokeColor=#555555;rounded=0;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1" source="tbl-goods" target="tbl-benefit-grant-tasks"><mxGeometry relative="1" as="geometry" /></mxCell>
<mxCell id="e-o-refund" style="edgeStyle=orthogonalEdgeStyle;html=1;startArrow=ERone;startFill=0;endArrow=ERmany;endFill=0;strokeColor=#555555;rounded=0;exitX=0.3;exitY=1;entryX=0.3;entryY=0;" edge="1" parent="1" source="tbl-orders" target="tbl-refund-flow-logs"><mxGeometry relative="1" as="geometry" /></mxCell>
<mxCell id="e-o-benefit" style="edgeStyle=orthogonalEdgeStyle;html=1;startArrow=ERone;startFill=0;endArrow=ERmany;endFill=0;strokeColor=#555555;rounded=0;exitX=1;exitY=0.3;entryX=0;entryY=0.5;" edge="1" parent="1" source="tbl-orders" target="tbl-benefit-grant-tasks"><mxGeometry relative="1" as="geometry" /></mxCell>
<mxCell id="e-h-aih" style="edgeStyle=orthogonalEdgeStyle;html=1;startArrow=ERone;startFill=0;endArrow=ERmany;endFill=0;strokeColor=#555555;rounded=0;exitX=1;exitY=0.4;entryX=0;entryY=0.4;" edge="1" parent="1" source="tbl-horoscopes" target="tbl-ai-horoscope-flow-logs"><mxGeometry relative="1" as="geometry" /></mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>