* errors: * no nude return err * if restate function, use sharemodel.WrapErr("msg", err) * err message * should describe all context of the function just invoked (doSth), not the parent (ServiceA) * Eg: func ServiceA() { if err := doSth(..); err ≠ nil { return WrapErr("doSth", err)} } * if database related function then should prefix "db", eg: "db query cards", "openai query", "milvus insert" *