Capture phone (office) + mobile (cell) on card intake; ship v0.1.0:98
Completes business-card contact capture. The transcription prompt now labels Phone/Mobile/Fax on separate lines, and the extractor maps an office/main number -> phone and a cell -> mobile, never a fax. Both carry the same digit-in-source integrity rule as email/LinkedIn: a number is kept only if its digits literally appear in the source (or, on revise, the instruction) -- never minted. The proposal card shows Phone + Mobile and they're editable (aliases phone/tel/office, mobile/cell). Server: _upsert_contact_from_fundraising now accepts contact.phone + contact.mobile and writes them to the canonical contact record (contact-level, not grid pills), shipped in s9pk v0.1.0:98. No schema change -- the contacts columns already exist. 41/41 backend suite green + the matrix_intake units; card flow end-to-end is live-smoke.
This commit is contained in:
@@ -68,6 +68,18 @@ def test_render_shows_city_and_linkedin_when_present():
|
||||
assert "LinkedIn: linkedin.com/in/jane" in out
|
||||
|
||||
|
||||
def test_interpret_edit_phone_and_mobile_aliases():
|
||||
assert proposals.interpret_reply("phone=212-555-0100") == ("edit", ("phone", "212-555-0100"))
|
||||
assert proposals.interpret_reply("cell: 917-555-0199") == ("edit", ("mobile", "917-555-0199"))
|
||||
|
||||
|
||||
def test_render_shows_phone_and_mobile_when_present():
|
||||
p = {**SAMPLE, "phone": "212-555-0100", "mobile": "917-555-0199"}
|
||||
out = proposals.render(p)
|
||||
assert "Phone: 212-555-0100" in out
|
||||
assert "Mobile: 917-555-0199" in out
|
||||
|
||||
|
||||
def test_interpret_unknown():
|
||||
assert proposals.interpret_reply("maybe later")[0] == "unknown"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user