Compare commits

..

No commits in common. "2f1f3a80719bc9d6e08478ec02b470e1729800bb" and "c0f188946fa76848ce31b4483b5d2c63a334b418" have entirely different histories.

10 changed files with 1 additions and 1785 deletions

View File

@ -1,6 +0,0 @@
curl --request POST \
--url http://aldebaran.test.svc.cluster.local:8000/api/v1/review/trigger_template1 \
--header 'Content-Type: application/json' \
--data '{
"tenant_id": "PINGCAP"
}'

View File

@ -1,64 +0,0 @@
1. 【团队季度业绩达成判断】
结论本季度目标完成难度较大需要转化大量Upside商机。
详细分析:
- 当前目标5,400,000
- 当前close0
- 当前FCST0
- 当前GAP5,400,000
- 当前Upside3,380,000
- 30%Upside1,014,000
- GAP值(5,400,000) > 0.3*Upside(1,014,000)
当前GAP值远超过Upside的30%说明本季度目标完成难度极大。需要在开发新商机的同时重点提升现有Upside商机的转化率。
2. 【趋势变化】
预测业绩下降总体下调500,000占目标值9.26%,说明预测业绩的完成概率在降低。
变化驱动因素:
- FCST变化(Commit+Closed)下降500,000
- 钟艳珍-沃尔玛(广东)百货有限公司-沃尔玛替换腾讯云-500,000-转至银行一部
- Upside变化所有权变更但总额不变
- 韩启微转出/肖章博接手:
- 厦门亿联网络技术股份有限公司-轻量版OEM-100,000
- 广州爱浦路网络技术有限公司-爱浦路-500,000
- 深圳市佳创视讯技术股份有限公司-Tidb敏捷版-100,000
3. 【业务进展分析】
commit和closed商机变化分析
- 结论期间FCST整体数字有减少对季度业绩完成有负面影响
- 详细分析:
- 转化为Closed的金额为0
- Commit总减少金额为500,000
- Commit净减少500,000
upside商机变化分析
- 结论:仅发生所有权变更,总额保持不变
- 详细分析:
- 涉及700,000的项目从韩启微转给肖章博
- 未有新增或减少的Upside商机
4. 【重点项目分析】
* **在Commit单子里预计成单金额最大的项目如下**
- 暂无Commit项目
* **在Upside单子里预计成单金额大于30万金额最大的项目如下**
1. 钟艳珍-厦门亿联网络技术股份有限公司-轻量版OEM-600,000-FY26Q2
5. 【人员完成分析】
- 预测可完成季度目标的销售人员0人
- 所有销售人员当前FCST均为0
- 基础预测BaseCamp有机会完成季度目标的销售人员0人
- 所有销售人员基础预测值均未达到目标值
- 业绩达成存在较大风险的销售人员BaseCamp低于目标值50%4人
1. 韩启微BaseCamp0目标1,200,000
2. 姚亮BaseCamp90,000目标1,200,000
3. 肖章博BaseCamp210,000目标1,000,000
4. 金豫玮BaseCamp714,000目标1,500,000

View File

@ -1,765 +0,0 @@
{
"kpi_data": [
{
"department": "新经济部",
"owner": "团队总计",
"account_level": "所有级别",
"total_visits": 26.0,
"end_customer": 20.0,
"channel": 6.0,
"call": 3.0,
"online": 5.0,
"offline": 2.0,
"completed_todos": 0.0,
"overdue_todos": 0.0,
"key_action_completed": 0.0,
"new_opportunities": 11,
"callhighs": 0,
"abps": 0,
"new_accounts": 7.0,
"total_visits_ids": [
"676ea293",
"130552ee",
"c1518f51",
"343bfdb5",
"0389dce3",
"d6c86e8c",
"34c921dc",
"9dac07a4",
"936637cc",
"553f4dab",
"c819dc9c",
"e13f5f94",
"2f1f85aa",
"24bf7f7e",
"56142269",
"27e1cfb0",
"246d75a2",
"16fabc81",
"570f89bb",
"b617c2fb",
"102f272d",
"c3d57d8b",
"997d73f1",
"553da792",
"5407fbcc",
"71d2a224"
],
"end_customer_ids": [
"676ea293",
"34c921dc",
"9dac07a4",
"936637cc",
"553f4dab",
"c819dc9c",
"e13f5f94",
"2f1f85aa",
"24bf7f7e",
"56142269",
"27e1cfb0",
"246d75a2",
"16fabc81",
"570f89bb",
"b617c2fb",
"102f272d",
"c3d57d8b",
"553da792",
"5407fbcc",
"71d2a224"
],
"channel_ids": [
"130552ee",
"c1518f51",
"343bfdb5",
"0389dce3",
"d6c86e8c",
"997d73f1"
],
"call_ids": [
"130552ee",
"343bfdb5",
"570f89bb"
],
"online_ids": [
"0389dce3",
"d6c86e8c",
"2f1f85aa",
"56142269",
"102f272d"
],
"offline_ids": [
"553f4dab",
"24bf7f7e"
],
"completed_todos_ids": [],
"overdue_todos_ids": [],
"key_action_completed_ids": [],
"new_opportunities_ids": [
"68762bc933b67900017ac33d",
"6874bdf20a85ed00012e9f6f",
"6874b4d3fdfc300001e0db4f",
"6874beb533b67900013693c2",
"6874bf86b64f2a0001a033af",
"68762b8d7d9cdc000175bc2c",
"6873befeb9feed00019449f1",
"687766320a85ed00013b4fd2",
"687616680a85ed0001502529",
"68770d0333b679000112a545",
"687779e7fdfc300001b76e65"
],
"callhighs_ids": [],
"abps_ids": [],
"new_accounts_ids": [
"686bcb72b510ef0001de24af",
"68513aff976b0c00019fe79c",
"6864a91e9a978d00018cb327",
"6418086634d6310001d52055",
"63ab9d8b93a21400010c90a3",
"66e1800b93262d0001c27704",
"5fc0a571e36d4b0001242a21"
]
},
{
"department": "新经济部",
"owner": "团队人均",
"account_level": "所有级别",
"total_visits": 5.2,
"end_customer": 4.0,
"channel": 1.2,
"call": 0.6,
"online": 1.0,
"offline": 0.4,
"completed_todos": 0.0,
"overdue_todos": 0.0,
"key_action_completed": 0.0,
"new_opportunities": 2.2,
"callhighs": 0.0,
"abps": 0.0,
"new_accounts": 1.75,
"total_visits_ids": [
"676ea293",
"130552ee",
"c1518f51",
"343bfdb5",
"0389dce3",
"d6c86e8c",
"34c921dc",
"9dac07a4",
"936637cc",
"553f4dab",
"c819dc9c",
"e13f5f94",
"2f1f85aa",
"24bf7f7e",
"56142269",
"27e1cfb0",
"246d75a2",
"16fabc81",
"570f89bb",
"b617c2fb",
"102f272d",
"c3d57d8b",
"997d73f1",
"553da792",
"5407fbcc",
"71d2a224"
],
"end_customer_ids": [
"676ea293",
"34c921dc",
"9dac07a4",
"936637cc",
"553f4dab",
"c819dc9c",
"e13f5f94",
"2f1f85aa",
"24bf7f7e",
"56142269",
"27e1cfb0",
"246d75a2",
"16fabc81",
"570f89bb",
"b617c2fb",
"102f272d",
"c3d57d8b",
"553da792",
"5407fbcc",
"71d2a224"
],
"channel_ids": [
"130552ee",
"c1518f51",
"343bfdb5",
"0389dce3",
"d6c86e8c",
"997d73f1"
],
"call_ids": [
"130552ee",
"343bfdb5",
"570f89bb"
],
"online_ids": [
"0389dce3",
"d6c86e8c",
"2f1f85aa",
"56142269",
"102f272d"
],
"offline_ids": [
"553f4dab",
"24bf7f7e"
],
"completed_todos_ids": [],
"overdue_todos_ids": [],
"key_action_completed_ids": [],
"new_opportunities_ids": [
"68762bc933b67900017ac33d",
"6874bdf20a85ed00012e9f6f",
"6874b4d3fdfc300001e0db4f",
"6874beb533b67900013693c2",
"6874bf86b64f2a0001a033af",
"68762b8d7d9cdc000175bc2c",
"6873befeb9feed00019449f1",
"687766320a85ed00013b4fd2",
"687616680a85ed0001502529",
"68770d0333b679000112a545",
"687779e7fdfc300001b76e65"
],
"callhighs_ids": [],
"abps_ids": [],
"new_accounts_ids": [
"686bcb72b510ef0001de24af",
"68513aff976b0c00019fe79c",
"6864a91e9a978d00018cb327",
"6418086634d6310001d52055",
"63ab9d8b93a21400010c90a3",
"66e1800b93262d0001c27704",
"5fc0a571e36d4b0001242a21"
]
},
{
"department": "新经济部",
"owner": null,
"account_level": null,
"children": [
{
"department": null,
"owner": "肖章博",
"account_level": "所有级别",
"total_visits": 6.0,
"total_visits_ids": [
"676ea293",
"130552ee",
"c1518f51",
"343bfdb5",
"0389dce3",
"d6c86e8c"
],
"end_customer": 1.0,
"end_customer_ids": [
"676ea293"
],
"channel": 5.0,
"channel_ids": [
"130552ee",
"c1518f51",
"343bfdb5",
"0389dce3",
"d6c86e8c"
],
"call": 2.0,
"call_ids": [
"130552ee",
"343bfdb5"
],
"online": 2.0,
"online_ids": [
"0389dce3",
"d6c86e8c"
],
"offline": 0.0,
"offline_ids": [],
"completed_todos": 0.0,
"completed_todos_ids": [],
"overdue_todos": 0.0,
"overdue_todos_ids": [],
"key_action_completed": 0.0,
"key_action_completed_ids": [],
"new_opportunities": 0,
"new_opportunities_ids": [],
"new_accounts": 0.0,
"new_accounts_ids": [],
"callhighs": 0,
"callhighs_ids": [],
"abps": 0,
"abps_ids": []
},
{
"department": null,
"owner": "彭琴",
"account_level": "所有级别",
"total_visits": 6.0,
"total_visits_ids": [
"34c921dc",
"9dac07a4",
"936637cc",
"553f4dab",
"c819dc9c",
"e13f5f94"
],
"end_customer": 6.0,
"end_customer_ids": [
"34c921dc",
"9dac07a4",
"936637cc",
"553f4dab",
"c819dc9c",
"e13f5f94"
],
"channel": 0.0,
"channel_ids": [],
"call": 0.0,
"call_ids": [],
"online": 0.0,
"online_ids": [],
"offline": 1.0,
"offline_ids": [
"553f4dab"
],
"completed_todos": 0.0,
"completed_todos_ids": [],
"overdue_todos": 0.0,
"overdue_todos_ids": [],
"key_action_completed": 0.0,
"key_action_completed_ids": [],
"new_opportunities": 6,
"new_opportunities_ids": [
"68762bc933b67900017ac33d",
"6874bdf20a85ed00012e9f6f",
"6874b4d3fdfc300001e0db4f",
"6874beb533b67900013693c2",
"6874bf86b64f2a0001a033af",
"68762b8d7d9cdc000175bc2c"
],
"new_accounts": 2.0,
"new_accounts_ids": [
"66e1800b93262d0001c27704",
"5fc0a571e36d4b0001242a21"
],
"callhighs": 0,
"callhighs_ids": [],
"abps": 0,
"abps_ids": []
},
{
"department": null,
"owner": "金豫玮",
"account_level": "所有级别",
"total_visits": 7.0,
"total_visits_ids": [
"2f1f85aa",
"24bf7f7e",
"56142269",
"27e1cfb0",
"246d75a2",
"16fabc81",
"570f89bb"
],
"end_customer": 7.0,
"end_customer_ids": [
"2f1f85aa",
"24bf7f7e",
"56142269",
"27e1cfb0",
"246d75a2",
"16fabc81",
"570f89bb"
],
"channel": 0.0,
"channel_ids": [],
"call": 1.0,
"call_ids": [
"570f89bb"
],
"online": 2.0,
"online_ids": [
"2f1f85aa",
"56142269"
],
"offline": 1.0,
"offline_ids": [
"24bf7f7e"
],
"completed_todos": 0.0,
"completed_todos_ids": [],
"overdue_todos": 0.0,
"overdue_todos_ids": [],
"key_action_completed": 0.0,
"key_action_completed_ids": [],
"new_opportunities": 2,
"new_opportunities_ids": [
"6873befeb9feed00019449f1",
"687766320a85ed00013b4fd2"
],
"new_accounts": 2.0,
"new_accounts_ids": [
"686bcb72b510ef0001de24af",
"6864a91e9a978d00018cb327"
],
"callhighs": 0,
"callhighs_ids": [],
"abps": 0,
"abps_ids": []
},
{
"department": null,
"owner": "杨丽娜",
"account_level": "所有级别",
"total_visits": 4.0,
"total_visits_ids": [
"b617c2fb",
"102f272d",
"c3d57d8b",
"997d73f1"
],
"end_customer": 3.0,
"end_customer_ids": [
"b617c2fb",
"102f272d",
"c3d57d8b"
],
"channel": 1.0,
"channel_ids": [
"997d73f1"
],
"call": 0.0,
"call_ids": [],
"online": 1.0,
"online_ids": [
"102f272d"
],
"offline": 0.0,
"offline_ids": [],
"completed_todos": 0.0,
"completed_todos_ids": [],
"overdue_todos": 0.0,
"overdue_todos_ids": [],
"key_action_completed": 0.0,
"key_action_completed_ids": [],
"new_opportunities": 2,
"new_opportunities_ids": [
"687616680a85ed0001502529",
"68770d0333b679000112a545"
],
"new_accounts": 2.0,
"new_accounts_ids": [
"68513aff976b0c00019fe79c",
"6418086634d6310001d52055"
],
"callhighs": 0,
"callhighs_ids": [],
"abps": 0,
"abps_ids": []
},
{
"department": null,
"owner": "郑海聪",
"account_level": "所有级别",
"total_visits": 3.0,
"total_visits_ids": [
"553da792",
"5407fbcc",
"71d2a224"
],
"end_customer": 3.0,
"end_customer_ids": [
"553da792",
"5407fbcc",
"71d2a224"
],
"channel": 0.0,
"channel_ids": [],
"call": 0.0,
"call_ids": [],
"online": 0.0,
"online_ids": [],
"offline": 0.0,
"offline_ids": [],
"completed_todos": 0.0,
"completed_todos_ids": [],
"overdue_todos": 0.0,
"overdue_todos_ids": [],
"key_action_completed": 0.0,
"key_action_completed_ids": [],
"new_opportunities": 1,
"new_opportunities_ids": [
"687779e7fdfc300001b76e65"
],
"new_accounts": 1.0,
"new_accounts_ids": ["63ab9d8b93a21400010c90a3"],
"callhighs": 0,
"callhighs_ids": [],
"abps": 0,
"abps_ids": []
}
]
},
{
"department": "通用事业部",
"owner": "团队总计",
"account_level": "所有级别",
"total_visits": 0.0,
"end_customer": 0.0,
"channel": 0.0,
"call": 0.0,
"online": 0.0,
"offline": 0.0,
"completed_todos": 1.0,
"overdue_todos": 0.0,
"key_action_completed": 0.0,
"new_opportunities": 4,
"callhighs": 0,
"abps": 0,
"new_accounts": 0.0,
"total_visits_ids": [],
"end_customer_ids": [],
"channel_ids": [],
"call_ids": [],
"online_ids": [],
"offline_ids": [],
"completed_todos_ids": ["dCZiCxeOzRoDPmeRfLQR"],
"overdue_todos_ids": [],
"key_action_completed_ids": [],
"new_opportunities_ids": [
"6873d18133b6790001c1373f",
"6873c872b64f2a00010ba3a7",
"6873d9bc33b6790001c2d6f8",
"687261a4b510ef0001951a74"
],
"callhighs_ids": [],
"abps_ids": [],
"new_accounts_ids": []
},
{
"department": "通用事业部",
"owner": "团队人均",
"account_level": "所有级别",
"total_visits": 0.0,
"end_customer": 0.0,
"channel": 0.0,
"call": 0.0,
"online": 0.0,
"offline": 0.0,
"completed_todos": 0.5,
"overdue_todos": 0.0,
"key_action_completed": 0.0,
"new_opportunities": 2.0,
"callhighs": 0.0,
"abps": 0.0,
"new_accounts": 0.0,
"total_visits_ids": [],
"end_customer_ids": [],
"channel_ids": [],
"call_ids": [],
"online_ids": [],
"offline_ids": [],
"completed_todos_ids": ["dCZiCxeOzRoDPmeRfLQR"],
"overdue_todos_ids": [],
"key_action_completed_ids": [],
"new_opportunities_ids": [
"6873d18133b6790001c1373f",
"6873c872b64f2a00010ba3a7",
"6873d9bc33b6790001c2d6f8",
"687261a4b510ef0001951a74"
],
"callhighs_ids": [],
"abps_ids": [],
"new_accounts_ids": []
},
{
"department": "通用事业部",
"owner": null,
"account_level": null,
"children": [
{
"department": null,
"owner": "姚亮",
"account_level": "所有级别",
"total_visits": 0.0,
"total_visits_ids": [],
"end_customer": 0.0,
"end_customer_ids": [],
"channel": 0.0,
"channel_ids": [],
"call": 0.0,
"call_ids": [],
"online": 0.0,
"online_ids": [],
"offline": 0.0,
"offline_ids": [],
"completed_todos": 0.0,
"completed_todos_ids": [],
"overdue_todos": 0.0,
"overdue_todos_ids": [],
"key_action_completed": 0.0,
"key_action_completed_ids": [],
"new_opportunities": 3,
"new_opportunities_ids": [
"6873d18133b6790001c1373f",
"6873c872b64f2a00010ba3a7",
"6873d9bc33b6790001c2d6f8"
],
"new_accounts": 0.0,
"new_accounts_ids": [],
"callhighs": 0,
"callhighs_ids": [],
"abps": 0,
"abps_ids": []
},
{
"department": null,
"owner": "肖章博",
"account_level": "所有级别",
"total_visits": 0.0,
"total_visits_ids": [],
"end_customer": 0.0,
"end_customer_ids": [],
"channel": 0.0,
"channel_ids": [],
"call": 0.0,
"call_ids": [],
"online": 0.0,
"online_ids": [],
"offline": 0.0,
"offline_ids": [],
"completed_todos": 1.0,
"completed_todos_ids": ["dCZiCxeOzRoDPmeRfLQR"],
"overdue_todos": 0.0,
"overdue_todos_ids": [],
"key_action_completed": 0.0,
"key_action_completed_ids": [],
"new_opportunities": 1,
"new_opportunities_ids": [
"687261a4b510ef0001951a74"
],
"new_accounts": 0.0,
"new_accounts_ids": [],
"callhighs": 0,
"callhighs_ids": [],
"abps": 0,
"abps_ids": []
}
]
}
],
"metadata": {
"department": "团队/部门",
"owner": "销售",
"account_level": "客户等级",
"total_visits": "拜访总量",
"total_visits_ids": "拜访总量明细ID",
"end_customer": "最终客户",
"end_customer_ids": "最终客户明细ID",
"channel": "渠道商",
"channel_ids": "渠道商明细ID",
"call": "电话",
"call_ids": "电话明细ID",
"online": "线上",
"online_ids": "线上明细ID",
"offline": "线下",
"offline_ids": "线下明细ID",
"completed_todos": "完成任务数",
"completed_todos_ids": "完成任务明细ID",
"overdue_todos": "现逾期任务数",
"overdue_todos_ids": "现逾期任务明细ID",
"key_action_completed": "Key Action完成数",
"key_action_completed_ids": "Key Action明细ID",
"new_opportunities": "新商机数",
"new_opportunities_ids": "新商机明细ID",
"new_accounts": "新客户数",
"new_accounts_ids": "新客户明细ID",
"callhighs": "Call Highs",
"callhighs_ids": "Call Highs明细ID",
"abps": "ABPs",
"abps_ids": "ABPs明细ID"
},
"insight": "明白,我将基于您提供的分析框架,对销售团队KPI数据进行全面分析。\n\n# 销售团队KPI分析报告\n\n## Part 1: 整体趋势解读与团队建议\n\n### 1.1 团队成员分布解读\n\n**分布形态分析:**\n- 所有7名成员(100%)都集中在\"低饱和度+低有效性\"象限\n- 新经济部5人、通用事业部2人,均处于双低区域\n\n**关键结论:**\n- 团队整体存在严重的系统性问题,表现出典型的\"集体躺平\"现象\n- 饱和度最高者(肖章博、金豫玮)仅为1.33,远低于4.0的标准线\n- 有效性全员为0,显示销售转化完全停滞\n\n### 1.2 团队指标偏离分析\n\n**指标对比:**\n- 新经济部:\n - 团队平均饱和度0.67 (标准差距-3.33)\n - 团队平均有效性0.00 (标准差距-1.75)\n- 通用事业部:\n - 团队平均饱和度0.00 (标准差距-4.00)\n - 团队平均有效性0.00 (标准差距-1.75)\n\n**偏离原因探究:**\n1. 可能存在严重的系统性障碍:\n - 市场环境是否出现重大不利变化?\n - 销售流程是否存在根本性断裂?\n - 产品竞争力是否严重受损?\n2. 管理层面问题:\n - KPI考核机制可能完全失效\n - 团队士气和动力严重不足\n - 缺乏有效的管理干预和激励措施\n\n### 1.3 团队改进建议\n\n**紧急行动建议:**\n\n1. **管理层立即介入:**\n - 召开紧急团队会议,明确当前危机状况\n - 一对一访谈所有成员,找出深层原因\n - 设立短期\"救急\"目标,重建团队信心\n\n2. **优化销售支持体系:**\n - 检查并消除可能的流程障碍\n - 提供必要的培训和工具支持\n - 建立日常监控和快速反馈机制\n\n3. **调整考核激励机制:**\n - 设定阶梯式的短期激励目标\n - 强化正向激励,表彰任何进步\n - 建立团队互助和经验分享机制\n\n## Part 2: 个人解读与行动建议\n\n### 新经济部\n\n**肖章博/金豫玮 (饱和度1.33, 有效性0.00):**\n- 虽然相对团队略好,但仍远未达标\n- 建议:\n 1. 保持现有活动频率,但需提升质量\n 2. 复盘现有客户接触,找出无效转化原因\n 3. 设定每周至少1个有效商机的目标\n\n**彭琴/杨丽娜 (饱和度0.33, 有效性0.00):**\n- 活动量和转化均严重不足\n- 建议:\n 1. 立即提升客户接触频次,目标翻倍\n 2. 每日必须完成基本拜访任务\n 3. 与团队表现较好者配对学习\n\n**郑海聪 (饱和度0.00, 有效性0.00):**\n- 完全处于停滞状态\n- 建议:\n 1. 必须立即启动基础销售活动\n 2. 制定每日最低工作量要求\n 3. 考虑是否适合继续销售岗位\n\n### 通用事业部\n\n**姚亮/肖章博 (饱和度0.00, 有效性0.00):**\n- 同样处于完全停滞状态\n- 建议:\n 1. 设定每日必达的最低活动量\n 2. 建立严格的日报制度\n 3. 一周内必须产生实质性商机\n\n以上分析基于提供的数据及框架。建议管理层将此视为严重警讯,需要立即采取强有力的干预措施。同时也建议进一步收集更多维度的数据(如:历史表现、市场环境、产品状况等),以便制定更精准的改进方案。",
"scatter_data": [
{
"value": [
1.33,
0.0
],
"name": "肖章博",
"team": "新经济部"
},
{
"value": [
0.33,
0.0
],
"name": "彭琴",
"team": "新经济部"
},
{
"value": [
1.33,
0.0
],
"name": "金豫玮",
"team": "新经济部"
},
{
"value": [
0.33,
0.0
],
"name": "杨丽娜",
"team": "新经济部"
},
{
"value": [
0.0,
0.0
],
"name": "郑海聪",
"team": "新经济部"
},
{
"value": [
0.0,
0.0
],
"name": "姚亮",
"team": "通用事业部"
},
{
"value": [
0.0,
0.0
],
"name": "肖章博",
"team": "通用事业部"
}
],
"team_scatter_data": [
{
"value": [
0.67,
0.0
],
"name": "新经济部",
"team": "All Departments"
},
{
"value": [
0.0,
0.0
],
"name": "通用事业部",
"team": "All Departments"
}
]
}

View File

@ -1,50 +0,0 @@
for account in accounts:
account_id = account.get("account_id", "")
account_name = account.get("account_name", "")
with crm_db_manager.get_session() as session:
# Method 1: Raw SQL query (most reliable)
try:
result = session.execute(
"SELECT * FROM crm_accounts WHERE unique_id = :account_id",
{"account_id": account_id}
).fetchone()
logger.info(f"Raw SQL result: {result}")
except Exception as e:
logger.error(f"Raw SQL query failed: {e}")
# Method 2: Dynamic table query using reflection
try:
from sqlalchemy import Table, MetaData
metadata = MetaData()
crm_accounts_table = Table('crm_accounts', metadata, autoload_with=crm_db_manager.engine)
result = session.query(crm_accounts_table).filter(
crm_accounts_table.c.unique_id == account_id
).first()
logger.info(f"Dynamic table result: {result}")
except Exception as e:
logger.error(f"Dynamic table query failed: {e}")
# Method 3: Get table columns first, then query
try:
# Get actual columns from database
columns_result = session.execute(
"SHOW COLUMNS FROM crm_accounts"
).fetchall()
actual_columns = [col[0] for col in columns_result]
logger.info(f"Actual columns in crm_accounts: {actual_columns}")
# Build query with only existing columns
select_columns = ", ".join(actual_columns)
result = session.execute(
f"SELECT {select_columns} FROM crm_accounts WHERE unique_id = :account_id",
{"account_id": account_id}
).fetchone()
logger.info(f"Column-aware result: {result}")
except Exception as e:
logger.error(f"Column-aware query failed: {e}")
# Original method (commented out due to model mismatch)
# account = session.query(CRMAccount).filter(CRMAccount.unique_id == account_id).first()
# logger.info(f"account: {account}")

View File

@ -1,441 +0,0 @@
以下是某公司的销售KPI数据
=== FY26Q1 ===
部门: 通用事业部
目标值: 1800000.0
当前精准预测FCST: 1040900.0 (精准预测达成率: 57.83%)
Gap: 759100.0 (变化: 0.0)
基础预测BaseCamp: 1040900.0 (基础预测达成率: 57.83%)
预测FCST构成:
- 已下单Closed: 1040900.0 (变化: 0.0)
- 确定下单Commit: 0.0 (变化: 0.0)
- 可能下单Upside: 0.0 (变化: 0.0)
新客户目标完成情况:
FCST_NE: 480900.0 (预测达成率: 0.0%)
--------------------------------------------------
部门: 总计
目标值: 1800000.0
当前精准预测FCST: 1040900.0 (精准预测达成率: 57.83%)
Gap: 759100.0 (变化: 0.0)
基础预测BaseCamp: 1040900.0 (基础预测达成率: 57.83%)
预测FCST构成:
- 已下单Closed: 1040900.0 (变化: 0.0)
- 确定下单Commit: 0.0 (变化: 0.0)
- 可能下单Upside: 0.0 (变化: 0.0)
新客户目标完成情况:
FCST_NE: 480900.0 (预测达成率: 26.72%)
--------------------------------------------------
=== FY26Q2 ===
部门: 通用事业部
目标值: 5400000.0
当前精准预测FCST: 0.0 (精准预测达成率: 0.0%)
Gap: 5400000.0 (变化: 500000.0)
基础预测BaseCamp: 1014000.0 (基础预测达成率: 18.78%)
预测FCST构成:
- 已下单Closed: 0.0 (变化: 0.0)
- 确定下单Commit: 0.0 (变化: -500000.0)
- 可能下单Upside: 3380000.0 (变化: 0.0)
--------------------------------------------------
部门: 总计
目标值: 5400000.0
当前精准预测FCST: 0.0 (精准预测达成率: 0.0%)
Gap: 5400000.0 (变化: 500000.0)
基础预测BaseCamp: 1014000.0 (基础预测达成率: 18.78%)
预测FCST构成:
- 已下单Closed: 0.0 (变化: 0.0)
- 确定下单Commit: 0.0 (变化: -500000.0)
- 可能下单Upside: 3380000.0 (变化: 0.0)
--------------------------------------------------
=== FY26Q3 ===
部门: 通用事业部
目标值: 5400000.0
当前精准预测FCST: 169556.0 (精准预测达成率: 3.14%)
Gap: 5230444.0 (变化: 0.0)
基础预测BaseCamp: 225644.8 (基础预测达成率: 4.18%)
预测FCST构成:
- 已下单Closed: 0.0 (变化: 0.0)
- 确定下单Commit: 169556.0 (变化: 0.0)
- 可能下单Upside: 300000.0 (变化: 0.0)
--------------------------------------------------
部门: 总计
目标值: 5400000.0
当前精准预测FCST: 169556.0 (精准预测达成率: 3.14%)
Gap: 5230444.0 (变化: 0.0)
基础预测BaseCamp: 225644.8 (基础预测达成率: 4.18%)
预测FCST构成:
- 已下单Closed: 0.0 (变化: 0.0)
- 确定下单Commit: 169556.0 (变化: 0.0)
- 可能下单Upside: 300000.0 (变化: 0.0)
--------------------------------------------------
=== FY26Q4 ===
部门: 通用事业部
目标值: 5400000.0
当前精准预测FCST: 687652.0 (精准预测达成率: 12.73%)
Gap: 4712348.0 (变化: 0.0)
基础预测BaseCamp: 550121.6 (基础预测达成率: 10.19%)
预测FCST构成:
- 已下单Closed: 0.0 (变化: 0.0)
- 确定下单Commit: 687652.0 (变化: 0.0)
- 可能下单Upside: 0.0 (变化: 0.0)
--------------------------------------------------
部门: 总计
目标值: 5400000.0
当前精准预测FCST: 687652.0 (精准预测达成率: 12.73%)
Gap: 4712348.0 (变化: 0.0)
基础预测BaseCamp: 550121.6 (基础预测达成率: 10.19%)
预测FCST构成:
- 已下单Closed: 0.0 (变化: 0.0)
- 确定下单Commit: 687652.0 (变化: 0.0)
- 可能下单Upside: 0.0 (变化: 0.0)
--------------------------------------------------
=== 销售人员KPI数据 ===
部门: 通用事业部
时间周期: FY26Q1
销售人员: 肖章博
目标值: 0.0
当前精准预测FCST: 1015900.0 (精准预测达成率: 0.0%)
Gap: -1015900.0 (变化: -1015900.0)
基础预测BaseCamp: 1015900.0 (基础预测达成率: 0.0%)
精准预测FCST构成:
- 已下单Closed: 1015900.0 (变化: 1015900.0)
- 确定下单Commit: 0.0 (变化: 0.0)
- 可能下单Upside: 0.0 (变化: 0.0)
销售人员: 金豫玮
目标值: 500000.0
当前精准预测FCST: 25000.0 (精准预测达成率: 5.0%)
Gap: 475000.0 (变化: 0.0)
基础预测BaseCamp: 25000.0 (基础预测达成率: 5.0%)
精准预测FCST构成:
- 已下单Closed: 25000.0 (变化: 0.0)
- 确定下单Commit: 0.0 (变化: 0.0)
- 可能下单Upside: 0.0 (变化: 0.0)
时间周期: FY26Q2
销售人员: 韩启微
目标值: 1200000.0
当前精准预测FCST: 0.0 (精准预测达成率: 0.0%)
Gap: 1200000.0 (变化: 0.0)
基础预测BaseCamp: 0.0 (基础预测达成率: 0.0%)
精准预测FCST构成:
- 已下单Closed: 0.0 (变化: 0.0)
- 确定下单Commit: 0.0 (变化: 0.0)
- 可能下单Upside: 0.0 (变化: -700000.0)
销售人员: 肖章博
目标值: 0.0
当前精准预测FCST: 0.0 (精准预测达成率: 0.0%)
Gap: 0.0 (变化: 0.0)
基础预测BaseCamp: 210000.0 (基础预测达成率: 0.0%)
精准预测FCST构成:
- 已下单Closed: 0.0 (变化: 0.0)
- 确定下单Commit: 0.0 (变化: 0.0)
- 可能下单Upside: 700000.0 (变化: 700000.0)
销售人员: 姚亮
目标值: 1200000.0
当前精准预测FCST: 0.0 (精准预测达成率: 0.0%)
Gap: 1200000.0 (变化: 0.0)
基础预测BaseCamp: 90000.0 (基础预测达成率: 7.5%)
精准预测FCST构成:
- 已下单Closed: 0.0 (变化: 0.0)
- 确定下单Commit: 0.0 (变化: 0.0)
- 可能下单Upside: 300000.0 (变化: 0.0)
销售人员: 金豫玮
目标值: 1500000.0
当前精准预测FCST: 0.0 (精准预测达成率: 0.0%)
Gap: 1500000.0 (变化: 0.0)
基础预测BaseCamp: 714000.0 (基础预测达成率: 47.6%)
精准预测FCST构成:
- 已下单Closed: 0.0 (变化: 0.0)
- 确定下单Commit: 0.0 (变化: 0.0)
- 可能下单Upside: 2380000.0 (变化: 0.0)
时间周期: FY26Q3
销售人员: 肖章博
目标值: 0.0
当前精准预测FCST: 169556.0 (精准预测达成率: 0.0%)
Gap: -169556.0 (变化: -169556.0)
基础预测BaseCamp: 135644.8 (基础预测达成率: 0.0%)
精准预测FCST构成:
- 已下单Closed: 0.0 (变化: 0.0)
- 确定下单Commit: 169556.0 (变化: 169556.0)
- 可能下单Upside: 0.0 (变化: 0.0)
销售人员: 姚亮
目标值: 1200000.0
当前精准预测FCST: 0.0 (精准预测达成率: 0.0%)
Gap: 1200000.0 (变化: 0.0)
基础预测BaseCamp: 0.0 (基础预测达成率: 0.0%)
精准预测FCST构成:
- 已下单Closed: 0.0 (变化: 0.0)
- 确定下单Commit: 0.0 (变化: 0.0)
- 可能下单Upside: 0.0 (变化: 0.0)
销售人员: 金豫玮
目标值: 1500000.0
当前精准预测FCST: 0.0 (精准预测达成率: 0.0%)
Gap: 1500000.0 (变化: 0.0)
基础预测BaseCamp: 90000.0 (基础预测达成率: 6.0%)
精准预测FCST构成:
- 已下单Closed: 0.0 (变化: 0.0)
- 确定下单Commit: 0.0 (变化: 0.0)
- 可能下单Upside: 300000.0 (变化: 0.0)
时间周期: FY26Q4
销售人员: 肖章博
目标值: 0.0
当前精准预测FCST: 687652.0 (精准预测达成率: 0.0%)
Gap: -687652.0 (变化: -687652.0)
基础预测BaseCamp: 550121.6 (基础预测达成率: 0.0%)
精准预测FCST构成:
- 已下单Closed: 0.0 (变化: 0.0)
- 确定下单Commit: 687652.0 (变化: 687652.0)
- 可能下单Upside: 0.0 (变化: 0.0)
=== 通用事业部 ===
部门精准预测FCST总体变化: -500000
部门精准预测FCST(可能下单Upside)总体变化: 0
部门基础预测BaseCamp: 1014000.0
销售人员项目变化详情:
钟艳珍:
- 精准预测FCST变化值: -500000
- 精准预测FCST(可能下单Upside)变化值: 0
- 基础预测BaseCamp: 400000.0
精准预测FCST(已下单Closed+确定下单Commit)变化:
商机: 沃尔玛替换腾讯云
客户: 沃尔玛(广东)百货有限公司
精准预测FCST变化值: -500000
变化字段:
- owner_main_department: 通用事业部 -> 银行一部
------------------------------
肖章博:
- 精准预测FCST变化值: 0
- 精准预测FCST(可能下单Upside)变化值: 700000
- 基础预测BaseCamp: 0
精准预测FCST(可能下单Upside)变化:
商机: Tidb敏捷版-佳创视讯
客户: 深圳市佳创视讯技术股份有限公司
精准预测FCST变化值: 100000
变化字段:
- owner: 韩启微 -> 肖章博
商机: 轻量版OEM
客户: 厦门亿联网络技术股份有限公司
精准预测FCST变化值: 100000
变化字段:
- owner: 韩启微 -> 肖章博
商机: 爱浦路
客户: 广州爱浦路网络技术有限公司
精准预测FCST变化值: 500000
变化字段:
- owner: 韩启微 -> 肖章博
------------------------------
韩启微:
- 精准预测FCST变化值: 0
- 精准预测FCST(可能下单Upside)变化值: -700000
- 基础预测BaseCamp: 0
精准预测FCST(可能下单Upside)变化:
商机: Tidb敏捷版-佳创视讯
客户: 深圳市佳创视讯技术股份有限公司
精准预测FCST变化值: -100000
变化字段:
- owner: 韩启微 -> 肖章博
商机: 轻量版OEM
客户: 厦门亿联网络技术股份有限公司
精准预测FCST变化值: -100000
变化字段:
- owner: 韩启微 -> 肖章博
商机: 爱浦路
客户: 广州爱浦路网络技术有限公司
精准预测FCST变化值: -500000
变化字段:
- owner: 韩启微 -> 肖章博
------------------------------
==================================================
=== 重点商机列表(预测类型Commit) ===
暂无符合条件的商机数据
=== 重点项目列表(预测类型Upside) ===
共计1个商机总金额: 600000.0
1. 轻量版OEM
客户: 厦门亿联网络技术股份有限公司
销售: 钟艳珍 (通用事业部)
预估金额: 600000.0
预测类型: Upside
预计成交季度: FY26Q2
当前阶段: Evaluation
当前时间处于FY26Q2的第1个月请根据以下分析框架对季度达成情况进行分析
请按照以下结构输出分析结果:
1. 【团队季度业绩达成判断】
判断标准:
根据当前GAP值目标值 - 当前FCST和Upside情况判断季度目标达成可能性
- 如果GAP值为负数即当前FCST已超过目标值说明本季度目标大概率可以完成业务状态良好。只要Commit项目顺利推进季度目标可顺利完成Upside可作为额外保障。
- 如果GAP值为正数但不超过Upside的30%说明本季度目标有希望完成但需转化部分Upside商机。在保证Commit商机达成情况下需要保证Upside项目有相应转化即可完成本季度目标。
- 如果GAP值超过Upside的30%说明本季度目标完成难度较大需要转化大量Upside商机。在保证Commit商机全部达成基础上一方面需要提升当前Upside商机转化一方面需尽快拓展新的商机。
输出格式:
- 结论判断KPI数据属于上面判断标准中的哪一种将结论输出
- 详细分析根据判断标准分析KPI数据并输出分析过程和依据输出格式和要点如下
团队季度业绩达成判断
- 当前目标从KPI数据中获取
- 当前close从KPI数据中获取
- 当前FCST从KPI数据中获取
- 当前GAP从KPI数据中获取
- 当前Upside从KPI数据中获取
- 30%Upside:从KPI数据中获取
- GAP值0.3*upsideUpside转化为closed按30%计算):
所以认为本季度完成难度大。需要在保证commit商机全部达成情况下一方面需要提升当前 upside 商机转化一方面需尽快拓展新的商机。此处为示例这个结论需要根据判断标准和KPI数据得出
2. 【趋势变化】
根据下面的格式和要点从KPI数据中提取出预测业绩变化的项目并输出分析结果
预测业绩「上调/下降」总体下调83.8万占目标值0.18%,,说明预测业绩的完成概率在「增加/降低」。
- 变化驱动因素:
- FCST 变化(预测类型Commit+Closed)共计x个商机下单『增加』「数字」。按照下面格式输出涉及的商机项目一行一个项目,即便仅涉及人员变动也需列举出客户、商机信息)
- 销售-客户名称-商机名称-预估ACV-变化情况
- Upside变化共计x个商机变化「增加/减少」156.96万(按照下面格式输出涉及的商机项目,一行一个项目)
- 销售-客户名称-商机名称-预估ACV-变化情况
3. 【业务进展分析】
判断标准:
commit 和 closed 商机变化分析规则:
1. 目前 commit商机推进正常新增close 数字= commit 减少数字
2. 期间FCST 整体数字有增加,对季度业绩完成是正向影响,其中转化为 Closed 的金额为 「 X万」 「大于 」commit 总减少金额 「Y万」说明commit 增加金额为 「X-Y万」。具体commit 变化的项目有:
3. 期间FCST 整体数字有减少,对季度业绩完成有负面波动,其中转化为 Closed 的金额为 「X万」「 小于」 commit 总减少金额 「Y万」说明commit 减少的金额为 「 Y-X 万」。具体commit 变化的项目有:
upside 商机变化分析规则:
1. 目前 upside 商机推进正常,转化 commit 的 商机共计 A(数字)
2. 期间 Upside 商机整体净增加:转化为 Commit 的金额为 「A 万」, 大于 Upside 总减少金额 「B 万」,说明新增 Upside 金额为 「A-B 万」。具体upside 变化的项目有:
3. 期间 Upside 商机整体净减少:转化为 Commit 的金额为 「A 万」,小于 Upside 总减少金额 「B 万」,说明 Upside 金额为 「B-A 万」。具体upside 变化的项目有:
上面的数据中,
转化为Closed的金额X万即为当期 精准预测FCST已下单Closed 的金额变化
转化为Commit的金额A万即为当期 精准预测FCST确定下单Commit 的金额变化
Commit总减少金额Y万即为A万的负数
Upside总减少金额B万即为当期 精准预测FCST确定下单Upside 的金额变化的负数
输出格式:
commit 和 closed 商机变化分析:
- 结论判断KPI数据中商机变化的情况属于上面判断标准中的哪一种将结论及标准输出,并且输出具体的数据和判断依据)
- 详细分析根据判断标准分析KPI数据将符合判断标准的项目按下列格式列出并输出分析过程和依据
upside 商机变化分析:
- 结论判断KPI数据中商机变化的情况属于上面判断标准中的哪一种将结论及标准输出,并且输出具体的数据和判断依据)
- 详细分析根据判断标准分析KPI数据将符合判断标准的项目按下列格式列出并输出分析过程和依据
4. 【重点项目分析】
规则:
从KPI数据中提取出重点项目数据并输出分析结果
输出格式:
1. 在 Commit 单子里预计成单金额最大的项目不超过3条如下金额占总 Commit%,请重点审视:(完整保留该项叙述标题,按下面格式每一行输出一个项目”)
1.销售-客户-项目-预计成单金额-结单预计时间(季度)
2.销售-客户-项目-预计成单金额-结单预计时间(季度)
3.销售-客户-项目-预计成单金额-结单预计时间(季度)
2. 在Upside 单子里, 预计成单金额大于 30 万金额最大的项目不超过3条如下请重点审视(完整保留该项叙述标题,按下面格式每一行输出一个项目, 如果没有则输出“没有预测成交金额大于30万的项目”)
1. 销售-客户-项目-预计成单金额-结单预计时间(季度)
2. 销售-客户-项目-预计成单金额-结单预计时间(季度)
3. 销售-客户-项目-预计成单金额-结单预计时间(季度)
5. 【人员完成分析】
请根据销售人员的个人目标完成情况进行分析:
- 请统计预测可完成季度目标的销售人员数量列出个人预测值FCST已覆盖个人季度目标的销售人员名单。
- 请统计基础预测BaseCamp有机会完成季度目标的销售人员数量列出个人基础预测值BaseCamp可以覆盖个人季度目标的销售人员名单。
- 请统计业绩达成存在较大风险的销售人员数量列出个人基础预测值BaseCamp低于50%个人季度目标的销售人员名单。

View File

@ -1,14 +0,0 @@
# logger.info(f"top_commit_opportunities: {top_commit_opportunities}")
# logger.info(f"top_upside_opportunities: {top_upside_opportunities}")
# logger.info(f"combined_perf_changes: {combined_perf_changes}")
# logger.info(f"owner_kpi_data: {owner_kpi_data}")
# logger.info(f"kpi_data_dict: {kpi_data_dict}")
# logger.info(f"fy_quarter: {fy_quarter}")
# logger.info(f"current_quarter: {current_quarter}")
# logger.info(f"month_of_the_quarter: {month_of_the_quarter}")
# Load debug data from consolidate_review1s_report_load_data.py
debug_loader = ConsolidateReview1sReportLoadData()
(top_commit_opportunities, top_upside_opportunities, combined_perf_changes,
owner_kpi_data, kpi_data_dict, fy_quarter, current_quarter,
month_of_the_quarter) = debug_loader.get_debug_parameters()

View File

@ -1,146 +0,0 @@
{
https_port 8443
}
:8443, azurenode1.xorbit.link {
tls me@azurenode1.xorbit.link
route {
forward_proxy {
basic_auth ckdiwn ckdoacnioemskiwn
hide_ip
hide_via
probe_resistance
}
file_server {
root /var/www/html
}
}
}
ai.xorbit.link {
handle /aaaaaa {
rewrite /aaaaaa /v1/chat/completions
@cors {
method OPTIONS
}
header @cors {
Access-Control-Allow-Origin: "*"
Access-Control-Allow-Methods: "*"
Access-Control-Allow-Headers: "*"
}
@post {
method POST
}
reverse_proxy @post https://api.openai.com {
header_up -*
header_up User-Agent "Deno/1.31.2"
header_up Host {upstream_hostport}
header_up Authorization "Bearer sk-bbbb"
header_up Content-Type {http.request.header.content-type}
header_down Access-Control-Allow-Origin "*"
}
}
handle /ccccc/v1/chat/completions {
rewrite /ccccc/v1/chat/completions /v1/chat/completions
@cors {
method OPTIONS
}
header @cors {
Access-Control-Allow-Origin: "*"
Access-Control-Allow-Methods: "*"
Access-Control-Allow-Headers: "*"
}
@post {
method POST
}
reverse_proxy @post https://api.openai.com {
header_up -*
header_up User-Agent "Deno/1.31.2"
header_up Host {upstream_hostport}
header_up Authorization "Bearer sk-bbbb"
header_up Content-Type {http.request.header.content-type}
header_down Access-Control-Allow-Origin "*"
}
}
handle /ccccc/v1/audio/speech {
rewrite /ccccc/v1/audio/speech /v1/audio/speech
@cors {
method OPTIONS
}
header @cors {
Access-Control-Allow-Origin: "*"
Access-Control-Allow-Methods: "*"
Access-Control-Allow-Headers: "*"
}
@post {
method POST
}
reverse_proxy @post https://api.openai.com {
header_up -*
header_up User-Agent "Deno/1.31.2"
header_up Host {upstream_hostport}
header_up Authorization "Bearer sk-bbbb"
header_up Content-Type {http.request.header.content-type}
header_down Access-Control-Allow-Origin "*"
}
}
handle /ccccc/v1/audio/transcriptions {
rewrite /ccccc/v1/audio/transcriptions /v1/audio/transcriptions
@cors {
method OPTIONS
}
header @cors {
Access-Control-Allow-Origin: "*"
Access-Control-Allow-Methods: "*"
Access-Control-Allow-Headers: "*"
}
@post {
method POST
}
reverse_proxy @post https://api.openai.com {
header_up -*
header_up User-Agent "Deno/1.31.2"
header_up Host {upstream_hostport}
header_up Authorization "Bearer sk-fUeEFERXA"
header_up Content-Type {http.request.header.content-type}
header_down Access-Control-Allow-Origin "*"
}
}
@apiPaths {
path_regexp apiPaths ^/e5b2a5e5-b4/v1/(.*)
}
handle @apiPaths {
rewrite * /v1/{http.regexp.apiPaths.1}
@cors {
method OPTIONS
}
header @cors {
Access-Control-Allow-Origin: "*"
Access-Control-Allow-Methods: "*"
Access-Control-Allow-Headers: "*"
}
@post {
method POST
}
reverse_proxy @post https://api.openai.com {
header_up -*
header_up User-Agent "Deno/1.31.2"
header_up Host {upstream_hostport}
header_up Authorization "Bearer sk-bbbb"
header_up Content-Type {http.request.header.content-type}
header_down Access-Control-Allow-Origin "*"
}
}
reverse_proxy * https://www.google.com {
header_up -*
}
}
oneapi.xorbit.link {
reverse_proxy * http://localhost:9000 {
}
}

View File

@ -1,293 +0,0 @@
{
https_port 8443
}
:8443, azurenode1.xorbit.link {
tls me@azurenode1.xorbit.link
route {
forward_proxy {
basic_auth ckdiwn ckdoacnioemskiwn
hide_ip
hide_via
probe_resistance
}
file_server {
root /var/www/html
}
}
}
ai.xorbit.link {
handle /e5b2a5e5-b41d-4715-9d50-d4a3b0c1a85e {
rewrite /e5b2a5e5-b41d-4715-9d50-d4a3b0c1a85e /v1/chat/completions
@cors {
method OPTIONS
}
header @cors {
Access-Control-Allow-Origin: "*"
Access-Control-Allow-Methods: "*"
Access-Control-Allow-Headers: "*"
}
@post {
method POST
}
reverse_proxy @post https://api.openai.com {
header_up -*
header_up User-Agent "Deno/1.31.2"
header_up Host {upstream_hostport}
header_up Authorization "Bearer sk-fUeEFERXoCS2MebUcCCiTqtRVYxlTHjiyZQwYVuAbrT3BlbkFJO_MwApIoV9MxB4v86eSN2NDhr7PckywQf8g5e0AfEA"
header_up Content-Type {http.request.header.content-type}
header_down Access-Control-Allow-Origin "*"
}
}
handle /e5b2a5e5-b41d-4715-9d50-d4a3b0c1a85f/v1/chat/completions {
rewrite /e5b2a5e5-b41d-4715-9d50-d4a3b0c1a85f/v1/chat/completions /v1/chat/completions
@cors {
method OPTIONS
}
header @cors {
Access-Control-Allow-Origin: "*"
Access-Control-Allow-Methods: "*"
Access-Control-Allow-Headers: "*"
}
@post {
method POST
}
reverse_proxy @post https://api.openai.com {
header_up -*
header_up User-Agent "Deno/1.31.2"
header_up Host {upstream_hostport}
header_up Authorization "Bearer sk-fUeEFERXoCS2MebUcCCiTqtRVYxlTHjiyZQwYVuAbrT3BlbkFJO_MwApIoV9MxB4v86eSN2NDhr7PckywQf8g5e0AfEA"
header_up Content-Type {http.request.header.content-type}
header_down Access-Control-Allow-Origin "*"
}
}
handle /e5b2a5e5-b41d-4715-9d50-d4a3b0c1a85f/v1/audio/speech {
rewrite /e5b2a5e5-b41d-4715-9d50-d4a3b0c1a85f/v1/audio/speech /v1/audio/speech
@cors {
method OPTIONS
}
header @cors {
Access-Control-Allow-Origin: "*"
Access-Control-Allow-Methods: "*"
Access-Control-Allow-Headers: "*"
}
@post {
method POST
}
reverse_proxy @post https://api.openai.com {
header_up -*
header_up User-Agent "Deno/1.31.2"
header_up Host {upstream_hostport}
header_up Authorization "Bearer sk-fUeEFERXoCS2MebUcCCiTqtRVYxlTHjiyZQwYVuAbrT3BlbkFJO_MwApIoV9MxB4v86eSN2NDhr7PckywQf8g5e0AfEA"
header_up Content-Type {http.request.header.content-type}
header_down Access-Control-Allow-Origin "*"
}
}
handle /e5b2a5e5-b41d-4715-9d50-d4a3b0c1a85f/v1/audio/transcriptions {
rewrite /e5b2a5e5-b41d-4715-9d50-d4a3b0c1a85f/v1/audio/transcriptions /v1/audio/transcriptions
@cors {
method OPTIONS
}
header @cors {
Access-Control-Allow-Origin: "*"
Access-Control-Allow-Methods: "*"
Access-Control-Allow-Headers: "*"
}
@post {
method POST
}
reverse_proxy @post https://api.openai.com {
header_up -*
header_up User-Agent "Deno/1.31.2"
header_up Host {upstream_hostport}
header_up Authorization "Bearer sk-fUeEFERXoCS2MebUcCCiTqtRVYxlTHjiyZQwYVuAbrT3BlbkFJO_MwApIoV9MxB4v86eSN2NDhr7PckywQf8g5e0AfEA"
header_up Content-Type {http.request.header.content-type}
header_down Access-Control-Allow-Origin "*"
}
}
@apiPaths {
path_regexp apiPaths ^/e5b2a5e5-b41d-4715-9d50-d4a3b0c1a85f/v1/(.*)
}
handle @apiPaths {
rewrite * /v1/{http.regexp.apiPaths.1}
@cors {
method OPTIONS
}
header @cors {
Access-Control-Allow-Origin: "*"
Access-Control-Allow-Methods: "*"
Access-Control-Allow-Headers: "*"
}
@post {
method POST
}
reverse_proxy @post https://api.openai.com {
header_up -*
header_up User-Agent "Deno/1.31.2"
header_up Host {upstream_hostport}
header_up Authorization "Bearer sk-fUeEFERXoCS2MebUcCCiTqtRVYxlTHjiyZQwYVuAbrT3BlbkFJO_MwApIoV9MxB4v86eSN2NDhr7PckywQf8g5e0AfEA"
header_up Content-Type {http.request.header.content-type}
header_down Access-Control-Allow-Origin "*"
}
}
reverse_proxy * https://www.google.com {
header_up -*
}
}
oneapi.xorbit.link {
reverse_proxy * http://localhost:9000 {
}
}
azureuser@airelay:~$ cat /etc/caddy/Caddyfile
{
https_port 8443
}
:8443, azurenode1.xorbit.link {
tls me@azurenode1.xorbit.link
route {
forward_proxy {
basic_auth ckdiwn ckdoacnioemskiwn
hide_ip
hide_via
probe_resistance
}
file_server {
root /var/www/html
}
}
}
ai.xorbit.link {
handle /e5b2a5e5-b41d-4715-9d50-d4a3b0c1a85e {
rewrite /e5b2a5e5-b41d-4715-9d50-d4a3b0c1a85e /v1/chat/completions
@cors {
method OPTIONS
}
header @cors {
Access-Control-Allow-Origin: "*"
Access-Control-Allow-Methods: "*"
Access-Control-Allow-Headers: "*"
}
@post {
method POST
}
reverse_proxy @post https://api.openai.com {
header_up -*
header_up User-Agent "Deno/1.31.2"
header_up Host {upstream_hostport}
header_up Authorization "Bearer sk-fUeEFERXoCS2MebUcCCiTqtRVYxlTHjiyZQwYVuAbrT3BlbkFJO_MwApIoV9MxB4v86eSN2NDhr7PckywQf8g5e0AfEA"
header_up Content-Type {http.request.header.content-type}
header_down Access-Control-Allow-Origin "*"
}
}
handle /e5b2a5e5-b41d-4715-9d50-d4a3b0c1a85f/v1/chat/completions {
rewrite /e5b2a5e5-b41d-4715-9d50-d4a3b0c1a85f/v1/chat/completions /v1/chat/completions
@cors {
method OPTIONS
}
header @cors {
Access-Control-Allow-Origin: "*"
Access-Control-Allow-Methods: "*"
Access-Control-Allow-Headers: "*"
}
@post {
method POST
}
reverse_proxy @post https://api.openai.com {
header_up -*
header_up User-Agent "Deno/1.31.2"
header_up Host {upstream_hostport}
header_up Authorization "Bearer sk-fUeEFERXoCS2MebUcCCiTqtRVYxlTHjiyZQwYVuAbrT3BlbkFJO_MwApIoV9MxB4v86eSN2NDhr7PckywQf8g5e0AfEA"
header_up Content-Type {http.request.header.content-type}
header_down Access-Control-Allow-Origin "*"
}
}
handle /e5b2a5e5-b41d-4715-9d50-d4a3b0c1a85f/v1/audio/speech {
rewrite /e5b2a5e5-b41d-4715-9d50-d4a3b0c1a85f/v1/audio/speech /v1/audio/speech
@cors {
method OPTIONS
}
header @cors {
Access-Control-Allow-Origin: "*"
Access-Control-Allow-Methods: "*"
Access-Control-Allow-Headers: "*"
}
@post {
method POST
}
reverse_proxy @post https://api.openai.com {
header_up -*
header_up User-Agent "Deno/1.31.2"
header_up Host {upstream_hostport}
header_up Authorization "Bearer sk-fUeEFERXoCS2MebUcCCiTqtRVYxlTHjiyZQwYVuAbrT3BlbkFJO_MwApIoV9MxB4v86eSN2NDhr7PckywQf8g5e0AfEA"
header_up Content-Type {http.request.header.content-type}
header_down Access-Control-Allow-Origin "*"
}
}
handle /e5b2a5e5-b41d-4715-9d50-d4a3b0c1a85f/v1/audio/transcriptions {
rewrite /e5b2a5e5-b41d-4715-9d50-d4a3b0c1a85f/v1/audio/transcriptions /v1/audio/transcriptions
@cors {
method OPTIONS
}
header @cors {
Access-Control-Allow-Origin: "*"
Access-Control-Allow-Methods: "*"
Access-Control-Allow-Headers: "*"
}
@post {
method POST
}
reverse_proxy @post https://api.openai.com {
header_up -*
header_up User-Agent "Deno/1.31.2"
header_up Host {upstream_hostport}
header_up Authorization "Bearer sk-fUeEFERXoCS2MebUcCCiTqtRVYxlTHjiyZQwYVuAbrT3BlbkFJO_MwApIoV9MxB4v86eSN2NDhr7PckywQf8g5e0AfEA"
header_up Content-Type {http.request.header.content-type}
header_down Access-Control-Allow-Origin "*"
}
}
@apiPaths {
path_regexp apiPaths ^/e5b2a5e5-b41d-4715-9d50-d4a3b0c1a85f/v1/(.*)
}
handle @apiPaths {
rewrite * /v1/{http.regexp.apiPaths.1}
@cors {
method OPTIONS
}
header @cors {
Access-Control-Allow-Origin: "*"
Access-Control-Allow-Methods: "*"
Access-Control-Allow-Headers: "*"
}
@post {
method POST
}
reverse_proxy @post https://api.openai.com {
header_up -*
header_up User-Agent "Deno/1.31.2"
header_up Host {upstream_hostport}
header_up Authorization "Bearer sk-fUeEFERXoCS2MebUcCCiTqtRVYxlTHjiyZQwYVuAbrT3BlbkFJO_MwApIoV9MxB4v86eSN2NDhr7PckywQf8g5e0AfEA"
header_up Content-Type {http.request.header.content-type}
header_down Access-Control-Allow-Origin "*"
}
}
reverse_proxy * https://www.google.com {
header_up -*
}
}
oneapi.xorbit.link {
reverse_proxy * http://localhost:9000 {
}
}

6
font
View File

@ -3,8 +3,4 @@
Menlo, Monaco, 'Courier New', monospace Menlo, Monaco, 'Courier New', monospace
'Google Sans Code', Consolas, 'Courier New', monospace 'Google Sans Code', Consolas, 'Courier New', monospace
Menlo, Monaco, 'Courier New', monospace
'Google Sans Code','Maple Mono NF CN'

File diff suppressed because one or more lines are too long