fix(crm): адреса контактов через ContactInfo типа Address (#288) #72

Merged
eSlider merged 1 commits from feat/catalog-addresses#288 into main 2026-09-22 08:32:26 +01:00
Owner

fix(crm): адреса контактов через ContactInfo типа Address

Блокирует office-assistant #288 (нужны адреса в OO CRM). SE не мержит.

Что было не так (evidence)

  • AddContactAddress постил форму на /api/2.0/crm/contact/{id}/address → 500.
  • В OO CommunityServer адрес — это ContactInfo типа Address, а не отдельный ресурс:
    • CRMApi.ContactInfo.cs → CreateContactInfo + ContactInfo.GetCategory(Address).
    • ContactInfoType.Address (ContactInfoTypeEnum.cs).
    • Address.TryParse десериализует data как JSON Address (street/city/state/zip/country).
    • отдельный POST .../addressdata принимает Address из body, но на нашем билде отдаёт address=null.
  • Рабочий путь (проверено live): POST /api/2.0/crm/contact/{id}/data c infoType=Address, category=Billing, data={"street":...,"city":...,"state":...,"zip":...,"country":...}.
    oo contacts info-add --type Address --value '<json>' --category Billing → адрес виден в addresses.

Что изменено

  • AddContactAddress теперь строит Address JSON и вызывает существующий AddContactInfo(..., "Address", ...) (endpoint /data). Сигнатура не менялась.
  • crm_address.go: AddressCategoryCode (Home0 Postal1 Office2 Billing3 Other4 Work5), ContactAddresses, HasContactAddress (нормализованное сравнение для идемпотентности).
  • catalog: Entry.Addresses []Address (+ merge), apply пишет адреса после email/phone и пропускает уже существующие (HasContactAddress).
  • Тесты: crm_address_test.go, catalog/address_test.go.

Проверки

  • go build ./..., go vet ./..., go test -race ./catalog/ . — зелёные.
  • Live: oo companies create --street ... → адрес в контакте (addresses), повтор не дублирует (HasContactAddress).
## fix(crm): адреса контактов через ContactInfo типа Address Блокирует office-assistant #288 (нужны адреса в OO CRM). SE не мержит. ### Что было не так (evidence) - `AddContactAddress` постил форму на `/api/2.0/crm/contact/{id}/address` → **500**. - В OO CommunityServer адрес — это `ContactInfo` типа `Address`, а не отдельный ресурс: - `CRMApi.ContactInfo.cs` → `CreateContactInfo` + `ContactInfo.GetCategory(Address)`. - `ContactInfoType.Address` (`ContactInfoTypeEnum.cs`). - `Address.TryParse` десериализует `data` как JSON `Address` (`street/city/state/zip/country`). - отдельный `POST .../addressdata` принимает `Address` из body, но на нашем билде отдаёт `address=null`. - Рабочий путь (проверено live): `POST /api/2.0/crm/contact/{id}/data` c `infoType=Address`, `category=Billing`, `data={"street":...,"city":...,"state":...,"zip":...,"country":...}`. `oo contacts info-add --type Address --value '<json>' --category Billing` → адрес виден в `addresses`. ### Что изменено - `AddContactAddress` теперь строит `Address` JSON и вызывает существующий `AddContactInfo(..., "Address", ...)` (endpoint `/data`). Сигнатура не менялась. - `crm_address.go`: `AddressCategoryCode` (Home0 Postal1 Office2 Billing3 Other4 Work5), `ContactAddresses`, `HasContactAddress` (нормализованное сравнение для идемпотентности). - `catalog`: `Entry.Addresses []Address` (+ merge), apply пишет адреса после email/phone и пропускает уже существующие (`HasContactAddress`). - Тесты: `crm_address_test.go`, `catalog/address_test.go`. ### Проверки - `go build ./...`, `go vet ./...`, `go test -race ./catalog/ .` — зелёные. - Live: `oo companies create --street ...` → адрес в контакте (`addresses`), повтор не дублирует (HasContactAddress).
eSlider added 1 commit 2026-09-22 08:08:10 +01:00
fix(crm): store contact addresses via ContactInfo Address type (#288)
Release Please / Release Please (push) Skipped
Release / GoReleaser (push) Skipped
Tests / Secret scan (gitleaks) (push) Skipped
Tests / Test (Go 1.25) (push) Skipped
Tests / Test (Go stable) (push) Skipped
Tests / Secret scan (gitleaks) (pull_request) Successful in 4s
Tests / Test (Go stable) (pull_request) Successful in 1m1s
Tests / Test (Go 1.25) (pull_request) Successful in 1m1s
c4beba5173
eSlider merged commit 9b21d7e52a into main 2026-09-22 08:32:26 +01:00
eSlider deleted branch feat/catalog-addresses#288 2026-09-22 08:32:26 +01:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: eSlider/go-onlyoffice#72