业务需求
需求描述
需求背景:亚马逊关键词组合标题侵权比较多,现在官方有接口检测违禁词
需求目标:针对上架产品,产品修改标题、关键词、描述,提前预知产品是否包含侵权词,避免产品侵权而给店铺带来损失。
需求价值: 提升效率
没有接口前,一个月平均有60个产品违禁的,也有不少被扣分,这其中有一半是修改亚马逊的组合标题引起的,不少是新词,人工没法提前完善敏感词库。

业务价值:保证店铺的安全

需求内容:封装信息
1、接口地址:https://open.aliexpress.com/doc/api.htm#/api?cid=20904&path=aliexpress.postproduct.redefining.findaeproductprohibitedwords&methodType=GET/POST
2、传参信息包含:商品类目ID、商品标题、关键字、商品类目属性、商品的详细描述
3、响应参数:违禁词名称、违禁原因

4、将封装后代码提交赛盒,上传至聚石塔,提供给数据小组,线下使用


验收标准
价值描述
需求价值:提升效率、保障店铺安全,没有接口前,一个月平均有60个产品违禁的,也有不少被扣分,这其中有一半是修改亚马逊的组合标题引起的,不少是新词,人工没法提前完善敏感词库。
历史记录  
  1. 2022-08-22 09:44:55, 由 马玉莹 创建。
  2. 2022-08-22 10:37:15, 由 马玉莹 变更。
    修改了 版本号 ,旧值为 "1",新值为 "2"。
    修改了 需求描述,区别为:
    003- 4、将封装后代码提交赛盒,上传至聚石塔,提供给数据小组,线下使用
    003+ 4、将封装后代码提交赛盒,上传至聚石塔,提供给数据小组,线下使用
    004+
    005+
    003- <p>4、将封装后代码提交赛盒,上传至聚石塔,<span>提供给数据小组,线下使用</span><br /></p>
    003+ <p>4、将封装后代码提交赛盒,上传至聚石塔,<span>提供给数据小组,线下使用</span></p>
    004+ <p><span><img src="{211493.png}" alt="" /></span></p>
    005+ <p><span><img src="{211494.png}" alt="" /><br /></span></p>
  3. 2022-08-22 19:24:11, 由 刘灿 记录评审结果,结果为 确认通过。
    修改了 评审时间,旧值为 "0000-00-00",新值为 "2022-08-22"。
    修改了 指派给 ,旧值为 "Admin186",新值为 "mayuying"。
    修改了 当前状态,旧值为 "draft",新值为 "active"。
    修改了 由谁评审,旧值为 "",新值为 "Admin186"。
  4. 2022-08-23 09:34:23, 由 马玉莹 指派给 宋宇。
    修改了 指派给,旧值为 "mayuying",新值为 "songyu"。
  5. 2022-08-23 11:54:09, 由 宋宇 添加备注。

    聚石塔项目接口:8fwu25wutz.ali.pro.redefining.findaeproductprohibitedwords

    参数:

    public class FindAEProductProhibiteDwordsParameter
        {
            /// <summary>
            /// 商品类目ID
            /// </summary>
            [JsonProperty("category_id")]
            public long? CategoryId { get; set; }

            /// <summary>
            /// 商品的详细描述
            /// </summary>
            [JsonProperty("detail")]
            public string Detail { get; set; }

            /// <summary>
            /// none
            /// </summary>
            [JsonProperty("keywords")]
            public string Keywords { get; set; }

            /// <summary>
            /// none
            /// </summary>
            [JsonProperty("product_properties")]
            public string ProductProperties { get; set; }

            /// <summary>
            /// 商品的标题
            /// </summary>
            [JsonProperty("title")]
            public string Title { get; set; }
        }

    响应:

        [Serializable]
        public abstract class TopResponse
        {
            /// <summary>
            /// 错误码
            /// </summary>
            [XmlElement("code")]
            [JsonProperty("code")]
            public string ErrCode { get; set; }

            /// <summary>
            /// 错误信息
            /// </summary>
            [XmlElement("msg")]
            [JsonProperty("msg")]
            public string ErrMsg { get; set; }

            /// <summary>
            /// 子错误码
            /// </summary>
            [XmlElement("sub_code")]
            [JsonProperty("sub_code")]
            public string SubErrCode { get; set; }

            /// <summary>
            /// 子错误信息
            /// </summary>
            [XmlElement("sub_msg")]
            [JsonProperty("sub_msg")]
            public string SubErrMsg { get; set; }

            /// <summary>
            /// 响应原始内容
            /// </summary>
            [XmlElement("Body")]
            [JsonProperty("Body")]
            public string Body { get; set; }

            [XmlElement("error_code")]
            [JsonProperty("error_code")]
            public string ErrorCode { get; set; }

            private string errorMessge;
            [XmlElement("error_message")]
            [JsonProperty("error_message")]
            public string ErrorMessage 
            {
                get
                {
                    if (string.IsNullOrWhiteSpace(errorMessge))
                    {
                        return this.errorMessge;
                    }
                    else
                    {
                        List<string> messageList = new List<string>();
                        if (!string.IsNullOrWhiteSpace(this.ErrorCode))
                        {
                            messageList.Add(string.Format("ErrCode : {0};", this.ErrorCode));
                        }
                        if (!string.IsNullOrWhiteSpace(this.ErrMsg))
                        {
                            messageList.Add(string.Format("ErrMsg : {0};", this.ErrMsg));
                        }
                        if (!string.IsNullOrWhiteSpace(this.SubErrCode))
                        {
                            messageList.Add(string.Format("SubErrCode : {0};", this.SubErrCode));
                        }
                        if (!string.IsNullOrWhiteSpace(this.SubErrMsg))
                        {
                            messageList.Add(string.Format("SubErrMsg : {0};", this.SubErrMsg));
                        }
                        return string.Join(";", messageList);
                    }
                }
                set
                { 
                    this.errorMessge = value;
                }
            }

            [XmlElement("result_success")]
            [JsonProperty("result_success")]
            public bool ResultSuccess
            {
                get
                {
                    return (string.IsNullOrEmpty(this.ErrCode)|| this.ErrCode=="0") && string.IsNullOrEmpty(this.SubErrCode);
                }
            }

            /// <summary>
            /// 响应结果是否错误
            /// </summary>
            public bool IsError
            {
                get
                {
                    return (!string.IsNullOrEmpty(this.ErrCode)&&this.ErrCode!="0") || !string.IsNullOrEmpty(this.SubErrCode);
                }
            }
        }

        /// <summary>
        /// AliexpressPostproductRedefiningFindaeproductprohibitedwordsResponse.
        /// </summary>
        public class AliexpressPostproductRedefiningFindaeproductprohibitedwordsResponse : TopResponse
        {
            /// <summary>
            /// result
            /// </summary>
            [XmlElement("result")]
            [JsonProperty("result")]
            public AeopProhibitedWordsResultDtoDomain Result { get; set; }

            /// <summary>
            /// ProhibitedWordDomain Data Structure.
            /// </summary>
            [Serializable]
            public class ProhibitedWordDomain : TopObject
            {
                /// <summary>
                /// 违禁词名称
                /// </summary>
                [XmlElement("primary_word")]
                [JsonProperty("primary_word")]
                public string PrimaryWord { get; set; }

                /// <summary>
                /// 违禁原因
                /// </summary>
                [XmlArray("types")]
                [XmlArrayItem("string")]
                [JsonProperty("types")]
                public List<string> Types { get; set; }
            }

            /// <summary>
            /// AeopProhibitedWordsResultDtoDomain Data Structure.
            /// </summary>
            [Serializable]
            public class AeopProhibitedWordsResultDtoDomain : TopObject
            {
                /// <summary>
                /// 商品详描中的违禁词列表, 如果商品详描中没有违禁词, 则返回一个"'[]"。否则将以示例值中的格式返回。其中每个违禁词都包含了2个属性: primaryWord和types。其中primaryWord表示违禁词,types表示违禁词的类型,总共有四种类型: FORBIDEN_TYPE(禁用), RESTRICT_TYPE(限定), BRAND_TYPE(品牌), TORT_TYPE(侵权)。
                /// </summary>
                [XmlArray("detail_prohibited_words")]
                [XmlArrayItem("prohibited_word")]
                [JsonProperty("detail_prohibited_words")]
                public List<ProhibitedWordDomain> DetailProhibitedWords { get; set; }

                /// <summary>
                /// 错误代码
                /// </summary>
                [XmlElement("error_code")]
                [JsonProperty("error_code")]
                public long ErrorCode { get; set; }

                /// <summary>
                /// 错误信息
                /// </summary>
                [XmlElement("error_message")]
                [JsonProperty("error_message")]
                public string ErrorMessage { get; set; }

                /// <summary>
                /// 关键字的违禁词列表, 如果关键字中没有违禁词, 则返回一个"'[]"。否则将以示例值中的格式返回。其中每个违禁词都包含了2个属性: primaryWord和types。其中primaryWord表示违禁词,types表示违禁词的类型,总共有四种类型: FORBIDEN_TYPE(禁用), RESTRICT_TYPE(限定), BRAND_TYPE(品牌), TORT_TYPE(侵权)。
                /// </summary>
                [XmlArray("keywords_prohibited_words")]
                [XmlArrayItem("prohibited_word")]
                [JsonProperty("keywords_prohibited_words")]
                public List<ProhibitedWordDomain> KeywordsProhibitedWords { get; set; }

                /// <summary>
                /// 类目属性的违禁词列表, 如果类目属性中没有违禁词, 则返回一个"'[]"。否则将以示例值中的格式返回。其中每个违禁词都包含了2个属性: primaryWord和types。其中primaryWord表示违禁词,types表示违禁词的类型,总共有四种类型: FORBIDEN_TYPE(禁用), RESTRICT_TYPE(限定), BRAND_TYPE(品牌), TORT_TYPE(侵权)。
                /// </summary>
                [XmlArray("product_properties_prohibited_words")]
                [XmlArrayItem("prohibited_word")]
                [JsonProperty("product_properties_prohibited_words")]
                public List<ProhibitedWordDomain> ProductPropertiesProhibitedWords { get; set; }

                /// <summary>
                /// 标题中的违禁词列表, 如果标题字中没有违禁词, 则返回一个"'[]"。否则将以示例值中的格式返回。其中每个违禁词都包含了2个属性: primaryWord和types。其中primaryWord表示违禁词,types表示违禁词的类型,总共有四种类型: FORBIDEN_TYPE(禁用), RESTRICT_TYPE(限定), BRAND_TYPE(品牌), TORT_TYPE(侵权)。
                /// </summary>
                [XmlArray("title_prohibited_words")]
                [XmlArrayItem("prohibited_word")]
                [JsonProperty("title_prohibited_words")]
                public List<ProhibitedWordDomain> TitleProhibitedWords { get; set; }
            }

        }

  6. 2022-08-23 11:54:32, 由 宋宇 指派给 韦思成。
    修改了 指派给,旧值为 "songyu",新值为 "weisicheng"。
  7. 2022-08-23 13:36:15, 由 zhengqiao 关联到迭代 技术研发中心 9月第1版本(2022年) 。
  8. 2022-08-23 13:36:58, 由 刘瀚泽 编辑。
    修改了 所属模块,旧值为 "0",新值为 "1659"。
  9. 2022-08-23 13:58:14, 由 宋宇 指派给 宋宇。
    修改了 指派给,旧值为 "weisicheng",新值为 "songyu"。
  10. 2022-08-24 09:47:07, 由 宋宇 指派给 夏宇。
    修改了 指派给,旧值为 "songyu",新值为 "xiayu"。
  11. 2022-08-24 15:33:53, 由 刘瀚泽 添加备注。

    8月24日

    已经封装完成并发布,已发送给业务验证

  12. 2022-08-24 15:34:01, 由 刘瀚泽 编辑。
    修改了 所处阶段 ,旧值为 "developed",新值为 "released"。
    修改了 设置阶段者,旧值为 "",新值为 "liuhanze"。
  13. 2022-09-01 14:15:24, 由 夏宇 指派给 马玉莹。
    修改了 指派给,旧值为 "xiayu",新值为 "mayuying"。
    已上线,请验收
  14. 2022-09-19 10:03:12, 由 zhengqiao 编辑。
    修改了 设置阶段者,旧值为 "liuhanze",新值为 "zhengqiao"。
  15. 2022-09-26 15:34:57, 由 zhengqiao 关闭,原因为 已完成 。
    修改了 由谁关闭,旧值为 "",新值为 "zhengqiao"。
    修改了 关闭日期,旧值为 "0000-00-00 00:00:00",新值为 "2022-09-26 15:34:57"。
    修改了 指派给 ,旧值为 "mayuying",新值为 "closed"。
    修改了 当前状态,旧值为 "active",新值为 "closed"。
    修改了 所处阶段,旧值为 "released",新值为 "closed"。
    修改了 关闭原因,旧值为 "",新值为 "done"。
  16. 2023-11-16 20:31:15, 由 周杰 编辑。
    修改了 所属模块,旧值为 "1659",新值为 "1877"。
迭代版本
提报业务部门
提报人员 李军-217061
需求来源 业务方迭代需求
所属项目 技术中心-需求池
所属模块 多平台   java智能刊登
所属计划
业务价值
开发组
受益业务部门 综合平台运营中心
验收人员
业务目标类型
中心业务目标
业务价值 控制风险
每月价值量 保障店铺安全
每月节省人数 0
优先级 P2
价值类型
预计工时 24
成本
ROI
操作手册
高价值
主被动
复杂度
工作流ID
工作流创建时间
更新点
是否高危 否
评分
当前状态 已关闭
所处阶段 已关闭
关键词
评审次数
计划上线
上线时间
计划验收时间
业务验收时间
满意度
价值验收
满意度分值
业务回填价值
验收达成价值
验收达成ROI
抄送给
由谁创建 马玉莹 于 2022-08-22 09:44:55
指派给 Closed 于 2022-09-26 15:34:57
由谁评审 刘灿
评审时间 2022-08-22
由谁关闭 zhengqiao 于 2022-09-26 15:34:57
关闭原因 已完成
最后修改 周杰 于 2023-11-16 20:31:10