feat(crm): 建档一步到位 + 客户详情加公司简介
痛点:原来建客户只能填公司名等 7 个字段,联系人必须先保存、进详情页、 再加一遍,一件事拆成三步;详情页也没地方记公司背景。 建档表单 · 补上后端本来就收但表单没暴露的字段:公司英文名、地址、来源 · 新增「主要联系人」一组(姓名/职位/邮箱/电话/WhatsApp),自动标为主联系人 · 联系人与客户在**同一个事务**里创建 —— 分两个请求的话,客户写成功、 联系人写失败会留下一条没人能联系的半成品客户 · 姓名留空则整块不创建,「只想先记个公司名」的用法完全不受影响 公司简介(customers 新增 5 列) · founded_year / employee_count / annual_revenue / profile,外加复用 address · employee_count 与 annual_revenue 用 TEXT 而非数字:实际拿到的都是 「50-200 人」「€5-10M」这种带单位的区间,用途是给人看、不参与计算 · founded_year 卡 1800~今年:见过把「2024 年营收」当成立年份填进来的, 也见过手滑打成 20225,不合理的值宁可拒掉 · 一个字段都没填时显示引导语而不是一排「未填写」—— 说明白这些信息拿来 干什么,人才有动力填 · 跟「编辑客户信息」分成两个弹窗:基本信息是成交必须的,公司简介是 了解多少写多少,混在一起会让人以为后者也得填 为 AI 背调预留:research_at / research_sources 两列已建,背调结果将落到 上述字段,并要求每条结论带来源 URL。 Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
co-authored by
Claude Opus 5
parent
7281c41434
commit
241fb229c6
+16
-1
@@ -256,7 +256,22 @@ function ensureColumns() {
|
||||
// created_by 单独记「谁建的」:公海被领取后 owner_id 会换人,创建人这一笔仍要留痕
|
||||
['created_by', 'INTEGER'],
|
||||
// pool_status:owned 名下有主 / public 已丢入公海(同组织可见可领)
|
||||
['pool_status', "TEXT DEFAULT 'owned'"], ['pool_at', 'TEXT'], ['pool_note', 'TEXT']
|
||||
['pool_status', "TEXT DEFAULT 'owned'"], ['pool_at', 'TEXT'], ['pool_note', 'TEXT'],
|
||||
/* 公司概况(详情页「公司简介」卡片 + AI 背调的落点)。
|
||||
全部选填 —— 这些是「了解到多少写多少」的东西,不是业务必填项。
|
||||
|
||||
employee_count / annual_revenue 用 TEXT 而不是数字:实际拿到的几乎都是
|
||||
「50-200 人」「€5-10M」这种区间带单位的表述,硬塞进 INTEGER 要么丢精度
|
||||
要么存不进去,还得再加个单位列。这里的用途是「给人看」,不参与计算。 */
|
||||
['founded_year', 'INTEGER'],
|
||||
['employee_count', 'TEXT'],
|
||||
['annual_revenue', 'TEXT'],
|
||||
['profile', 'TEXT'],
|
||||
/* 背调留痕:什么时候查的、信息来自哪些页面。
|
||||
没有来源的「AI 说这家公司有 200 人」是不能用来做决策的,
|
||||
所以来源 URL 必须跟结论一起存,界面上要能点开核对。 */
|
||||
['research_at', 'TEXT'],
|
||||
['research_sources', 'TEXT']
|
||||
]
|
||||
};
|
||||
for (const [table, columns] of Object.entries(columnMigrations)) {
|
||||
|
||||
Reference in New Issue
Block a user