返回首页
最新
嗨,HN,
我开发了URPAL——一个AI助手,可以将电子邮件和通话录音转换为法律/咨询工作的专业文件笔记。
*技术栈:* React + Node.js + PostgreSQL + OpenAI GPT-4o + Stripe
*关键创新:* 通过模式匹配智能检测沟通方向(你是发送/接收电子邮件?拨打/接听电话?),而不仅仅依赖AI的猜测。
*上线地址:* [https://urpal.com.au](https://urpal.com.au)(提供14天免费试用,之后每月15澳元)
最棘手的部分是构建一个防错的电子邮件/通话方向检测逻辑——事实证明,对于这个特定问题,简单的规则比复杂的AI分析效果更好。
目前正在为澳大利亚的保险专业人士处理真实的客户沟通。希望能得到对技术方法的反馈,以及这是否解决了其他文档密集型职业的实际痛点。
创始人在这里试图对一个直觉进行理性检查,以免在错误的方向上过度设计。
假设:现代团队中最糟糕的“工作周转”并不是某个单一的糟糕工具,而是从对话到执行的手动跳转。
通常的循环:
1. 决策在Slack/Teams中进行。
2. 有人将其重新输入为Jira/Asana的任务。
3. 另一个人将上下文粘贴到Notion/Confluence中。
三个工具,三种格式,三个地方让上下文逐渐消散。集成虽然有所帮助,但仍然感觉像是临时拼凑,用户依然是粘合剂。
我正在探索一个更有主见的方向:一个工作空间,在这里聊天、任务和文档共享同一数据层,无需同步,无需交接。
向HN提问:
- 这种翻译工作对你来说是真正的痛点,还是仅仅是背景噪音?
- 你的团队目前是如何弥补(或容忍)这种情况的?有没有你们真正喜欢的工作流程或工具?
- 统一的操作系统听起来是否天真,相较于“最佳工具+集成”,还是值得追求?
希望能听到你们坦诚的看法、痛点、反对意见,任何反馈都非常欢迎。谢谢!
# HarmonyOS NextSettings 中的边框使用和单独方向设置
<p>以下详细说明了在相关开发环境中组件边框样式的实现:</p>
### 边框样式设置概述
<p>自 API 版本 7 起,边框样式已被支持,后续版本增加了对不同应用场景(如 ArkTS 卡片和元服务)的支持。</p>
### border 接口
- <p><pre><code> 功能
:
```
border(value: BorderOptions)
```
设置统一的边框样式。
- 默认边框宽度为 0(不可见)
- 自 API 版本 9 起,父节点边框显示在子节点内容之上
</code></pre>
- <p><pre><code> 支持
:
- ArkTS 卡片:自 API 版本 9 起支持
- 元服务:自 API 版本 11 起支持
</code></pre>
- *系统能力*: `SystemCapability.ArkUI.ArkUI.Full`
### borderStyle 接口
- <p><pre><code> 功能
:
```
borderStyle(value: BorderStyle | EdgeStyles)
```
设置边框线样式。
- 默认值:`BorderStyle.Solid`
</code></pre>
- <p><pre><code> 支持
:
- ArkTS 卡片:自 API 版本 9 起支持
- 元服务:自 API 版本 11 起支持
</code></pre>
- *系统能力*: `SystemCapability.ArkUI.ArkUI.Full`
### borderWidth 接口
- <p><pre><code> 功能
:
```
borderWidth(value: Length | EdgeWidths | LocalizedEdgeWidths)
```
设置边框宽度。
- 不支持百分比值
</code></pre>
- <p><pre><code> 支持
:
- ArkTS 卡片:自 API 版本 9 起支持
- 元服务:自 API 版本 11 起支持
</code></pre>
- *系统能力*: `SystemCapability.ArkUI.ArkUI.Full`
### borderColor 接口
- <p><pre><code> 功能
:
```
borderColor(value: ResourceColor | EdgeColors | LocalizedEdgeColors)
```
设置边框颜色。
- 默认值:`Color.Black`
</code></pre>
- <p><pre><code> 支持
:
- ArkTS 卡片:自 API 版本 9 起支持
- 元服务:自 API 版本 11 起支持
</code></pre>
- *系统能力*: `SystemCapability.ArkUI.ArkUI.Full`
### borderRadius 接口
- <p><pre><code> 功能
:
```
borderRadius(value: Length | BorderRadiuses | LocalizedBorderRadiuses)
```
设置边框圆角。
- 最大圆角限制为组件宽度/高度的一半
- 支持百分比值(相对于组件宽度)
- 与 `.clip` 一起使用以防止子组件溢出
</code></pre>
- <p><pre><code> 支持
:
- ArkTS 卡片:自 API 版本 9 起支持
- 元服务:自 API 版本 11 起支持
</code></pre>
- *系统能力*: `SystemCapability.ArkUI.ArkUI.Full`
<p>这些接口提供了对不同应用场景下组件边框样式的全面和灵活的控制。</p>
### 单独边框方向设置示例
```
Row().border({
width: { bottom: 1 }, // 仅设置底部边框宽度
color: { bottom: 'rgba(153, 159, 181, 0.15)' }, // 仅设置底部边框颜色
})
```
# 搜索组件的简化使用
### 1. 基本用法
- *导入与创建*:在 ETS 文件中,首先通过 `import { Search } from '@ohos.arkui.advanced.Search'` 导入搜索组件。然后在组件的 `build` 方法中创建一个 Search 实例:
```typescript
Search({ value: this.searchText, placeholder: '搜索...' })
.width('90%')
.height(40)
.onSubmit((value: string) => {
// 处理搜索提交逻辑
})
.onChange((value: string) => {
// 处理输入变化逻辑
});
```
这段代码设置了初始文本(`value`)、占位符文本、尺寸以及 `onSubmit`(搜索提交)和 `onChange`(输入变化)的事件监听器。
### 2. 属性配置
- *搜索按钮样式*:使用 `searchButton` 自定义搜索按钮:
```typescript
.searchButton('搜索', { fontSize: '16fp', fontColor: '#ff3f97e9' })
```
- *占位符样式*:
`placeholderColor` 设置占位符文本颜色
`placeholderFont` 设置占位符字体样式:
```typescript
.placeholderColor(Color.Grey)
.placeholderFont({ size: 14, weight: 400 })
```
- *文本样式*:`textFont` 自定义输入文本外观
- *对齐方式*:`textAlign`(API 9+)设置文本对齐方式(默认值为 `TextAlign.Start`)
- *图标样式*:
`searchIcon`(API 10+)自定义搜索图标
`cancelButton` 自定义清除按钮
- *文本复制*:`copyOption`(API 9+)启用文本复制(默认值:`CopyOptions.LocalDevice`)
- *其他属性*:
`fontColor` - 输入文本颜色
`caretStyle` - 光标外观
`enableKeyboardOnFocus` - 聚焦时自动打开键盘
### 3. 事件处理
- *搜索提交*:`onSubmit` 在以下情况下触发:
• 点击搜索图标
• 按下搜索按钮
• 按下键盘搜索键
- *输入变化*:`onChange` 在文本输入过程中触发
- *文本操作*:
`onCopy` - 复制操作
`onCut` - 剪切操作
`onPaste` - 粘贴操作
`onTextSelectionChange` - 文本选择变化
`onContentScroll` - 内容滚动
### 4. 控制器使用
- *控制器创建*:`controller: SearchController = new SearchController()`
- *光标控制*:`this.controller.caretPosition(1)` 将光标定位在第一个字符后
- *退出编辑模式*:`this.controller.stopEditing()` 关闭键盘(自定义键盘场景)
### 5. 自定义键盘
1. 创建自定义键盘组件:
```typescript
@Builder CustomKeyboardBuilder() {
Column() {
// 自定义键盘布局和逻辑
}
}
```
2. 绑定到搜索组件:
```typescript
Search({ controller: this.controller, value: this.inputValue })
.customKeyboard(this.CustomKeyboardBuilder())
```
### 6. 输入类型与限制
- *输入类型*(API 11+):
`SearchType.Normal` - 默认文本输入
`SearchType.NUMBER` - 仅数字
`SearchType.PHONE_NUMBER` - 电话号码格式
`SearchType.EMAIL` - 电子邮件格式
- *长度限制*:`maxLength` 限制字符数量
### 7. 高级功能
- *文本样式*(API 12+):
`decoration` - 文本下划线样式
`textIndent` - 首行缩进
`letterSpacing` - 字符间距
`lineHeight` - 行高
`selectedBackgroundColor` - 选择高亮颜色
- *输入预览*:`enablePreviewText` 启用/禁用输入预览(默认启用)
- *输入过滤*:`inputFilter` 使用正则表达式限制允许的字符
通过结合这些功能,开发者可以创建强大的搜索组件,以满足特定应用需求。在实现功能时,请考虑 API 版本支持,并利用新功能来优化搜索功能。