Populate demo CRM with 24 DAO members and delegation network
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
d2637aff0b
commit
fb9448681c
|
|
@ -217,16 +217,100 @@ routes.get("/api/graph", async (c) => {
|
|||
|
||||
if (!token) {
|
||||
isDemoData = true;
|
||||
|
||||
// ── Demo DAO: 24 members with delegation-based trust ──
|
||||
const daoId = "demo-dao";
|
||||
const spaceHubId = "demo-space";
|
||||
nodes.push(
|
||||
{ id: "demo-1", label: "Alice", type: "person", data: {} },
|
||||
{ id: "demo-2", label: "Bob", type: "person", data: {} },
|
||||
{ id: "demo-3", label: "Acme Corp", type: "company", data: {} },
|
||||
);
|
||||
edges.push(
|
||||
{ source: "demo-1", target: "demo-3", type: "works_at" },
|
||||
{ source: "demo-2", target: "demo-3", type: "works_at" },
|
||||
{ source: "demo-1", target: "demo-2", type: "contact_of" },
|
||||
{ id: daoId, label: "Demo DAO", type: "company", data: { role: "dao" } },
|
||||
{ id: spaceHubId, label: "demo", type: "space" as any, data: {} },
|
||||
);
|
||||
|
||||
// Members: id, name, role, delegatedWeight per authority (gov, fin, dev)
|
||||
const members: Array<[string, string, string, number, number, number]> = [
|
||||
["m01", "Alice Chen", "steward", 0.95, 0.60, 0.40],
|
||||
["m02", "Bob Martinez", "steward", 0.80, 0.85, 0.30],
|
||||
["m03", "Carol Okafor", "steward", 0.70, 0.45, 0.90],
|
||||
["m04", "David Kim", "council", 0.65, 0.70, 0.55],
|
||||
["m05", "Eve Nakamura", "council", 0.55, 0.50, 0.75],
|
||||
["m06", "Frank Osei", "council", 0.50, 0.80, 0.35],
|
||||
["m07", "Grace Liu", "contributor", 0.40, 0.35, 0.85],
|
||||
["m08", "Hassan Patel", "contributor", 0.35, 0.65, 0.45],
|
||||
["m09", "Ingrid Svensson", "contributor", 0.45, 0.30, 0.60],
|
||||
["m10", "Jorge Reyes", "contributor", 0.30, 0.55, 0.50],
|
||||
["m11", "Kaia Tanaka", "contributor", 0.25, 0.40, 0.70],
|
||||
["m12", "Leo Adeyemi", "contributor", 0.35, 0.25, 0.55],
|
||||
["m13", "Maya Johansson", "member", 0.20, 0.30, 0.40],
|
||||
["m14", "Nia Mensah", "member", 0.15, 0.45, 0.20],
|
||||
["m15", "Omar Farouk", "member", 0.25, 0.20, 0.35],
|
||||
["m16", "Priya Sharma", "member", 0.10, 0.35, 0.30],
|
||||
["m17", "Quinn O'Brien", "member", 0.20, 0.15, 0.25],
|
||||
["m18", "Rosa Gutierrez", "member", 0.15, 0.20, 0.15],
|
||||
["m19", "Sam Achebe", "member", 0.10, 0.10, 0.45],
|
||||
["m20", "Tara Singh", "member", 0.05, 0.25, 0.10],
|
||||
["m21", "Uri Goldberg", "member", 0.12, 0.08, 0.20],
|
||||
["m22", "Valentina Costa", "member", 0.08, 0.15, 0.12],
|
||||
["m23", "Wei Zhang", "member", 0.18, 0.12, 0.08],
|
||||
["m24", "Yuki Mori", "member", 0.06, 0.05, 0.18],
|
||||
];
|
||||
|
||||
for (const [id, name, role, govW, finW, devW] of members) {
|
||||
const avgTrust = (govW + finW + devW) / 3;
|
||||
nodes.push({
|
||||
id, label: name, type: "rspace_user" as any,
|
||||
data: {
|
||||
role,
|
||||
trustScore: Math.round(avgTrust * 100) / 100,
|
||||
delegatedWeight: Math.round(Math.max(govW, finW, devW) * 100) / 100,
|
||||
trustScores: { "gov-ops": govW, "fin-ops": finW, "dev-ops": devW },
|
||||
},
|
||||
});
|
||||
edges.push({ source: id, target: spaceHubId, type: "member_of" });
|
||||
edges.push({ source: id, target: daoId, type: "works_at" });
|
||||
}
|
||||
|
||||
// ── Delegation edges: who delegates to whom, per authority ──
|
||||
// Governance delegations — Alice is top steward
|
||||
const govDelegations: Array<[string, string, number]> = [
|
||||
["m04", "m01", 0.8], ["m05", "m01", 0.6], ["m06", "m01", 0.5],
|
||||
["m07", "m04", 0.7], ["m08", "m02", 0.6], ["m09", "m01", 0.5],
|
||||
["m10", "m04", 0.4], ["m11", "m05", 0.5], ["m12", "m03", 0.6],
|
||||
["m13", "m02", 0.3], ["m14", "m06", 0.4], ["m15", "m01", 0.5],
|
||||
["m16", "m04", 0.3], ["m17", "m05", 0.4], ["m18", "m02", 0.3],
|
||||
["m19", "m03", 0.2], ["m20", "m06", 0.3], ["m21", "m01", 0.2],
|
||||
["m22", "m04", 0.2], ["m23", "m02", 0.4], ["m24", "m03", 0.1],
|
||||
];
|
||||
// Financial delegations — Bob is top steward
|
||||
const finDelegations: Array<[string, string, number]> = [
|
||||
["m04", "m02", 0.7], ["m05", "m06", 0.6], ["m03", "m02", 0.4],
|
||||
["m07", "m06", 0.5], ["m08", "m02", 0.8], ["m09", "m04", 0.3],
|
||||
["m10", "m02", 0.6], ["m11", "m06", 0.5], ["m12", "m08", 0.4],
|
||||
["m13", "m04", 0.3], ["m14", "m02", 0.7], ["m15", "m06", 0.3],
|
||||
["m16", "m08", 0.5], ["m17", "m04", 0.2], ["m18", "m02", 0.3],
|
||||
["m19", "m10", 0.2], ["m20", "m06", 0.4], ["m21", "m04", 0.1],
|
||||
["m22", "m02", 0.3], ["m23", "m08", 0.2], ["m24", "m14", 0.1],
|
||||
];
|
||||
// Dev-ops delegations — Carol is top steward
|
||||
const devDelegations: Array<[string, string, number]> = [
|
||||
["m04", "m03", 0.5], ["m05", "m03", 0.7], ["m01", "m03", 0.4],
|
||||
["m07", "m03", 0.9], ["m08", "m05", 0.4], ["m09", "m07", 0.6],
|
||||
["m10", "m05", 0.5], ["m11", "m03", 0.7], ["m12", "m07", 0.5],
|
||||
["m13", "m09", 0.4], ["m14", "m05", 0.2], ["m15", "m03", 0.3],
|
||||
["m16", "m07", 0.4], ["m17", "m11", 0.3], ["m18", "m09", 0.2],
|
||||
["m19", "m03", 0.6], ["m20", "m07", 0.2], ["m21", "m11", 0.3],
|
||||
["m22", "m05", 0.2], ["m23", "m09", 0.1], ["m24", "m03", 0.3],
|
||||
];
|
||||
|
||||
for (const [from, to, weight] of govDelegations) {
|
||||
edges.push({ source: from, target: to, type: "delegates_to", weight, authority: "gov-ops" } as any);
|
||||
}
|
||||
for (const [from, to, weight] of finDelegations) {
|
||||
edges.push({ source: from, target: to, type: "delegates_to", weight, authority: "fin-ops" } as any);
|
||||
}
|
||||
for (const [from, to, weight] of devDelegations) {
|
||||
edges.push({ source: from, target: to, type: "delegates_to", weight, authority: "dev-ops" } as any);
|
||||
}
|
||||
|
||||
for (const n of nodes) nodeIds.add(n.id);
|
||||
} else {
|
||||
const data = await twentyQuery(`{
|
||||
|
|
|
|||
Loading…
Reference in New Issue