大家好,我这边是做广告招牌、门头招牌、发光字、灯箱、标识标牌这类业务的。 现在想做一套线上系统,初步想法是: 一套系统,两种入口: * 客户在微信里可以通过小程序使用; * 手机端最好也能有一个独立 App ; * 小程序和 App 共用同一套后台数据。 目前需求还没有完全确定,所以想先在这里了解一下,这类系统如果找人开发,大概需要多少钱,报价范围一般是多少。 我们现在想到的功能大概如下。 ⸻ 一、客户端功能 客户进入小程序或 App 后,可以: 1. 查看企业介绍; 2. 查看广告牌产品、门头招牌、发光字、灯箱、标识标牌案例; 3. 选择需求类型,比如门头招牌、楼顶广告牌、发光字、灯箱、标识系统等; 4. 提交定制需求,包括尺寸、材质、安装位置、预算、期望完工时间; 5. 上传门店照片、现场照片、参考图; 6. 填写联系人、电话、微信、安装地址; 7. 提交后等待客服报价或联系; 8. 查看自己的需求、订单或工单状态; 9. 查看师傅上传的安装前、安装后照片; 10. 如果需要,也可以查看完工视频; 11. 确认验收,或者提交售后问题。 ⸻ 二、公司后台功能 后台这边希望可以: 1. 查看客户提交的需求; 2. 将客户需求转为订单或安装工单; 3. 补充报价、安装要求、预计安装时间; 4. 分配安装师傅; 5. 管理产品、案例、客户资料; 6. 查看工单状态,比如待处理、待派单、待安装、安装中、待验收、已完成、售后中; 7. 查看师傅上传的图片、视频、备注; 8. 审核完工结果; 9. 导出工单记录; 10. 统计订单量、完工量、师傅任务量、客户来源等数据。 ⸻ 三、师傅端功能 师傅最好也能通过小程序使用,不一定要单独做 App 。 师傅登录后可以: 1. 查看分配给自己的安装任务; 2. 查看客户姓名、电话、地址、安装要求; 3. 更新任务状态,比如已接单、出发、到达、安装中、已完工; 4. 上传安装前照片; 5. 上传安装中照片; 6. 上传安装后照片; 7. 上传短视频,如果一期需要的话; 8. 填写备注、异常说明、材料变更说明; 9. 提交完工,等待后台审核。 ⸻ 想请教大家几个问题 1. 这种系统如果做一版可用的 MVP ,大概需要多少钱? 2. 如果小程序 + 后台先做,独立 App 后面再做,报价大概会差多少? 3. 这种项目适合找个人开发、外包团队,还是软件公司? 4. 哪些功能适合一期做,哪些功能可以放到二期? 5. 如果涉及图片、视频上传,后续存储和服务器成本大概怎么估算? 6. 有没有类似项目的开发经验可以参考? 我现在不是特别懂软件开发,所以想先了解一个大概的市场价格范围,避免一开始需求没想清楚就被报得太高,或者报价太低后面做不出来。 欢迎有经验的朋友给点建议,也欢迎做过类似系统的开发者简单说一下大概报价区间。谢谢。
大家好,我这边是做广告招牌、门头招牌、发光字、灯箱、标识标牌这类业务的。 现在想做一套线上系统,初步想法是: 一套系统,两种入口: * 客户在微信里可以通过小程序使用; * 手机端最好也能有一个独立 App ; * 小程序和 App 共用同一套后台数据。 目前需求还没有完全确定,所以想先在这里了解一下,这类系统如果找人开发,大概需要多少钱,报价范围一般是多少。 我们现在想到的功能大概如下。 ⸻ 一、客户端功能 客户进入小程序或 App 后,可以: 1. 查看企业介绍; 2. 查看广告牌产品、门头招牌、发光字、灯箱、标识标牌案例; 3. 选择需求类型,比如门头招牌、楼顶广告牌、发光字、灯箱、标识系统等; 4. 提交定制需求,包括尺寸、材质、安装位置、预算、期望完工时间; 5. 上传门店照片、现场照片、参考图; 6. 填写联系人、电话、微信、安装地址; 7. 提交后等待客服报价或联系; 8. 查看自己的需求、订单或工单状态; 9. 查看师傅上传的安装前、安装后照片; 10. 如果需要,也可以查看完工视频; 11. 确认验收,或者提交售后问题。 ⸻ 二、公司后台功能 后台这边希望可以: 1. 查看客户提交的需求; 2. 将客户需求转为订单或安装工单; 3. 补充报价、安装要求、预计安装时间; 4. 分配安装师傅; 5. 管理产品、案例、客户资料; 6. 查看工单状态,比如待处理、待派单、待安装、安装中、待验收、已完成、售后中; 7. 查看师傅上传的图片、视频、备注; 8. 审核完工结果; 9. 导出工单记录; 10. 统计订单量、完工量、师傅任务量、客户来源等数据。 ⸻ 三、师傅端功能 师傅最好也能通过小程序使用,不一定要单独做 App 。 师傅登录后可以: 1. 查看分配给自己的安装任务; 2. 查看客户姓名、电话、地址、安装要求; 3. 更新任务状态,比如已接单、出发、到达、安装中、已完工; 4. 上传安装前照片; 5. 上传安装中照片; 6. 上传安装后照片; 7. 上传短视频,如果一期需要的话; 8. 填写备注、异常说明、材料变更说明; 9. 提交完工,等待后台审核。 ⸻ 想请教大家几个问题 1. 这种系统如果做一版可用的 MVP ,大概需要多少钱? 2. 如果小程序 + 后台先做,独立 App 后面再做,报价大概会差多少? 3. 这种项目适合找个人开发、外包团队,还是软件公司? 4. 哪些功能适合一期做,哪些功能可以放到二期? 5. 如果涉及图片、视频上传,后续存储和服务器成本大概怎么估算? 6. 有没有类似项目的开发经验可以参考? 我现在不是特别懂软件开发,所以想先了解一个大概的市场价格范围,避免一开始需求没想清楚就被报得太高,或者报价太低后面做不出来。 欢迎有经验的朋友给点建议,也欢迎做过类似系统的开发者简单说一下大概报价区间。谢谢。
佬们,最近想要做一套小区成立业委会的“动员工具”,推进我们小区的业委会成立。为了把散落的业主组织起来。 主要是运行在微信生态内(业主群微信群分享),包含:业主认证、进度时间轴展示、民意预投票、候选人公示等。 技术架构上自有全栈解决能力,但是考虑利益冲突,一旦被物业、置业顺着实名小程序、服务器、域名等链路摸到现实中的人,项目大概率胎死腹中。 这方面大家有什么好的建议吗? 1 个帖子 - 1 位参与者 阅读完整话题
拿到一台新的云服务器,无论是公有云还是本地虚拟机、wsl,我都会做一套固定的初始化流程。这篇文章把步骤完整记录下来,顺便解释一些容易踩坑的地方。 一、创建用户 云厂商的默认账号不统一,阿里云通常是 root ,腾讯云有时是 ubuntu 。我的习惯是统一新建一个 work 用户来操作,不直接用 root。 # 创建用户,-m 自动建 home 目录,-s 指定 bash useradd -m -s /bin/bash work 也可以用 useradd -m -s /bin/bash work 一步到位,自动建 home 目录并设好 shell,不需要再手动改 /etc/passwd 。 二、赋予 sudo 权限 visudo # 推荐用 visudo,保存时会自动检查语法 在 root 那行下面加上: % work ALL=(ALL) NOPASSWD: ALL 用 visudo 而不是直接 vim /etc/sudoers ,写错语法会导致 sudo 整个失效,很麻烦。 三、配置 SSH 公钥登录 mkdir -p /home/work/.ssh vim /home/work/.ssh/authorized_keys # 把本地~/.ssh/id_rsa.pub 的内容粘贴进去 # 权限必须设对,否则 sshd 会拒绝 chown -R work:work /home/work/.ssh chmod 700 /home/work/.ssh chmod 600 /home/work/.ssh/authorized_keys 只需要把 ** 公钥 **( id_rsa.pub )放到服务器,私钥( id_rsa )留在本地,不要复制到服务器上。 权限设置这两行不能省, chmod 700 和 chmod 600 如果缺失,sshd 会直接拒绝公钥登录,是新手最容易踩的坑。 四、初始化终端环境 这一步很多人会跳过,但配置好之后每天都在省时间。核心是两个配置文件: .bashrc 和 .inputrc 。 .inputrc —— 让方向键有 “记忆” 创建 ~/.inputrc ,写入以下内容: set match-hidden-files off "\ep": history-search-backward "\e [A": history-search-backward "\e [B": history-search-forward 立即生效: bind -f ~/.inputrc ** 重点是中间这三行 **。默认情况下按 ↑ 是从最近一条历史往前翻。配置之后的效果是: 先输入命令的前缀,再按 ↑ ,只在匹配前缀的历史里搜索。 比如输入 git ,再按 ↑ ,只会在 git 开头的历史命令里循环,不会跳到其他命令。用一段时间后你会发现少打了很多字。 第一行 match-hidden-files off 是让 Tab 补全时不显示隐藏文件( .git 、 .env 之类),补全列表更干净。 .bashrc —— 终端基础配置 .bashrc 的内容比较长,挑几个最实用的说: ** 历史记录增强 ** export HISTCONTROL=ignoredups # 不记录连续重复的命令 export HISTTIMEFORMAT='% F % T ' # 历史命令显示时间戳 执行 history 时会看到每条命令的执行时间,排查问题时很有用。 ** 高频 alias** alias la='ls -Aalth' # 列全部文件,按时间排序,人类可读大小 alias tf='tail -f' # 看实时日志:tf /var/log/nginx/access.log alias wget='wget -c' # 默认断点续传 alias grep='grep --color=always' alias vi='vim' alias vih='sudo vim /etc/hosts' # 快速编辑 hosts alias rscp='rsync -v -P -e ssh' # 带进度条的 scp ** 时间戳互转 **(对接接口、查日志时常用) # 日期转uninx时间戳毫秒 function _dt2um() { local args=$* if [[ "Darwin" == $os ]] || [[ "FreeBSD" == $os ]] then um=`date -j -f "%Y-%m-%d %H:%M:%S" "$args" "+%s"` else um=`date +%s -d "$args"` fi um=$((um * 1000)) echo $um } alias dt2um=_dt2um # uninx时间戳毫秒转日期 function _um2dt() { local um=$1 um=$((um / 1000)) if [[ "Darwin" == $os ]] || [[ "FreeBSD" == $os ]] then echo `date -r "$um" +"%Y-%m-%d %H:%M:%S"` else echo `date -d @"$um" +"%Y-%m-%d %H:%M:%S"` fi } alias um2dt=_um2dt dt2um "2024-06-01 12:00:00" # → 1717214400000 um2dt 1717214400000 # → 2024-06-01 12:00:00 ** 提示符显示 Git 分支 ** ## Parses out the branch name from .git/HEAD: find_git_branch () { local dir=. head until [ "$dir" -ef / ]; do if [ -f "$dir/.git/HEAD" ]; then head=$(< "$dir/.git/HEAD") if [[ $head = ref:\ refs/heads/* ]]; then git_branch=" → ${head#*/*/}" elif [[ $head != '' ]]; then git_branch=" → (detached)" else git_branch=" → (unknow)" fi return fi dir="../$dir" done git_branch='' } PROMPT_COMMAND="find_git_branch; $PROMPT_COMMAND" 配置之后,进入 git 仓库时提示符会自动显示当前分支名,效果类似: [work@hostname:/your/project] → main# `` --- ## 五、安装必要软件包 ```bash sudo apt update && sudo apt upgrade -y # 编译工具链 sudo apt install -y build-essential # 常用库(编译 nginx 等会用到) sudo apt install -y libpcre3-dev libssl-dev zlib1g-dev libxslt1-dev # 运维日常工具 sudo apt install -y git curl wget jq htop tree unzip net-tools lsof rsync silversearcher-ag ctags build-essential 已包含 gcc、g++、make 等,比单独安装更规范,后续编译其他软件也会用到。 六、安装 Go 前往 golang官网 查看当前稳定版本号,替换下面的版本字符串。 # 下载并解压到 /work/service sudo mkdir -p /work/service/work/go wget golang官网/dl/go1.22.4.linux-amd64.tar.gz sudo tar -C /work/service -xzf go1.22.4.linux-amd64.tar.gz sudo chown -R work:work /work/go rm go1.22.4.linux-amd64.tar.gz 在 ~/.bashrc 末尾添加环境变量: export GOPROXY=选择一个稳定的代理地址 export PATH=$PATH:/work/service/go/bin export GOPATH=/work/go export GOBIN=$GOPATH/bin export PATH=$PATH:$GOBIN source ~/.bashrc go version # 验证 七、安装 Node.js 与 Yarn 安装前先去 nodejs官网 确认当前 Active LTS 的版本号,再替换脚本里的数字。Node.js 只有偶数版本才会进入长期支持(LTS),生产环境不要装奇数版。 截至本文写作时,当前 LTS 是 Node.js 24 。 curl -fsSL NODEJS官网/setup_24.x | sudo -E bash - sudo apt-get install -y nodejs node -v && npm -v # 验证 npm install -g yarn Node.js 只有偶数版本才会进入 LTS(长期支持),奇数版本生命周期很短,生产环境只装偶数版。 八、安装 Nginx Ubuntu 自带源的 Nginx 版本通常很旧,推荐加官方源安装,后续 apt upgrade 可以自动跟进新版本。 # 导入签名密钥 sudo apt install -y curl gnupg2 ca-certificates lsb-release ubuntu-keyring curl nginx官网/keys/nginx_signing.key \ | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg > /dev/null # 添加官方稳定版源 echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \ nginx官网/packages/ubuntu $(lsb_release -cs) nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list # 设置优先级,防止被系统源覆盖 echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \ | sudo tee /etc/apt/preferences.d/99nginx sudo apt update sudo apt install -y nginx nginx -v sudo systemctl enable nginx && sudo systemctl start nginx Ubuntu 自带源的 Nginx 版本通常很旧(22.04 自带的还是 1.18),官方源始终跟着稳定版走。 如果需要加载第三方模块(Lua、Brotli 等),再考虑源码编译,否则 apt 安装完全够用。 九、安装 MySQL 8 sudo apt install -y mysql-server # 查看初始维护账号密码 sudo cat /etc/mysql/debian.cnf # 用上面的账号登录,修改 root 密码 mysql -u debian-sys-maint -p 登录后执行: USE mysql; ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY ' 你的密码 '; FLUSH PRIVILEGES; 生产环境请设置足够复杂的密码,切勿使用 root 、 123456 等弱密码。 十、安装 Redis sudo apt install -y redis-server redis-cli ping # 返回 PONG 表示正常 生产环境,对于mysql,redis这种服务,应该直接购买云厂商现成服务,有的甚至需要冗余、集群服务,我这里只需测试安装演示 以上就是我每次新开VPS后,从用户权限到服务安装,做完之后,这台机器基本就可以直接投入使用了。 1 个帖子 - 1 位参与者 阅读完整话题
无编程基础, 刚开始用ai编程. 现在试着做一套软件. 用codex, 配5.4 由于完全不懂编程,安全起见, 5.4干活的线程开high强度, 做方案的线程开xhigh, 感觉上下文爆要表. 刚刚才清了日志库, 3个多G . 一天烧了10亿token. 太夸张了. 这如果以后没有pro套餐. 维护起来我连改都改不起.. 请教佬,在完全不懂编程情况下, 有哪些办法能大幅的减token消耗? 3 个帖子 - 3 位参与者 阅读完整话题
佬友们有个困惑求解,自部署Qwen3.5 27B,做一套偏知识类的Agent 现在的情况就是如果走Native Reasoning输出,会暴露系统约束、工具Key啥的,模型跑去复述系统提示词,如果不开而是通过提示词约束模型输出类思维链,又感觉不是很稳定。 就是感觉模型的思维过程还是挺有用的对知识类场景还挺有启发的,但是又不希望暴露系统提示词,咋解决呢 2 个帖子 - 2 位参与者 阅读完整话题