Compare commits
3 Commits
c0f188946f
...
2f1f3a8071
| Author | SHA1 | Date |
|---|---|---|
|
|
2f1f3a8071 | |
|
|
f538d65bd9 | |
|
|
dca0a450a6 |
|
|
@ -0,0 +1,6 @@
|
|||
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"
|
||||
}'
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
1. 【团队季度业绩达成判断】
|
||||
|
||||
结论:本季度目标完成难度较大,需要转化大量Upside商机。
|
||||
|
||||
详细分析:
|
||||
- 当前目标:5,400,000
|
||||
- 当前close:0
|
||||
- 当前FCST:0
|
||||
- 当前GAP:5,400,000
|
||||
- 当前Upside:3,380,000
|
||||
- 30%Upside:1,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. 韩启微(BaseCamp:0,目标:1,200,000)
|
||||
2. 姚亮(BaseCamp:90,000,目标:1,200,000)
|
||||
3. 肖章博(BaseCamp:210,000,目标:1,000,000)
|
||||
4. 金豫玮(BaseCamp:714,000,目标:1,500,000)
|
||||
|
|
@ -0,0 +1,765 @@
|
|||
{
|
||||
"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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
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}")
|
||||
|
|
@ -0,0 +1,441 @@
|
|||
以下是某公司的销售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*upside(Upside转化为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%个人季度目标的销售人员名单。
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
# 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()
|
||||
|
|
@ -0,0 +1,146 @@
|
|||
{
|
||||
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 {
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,293 @@
|
|||
{
|
||||
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
6
font
|
|
@ -3,4 +3,8 @@
|
|||
|
||||
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
Loading…
Reference in New Issue